<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>vNext Docs Blog</title>
        <link>https://burgan-tech.github.io/vnext-docs/blog</link>
        <description>vNext Docs Blog</description>
        <lastBuildDate>Thu, 21 May 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>tr</language>
        <item>
            <title><![CDATA[vNext v0.0.55: SOAP Entegrasyonu, Function Verb Desteği ve Job Timeout Modeli]]></title>
            <link>https://burgan-tech.github.io/vnext-docs/blog/v0055-neler-degisti</link>
            <guid>https://burgan-tech.github.io/vnext-docs/blog/v0055-neler-degisti</guid>
            <pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[vNext platformunun v0.0.55 sürümü yayınlandı. Bu sürümde SOAP web servisleriyle doğrudan entegrasyon, function endpoint'lerine tam HTTP verb desteği ve iş akışı job'larının sonsuz Busy durumunda takılmasını önleyen bir timeout katmanı öne çıkıyor. Bunların yanı sıra deployment rehberi, annotation convention key'leri ve View Concept modeli de dokümantasyona eklendi.]]></description>
            <content:encoded><![CDATA[<p>vNext platformunun <strong>v0.0.55</strong> sürümü yayınlandı. Bu sürümde SOAP web servisleriyle doğrudan entegrasyon, function endpoint'lerine tam HTTP verb desteği ve iş akışı job'larının sonsuz <strong>Busy</strong> durumunda takılmasını önleyen bir timeout katmanı öne çıkıyor. Bunların yanı sıra deployment rehberi, annotation convention key'leri ve View Concept modeli de dokümantasyona eklendi.</p>
<!-- -->
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="soap-task-doğrudan-soap-entegrasyonu">SOAP Task: Doğrudan SOAP Entegrasyonu<a href="https://burgan-tech.github.io/vnext-docs/blog/v0055-neler-degisti#soap-task-do%C4%9Frudan-soap-entegrasyonu" class="hash-link" aria-label="SOAP Task: Doğrudan SOAP Entegrasyonu doğrudan bağlantı" title="SOAP Task: Doğrudan SOAP Entegrasyonu doğrudan bağlantı" translate="no">​</a></h2>
<p>Bu sürümün en büyük eklentilerinden biri, SOAP 1.1 ve 1.2 protokolüyle web servislere doğrudan bağlanabilen <strong>SoapTask</strong> (Tip: <code>16</code>).</p>
<p>Özellikle eski core banking ve middleware servislerle çalışırken ayrı bir adapter veya dönüştürme katmanına gerek kalmadan, SOAP endpoint'leri doğrudan task olarak tanımlayabilirsiniz:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"attributes"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"16"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"config"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"url"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"https://api.example.com/services/CustomerService"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"soapAction"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"http://example.com/GetCustomer"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"soapVersion"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1.1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"acceptedStatusCodes"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"500"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p><code>acceptedStatusCodes: ["500"]</code> tanımlamak önemli: SOAP servisler hata durumunda genellikle HTTP 500 üzerinden SOAP Fault döner. Bu ayar olmadan task başarısız sayılır; bu ayarla birlikte <code>OutputHandler</code>'ınıza ulaşır ve fault'u orada handle edebilirsiniz.</p>
<p>Mapping içinde <code>SoapTask</code> sınıfından <code>SetUrl</code>, <code>SetBody</code>, <code>SetSoapAction</code>, <code>AddHeader</code> ve benzeri setter metodlara erişebilirsiniz.</p>
<p>Tam referans için <a class="" href="https://burgan-tech.github.io/vnext-docs/docs/components/tasks/soap">SOAP Task dökümanına</a> bakabilirsiniz.</p>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="scriptbase-xml-yardımcıları">ScriptBase XML Yardımcıları<a href="https://burgan-tech.github.io/vnext-docs/blog/v0055-neler-degisti#scriptbase-xml-yard%C4%B1mc%C4%B1lar%C4%B1" class="hash-link" aria-label="ScriptBase XML Yardımcıları doğrudan bağlantı" title="ScriptBase XML Yardımcıları doğrudan bağlantı" translate="no">​</a></h2>
<p>SOAP Task ile birlikte, mapping script'lerinde XML işlemeyi kolaylaştıran iki yeni <code>ScriptBase</code> metodu eklendi:</p>
<table><thead><tr><th>Metod</th><th>Açıklama</th></tr></thead><tbody><tr><td><code>ParseXml(string?)</code></td><td>XML stringini <code>XmlDocument</code>'a parse eder. Hatalı XML'de fırlatmaz, <code>null</code> döner</td></tr><tr><td><code>XmlToString(XmlDocument?)</code></td><td><code>XmlDocument</code>'ı tekrar stringe çevirir</td></tr></tbody></table>
<p><code>ParseXml</code> hiçbir zaman exception fırlatmaz; geçersiz veya boş input için <code>null</code> döner. Bu sayede <code>OutputHandler</code> içinde savunmacı XML işleme güvenli bir şekilde yapılabilir.</p>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="functions-post-patch-ve-delete-desteği">Functions: POST, PATCH ve DELETE Desteği<a href="https://burgan-tech.github.io/vnext-docs/blog/v0055-neler-degisti#functions-post-patch-ve-delete-deste%C4%9Fi" class="hash-link" aria-label="Functions: POST, PATCH ve DELETE Desteği doğrudan bağlantı" title="Functions: POST, PATCH ve DELETE Desteği doğrudan bağlantı" translate="no">​</a></h2>
<p>Function endpoint'leri artık <code>GET</code>'in yanı sıra <code>POST</code>, <code>PATCH</code> ve <code>DELETE</code> verb'lerini de destekliyor. Hem domain-level hem de instance-level fonksiyonlarda geçerli:</p>
<div class="language-http codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-http codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">GET    /api/v1/{domain}/functions/{function}</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">POST   /api/v1/{domain}/functions/{function}</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">PATCH  /api/v1/{domain}/functions/{function}</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">DELETE /api/v1/{domain}/functions/{function}</span><br></div></code></pre></div></div>
<p>Bu değişiklik, function endpoint'lerinin tam CRUD senaryolarını karşılamasını sağlıyor. Ayrı BFF katmanı geliştirme ihtiyacı minimize ediliyor.</p>
<p>Aynı sürümde <code>rawResponse</code> alanı da eklendi. <code>rawResponse: true</code> ayarlandığında, mapped <code>rawData</code> platformun standart response modeline sarılmadan doğrudan döndürülür. Legacy API'lerden geçiş senaryolarında işe yarar.</p>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="i̇ş-akışı-job-timeout-modeli">İş Akışı Job Timeout Modeli<a href="https://burgan-tech.github.io/vnext-docs/blog/v0055-neler-degisti#i%CC%87%C5%9F-ak%C4%B1%C5%9F%C4%B1-job-timeout-modeli" class="hash-link" aria-label="İş Akışı Job Timeout Modeli doğrudan bağlantı" title="İş Akışı Job Timeout Modeli doğrudan bağlantı" translate="no">​</a></h2>
<p>Bir transition job'ı çalışırken platform çöker veya beklenmedik bir hata oluşursa, instance <strong>Busy</strong> durumunda kalıyordu. Bu sürümde üç katmanlı bir timeout modeli devreye girdi:</p>
<table><thead><tr><th>Katman</th><th>Süre</th><th>Açıklama</th></tr></thead><tbody><tr><td>Job execution budget</td><td>300 s</td><td><code>TransitionJobHandler</code>'ın kendi bütçesi</td></tr><tr><td>Lock lease</td><td>330 s</td><td>Distributed lock süresi</td></tr><tr><td>Per-invocation Dapr ceiling</td><td>60 s</td><td><code>RemoteInvokerService</code> başına</td></tr></tbody></table>
<p>300 saniye dolduğunda:</p>
<ol>
<li class="">Instance <strong>Busy</strong> → <strong>Faulted</strong> olarak güncellenir</li>
<li class=""><code>JOB_EXECUTION_TIMEOUT</code> kodu ile bir <strong>incident</strong> oluşturulur</li>
<li class="">Açık <code>InstanceTransition</code> kaydı kapatılır</li>
</ol>
<p>Recovery işlemi, tetikleyici token iptal edilmiş olsa bile her zaman tamamlanır (<code>CancellationToken.None</code> kullanılır). Host kapanırken (SIGTERM) recovery atlanır, sadece <code>MarkAsProcessed</code> çalışır.</p>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="deployment-dokümantasyonu">Deployment Dokümantasyonu<a href="https://burgan-tech.github.io/vnext-docs/blog/v0055-neler-degisti#deployment-dok%C3%BCmantasyonu" class="hash-link" aria-label="Deployment Dokümantasyonu doğrudan bağlantı" title="Deployment Dokümantasyonu doğrudan bağlantı" translate="no">​</a></h2>
<p>Yeni bir <strong><a class="" href="https://burgan-tech.github.io/vnext-docs/docs/deployment/">Deployment</a></strong> bölümü eklendi. Bu bölüm iki rehber içeriyor:</p>
<ul>
<li class=""><strong><a class="" href="https://burgan-tech.github.io/vnext-docs/docs/deployment/helm-chart">Helm Chart</a></strong> — vNext'i Kubernetes cluster'ınıza veya local Minikube ortamınıza OCI chart (<code>ghcr.io/burgan-tech/vnext</code>) ile kurma adımları.</li>
<li class=""><strong><a class="" href="https://burgan-tech.github.io/vnext-docs/docs/deployment/release-viewer">Release Viewer</a></strong> — Tenant'ınızdaki domain'leri, çalışan Helm chart versiyonlarını ve uygulama versiyonlarını görsel olarak izleyen araç.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="transition-annotations-standart-keyler">Transition Annotations: Standart Key'ler<a href="https://burgan-tech.github.io/vnext-docs/blog/v0055-neler-degisti#transition-annotations-standart-keyler" class="hash-link" aria-label="Transition Annotations: Standart Key'ler doğrudan bağlantı" title="Transition Annotations: Standart Key'ler doğrudan bağlantı" translate="no">​</a></h2>
<p>v0.0.54'te eklenen <code>annotations</code> alanı için artık platform tarafından tanınan standart key'ler belgelendi. Bu key'leri kullanan UI SDK'ları tutarlı davranış sergileyebilir:</p>
<table><thead><tr><th>Key</th><th>Açıklama</th></tr></thead><tbody><tr><td><code>ui/visibility-channel</code></td><td>Pipe ile ayrılmış kanal listesi (<code>IbWeb</code>, <code>backoffice</code>, <code>IbIvnApp</code>)</td></tr><tr><td><code>ui/priority</code></td><td>Sıralama önceliği (düşük = önce)</td></tr><tr><td><code>ui/intent</code></td><td>Görsel ipucu: <code>cancel</code>, <code>destructive</code>, <code>close</code>, <code>confirm</code></td></tr></tbody></table>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token property" style="color:#36acaa">"annotations"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"ui/visibility-channel"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"IbIvnApp|backoffice"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"ui/priority"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"ui/intent"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"cancel"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="view-konsepti-state-view-ve-transition-view">View Konsepti: State View ve Transition View<a href="https://burgan-tech.github.io/vnext-docs/blog/v0055-neler-degisti#view-konsepti-state-view-ve-transition-view" class="hash-link" aria-label="View Konsepti: State View ve Transition View doğrudan bağlantı" title="View Konsepti: State View ve Transition View doğrudan bağlantı" translate="no">​</a></h2>
<p><a class="" href="https://burgan-tech.github.io/vnext-docs/docs/how-to/view-consept/">View Concept rehberi</a> platform tarafından önerilen etkileşim modelini artık açıkça belgeliyor:</p>
<ul>
<li class=""><strong>State View</strong> — state'e bağlı, read-only ekran. Instance'ın mevcut durumunu gösterir.</li>
<li class=""><strong>Transition View</strong> — transition'a bağlı form ekranı. Kullanıcıdan girdi alır ve transition'ı tetikler.</li>
</ul>
<p>State Function yanıtındaki <code>hasView</code> alanı, istemcinin doğrudan transition mı göndereceğine yoksa önce View Function'ı mı çağıracağına karar vermesini sağlar.</p>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="özet">Özet<a href="https://burgan-tech.github.io/vnext-docs/blog/v0055-neler-degisti#%C3%B6zet" class="hash-link" aria-label="Özet doğrudan bağlantı" title="Özet doğrudan bağlantı" translate="no">​</a></h2>
<table><thead><tr><th>Alan</th><th>Değişiklik</th></tr></thead><tbody><tr><td>Entegrasyon</td><td>SoapTask (Tip 16): SOAP 1.1/1.2 web servis çağrısı</td></tr><tr><td>Scripting</td><td><code>ParseXml</code> / <code>XmlToString</code> ScriptBase yardımcıları</td></tr><tr><td>Functions</td><td><code>POST</code>, <code>PATCH</code>, <code>DELETE</code> verb desteği + <code>rawResponse</code> alanı</td></tr><tr><td>Güvenilirlik</td><td>Job execution timeout modeli (300s bütçe + Busy→Faulted recovery)</td></tr><tr><td>Deployment</td><td>Helm Chart ve Release Viewer dokümantasyonu</td></tr><tr><td>Annotations</td><td><code>ui/visibility-channel</code>, <code>ui/priority</code>, <code>ui/intent</code> standart key'leri</td></tr><tr><td>View</td><td>State View / Transition View etkileşim modeli belgelendi</td></tr></tbody></table>
<p>Teknik detaylar, konfigürasyon örnekleri ve issue referansları için <a class="" href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-55">v0.0.55 Release Notes</a> sayfasına bakabilirsiniz.</p>
<hr>
<p><strong>vNext Runtime Platform Team</strong><br>
<!-- -->Mayıs 2026</p>]]></content:encoded>
            <category>release</category>
            <category>duyuru</category>
            <category>soap</category>
            <category>functions</category>
            <category>timeout</category>
        </item>
        <item>
            <title><![CDATA[Release v0.0.55]]></title>
            <link>https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-55</link>
            <guid>https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-55</guid>
            <pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Overview]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="overview">Overview<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-55#overview" class="hash-link" aria-label="Overview doğrudan bağlantı" title="Overview doğrudan bağlantı" translate="no">​</a></h2>
