<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://burgan-tech.github.io/vnext-docs/en/blog</id>
    <title>vNext Docs Blog</title>
    <updated>2026-05-21T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://burgan-tech.github.io/vnext-docs/en/blog"/>
    <subtitle>vNext Docs Blog</subtitle>
    <icon>https://burgan-tech.github.io/vnext-docs/en/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[vNext v0.0.55: SOAP Entegrasyonu, Function Verb Desteği ve Job Timeout Modeli]]></title>
        <id>https://burgan-tech.github.io/vnext-docs/en/blog/v0055-neler-degisti</id>
        <link href="https://burgan-tech.github.io/vnext-docs/en/blog/v0055-neler-degisti"/>
        <updated>2026-05-21T00:00:00.000Z</updated>
        <summary type="html"><![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.]]></summary>
        <content type="html"><![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/en/blog/v0055-neler-degisti#soap-task-do%C4%9Frudan-soap-entegrasyonu" class="hash-link" aria-label="Direct link to SOAP Task: Doğrudan SOAP Entegrasyonu" title="Direct link to SOAP Task: Doğrudan SOAP Entegrasyonu" 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/en/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/en/blog/v0055-neler-degisti#scriptbase-xml-yard%C4%B1mc%C4%B1lar%C4%B1" class="hash-link" aria-label="Direct link to ScriptBase XML Yardımcıları" title="Direct link to ScriptBase XML Yardımcıları" 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/en/blog/v0055-neler-degisti#functions-post-patch-ve-delete-deste%C4%9Fi" class="hash-link" aria-label="Direct link to Functions: POST, PATCH ve DELETE Desteği" title="Direct link to Functions: POST, PATCH ve DELETE Desteği" 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/en/blog/v0055-neler-degisti#i%CC%87%C5%9F-ak%C4%B1%C5%9F%C4%B1-job-timeout-modeli" class="hash-link" aria-label="Direct link to İş Akışı Job Timeout Modeli" title="Direct link to İş Akışı Job Timeout Modeli" 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/en/blog/v0055-neler-degisti#deployment-dok%C3%BCmantasyonu" class="hash-link" aria-label="Direct link to Deployment Dokümantasyonu" title="Direct link to Deployment Dokümantasyonu" translate="no">​</a></h2>
<p>Yeni bir <strong><a class="" href="https://burgan-tech.github.io/vnext-docs/en/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/en/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/en/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/en/blog/v0055-neler-degisti#transition-annotations-standart-keyler" class="hash-link" aria-label="Direct link to Transition Annotations: Standart Key'ler" title="Direct link to Transition Annotations: Standart Key'ler" 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/en/blog/v0055-neler-degisti#view-konsepti-state-view-ve-transition-view" class="hash-link" aria-label="Direct link to View Konsepti: State View ve Transition View" title="Direct link to View Konsepti: State View ve Transition View" translate="no">​</a></h2>
<p><a class="" href="https://burgan-tech.github.io/vnext-docs/en/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/en/blog/v0055-neler-degisti#%C3%B6zet" class="hash-link" aria-label="Direct link to Özet" title="Direct link to Özet" 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/en/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>
        <author>
            <name>vNext Team</name>
            <uri>https://github.com/burgan-tech</uri>
        </author>
        <category label="release" term="release"/>
        <category label="duyuru" term="duyuru"/>
        <category label="soap" term="soap"/>
        <category label="functions" term="functions"/>
        <category label="timeout" term="timeout"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Release v0.0.55]]></title>
        <id>https://burgan-tech.github.io/vnext-docs/en/blog/release-v0-0-55</id>
        <link href="https://burgan-tech.github.io/vnext-docs/en/blog/release-v0-0-55"/>
        <updated>2026-05-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Overview]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="overview">Overview<a href="https://burgan-tech.github.io/vnext-docs/en/blog/release-v0-0-55#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" 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/en/blog/release-v0-0-55#features" class="hash-link" aria-label="Direct link to Features" title="Direct link to Features" 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/en/blog/release-v0-0-55#layered-timeout-model-for-workflow-job-execution-680" class="hash-link" aria-label="Direct link to Layered timeout model for workflow job execution (#680)" title="Direct link to Layered timeout model for workflow job execution (#680)" 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/en/blog/release-v0-0-55#post-patch-and-delete-support-for-functions-646" class="hash-link" aria-label="Direct link to POST, PATCH, and DELETE support for Functions (#646)" title="Direct link to POST, PATCH, and DELETE support for Functions (#646)" 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/en/blog/release-v0-0-55#soaptask--soap-11--12-web-service-calls-type-16" class="hash-link" aria-label="Direct link to soaptask--soap-11--12-web-service-calls-type-16" title="Direct link to soaptask--soap-11--12-web-service-calls-type-16" 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/en/blog/release-v0-0-55#scriptbase-xml-helpers" class="hash-link" aria-label="Direct link to ScriptBase XML helpers" title="Direct link to ScriptBase XML helpers" 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/en/blog/release-v0-0-55#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" 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/en/blog/release-v0-0-55#notificationtask-config-moved-inside-attributes-662-follow-up" class="hash-link" aria-label="Direct link to NotificationTask config moved inside attributes (#662 follow-up)" title="Direct link to NotificationTask config moved inside attributes (#662 follow-up)" 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/en/blog/release-v0-0-55#configuration-updates" class="hash-link" aria-label="Direct link to Configuration Updates" title="Direct link to Configuration Updates" 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/en/blog/release-v0-0-55#issues-referenced" class="hash-link" aria-label="Direct link to Issues Referenced" title="Direct link to Issues Referenced" 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/en/blog/release-v0-0-55#summary" class="hash-link" aria-label="Direct link to Summary" title="Direct link to Summary" 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/en/blog/release-v0-0-55#see-also" class="hash-link" aria-label="Direct link to See Also" title="Direct link to See Also" translate="no">​</a></h2>
<ul>
<li class=""><a class="" href="https://burgan-tech.github.io/vnext-docs/en/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>
        <author>
            <name>vNext Team</name>
            <uri>https://github.com/burgan-tech</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[vNext v0.0.54: Forge Studio, Incident Takibi ve Çok Kanallı Bildirimler]]></title>
        <id>https://burgan-tech.github.io/vnext-docs/en/blog/v0054-neler-degisti</id>
        <link href="https://burgan-tech.github.io/vnext-docs/en/blog/v0054-neler-degisti"/>
        <updated>2026-05-19T00:00:00.000Z</updated>
        <summary type="html"><![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.]]></summary>
        <content type="html"><![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/en/blog/v0054-neler-degisti#vnext-forge-studio-art%C4%B1k-vs-code-markette" class="hash-link" aria-label="Direct link to vNext Forge Studio artık VS Code Market'te" title="Direct link to vNext Forge Studio artık VS Code Market'te" 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/en/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/en/blog/v0054-neler-degisti#instance-incident-takibi" class="hash-link" aria-label="Direct link to Instance Incident Takibi" title="Direct link to Instance Incident Takibi" 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/en/blog/v0054-neler-degisti#notificationtask-%C3%A7ok-kanall%C4%B1-bildirim-deste%C4%9Fi" class="hash-link" aria-label="Direct link to NotificationTask: Çok Kanallı Bildirim Desteği" title="Direct link to NotificationTask: Çok Kanallı Bildirim Desteği" 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/en/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/en/blog/v0054-neler-degisti#transition-annotations" class="hash-link" aria-label="Direct link to Transition Annotations" title="Direct link to Transition Annotations" 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/en/blog/v0054-neler-degisti#view-renderer-bilgisi" class="hash-link" aria-label="Direct link to View Renderer Bilgisi" title="Direct link to View Renderer Bilgisi" 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/en/blog/v0054-neler-degisti#instance-tablo-alanlar%C4%B1-currentstatetype-currentstatesubtype-stage" class="hash-link" aria-label="Direct link to Instance Tablo Alanları: CurrentStateType, CurrentStateSubType, Stage" title="Direct link to Instance Tablo Alanları: CurrentStateType, CurrentStateSubType, Stage" 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/en/blog/v0054-neler-degisti#transition-mapping-davran%C4%B1%C5%9F%C4%B1-de%C4%9Fi%C5%9Fti" class="hash-link" aria-label="Direct link to Transition Mapping Davranışı Değişti" title="Direct link to Transition Mapping Davranışı Değişti" 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/en/blog/v0054-neler-degisti#shared-transitions-availablein-art%C4%B1k-zorunlu-de%C4%9Fil" class="hash-link" aria-label="Direct link to Shared Transitions: availableIn Artık Zorunlu Değil" title="Direct link to Shared Transitions: availableIn Artık Zorunlu Değil" 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/en/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="Direct link to 31 Request Header Fields Too Large Hatası için Çözüm" title="Direct link to 31 Request Header Fields Too Large Hatası için Çözüm" 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/en/blog/v0054-neler-degisti#vnext-workflow-cli-v107" class="hash-link" aria-label="Direct link to vnext-workflow-cli v1.0.7" title="Direct link to vnext-workflow-cli v1.0.7" 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/en/blog/v0054-neler-degisti#%C3%B6zet" class="hash-link" aria-label="Direct link to Özet" title="Direct link to Özet" 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/en/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>
        <author>
            <name>vNext Team</name>
            <uri>https://github.com/burgan-tech</uri>
        </author>
        <category label="release" term="release"/>
        <category label="duyuru" term="duyuru"/>
        <category label="forge-studio" term="forge-studio"/>
        <category label="notification" term="notification"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Release v0.0.54]]></title>
        <id>https://burgan-tech.github.io/vnext-docs/en/blog/release-v0-0-54</id>
        <link href="https://burgan-tech.github.io/vnext-docs/en/blog/release-v0-0-54"/>
        <updated>2026-05-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Overview]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="overview">Overview<a href="https://burgan-tech.github.io/vnext-docs/en/blog/release-v0-0-54#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" 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/en/blog/release-v0-0-54#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" 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/en/blog/release-v0-0-54#docker-images-built-with-stale-version-from-commonprops-620" class="hash-link" aria-label="Direct link to Docker images built with stale version from common.props (#620)" title="Direct link to Docker images built with stale version from common.props (#620)" 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/en/blog/release-v0-0-54#fix-build-pipeline-non-fast-forward-push-and-transient-mcr-403-errors-627" class="hash-link" aria-label="Direct link to Fix build pipeline non-fast-forward push and transient MCR 403 errors (#627)" title="Direct link to Fix build pipeline non-fast-forward push and transient MCR 403 errors (#627)" 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/en/blog/release-v0-0-54#propagate-stage-property-through-transition-pipeline-630" class="hash-link" aria-label="Direct link to Propagate Stage property through transition pipeline (#630)" title="Direct link to Propagate Stage property through transition pipeline (#630)" 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/en/blog/release-v0-0-54#subflow-errorboundary-fallback-to-parent-flow-574" class="hash-link" aria-label="Direct link to SubFlow ErrorBoundary fallback to parent flow (#574)" title="Direct link to SubFlow ErrorBoundary fallback to parent flow (#574)" 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/en/blog/release-v0-0-54#fix-distributed-lock-ttl-extension-failure-in-transition-pipeline-auto-chains-672" class="hash-link" aria-label="Direct link to Fix distributed lock TTL extension failure in transition pipeline auto-chains (#672)" title="Direct link to Fix distributed lock TTL extension failure in transition pipeline auto-chains (#672)" 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/en/blog/release-v0-0-54#features" class="hash-link" aria-label="Direct link to Features" title="Direct link to Features" 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/en/blog/release-v0-0-54#expose-cancel-transition-in-availabletransitions-from-state-function-622" class="hash-link" aria-label="Direct link to Expose cancel transition in availableTransitions from State function (#622)" title="Direct link to Expose cancel transition in availableTransitions from State function (#622)" 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/en/blog/release-v0-0-54#add-currentstatetype-currentstatesubtype-and-stage-fields-to-instance-624" class="hash-link" aria-label="Direct link to Add CurrentStateType, CurrentStateSubType, and Stage fields to Instance (#624)" title="Direct link to Add CurrentStateType, CurrentStateSubType, and Stage fields to Instance (#624)" 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/en/blog/release-v0-0-54#add-configurable-kestrel-request-header-size-and-count-limits-640" class="hash-link" aria-label="Direct link to Add configurable Kestrel request header size and count limits (#640)" title="Direct link to Add configurable Kestrel request header size and count limits (#640)" 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/en/blog/release-v0-0-54#store-mapped-payload-in-instancetransition-body-instead-of-raw-request-data-641" class="hash-link" aria-label="Direct link to Store mapped payload in InstanceTransition body instead of raw request data (#641)" title="Direct link to Store mapped payload in InstanceTransition body instead of raw request data (#641)" 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/en/blog/release-v0-0-54#add-annotations-metadata-to-transition-definitions-for-client-side-filtering-642" class="hash-link" aria-label="Direct link to Add annotations metadata to transition definitions for client-side filtering (#642)" title="Direct link to Add annotations metadata to transition definitions for client-side filtering (#642)" 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/en/blog/release-v0-0-54#add-renderer-property-to-view-entity-for-ui-sdk-dispatch-643" class="hash-link" aria-label="Direct link to Add renderer property to View entity for UI SDK dispatch (#643)" title="Direct link to Add renderer property to View entity for UI SDK dispatch (#643)" 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/en/blog/release-v0-0-54#shared-transition-availablein-state-all-support-566" class="hash-link" aria-label="Direct link to Shared transition: availableIn state &quot;all&quot; support (#566)" title="Direct link to Shared transition: availableIn state &quot;all&quot; support (#566)" 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/en/blog/release-v0-0-54#revive-notificationtask-with-full-state-function-response-binding-662" class="hash-link" aria-label="Direct link to Revive NotificationTask with full State Function response binding (#662)" title="Direct link to Revive NotificationTask with full State Function response binding (#662)" 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/en/blog/release-v0-0-54#add-burgan-techvnext-meta-npm-package-to-publish-version-manifestjson-663" class="hash-link" aria-label="Direct link to Add @burgan-tech/vnext-meta npm package to publish version-manifest.json (#663)" title="Direct link to Add @burgan-tech/vnext-meta npm package to publish version-manifest.json (#663)" 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/en/blog/release-v0-0-54#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" 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/en/blog/release-v0-0-54#instancetransition-body-art%C4%B1k-mapped-payload-i%C3%A7eriyor-641" class="hash-link" aria-label="Direct link to InstanceTransition body artık mapped payload içeriyor (#641)" title="Direct link to InstanceTransition body artık mapped payload içeriyor (#641)" 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/en/blog/release-v0-0-54#configuration-updates" class="hash-link" aria-label="Direct link to Configuration Updates" title="Direct link to Configuration Updates" 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/en/blog/release-v0-0-54#issues-referenced" class="hash-link" aria-label="Direct link to Issues Referenced" title="Direct link to Issues Referenced" 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/en/blog/release-v0-0-54#summary" class="hash-link" aria-label="Direct link to Summary" title="Direct link to Summary" 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/en/blog/release-v0-0-54#see-also" class="hash-link" aria-label="Direct link to See Also" title="Direct link to See Also" translate="no">​</a></h2>
<ul>
<li class=""><a class="" href="https://burgan-tech.github.io/vnext-docs/en/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>
        <author>
            <name>vNext Team</name>
            <uri>https://github.com/burgan-tech</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[vNext Docs'a Hoş Geldiniz]]></title>
        <id>https://burgan-tech.github.io/vnext-docs/en/blog/welcome</id>
        <link href="https://burgan-tech.github.io/vnext-docs/en/blog/welcome"/>
        <updated>2026-04-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[vNext Platform dokümantasyon sitesi yayında! Bu site 4 ana bölümden oluşuyor: Technical, Architecture, Business ve Product.]]></summary>
        <content type="html"><![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>
        <author>
            <name>vNext Team</name>
            <uri>https://github.com/burgan-tech</uri>
        </author>
        <category label="duyuru" term="duyuru"/>
    </entry>
</feed>