<p>This release introduces <strong>SoapTask</strong> as a first-class task type for SOAP 1.1/1.2 web service integrations, expands <strong>Functions</strong> to support <code>POST</code>, <code>PATCH</code>, and <code>DELETE</code> verbs alongside <code>GET</code>, and adds a <strong>layered timeout model</strong> for workflow job execution that eliminates indefinitely stuck <strong>Busy</strong> instances. <strong>ScriptBase</strong> gains XML helper methods (<code>ParseXml</code>, <code>XmlToString</code>) to support SOAP response handling in mapping scripts. A new <strong>Deployment</strong> documentation section covers Helm chart installation and the Release Viewer tool. <strong>Transition Annotations</strong> receive documented platform-convention keys, and the <strong>View Concept</strong> guide is extended with the State View / Transition View interaction model. A schema correction moves <code>NotificationTask</code> configuration under <code>attributes</code>.</p>
<!-- -->
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="features">Features<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-55#features" class="hash-link" aria-label="Features doğrudan bağlantı" title="Features doğrudan bağlantı" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="layered-timeout-model-for-workflow-job-execution-680">Layered timeout model for workflow job execution (#680)<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-55#layered-timeout-model-for-workflow-job-execution-680" class="hash-link" aria-label="Layered timeout model for workflow job execution (#680) doğrudan bağlantı" title="Layered timeout model for workflow job execution (#680) doğrudan bağlantı" translate="no">​</a></h3>
<p>Workflow execution now enforces a configurable multi-layer timeout budget to prevent instances from remaining stuck in <strong>Busy</strong> status after pipeline failures.</p>
<p><strong>New configuration class — <code>WorkflowExecutionOptions</code>:</strong></p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"WorkflowExecution"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"TransitionJobTimeoutSeconds"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">300</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"TransitionJobLockLeaseSeconds"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">330</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"ExecutionApi"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"InvocationTimeoutSeconds"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">60</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<table><thead><tr><th>Layer</th><th>Component</th><th>Default</th></tr></thead><tbody><tr><td><strong>Job execution budget</strong></td><td><code>TransitionJobHandler</code> via <code>CancellationTokenSource</code></td><td>300 s</td></tr><tr><td><strong>Lock lease</strong></td><td><code>AsyncTransitionStrategy</code></td><td>330 s</td></tr><tr><td><strong>Per-invocation Dapr ceiling</strong></td><td><code>RemoteInvokerService</code></td><td>60 s</td></tr></tbody></table>
<p><strong>Timeout recovery — <code>JobTimeoutRecoveryService</code>:</strong>
When the job budget expires, the recovery service transitions the instance from <strong>Busy</strong> to <strong>Faulted</strong>, creates a <code>JOB_EXECUTION_TIMEOUT</code> incident, and closes any open <code>InstanceTransition</code> record. Recovery runs on a <code>CancellationToken.None</code> token so it completes regardless of the triggering cancellation.</p>
<p><strong>Three-way cancellation handling in <code>TransitionJobHandler</code>:</strong></p>
<table><thead><tr><th>Scenario</th><th>Action</th></tr></thead><tbody><tr><td>Own 300 s budget expires</td><td>Run recovery + <code>MarkAsProcessed</code></td></tr><tr><td>Dapr / external cancel (host up)</td><td>Run recovery + <code>MarkAsProcessed</code></td></tr><tr><td>Host shutdown (SIGTERM)</td><td>Skip recovery, <code>MarkAsProcessed</code> only</td></tr></tbody></table>
<p><code>result.IsSuccess</code> is now checked after pipeline execution; previously <code>JobCompleted</code> was logged unconditionally, masking silent failures.</p>
<blockquote>
<p><strong>Reference:</strong> <a href="https://github.com/burgan-tech/vnext/issues/680" target="_blank" rel="noopener noreferrer" class="">#680</a></p>
</blockquote>
<hr>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="post-patch-and-delete-support-for-functions-646">POST, PATCH, and DELETE support for Functions (#646)<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-55#post-patch-and-delete-support-for-functions-646" class="hash-link" aria-label="POST, PATCH, and DELETE support for Functions (#646) doğrudan bağlantı" title="POST, PATCH, and DELETE support for Functions (#646) doğrudan bağlantı" translate="no">​</a></h3>
<p>Function endpoints now accept <code>POST</code>, <code>PATCH</code>, and <code>DELETE</code> in addition to <code>GET</code> at both scope levels.</p>
<p><strong>Domain-level:</strong></p>
<div class="language-http codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-http codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">GET    /api/v1/{domain}/functions/{function}</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">POST   /api/v1/{domain}/functions/{function}</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">PATCH  /api/v1/{domain}/functions/{function}</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">DELETE /api/v1/{domain}/functions/{function}</span><br></div></code></pre></div></div>
<p><strong>Instance-level:</strong></p>
<div class="language-http codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-http codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">GET    /api/v1/{domain}/workflows/{workflow}/instances/{instance}/functions/{function}</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">POST   /api/v1/{domain}/workflows/{workflow}/instances/{instance}/functions/{function}</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">PATCH  /api/v1/{domain}/workflows/{workflow}/instances/{instance}/functions/{function}</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">DELETE /api/v1/{domain}/workflows/{workflow}/instances/{instance}/functions/{function}</span><br></div></code></pre></div></div>
<p><strong>New <code>rawResponse</code> field on function definitions:</strong></p>
<p>When <code>rawResponse: true</code>, the mapped <code>rawData</code> is returned directly as the HTTP response body instead of being wrapped in the platform's standard output model. This is designed for legacy API pass-through scenarios.</p>
<table><thead><tr><th>Field</th><th>Default</th><th>Behavior</th></tr></thead><tbody><tr><td><code>rawResponse: false</code></td><td>✅ default</td><td>Platform wraps output in standard response model</td></tr><tr><td><code>rawResponse: true</code></td><td>—</td><td>Mapped <code>rawData</code> returned as-is</td></tr></tbody></table>
<blockquote>
<p><strong>Reference:</strong> <a href="https://github.com/burgan-tech/vnext/issues/646" target="_blank" rel="noopener noreferrer" class="">#646</a></p>
</blockquote>
<hr>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="soaptask--soap-11--12-web-service-calls-type-16">SoapTask — SOAP 1.1 / 1.2 web service calls (Type: <code>16</code>)<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-55#soaptask--soap-11--12-web-service-calls-type-16" class="hash-link" aria-label="soaptask--soap-11--12-web-service-calls-type-16 doğrudan bağlantı" title="soaptask--soap-11--12-web-service-calls-type-16 doğrudan bağlantı" translate="no">​</a></h3>
<p>A new task type for calling SOAP endpoints. Unlike HTTP Task, the request body is stored as a raw XML string to accommodate SOAP envelope templates.</p>
<p><strong>Minimal definition:</strong></p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"key"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"get-customer-soap"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"version"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1.0.0"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"domain"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"core"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"flow"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"sys-tasks"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"flowVersion"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1.0.0"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"tags"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"soap"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"attributes"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"16"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"config"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"url"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"https://api.example.com/services/CustomerService"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"soapAction"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"http://example.com/GetCustomer"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"soapVersion"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1.1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"acceptedStatusCodes"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"500"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p><strong>Configuration fields:</strong></p>
<table><thead><tr><th>Field</th><th>Required</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td><code>url</code></td><td><strong>Yes</strong></td><td>—</td><td>Target SOAP endpoint URL</td></tr><tr><td><code>soapAction</code></td><td><strong>Yes</strong></td><td>—</td><td>SOAPAction value</td></tr><tr><td><code>soapVersion</code></td><td>No</td><td><code>"1.1"</code></td><td><code>"1.1"</code> or <code>"1.2"</code></td></tr><tr><td><code>body</code></td><td>No</td><td>null</td><td>SOAP envelope template as raw XML string</td></tr><tr><td><code>headers</code></td><td>No</td><td>null</td><td>Additional HTTP headers</td></tr><tr><td><code>timeoutSeconds</code></td><td>No</td><td><code>30</code></td><td>Request timeout</td></tr><tr><td><code>validateSsl</code></td><td>No</td><td><code>true</code></td><td>Server SSL certificate validation</td></tr><tr><td><code>acceptedStatusCodes</code></td><td>No</td><td>—</td><td>HTTP error codes treated as success (e.g. <code>["500"]</code> for SOAP Fault pass-through)</td></tr></tbody></table>
<p>SOAP Fault responses typically arrive over HTTP 500. Setting <code>acceptedStatusCodes: ["500"]</code> lets the response reach <code>OutputHandler</code> where the fault can be inspected by the mapping script.</p>
<p><strong>Mapping API on <code>SoapTask</code>:</strong></p>
<table><thead><tr><th>Method</th><th>Description</th></tr></thead><tbody><tr><td><code>SetUrl(string)</code></td><td>Override the target URL</td></tr><tr><td><code>SetBody(string?)</code></td><td>Set body from a raw XML string</td></tr><tr><td><code>SetBody(XmlDocument?)</code></td><td>Set body from <code>XmlDocument.OuterXml</code></td></tr><tr><td><code>SetSoapAction(string)</code></td><td>Override the SOAPAction value</td></tr><tr><td><code>SetHeaders(Dictionary&lt;string, string?&gt;)</code></td><td>Replace all headers</td></tr><tr><td><code>AddHeader(string, string?)</code></td><td>Add or update a single header</td></tr><tr><td><code>RemoveHeader(string)</code></td><td>Remove a single header</td></tr></tbody></table>
<p>The task response <code>Data</code> field contains the raw XML string returned by the service.</p>
<hr>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="scriptbase-xml-helpers">ScriptBase XML helpers<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-55#scriptbase-xml-helpers" class="hash-link" aria-label="ScriptBase XML helpers doğrudan bağlantı" title="ScriptBase XML helpers doğrudan bağlantı" translate="no">​</a></h3>
<p>Two new methods on <code>ScriptBase</code> simplify XML handling in mapping scripts, primarily for SOAP Task output processing.</p>
<table><thead><tr><th>Method</th><th>Return</th><th>Description</th></tr></thead><tbody><tr><td><code>ParseXml(string? xmlString)</code></td><td><code>XmlDocument?</code></td><td>Parses an XML string. Returns <code>null</code> on null/empty input or parse failure — never throws</td></tr><tr><td><code>XmlToString(XmlDocument? xmlDoc)</code></td><td><code>string?</code></td><td>Converts <code>XmlDocument</code> to XML string. Returns <code>null</code> for null input</td></tr></tbody></table>
<div class="language-csharp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-csharp codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token class-name keyword" style="color:#00009f">var</span><span class="token plain"> doc </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">ParseXml</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">context</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Body</span><span class="token punctuation" style="color:#393A34">?.</span><span class="token plain">data</span><span class="token punctuation" style="color:#393A34">?.</span><span class="token function" style="color:#d73a49">ToString</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">doc </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* handle invalid XML */</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token class-name keyword" style="color:#00009f">var</span><span class="token plain"> ns </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token constructor-invocation class-name">XmlNamespaceManager</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">doc</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">NameTable</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">ns</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">AddNamespace</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"soap"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"http://schemas.xmlsoap.org/soap/envelope/"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token class-name keyword" style="color:#00009f">var</span><span class="token plain"> fault </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> doc</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">SelectSingleNode</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"//soap:Fault"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> ns</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></div></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-55#breaking-changes" class="hash-link" aria-label="Breaking Changes doğrudan bağlantı" title="Breaking Changes doğrudan bağlantı" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="notificationtask-config-moved-inside-attributes-662-follow-up">NotificationTask config moved inside attributes (#662 follow-up)<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-55#notificationtask-config-moved-inside-attributes-662-follow-up" class="hash-link" aria-label="NotificationTask config moved inside attributes (#662 follow-up) doğrudan bağlantı" title="NotificationTask config moved inside attributes (#662 follow-up) doğrudan bağlantı" translate="no">​</a></h3>
<p>The <code>NotificationTask</code> (Type <code>10</code>) schema structure changed. The <code>config</code> object must now be nested inside <code>attributes</code>:</p>
<p><strong>Before:</strong></p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"config"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"10"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"channels"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"sms"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"email"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"includeStateChannel"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p><strong>After:</strong></p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"attributes"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"10"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"config"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"channels"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"sms"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"email"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"includeStateChannel"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p>This aligns <code>NotificationTask</code> with the standard task definition schema used by all other task types.</p>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="configuration-updates">Configuration Updates<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-55#configuration-updates" class="hash-link" aria-label="Configuration Updates doğrudan bağlantı" title="Configuration Updates doğrudan bağlantı" translate="no">​</a></h2>
<p>Configuration for v0.0.55:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"runtimeVersion"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"0.0.55"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"schemaVersion"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"0.0.42"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<blockquote>
<p><strong>Note:</strong> Schema version <strong>0.0.42</strong> is unchanged from v0.0.54.</p>
</blockquote>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="issues-referenced">Issues Referenced<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-55#issues-referenced" class="hash-link" aria-label="Issues Referenced doğrudan bağlantı" title="Issues Referenced doğrudan bağlantı" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://github.com/burgan-tech/vnext/issues/680" target="_blank" rel="noopener noreferrer" class="">vnext #680</a> — Layered timeout model: <code>TransitionJobHandler</code> budget, <code>RemoteInvokerService</code> per-invocation ceiling, <code>JobTimeoutRecoveryService</code></li>
<li class=""><a href="https://github.com/burgan-tech/vnext/issues/646" target="_blank" rel="noopener noreferrer" class="">vnext #646</a> — Functions <code>POST</code>, <code>PATCH</code>, <code>DELETE</code> verb support + <code>rawResponse</code> field</li>
</ul>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="summary">Summary<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-55#summary" class="hash-link" aria-label="Summary doğrudan bağlantı" title="Summary doğrudan bağlantı" translate="no">​</a></h2>
<ul>
<li class=""><strong>SoapTask</strong> (Type <code>16</code>) enables direct SOAP 1.1/1.2 web service integration; <code>acceptedStatusCodes</code> routes HTTP 500 SOAP Faults through <code>OutputHandler</code>.</li>
<li class=""><strong>Functions</strong> accept <code>POST</code>, <code>PATCH</code>, and <code>DELETE</code>; <code>rawResponse: true</code> passes mapped output directly to the caller, reducing BFF boilerplate.</li>
<li class=""><strong>Workflow job execution</strong> now has a 300 s budget. On timeout: instance moves to <strong>Faulted</strong>, a <code>JOB_EXECUTION_TIMEOUT</code> incident is created, and the open <code>InstanceTransition</code> is closed.</li>
<li class=""><strong>ScriptBase</strong> adds <code>ParseXml</code> / <code>XmlToString</code> for safe XML handling in mapping scripts.</li>
<li class=""><strong>NotificationTask</strong> schema corrected: <code>config</code> is now nested inside <code>attributes</code>.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="see-also">See Also<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-55#see-also" class="hash-link" aria-label="See Also doğrudan bağlantı" title="See Also doğrudan bağlantı" translate="no">​</a></h2>
<ul>
<li class=""><a class="" href="https://burgan-tech.github.io/vnext-docs/blog/v0055-neler-degisti">v0.0.55 Duyurusu</a> — Feature-focused announcement in Turkish</li>
</ul>
<hr>
<p><strong>vNext Runtime Platform Team</strong><br>
<!-- -->May 21, 2026</p>]]></content:encoded>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[vNext v0.0.54: Forge Studio, Incident Takibi ve Çok Kanallı Bildirimler]]></title>
            <link>https://burgan-tech.github.io/vnext-docs/blog/v0054-neler-degisti</link>
            <guid>https://burgan-tech.github.io/vnext-docs/blog/v0054-neler-degisti</guid>
            <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[vNext platformunun v0.0.54 sürümü yayınlandı. Bu sürümde contributor'ların iş akışını doğrudan etkileyen yeni araçlar, platform genelinde gözlemlenebilirliği artıran incident takip mekanizması ve çok kanallı bildirim desteği öne çıkıyor. Aşağıda, günlük geliştirme deneyiminizi değiştirecek başlıkları özetledik.]]></description>
            <content:encoded><![CDATA[<p>vNext platformunun <strong>v0.0.54</strong> sürümü yayınlandı. Bu sürümde contributor'ların iş akışını doğrudan etkileyen yeni araçlar, platform genelinde gözlemlenebilirliği artıran incident takip mekanizması ve çok kanallı bildirim desteği öne çıkıyor. Aşağıda, günlük geliştirme deneyiminizi değiştirecek başlıkları özetledik.</p>
<!-- -->
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="vnext-forge-studio-artık-vs-code-markette">vNext Forge Studio artık VS Code Market'te<a href="https://burgan-tech.github.io/vnext-docs/blog/v0054-neler-degisti#vnext-forge-studio-art%C4%B1k-vs-code-markette" class="hash-link" aria-label="vNext Forge Studio artık VS Code Market'te doğrudan bağlantı" title="vNext Forge Studio artık VS Code Market'te doğrudan bağlantı" translate="no">​</a></h2>
<p>Bu sürümün en önemli haberi: <strong>vNext Forge Studio</strong> VS Code Marketplace'de yayınlandı.</p>
<p>Forge Studio; bileşenlerinizi görsel designer üzerinden tasarlayabileceğiniz, sürükle-bırak desteği olan, lokal runtime ve <code>vnext-workflow-cli</code> ile doğrudan entegre çalışan bir geliştirici ortamı. Aynı zamanda bir VS Code extension olarak kurulabiliyor ve masaüstü uygulaması olarak da kullanıma açık.</p>
<p>Öne çıkan özellikler:</p>
<ul>
<li class=""><strong>Quick Runner</strong> modülü ile iş akışlarınızı debug ederken anında test edebilirsiniz.</li>
<li class=""><strong>Pseudo-UI renderer</strong> ile view'larınızı, production render'a gerek kalmadan önizleyebilir ve etkileşim kurabilirsiniz.</li>
<li class="">Tüm yan ürünlerle (CLI, lokal runtime vb.) entegre çalışır; bağlam geçişi olmadan tam döngü geliştirme mümkün.</li>
</ul>
<p>Detaylar için <a class="" href="https://burgan-tech.github.io/vnext-docs/docs/tools/forge-studio">Forge Studio dokümantasyonuna</a> göz atın.</p>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="instance-incident-takibi">Instance Incident Takibi<a href="https://burgan-tech.github.io/vnext-docs/blog/v0054-neler-degisti#instance-incident-takibi" class="hash-link" aria-label="Instance Incident Takibi doğrudan bağlantı" title="Instance Incident Takibi doğrudan bağlantı" translate="no">​</a></h2>
<p>Bir instance execution sırasında hata oluştuğunda platform artık bunu bir <strong>incident</strong> olarak kayıt altına alıyor. Sadece son hatayı değil, tüm geçmişini ve retry sayısını da saklıyor.</p>
<p><code>GET /instance/{id}</code> yanıtının <code>metadata.incident</code> alanından erişebilirsiniz:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"metadata"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"incident"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"hasActiveIncident"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"totalCount"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"active"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"state"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"account-type-selection"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"transition"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"select-demand-deposit"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"task"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"get-instance"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"message"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Input handler failed for GetInstanceData: ..."</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"errorCode"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Task:Unknown:get-instance"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"errorLayer"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Task"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"traceId"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"06ea6c5c2e7711c77590d32dc2ae9408"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"isResolved"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">false</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"retryCount"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"history"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">...</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p>Önceki sürümlerde hata sonrası debugger'da ne olduğunu anlamak için log'lara gitmek gerekiyordu. Artık instance'ın kendisi bir hata geçmişi taşıyor.</p>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="notificationtask-çok-kanallı-bildirim-desteği">NotificationTask: Çok Kanallı Bildirim Desteği<a href="https://burgan-tech.github.io/vnext-docs/blog/v0054-neler-degisti#notificationtask-%C3%A7ok-kanall%C4%B1-bildirim-deste%C4%9Fi" class="hash-link" aria-label="NotificationTask: Çok Kanallı Bildirim Desteği doğrudan bağlantı" title="NotificationTask: Çok Kanallı Bildirim Desteği doğrudan bağlantı" translate="no">​</a></h2>
<p><code>NotificationTask</code> (tip: <code>10</code>) bu sürümde tam olarak hayata geçirildi. Dapr binding tabanlı altyapısı ile SMS, e-posta, push ve state kanallarına eş zamanlı bildirim gönderebilirsiniz.</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"key"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"notify-status-change"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"version"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1.0.0"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"config"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"10"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"channels"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"sms"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"email"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"includeStateChannel"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p>Her kanal bağımsız olarak dispatch edilir; bir kanalda hata oluşması diğerlerini durdurmaz. <code>state</code> kanalı platform tarafından yönetildiğinden ayrıca bir mapping scripti gerektirmez. Detaylar için <a class="" href="https://burgan-tech.github.io/vnext-docs/docs/components/tasks/notification">Notification Task dökümanına</a> bakabilirsiniz.</p>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="transition-annotations">Transition Annotations<a href="https://burgan-tech.github.io/vnext-docs/blog/v0054-neler-degisti#transition-annotations" class="hash-link" aria-label="Transition Annotations doğrudan bağlantı" title="Transition Annotations doğrudan bağlantı" translate="no">​</a></h2>
<p>Transition tanımlarınıza artık serbest formatlı <code>annotations</code> alanı ekleyebilirsiniz. Client tarafında transition'ları filtrelemek, önceliklendirmek veya UI'da koşullu render etmek için kullanılabilir.</p>
<p>Transition tanımında:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"annotations"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"ui/visibility"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"enabled"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"ui/priority"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p>Bu alan State function <code>availableTransitions</code> yanıtında aynen iletilir. Sunum tercihlerini sunucu deployment'ı gerektirmeden client'ta yönetmek için kullanışlı.</p>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="view-renderer-bilgisi">View Renderer Bilgisi<a href="https://burgan-tech.github.io/vnext-docs/blog/v0054-neler-degisti#view-renderer-bilgisi" class="hash-link" aria-label="View Renderer Bilgisi doğrudan bağlantı" title="View Renderer Bilgisi doğrudan bağlantı" translate="no">​</a></h2>
<p>View tanımlarına <code>renderer</code> alanı eklendi. State function yanıtında da dönüyor; bu sayede UI SDK'nız hangi renderer'ı kullanacağını doğrudan yanıttan okuyabiliyor.</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"renderer"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"react"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p>Desteklenen değerler: <code>pseudo-ui</code>, <code>flutter</code>, <code>angular</code>, <code>vue</code>, <code>react</code>, <code>react-native</code>, <code>native-ios</code>, <code>native-android</code>.</p>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="instance-tablo-alanları-currentstatetype-currentstatesubtype-stage">Instance Tablo Alanları: CurrentStateType, CurrentStateSubType, Stage<a href="https://burgan-tech.github.io/vnext-docs/blog/v0054-neler-degisti#instance-tablo-alanlar%C4%B1-currentstatetype-currentstatesubtype-stage" class="hash-link" aria-label="Instance Tablo Alanları: CurrentStateType, CurrentStateSubType, Stage doğrudan bağlantı" title="Instance Tablo Alanları: CurrentStateType, CurrentStateSubType, Stage doğrudan bağlantı" translate="no">​</a></h2>
<p>Instance tablosuna üç yeni alan eklendi: <code>currentStateType</code>, <code>currentStateSubType</code> ve <code>stage</code>. Instance listelerinde durum özetleri için state tanımını her seferinde ayrıca parse etmenize gerek kalmıyor.</p>
<p><code>stage</code> bilgisini transition ya da start isteğinde <code>body</code>'de gönderebilirsiniz:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"stage"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"onboarding"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p>Yanıtta <code>metadata.stage</code> olarak dönüyor. Stage, logical state'den bağımsız iş süreci aşamalarını temsil etmek için tasarlandı.</p>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="transition-mapping-davranışı-değişti">Transition Mapping Davranışı Değişti<a href="https://burgan-tech.github.io/vnext-docs/blog/v0054-neler-degisti#transition-mapping-davran%C4%B1%C5%9F%C4%B1-de%C4%9Fi%C5%9Fti" class="hash-link" aria-label="Transition Mapping Davranışı Değişti doğrudan bağlantı" title="Transition Mapping Davranışı Değişti doğrudan bağlantı" translate="no">​</a></h2>
<p>Önceki sürümlerde transition mapping çıktısı yalnızca <code>InstanceData</code>'ya yazılıyor, <code>TransitionHistory</code> body'sine ise ham (mapping öncesi) veri aktarılıyordu. Bu sürümden itibaren mapping çıktısı her iki hedefe de yazılıyor. <code>TransitionHistory.body</code> artık wire'a gelen ham veriyi değil, runtime'ın uyguladığı dönüştürülmüş veriyi içeriyor.</p>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="shared-transitions-availablein-artık-zorunlu-değil">Shared Transitions: availableIn Artık Zorunlu Değil<a href="https://burgan-tech.github.io/vnext-docs/blog/v0054-neler-degisti#shared-transitions-availablein-art%C4%B1k-zorunlu-de%C4%9Fil" class="hash-link" aria-label="Shared Transitions: availableIn Artık Zorunlu Değil doğrudan bağlantı" title="Shared Transitions: availableIn Artık Zorunlu Değil doğrudan bağlantı" translate="no">​</a></h2>
<p><code>availableIn</code> alanı boş geçildiğinde shared transition otomatik olarak tüm state'lerden erişilebilir hale geliyor. Yeni state ekledikçe listeyi güncelleme zorunluluğu ortadan kalktı.</p>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="31-request-header-fields-too-large-hatası-için-çözüm">31 Request Header Fields Too Large Hatası için Çözüm<a href="https://burgan-tech.github.io/vnext-docs/blog/v0054-neler-degisti#31-request-header-fields-too-large-hatas%C4%B1-i%C3%A7in-%C3%A7%C3%B6z%C3%BCm" class="hash-link" aria-label="31 Request Header Fields Too Large Hatası için Çözüm doğrudan bağlantı" title="31 Request Header Fields Too Large Hatası için Çözüm doğrudan bağlantı" translate="no">​</a></h2>
<p>Büyük authorization token'ları veya çok sayıda correlation header taşıyan istekler Kestrel'in varsayılan limitlerini aşıyorsa, <code>appsettings.json</code>'da aşağıdaki konfigürasyon ile limitleri artırabilirsiniz:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"Kestrel"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"Limits"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"MaxRequestHeadersTotalSize"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">65536</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"MaxRequestHeaderCount"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">200</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="vnext-workflow-cli-v107">vnext-workflow-cli v1.0.7<a href="https://burgan-tech.github.io/vnext-docs/blog/v0054-neler-degisti#vnext-workflow-cli-v107" class="hash-link" aria-label="vnext-workflow-cli v1.0.7 doğrudan bağlantı" title="vnext-workflow-cli v1.0.7 doğrudan bağlantı" translate="no">​</a></h2>
<p>CLI'ın yeni sürümü iki pratik iyileştirme getiriyor:</p>
<ul>
<li class=""><code>wf domain use &lt;NAME&gt;</code> komutu artık terminal'in aktif olduğu dizindeki <code>vnext.config.json</code> dosyasından domain adını otomatik olarak algılıyor.</li>
<li class="">Windows ortamlarında <code>wf</code> alias'ı sistem ile çakışıyordu; <code>vnext</code> alias'ı alternatif olarak eklendi.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="özet">Özet<a href="https://burgan-tech.github.io/vnext-docs/blog/v0054-neler-degisti#%C3%B6zet" class="hash-link" aria-label="Özet doğrudan bağlantı" title="Özet doğrudan bağlantı" translate="no">​</a></h2>
<table><thead><tr><th>Alan</th><th>Değişiklik</th></tr></thead><tbody><tr><td>Araçlar</td><td>Forge Studio VS Code Marketplace'de yayınlandı</td></tr><tr><td>Gözlemlenebilirlik</td><td>Instance'lara incident takip mekanizması eklendi</td></tr><tr><td>Bildirimler</td><td>NotificationTask çok kanallı Dapr binding desteğiyle hayata geçti</td></tr><tr><td>Transition</td><td><code>annotations</code> alanı ile client-side filtreleme desteği</td></tr><tr><td>View</td><td><code>renderer</code> alanı ile UI SDK dispatch bilgisi</td></tr><tr><td>Instance</td><td><code>currentStateType</code>, <code>currentStateSubType</code>, <code>stage</code> alanları</td></tr><tr><td>Geçmiş</td><td>TransitionHistory body artık mapped payload içeriyor</td></tr><tr><td>Shared Transition</td><td><code>availableIn</code> artık opsiyonel; boş = tüm state'ler</td></tr><tr><td>CLI</td><td>v1.0.7 — otomatik domain tespiti, Windows <code>vnext</code> alias</td></tr></tbody></table>
<p>Teknik detaylar, bug fix açıklamaları ve issue referansları için <a class="" href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54">v0.0.54 Release Notes</a> sayfasına bakabilirsiniz.</p>
<hr>
<p><strong>vNext Runtime Platform Team</strong><br>
<!-- -->Mayıs 2026</p>]]></content:encoded>
            <category>release</category>
            <category>duyuru</category>
            <category>forge-studio</category>
            <category>notification</category>
        </item>
        <item>
            <title><![CDATA[Release v0.0.54]]></title>
            <link>https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54</link>
            <guid>https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54</guid>
            <pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Overview]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="overview">Overview<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54#overview" class="hash-link" aria-label="Overview doğrudan bağlantı" title="Overview doğrudan bağlantı" translate="no">​</a></h2>
<p>This release strengthens <strong>pipeline reliability</strong> through <strong>distributed lock</strong> TTL renewal on auto-chains, <strong>SubFlow</strong> <strong>ErrorBoundary</strong> delegation to parent flows, and end-to-end <strong>Stage</strong> propagation in the <strong>TransitionPipeline</strong>. <strong>Infrastructure</strong> and <strong>CI/CD</strong> fixes address stale Docker image tags from <strong><code>common.props</code></strong>, non-fast-forward release pushes, and transient <strong>Microsoft Container Registry</strong> pull failures. <strong>Platform metadata</strong> expands with new <strong>Instance</strong> fields, transition <strong>annotations</strong>, <strong>View</strong> <strong>renderer</strong> hints, exposure of the <strong>cancel</strong> transition in <strong>availableTransitions</strong>, and shared transitions available <strong>State</strong>-wide via <strong><code>"availableIn": ["all"]</code></strong>. <strong>NotificationTask</strong> is revived with full <strong>State</strong> function response binding, and tooling adds the <strong><code>@burgan-tech/vnext-meta</code></strong> package plus configurable <strong>Kestrel</strong> request header limits.</p>
<!-- -->
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="bug-fixes">Bug Fixes<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54#bug-fixes" class="hash-link" aria-label="Bug Fixes doğrudan bağlantı" title="Bug Fixes doğrudan bağlantı" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="docker-images-built-with-stale-version-from-commonprops-620">Docker images built with stale version from common.props (#620)<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54#docker-images-built-with-stale-version-from-commonprops-620" class="hash-link" aria-label="Docker images built with stale version from common.props (#620) doğrudan bağlantı" title="Docker images built with stale version from common.props (#620) doğrudan bağlantı" translate="no">​</a></h3>
<p>The <strong>CI/CD</strong> pipeline's Docker build step read a cached or stale version number from <strong><code>common.props</code></strong> instead of the freshly bumped value during release. Built images were tagged with the previous version, causing deployment mismatches between the intended release and the artifacts in the registry. The build step now reads the version after the bump completes, ensuring image tags match the actual release version.</p>
<blockquote>
<p><strong>Reference:</strong> <a href="https://github.com/burgan-tech/vnext/issues/620" target="_blank" rel="noopener noreferrer" class="">#620</a></p>
</blockquote>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="fix-build-pipeline-non-fast-forward-push-and-transient-mcr-403-errors-627">Fix build pipeline non-fast-forward push and transient MCR 403 errors (#627)<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54#fix-build-pipeline-non-fast-forward-push-and-transient-mcr-403-errors-627" class="hash-link" aria-label="Fix build pipeline non-fast-forward push and transient MCR 403 errors (#627) doğrudan bağlantı" title="Fix build pipeline non-fast-forward push and transient MCR 403 errors (#627) doğrudan bağlantı" translate="no">​</a></h3>
<p>The release pipeline occasionally failed with <strong>non-fast-forward</strong> push rejections when concurrent commits landed between fetch and push, leaving the local ref behind the remote. Transient HTTP <strong>403</strong> errors from <strong>Microsoft Container Registry</strong> (<strong>MCR</strong>) during base image pulls also caused intermittent build failures unrelated to application code. The pipeline now performs a fresh pull before push to align refs, and <strong>MCR</strong> pulls use retry logic with exponential backoff.</p>
<blockquote>
<p><strong>Reference:</strong> <a href="https://github.com/burgan-tech/vnext/issues/627" target="_blank" rel="noopener noreferrer" class="">#627</a></p>
</blockquote>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="propagate-stage-property-through-transition-pipeline-630">Propagate Stage property through transition pipeline (#630)<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54#propagate-stage-property-through-transition-pipeline-630" class="hash-link" aria-label="Propagate Stage property through transition pipeline (#630) doğrudan bağlantı" title="Propagate Stage property through transition pipeline (#630) doğrudan bağlantı" translate="no">​</a></h3>
<p>The <strong>Stage</strong> property set on a transition definition was not propagated through the full <strong>TransitionPipeline</strong> execution. Downstream steps such as <strong>onEntry</strong> tasks, automatic transitions, and finish handling could not read the current stage from the pipeline context, and historical transition records did not reflect the stage label consistently. The pipeline context now carries the <strong>Stage</strong> value end-to-end, and it is persisted on the <strong>InstanceTransition</strong> record.</p>
<blockquote>
<p><strong>Reference:</strong> <a href="https://github.com/burgan-tech/vnext/issues/630" target="_blank" rel="noopener noreferrer" class="">#630</a></p>
</blockquote>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="subflow-errorboundary-fallback-to-parent-flow-574">SubFlow ErrorBoundary fallback to parent flow (#574)<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54#subflow-errorboundary-fallback-to-parent-flow-574" class="hash-link" aria-label="SubFlow ErrorBoundary fallback to parent flow (#574) doğrudan bağlantı" title="SubFlow ErrorBoundary fallback to parent flow (#574) doğrudan bağlantı" translate="no">​</a></h3>
<p>When a <strong>SubFlow</strong> definition did not declare its own <strong>ErrorBoundary</strong>, errors were not evaluated against a boundary in the parent <strong>flow</strong> hierarchy as operators expected. Instead of bubbling to the parent flow's <strong>ErrorBoundary</strong>, error handling could appear silent or misrouted relative to the composed workflow design. The error propagation logic now walks up the flow hierarchy: if the current <strong>SubFlow</strong> has no <strong>ErrorBoundary</strong> configured, the parent flow's <strong>ErrorBoundary</strong> is evaluated and executed.</p>
<blockquote>
<p><strong>Reference:</strong> <a href="https://github.com/burgan-tech/vnext/issues/574" target="_blank" rel="noopener noreferrer" class="">#574</a></p>
</blockquote>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="fix-distributed-lock-ttl-extension-failure-in-transition-pipeline-auto-chains-672">Fix distributed lock TTL extension failure in transition pipeline auto-chains (#672)<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54#fix-distributed-lock-ttl-extension-failure-in-transition-pipeline-auto-chains-672" class="hash-link" aria-label="Fix distributed lock TTL extension failure in transition pipeline auto-chains (#672) doğrudan bağlantı" title="Fix distributed lock TTL extension failure in transition pipeline auto-chains (#672) doğrudan bağlantı" translate="no">​</a></h3>
<p>When a <strong>TransitionPipeline</strong> triggered automatic transitions (<strong>auto-chains</strong>), the <strong>distributed lock</strong> TTL was not extended for additional pipeline hops. Long-running auto-chains could exceed the original lock TTL, allowing the lock to expire mid-execution and concurrent transitions against the same <strong>Instance</strong>. The lock extension mechanism now renews TTL at each auto-chain hop, preventing premature expiration while chained work runs.</p>
<blockquote>
<p><strong>Reference:</strong> <a href="https://github.com/burgan-tech/vnext/issues/672" target="_blank" rel="noopener noreferrer" class="">#672</a></p>
</blockquote>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="features">Features<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54#features" class="hash-link" aria-label="Features doğrudan bağlantı" title="Features doğrudan bağlantı" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="expose-cancel-transition-in-availabletransitions-from-state-function-622">Expose cancel transition in availableTransitions from State function (#622)<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54#expose-cancel-transition-in-availabletransitions-from-state-function-622" class="hash-link" aria-label="Expose cancel transition in availableTransitions from State function (#622) doğrudan bağlantı" title="Expose cancel transition in availableTransitions from State function (#622) doğrudan bağlantı" translate="no">​</a></h3>
<p>The <strong>State</strong> function's <strong><code>availableTransitions</code></strong> response previously excluded the well-known <strong>cancel</strong> transition even when the caller was authorized to invoke it. Clients had to hardcode the <strong>cancel</strong> transition key to present a cancel action in <strong>UI</strong> layers. <strong>Cancel</strong> is now included in <strong><code>availableTransitions</code></strong> when the caller has the required role, aligning the API with authorization and enabling <strong>UI</strong> SDKs to render cancel actions without special cases.</p>
<blockquote>
<p><strong>Reference:</strong> <a href="https://github.com/burgan-tech/vnext/issues/622" target="_blank" rel="noopener noreferrer" class="">#622</a></p>
</blockquote>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="add-currentstatetype-currentstatesubtype-and-stage-fields-to-instance-624">Add CurrentStateType, CurrentStateSubType, and Stage fields to Instance (#624)<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54#add-currentstatetype-currentstatesubtype-and-stage-fields-to-instance-624" class="hash-link" aria-label="Add CurrentStateType, CurrentStateSubType, and Stage fields to Instance (#624) doğrudan bağlantı" title="Add CurrentStateType, CurrentStateSubType, and Stage fields to Instance (#624) doğrudan bağlantı" translate="no">​</a></h3>
<p>The <strong>Instance</strong> entity includes three new fields: <strong><code>currentStateType</code></strong> (for example <strong>Begin</strong>, <strong>State</strong>, <strong>Finish</strong>), <strong><code>currentStateSubType</code></strong> (for example <strong>Active</strong>, <strong>Completed</strong>, <strong>Cancelled</strong>, <strong>Timeout</strong>), and <strong><code>stage</code></strong> (the current <strong>TransitionPipeline</strong> stage label). These fields are returned on all <strong>Instance</strong> read APIs (<strong>State</strong>, <strong>GetInstance</strong>, <strong>GetInstances</strong>) so clients can filter and summarize instances without parsing the full state definition on every call.</p>
<blockquote>
<p><strong>Reference:</strong> <a href="https://github.com/burgan-tech/vnext/issues/624" target="_blank" rel="noopener noreferrer" class="">#624</a></p>
</blockquote>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="add-configurable-kestrel-request-header-size-and-count-limits-640">Add configurable Kestrel request header size and count limits (#640)<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54#add-configurable-kestrel-request-header-size-and-count-limits-640" class="hash-link" aria-label="Add configurable Kestrel request header size and count limits (#640) doğrudan bağlantı" title="Add configurable Kestrel request header size and count limits (#640) doğrudan bağlantı" translate="no">​</a></h3>
<p><strong>Kestrel</strong>'s default request header limits (<strong>32 KB</strong> total size, <strong>100</strong> headers) can now be overridden via environment variables or <strong>Helm</strong> chart values. This supports scenarios where large authorization tokens or correlation headers exceed the defaults and <strong>Kestrel</strong> returns <strong>400 Bad Request</strong> before the request reaches application middleware or the <strong>State</strong> function. Configuration keys: <strong><code>KESTREL__LIMITS__MAXREQUESTHEADERSIZE</code></strong> and <strong><code>KESTREL__LIMITS__MAXREQUESTHEADERCOUNT</code></strong>.</p>
<blockquote>
<p><strong>Reference:</strong> <a href="https://github.com/burgan-tech/vnext/issues/640" target="_blank" rel="noopener noreferrer" class="">#640</a></p>
</blockquote>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="store-mapped-payload-in-instancetransition-body-instead-of-raw-request-data-641">Store mapped payload in InstanceTransition body instead of raw request data (#641)<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54#store-mapped-payload-in-instancetransition-body-instead-of-raw-request-data-641" class="hash-link" aria-label="Store mapped payload in InstanceTransition body instead of raw request data (#641) doğrudan bağlantı" title="Store mapped payload in InstanceTransition body instead of raw request data (#641) doğrudan bağlantı" translate="no">​</a></h3>
<p>The <strong>InstanceTransition</strong> record's <strong><code>body</code></strong> field previously stored the raw <strong>HTTP</strong> request payload before <strong>inputMapping</strong> ran. Auditing and replay focused on wire data rather than the values actually applied to <strong>Instance</strong> state. <strong><code>body</code></strong> now stores the <strong>mapped</strong> (post-<strong>inputMapping</strong>) payload—the data written to the instance—so transition history reflects what the runtime applied, not only what arrived on the wire.</p>
<blockquote>
<p><strong>Reference:</strong> <a href="https://github.com/burgan-tech/vnext/issues/641" target="_blank" rel="noopener noreferrer" class="">#641</a></p>
</blockquote>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="add-annotations-metadata-to-transition-definitions-for-client-side-filtering-642">Add annotations metadata to transition definitions for client-side filtering (#642)<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54#add-annotations-metadata-to-transition-definitions-for-client-side-filtering-642" class="hash-link" aria-label="Add annotations metadata to transition definitions for client-side filtering (#642) doğrudan bağlantı" title="Add annotations metadata to transition definitions for client-side filtering (#642) doğrudan bağlantı" translate="no">​</a></h3>
<p>Transition definitions now support an optional <strong><code>annotations</code></strong> object (key-value string pairs) that is persisted and returned in the <strong>State</strong> function's <strong><code>availableTransitions</code></strong> response. <strong>UI</strong> SDKs and client applications can filter, group, or conditionally render transitions using <strong><code>annotations</code></strong> without server deploys for presentation-only tweaks. Example: <strong><code>"annotations": { "category": "approval", "priority": "high" }</code></strong>.</p>
<blockquote>
<p><strong>Reference:</strong> <a href="https://github.com/burgan-tech/vnext/issues/642" target="_blank" rel="noopener noreferrer" class="">#642</a></p>
</blockquote>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="add-renderer-property-to-view-entity-for-ui-sdk-dispatch-643">Add renderer property to View entity for UI SDK dispatch (#643)<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54#add-renderer-property-to-view-entity-for-ui-sdk-dispatch-643" class="hash-link" aria-label="Add renderer property to View entity for UI SDK dispatch (#643) doğrudan bağlantı" title="Add renderer property to View entity for UI SDK dispatch (#643) doğrudan bağlantı" translate="no">​</a></h3>
<p>The <strong>View</strong> entity now includes an optional <strong><code>renderer</code></strong> property (string) in its definition. When present, the <strong>State</strong> function response includes <strong><code>renderer</code></strong> alongside the view schema so <strong>UI</strong> SDKs can dispatch to the correct component or template implementation without a parallel mapping table. Examples: <strong><code>"renderer": "form-wizard"</code></strong>, <strong><code>"renderer": "document-viewer"</code></strong>.</p>
<blockquote>
<p><strong>Reference:</strong> <a href="https://github.com/burgan-tech/vnext/issues/643" target="_blank" rel="noopener noreferrer" class="">#643</a></p>
</blockquote>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="shared-transition-availablein-state-all-support-566">Shared transition: availableIn state "all" support (#566)<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54#shared-transition-availablein-state-all-support-566" class="hash-link" aria-label="Shared transition: availableIn state &quot;all&quot; support (#566) doğrudan bağlantı" title="Shared transition: availableIn state &quot;all&quot; support (#566) doğrudan bağlantı" translate="no">​</a></h3>
<p><strong>Shared transitions</strong> (defined once and reused across multiple <strong>State</strong> entries) now support <strong><code>"availableIn": ["all"]</code></strong> as shorthand to make the transition available in every state of the flow. Previously each state had to be listed explicitly, which risked drift when new states were added to the definition.</p>
<blockquote>
<p><strong>Reference:</strong> <a href="https://github.com/burgan-tech/vnext/issues/566" target="_blank" rel="noopener noreferrer" class="">#566</a></p>
</blockquote>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="revive-notificationtask-with-full-state-function-response-binding-662">Revive NotificationTask with full State Function response binding (#662)<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54#revive-notificationtask-with-full-state-function-response-binding-662" class="hash-link" aria-label="Revive NotificationTask with full State Function response binding (#662) doğrudan bağlantı" title="Revive NotificationTask with full State Function response binding (#662) doğrudan bağlantı" translate="no">​</a></h3>
<p>The <strong>NotificationTask</strong> type is restored and expanded: task execution receives the complete <strong>State</strong> function response (<strong>Instance</strong> data, <strong><code>availableTransitions</code></strong>, <strong>View</strong>, metadata) as its context. Notification templates and integrations can reference current instance fields, available actions, and presentation metadata in one binding surface.</p>
<blockquote>
<p><strong>Reference:</strong> <a href="https://github.com/burgan-tech/vnext/issues/662" target="_blank" rel="noopener noreferrer" class="">#662</a></p>
</blockquote>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="add-burgan-techvnext-meta-npm-package-to-publish-version-manifestjson-663">Add @burgan-tech/vnext-meta npm package to publish version-manifest.json (#663)<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54#add-burgan-techvnext-meta-npm-package-to-publish-version-manifestjson-663" class="hash-link" aria-label="Add @burgan-tech/vnext-meta npm package to publish version-manifest.json (#663) doğrudan bağlantı" title="Add @burgan-tech/vnext-meta npm package to publish version-manifest.json (#663) doğrudan bağlantı" translate="no">​</a></h3>
<p>A new npm package, <strong><code>@burgan-tech/vnext-meta</code></strong>, is published on each release and ships <strong><code>version-manifest.json</code></strong>. The manifest maps runtime versions to schema versions, supported capabilities, and compatibility metadata. <strong>UI</strong> SDKs and CLI tools can depend on this package to detect compatible versions and feature availability automatically.</p>
<blockquote>
<p><strong>Reference:</strong> <a href="https://github.com/burgan-tech/vnext/issues/663" target="_blank" rel="noopener noreferrer" class="">#663</a></p>
</blockquote>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54#breaking-changes" class="hash-link" aria-label="Breaking Changes doğrudan bağlantı" title="Breaking Changes doğrudan bağlantı" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="instancetransition-body-artık-mapped-payload-içeriyor-641">InstanceTransition body artık mapped payload içeriyor (#641)<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54#instancetransition-body-art%C4%B1k-mapped-payload-i%C3%A7eriyor-641" class="hash-link" aria-label="InstanceTransition body artık mapped payload içeriyor (#641) doğrudan bağlantı" title="InstanceTransition body artık mapped payload içeriyor (#641) doğrudan bağlantı" translate="no">​</a></h3>
<p><code>context.ScriptContext.CurrentTransition.Body</code>, bu sürümden itibaren <strong>TransitionMapping</strong> uygulandıktan sonraki veriyi (mapped payload) döndürür. Ham transition request verisi artık bu alan üzerinden erişilemez.</p>
<p><strong>Ham veriye erişim:</strong> Transition scope içinde ham payload'a ihtiyaç duyan script'ler <code>context.Body</code> kullanmalıdır.</p>
<table><thead><tr><th>Alan</th><th>Önceki davranış</th><th>Yeni davranış</th></tr></thead><tbody><tr><td><code>context.ScriptContext.CurrentTransition.Body</code></td><td>Ham transition request payload</td><td>Mapped (post-transitionMapping) payload</td></tr><tr><td><code>context.Body</code></td><td>—</td><td>Ham transition request payload</td></tr></tbody></table>
<blockquote>
<p><strong>Referans:</strong> <a href="https://github.com/burgan-tech/vnext/issues/641" target="_blank" rel="noopener noreferrer" class="">#641</a></p>
</blockquote>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="configuration-updates">Configuration Updates<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54#configuration-updates" class="hash-link" aria-label="Configuration Updates doğrudan bağlantı" title="Configuration Updates doğrudan bağlantı" translate="no">​</a></h2>
<p>Configuration for v0.0.54:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"runtimeVersion"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"0.0.54"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"schemaVersion"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"0.0.42"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<blockquote>
<p><strong>Note:</strong> <strong>Schema package 0.0.42</strong> is the documented pairing with this runtime.</p>
</blockquote>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="issues-referenced">Issues Referenced<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54#issues-referenced" class="hash-link" aria-label="Issues Referenced doğrudan bağlantı" title="Issues Referenced doğrudan bağlantı" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://github.com/burgan-tech/vnext/issues/620" target="_blank" rel="noopener noreferrer" class="">vnext #620</a> — Docker images: read version after bump (not stale <code>common.props</code>)</li>
<li class=""><a href="https://github.com/burgan-tech/vnext/issues/622" target="_blank" rel="noopener noreferrer" class="">vnext #622</a> — <strong>cancel</strong> in <strong><code>availableTransitions</code></strong> from <strong>State</strong></li>
<li class=""><a href="https://github.com/burgan-tech/vnext/issues/624" target="_blank" rel="noopener noreferrer" class="">vnext #624</a> — <strong>Instance</strong> <code>currentStateType</code> / <code>currentStateSubType</code> / <code>stage</code></li>
<li class=""><a href="https://github.com/burgan-tech/vnext/issues/627" target="_blank" rel="noopener noreferrer" class="">vnext #627</a> — Non-FF push fix; <strong>MCR</strong> pull retry/backoff</li>
<li class=""><a href="https://github.com/burgan-tech/vnext/issues/630" target="_blank" rel="noopener noreferrer" class="">vnext #630</a> — <strong>Stage</strong> propagated through <strong>TransitionPipeline</strong> / <strong>InstanceTransition</strong></li>
<li class=""><a href="https://github.com/burgan-tech/vnext/issues/640" target="_blank" rel="noopener noreferrer" class="">vnext #640</a> — <strong>Kestrel</strong> header size/count limits (env / Helm)</li>
<li class=""><a href="https://github.com/burgan-tech/vnext/issues/641" target="_blank" rel="noopener noreferrer" class="">vnext #641</a> — <strong>InstanceTransition</strong> <code>body</code> stores mapped payload</li>
<li class=""><a href="https://github.com/burgan-tech/vnext/issues/642" target="_blank" rel="noopener noreferrer" class="">vnext #642</a> — Transition <strong><code>annotations</code></strong> for client filtering</li>
<li class=""><a href="https://github.com/burgan-tech/vnext/issues/643" target="_blank" rel="noopener noreferrer" class="">vnext #643</a> — <strong>View</strong> <strong><code>renderer</code></strong> in <strong>State</strong> response</li>
<li class=""><a href="https://github.com/burgan-tech/vnext/issues/574" target="_blank" rel="noopener noreferrer" class="">vnext #574</a> — <strong>SubFlow</strong> <strong>ErrorBoundary</strong> fallback to parent</li>
<li class=""><a href="https://github.com/burgan-tech/vnext/issues/566" target="_blank" rel="noopener noreferrer" class="">vnext #566</a> — Shared transition **<code>availableIn**: ["all"]</code></li>
<li class=""><a href="https://github.com/burgan-tech/vnext/issues/662" target="_blank" rel="noopener noreferrer" class="">vnext #662</a> — <strong>NotificationTask</strong> + full <strong>State</strong> response context</li>
<li class=""><a href="https://github.com/burgan-tech/vnext/issues/663" target="_blank" rel="noopener noreferrer" class="">vnext #663</a> — <strong><code>@burgan-tech/vnext-meta</code></strong> / <strong><code>version-manifest.json</code></strong></li>
<li class=""><a href="https://github.com/burgan-tech/vnext/issues/672" target="_blank" rel="noopener noreferrer" class="">vnext #672</a> — <strong>Distributed lock</strong> TTL on auto-chain hops</li>
</ul>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="summary">Summary<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54#summary" class="hash-link" aria-label="Summary doğrudan bağlantı" title="Summary doğrudan bağlantı" translate="no">​</a></h2>
<ul>
<li class=""><strong>Docker</strong> release tags align with post-bump <strong>version</strong>; <strong>CI</strong> handles non-fast-forward pushes and <strong>MCR</strong> transients.</li>
<li class=""><strong>Stage</strong> flows through <strong>TransitionPipeline</strong> and <strong>InstanceTransition</strong>; <strong>SubFlow</strong> errors honor parent <strong>ErrorBoundary</strong>; <strong>distributed lock</strong> TTL renews across auto-chains.</li>
<li class=""><strong>Instance</strong> exposes <strong><code>currentStateType</code></strong>, <strong><code>currentStateSubType</code></strong>, <strong><code>stage</code></strong>; <strong>cancel</strong> appears in <strong><code>availableTransitions</code></strong> when authorized.</li>
<li class=""><strong>InstanceTransition</strong> <code>body</code> records <strong>mapped</strong> data; transitions support <strong><code>annotations</code></strong>; <strong>View</strong> carries optional <strong><code>renderer</code></strong>; shared transitions support <strong><code>"availableIn": ["all"]</code></strong>.</li>
<li class=""><strong>NotificationTask</strong> binds the full <strong>State</strong> response; <strong><code>@burgan-tech/vnext-meta</code></strong> publishes <strong><code>version-manifest.json</code></strong>; <strong>Kestrel</strong> header limits are configurable.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="see-also">See Also<a href="https://burgan-tech.github.io/vnext-docs/blog/release-v0-0-54#see-also" class="hash-link" aria-label="See Also doğrudan bağlantı" title="See Also doğrudan bağlantı" translate="no">​</a></h2>
<ul>
<li class=""><a class="" href="https://burgan-tech.github.io/vnext-docs/blog/v0054-neler-degisti">v0.0.54 Duyurusu</a> — Feature-focused announcement in Turkish</li>
</ul>
<hr>
<p><strong>vNext Runtime Platform Team</strong><br>
<!-- -->May 18, 2026</p>]]></content:encoded>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[vNext Docs'a Hoş Geldiniz]]></title>
            <link>https://burgan-tech.github.io/vnext-docs/blog/welcome</link>
            <guid>https://burgan-tech.github.io/vnext-docs/blog/welcome</guid>
            <pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[vNext Platform dokümantasyon sitesi yayında! Bu site 4 ana bölümden oluşuyor: Technical, Architecture, Business ve Product.]]></description>
            <content:encoded><![CDATA[<p>vNext Platform dokümantasyon sitesi yayında! Bu site 4 ana bölümden oluşuyor: <strong>Technical</strong>, <strong>Architecture</strong>, <strong>Business</strong> ve <strong>Product</strong>.</p>
<!-- -->
<p>İlerleyen haftalarda mevcut <code>vnext-runtime/release/</code> altındaki release notes bu sayfaya migrate edilecek. Yeni özellikler ve sürüm notları burada paylaşılacak.</p>
<p>Şu anda Phase 0 (Foundation) tamamlandı. Sıradaki adım Phase 1: Technical Migration.</p>]]></content:encoded>
            <category>duyuru</category>
        </item>
    </channel>
</rss>