What is new on the ToRun platform, newest first.
June 2026 — 53 changes
Líkanaveljarinn býður nú upp á Google Imagen og Gemini fyrir myndir, og OpenAI Sora og Google Veo fyrir myndbönd, ásamt þeim líkönum sem þú hafðir nú þegar. Veldu nákvæmlega það sem þú vilt, eða láttu Auto velja það sem…
Tengdu saman nokkur AI-skref í Workflow sem þú getur keyrt þegar þér hentar, og birtu það svo á Marketplace eða skoðaðu hvað aðrir höfundar hafa deilt. Workflow Editor, Runner og Marketplace eru nú aðgengileg beint úr va…
Bættu ToRun við heimaskjáinn þinn og ræstu það eins og innbyggt forrit, í fullri skjástærð og með eigin tákni, svo það sé aðeins eitt bank í burtu þar til farsímaforritið kemur.
Nýtt lógó og hreinna vörumerki um allt forritið, fínstillt fyrir bæði ljósa og dökka þemað.
Veldu hversu mikið gervigreindin pælir, núna líka í Auto-stillingu. Myndafyrirmæli geta nú nýtt vistuðu minnin þín í kyrrþey svo niðurstöðurnar passi við fólkið og smáatriðin sem þér þykir vænt um. Og minningar sem eru n…
Framvinda í myndgerð birtist nú beint við hlið niðurstöðunnar í stað þess að vera undir forminu, hver síða opnast hrein, og nýjasta sköpunin þín er fremst og í forgrunni á meðan þær eldri eru geymdar í Library.
Veskissagan þín er nú síðuskipt og sýnir nákvæmar upphæðir undir senti, og að fjarlægja atriði úr Library veldur ekki lengur villu.
Stofnaðu auglýsendareikninginn þinn og sendu inn herferðir til yfirferðar beint frá reikningnum þínum, án þess að bíða eftir handvirkri uppsetningu.
Á bak við tjöldin: sanngjarnara bókhald á ókeypis inneign, traustari eftirlit með greiðslum til höfunda og heimildum, öruggari miðlunarstjórnun og áreiðanlegri keyrslur á vinnuflæðum.
Rauntímaþýðing gefur þér nú kost á að velja á milli tveggja véla og finna þá sem hentar samtalinu þínu — þar á meðal nýjan valkost sem talar 77 tungumál, meðal annars tyrknesku og rússnesku. Hver valkostur sýnir verðið s…
Líkön sem áskriftin þín nær ekki yfir birtast nú með litlum lás og leið með einum smelli til að uppfæra áskrift eða fylla á veskið, í stað þess að bregðast fyrst eftir að þú sendir. Við opnuðum líka öflugri líkön fyrir F…
Deildu mynd einu sinni og aðstoðarmaðurinn heldur því sem hann sá það sem eftir er af samtalinu — svo þú getur spurt um hana mörgum skrefum síðar, jafnvel eftir að skipt er um líkön, og hann hleður aldrei myndinni upp af…
Spjallsvör teikna nú skýringarmyndir sem alvöru skýringarmyndir, setja upp töflur með skýrum römmum og stilla stærð fyrirsagna að skilaboðunum í stað þess að fylla skjáinn — svo svörin eru auðveldari aflestrar í fljótu b…
Þegar líkan þarf uppfærslu eða inneignin þín er lítil færðu nú vinalegan borða með Uppfæra áskrift og Fylla á veskið hnöppum beint þar. Svör sem ekki er hægt að búa til útskýra ástæðuna í stað þess að skilja eftir tóma k…
Greiðsluskráningar, saga og virkni birtast nú á þínum staðartíma í stað UTC, svo tímastimplar passa við klukkuna á veggnum hjá þér.
Þegar þú byrjar nýtt spjall er nú endurnýtt tómt spjall í stað þess að safna upp auðum spjöllum, spjöll sem fengu aldrei svar fylla ekki lengur listann þinn, og staðgenglar fyrir titla fá raunverulegt nafn um leið og þú…
Fyrirtæki geta nú sett upp auglýsandareikning og keyrt sínar eigin auglýsingaherferðir frá upphafi til enda — búið til herferðir, bætt við auglýsingaefninu sem fylgir þeim og sent þær inn til skjótrar yfirferðar áður en…
Að nota þinn eigin þjónustulykil nær nú einnig yfir rauntímarödd, rauntímaþýðingu og rauntímatextun: AI-notkunin fer í gegnum þinn eigin lykil og við rukkum aðeins lítið mínútugjald fyrir vettvanginn.
Opinberu síðurnar okkar eru nú knúnar af breytanlegu efni á mörgum tungumálum, upphlaðnar myndir eru skannaðar fyrir óöruggt efni áður en þær eru geymdar, nýskráning reikninga og staðfestingartölvupóstar virka áreiðanleg…
Löng svör keyra nú á þjóninum og halda áfram á meðan þú skiptir um spjall, opnar aðra síðu eða lokar flipanum. Komdu aftur hvenær sem er og svarið er enn að streyma, eða bíður þín nú þegar.
Spjall sem hafið er innan verkefnis tekur sjálfkrafa upp leiðbeiningar þess, hlaðna þekkingu og minni, sýnir verkefnamerki með snöggum tengli til baka og nefnir verkefnið í nýlegu spjalli þínu. Þú getur einnig bætt PDF-,…
Minni aðstoðarmannsins þíns fylgist nú með hversu hratt hver staðreynd breytist og merkir þær sem kunna að vera úreltar, svo að það reiðir sig á það sem enn er satt. Nýr ritill gerir þér kleift að skoða, bæta við og fjar…
Við höfum bætt við nýjustu líkönum fyrir myndir, myndskeið, umritun og rauntímarödd, og opnað sjálfstæðar Þýðingar- og Umritunarsíður svo þú náir í þessi verkfæri beint úr valmyndinni.
Talaðu og fáðu orðin þín þýdd nánast samstundis: veldu tvö tungumál, skiptu á þeim með einni snertingu, og þýðandinn fangar röddina þína og streymir þýðingunni til baka á meðan þú talar.
Myndsíðan heldur nú reitunum í takt þegar þú eyðir úr safninu, gerir þér kleift að stilla lengd skeiðsins fyrir hvert líkan, fjarlægja einstök skeið og merkir forskoðunarniðurstöður greinilega, svo þú vitir alltaf hvað þ…
Aðstoðarmaðurinn í forritinu sýnir nú fallega sniðin svör, heldur nýjustu skilaboðunum í sjónmáli á meðan hann skrifar, vistar fullbúna svarið með öruggum hætti og gefur hverri samræðu sjálfvirkan titil.
Svör sem innihalda tengla, stærðfræðiformúlur eða gjaldmiðilsupphæðir birtast ekki lengur auð eða hálfteiknuð, jafnvel eftir að síðan er endurhlaðin, og djúprannsóknarsvör innihalda alltaf lokasamantekt sína.
Víðtæk lota af vinnu á bak við tjöldin: nákvæmari notkunarmæling og útgjaldasamtölur, sanngjarnari sjálfvirkar endurgreiðslur, traustari rauntímaskilaboð, sterkari verndarráðstafanir fyrir friðhelgi og öryggi, og skýrari…
Opinberar bloggfærslur og spjallborðsumræður — að meðtöldum viðbrögðum og svörum — eru nú sýnilegar gestum sem ekki eru skráðir inn.
Notkun er nú rukkuð með einni, sanngjarnri álagningu, mælar þínir fyrir mánaðarlega eyðslu og eftirstandandi fjárhag sýna rétt, og listinn yfir líkön hefur verið hreinsaður — úreltum líkönum verið hætt og nýjum flaggskip…
Verkferlaskráningar og pakkar geta sýnt almennilega forsíðumynd, sem gerir markaðstorgið auðveldara og notalegra til að skoða.
Biddu aðstoðarmanninn og hann fyllir út eyðublöð, smellir á hnappa og ferðast um forritið fyrir þig — studdur af víðtækara verkfærasafni sem nær nú til tengiliðar, algengra spurninga, spjallborðsins, minnis og einsskrefs…
Svörin streyma nú inn orð fyrir orð í stað þess að birtast öll í einu, og hægt er að draga aðstoðarkúluna þangað sem hentar þér, með skýrri vísbendingu um hvað hún er að vinna að.
Að búa til verkefni og hefja nýtt spjall innan þess virkar nú snurðulaust, svo þú getir haldið tengdu spjalli, skrám og samhengi saman.
Myndbönd spilast áreiðanlega, einkamiðlar hlaðast inn um örugga milliþjónustu, avatarar höfunda og persóna birtast nú öllum, og raddskilaboð eru umrituð án villna.
Þegar hluti þjónustunnar á í vandræðum er tilkynningin nú auðskildari og afhjúpar ekki lengur innri heiti birgja.
Tengdu utanaðkomandi forrit með einni innskráningu eða API-lykli, svo aðstoðarmaðurinn geti unnið beint með verkfærunum sem þú notar nú þegar.
Myndverkfærin velja nú líkan sem hentar því sem þú ert að gera, sýna samstundis forskoðun á niðurstöðunni á staðnum, og vinnslan virkar aftur eftir breytingu á líkani þjónustuaðila.
Þegar mynd eða viðhengi hefur verið fjarlægt sýna spjallsagan, myndasafnið og myndvinnslan nú vinalegan staðgengil í stað þess að stöðvast með villu.
Þýðandinn býður nú upp á leitanlegan val með um það bil 100 tungumálum, hvert sýnt með heiti sínu á frummálinu og á ensku.
Við höfum bætt við hópi nýrra blogggreina og spjallborðsþráða — að meðtöldum svöruðum spurningum — svo það er meira til að lesa og kanna strax frá fyrsta degi.
Spjallið getur nú leitað í hleðslunum þínum, keyrt Python í sandkassa, breytt myndum, umritað og talað hljóð, og ræst vinnuflæði þín — allt án þess að fara úr samtalinu.
Láttu spjallið leita á lifandi vefnum, keyra marggjafa djúprannsóknir og sækja og lesa heilu síður — hvert svar kemur til baka með heimildunum sem það notaði.
Aðstoðarmaðurinn þinn heldur nú léttu minni þvert á spjöll, getur skráð hvað hann man, og hlýðir gleymingarbeiðni á hvaða tungumáli sem er.
Búðu til og breyttu myndum, framleiddu stuttmyndir og samsettu lög með textum — knúið af nýjum mynd-, myndbönd- og tónlistar-vélum, með sameiginlegum margmiðlunarvalsmönnum og safninu þínu einum smelli í burtu.
Talaðu við ToRun upphátt — ný rauntíma raddháttar geta færir talsamtöl og beinni umritun í spjallið.
Vinnuflæðikeyrslur kjósa nú gæðalíkön, gera hlé vegna samþykktar þar sem það skiptir máli, og má hætta við, endurgera og halda áfram — með öllum úttakum vistað beint í safnið þitt.
Skiptu tengdum spjöllum, skrám og samhengi í Verkefni svo aðstoðarmaðurinn þinn hafi alltaf réttan bakgrunn fyrir verkið.
Dragðu upp og endurbættu langt efni og kóða á sérstöku Canvas spjaldi beint við hliðina á spjallinu þínu.
Rúllandi samantektir, greindar samhengisgluggar og hraðari sögufletting heldur löngum spjöllum samræmdum og fljótlegum, með skýrum stjórnunum þegar samtal fer yfir líkansgluggann.
Mannvæn ókeypis heimild sem endurhleðst yfir rúllandi glugga, skýrari útgjaldamælar, sjálfvirkar endurgreiðslur þegar mynd eða myndband mistekst, og rökhugsunarmóda-stjórnun sem opnar aðeins það sem staðan þín nær yfir.
Tugir 2026 líkana bætt við og gamaldags eytt, ásamt daglegri sjálfvirkri samstillingu sem heldur veitandalíkönum og verðlagningu uppfærðum — stjórnað úr nýrri stjórnandaskrá.
Birtu samtal á opinberum tengli og efldu samfélagið í kring um það sem þú skapar.
May 2026 — 499 changes
Sjálfstætt .NET stjórnborðsútbúnaður (test/ToRun.SmokeTests) sem auðkennir sig á keyrandi Host (OpenIddict lykilorðsveiting) og æfir allar kjarnagreinar frá enda til enda yfir raunverulegt HTTP API: auth/me, minni CRUD,…
Margmiðlunarefni pallsins er geymt í EINKANOTAÐRI Bunny geymsluhólf, þannig að einföld
Lýkur spjalldrifna minnisstjórnunareiginleika ofan á
memory_forget skilaði no_match fyrir minni sem eru til.
gemini-2.5-flash byrjaði að skila HTTP 400 á thinkingBudget=128 (lág 52-N
Tvær hýsilsstjórnendarsíður (/admin/model-catalog, /admin/model-onboarding)
Uppgötvun passaði aðeins nákvæmlega eftir ProviderModelId/ModelKey, þannig að gamaldags veitandi
Hlið rökhugsunarmóda er nú fjármögnunartengd, ekki þrepstengd.
Besta-af-báðum sameining í lendaða 52-Q-MODEL-SYNC-JOB samstillingu: þegar OpenRouter
Rökhugsunarmódaval var harðtengt við áskriftarþrep ásamt undanþágu fyrir stjórnanda/hýsil frá fyrri, hafnari aðferð.
Fasi 1 afurð: 26-provider listi/verðlagsgjávinnu-birgðir, the
Innleiðingarvísirinn (fasar A-D) SKAPAR aðeins skráningarlínur; ekki var
Bakendi (torun.agent): SharedChat fær IsListed/ListedSlug/ListedAt + afritaðar kortasvæðar; PublicCommunityAppService + PublicCommunityController (nafnlæst /community straumur + skoðun eftir slög); CommunityListingAppSer…
Hljóðviðhengi í spjalli var brotið; raunveruleg rótarorsök var önnur en
HLUTI 1 — "Meðhöndlun samhengiflæðis" fellivalmynd í spjallhaus var föst á
Fjarlæging daglegra þaks (84178afab) eyddi DailyKey/MonthlyKey úr BudgetBucketCacheItem
Hluti 1 — gróðra MongoDB samþættingarprófanagólf.
Rökhugsunarmódastrengirnir (Effort:Tooltip, Effort:Locked:Tooltip,
Nákvæmur, veitandaóháður rökhugsunarmóda á spjallstjórnandanum,
Lokaútlit dauðs kóða fyrir endurskrift á lotuglugga fjárhagsáætlunar.
Mánaðarleg/dagleg útgjaldamæli les fjarmælingarnar UserDailySummary (ScopeKey=userId,
Uppfærsla eftir endurskoðun á lotuglugga fjárhagsáætlunar (2a33fd31f).
Heim (/) + me-heim fjárhagsáhrettumælar sýndi "$0.00 / 0% / $0.00" þegar sem
Fjárhagsáhrettutak ókeypis þreps var "$2 / 30d / 24h" dropi: endurfylling = $2/720/klst og
Heim (/) og me-heim (/me) FJÁRHAGSÁHÆTTUTAK mælar sýndi "$0.00 (2% / $0.01)":
Margsnúnar sjónarmiðsgallar.
Fyrsta afturkvæmnilás í reyklaginu.
Rótarorsökulagfæring fyrir endurteknar 404 við titilsmíð / opinbert spjall / sjónarmiðs: geta
Notandi staðfesti að myndlýsing virkar nú.
Eigandaumfang fékk 403 jafnvel fyrir lögmætan spjalleigananda: stjórnanda-skapaðar
A3 RAUNVERULEG rótarorsök (fundinn með lifandi vafraleifar): spjallviðhengismynd
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Úrlausn IQueuedRequestDispatcher stappaði yfir við ræsingu (ógrípanleg — a
Bæði Host keyrsluvaskurinn (appsettings.json) og ræsingarskráningarmennirnir
Endurtekinn rótarorsök: ChangelogBackfillDataSeedContributor prófaði einvirkni á
Keyrði extract-sprint-changelog.py + propagate-changelog-locales.py úr main:
QueuedRequestRunner.DoWorkAsync resolved IQueuedRequestDispatcher at the TOP of
The chat overrun check compared raw history tokens against the TIER budget (ctxBudget.MaxInputTokens) only, so when the tier budget exceeded the routed model's context window the trim was skipped: e.g.
Proactive "concern toast" (Honest-UX DNA pattern #3).
Translate the 16 Chat:Context:* (Agent resource) overrun-prompt/footer/toast keys and the 13 MySettings:ContextOverrun:* (ToRun resource) settings keys from en.json into all 28 sibling locales (en-GB verbatim).
Propagate the EN-only humane-error + status-banner keys (ErrorHumanizerService
Phase B surface for the chat-canvas (ChatGPT Canvas / Claude Artifacts
Honest-UX DNA pattern #3.
Completes the wallet-funded context-overrun feature.
Propagates LEARNING-LOOP Phase 2 keys (Admin:UserExperience:ComplaintLoop:{Tab,Title,Subtitle,FixedInWindow} + Admin:UserExperience:TimeToFix:Empty) plus 5 earlier EN-only Permission:UserExperience.* strings from the sam…
Four parallel 52-Q chips landed code referencing symbols their sibling chips
Closes the 29-locale parity gap for the CHAT-CANVAS / ChatSummaries slices,
Phase 2 Scope B of the honest-UX-DNA pattern #5 loop.
Honest UX DNA pattern #2 (Reversibility) — make the auto-refund VISIBLE.
Honest UX DNA pattern #2 (Reversibility) — wire the projection layer
Honest UX DNA pattern #2 (Reversibility) — refund the user when something
Honest UX DNA pattern #2 (Reversibility) — user-facing read API for the
EN-only this commit — the paired slice52-Q-AUTO-REFUND-LOCALE chip fans
Honest UX DNA pattern #2 (Reversibility) — append-only audit row for
Paired locale fan-out for the /me/projects feature (components landed in
EnBillingSource.RealtimeVoice + voice-realtime gætuyfirlit + samtenging
Backend exception → frontend humane message + retry hint + status banner.
Consolidator landed both 52-Q-CHAT-CONTEXT-BUILDER's ChatSummaries
Spegl af rauntíma raddháttar UI lyklum bætt við en.json í
Native translations of the 40-key User Sentiment / Privacy Policy v3 Section 11 block (legal text per GDPR Art.
Suite-managed file edits (Permissions+MongoDB+ChatPipeline)
land additional parallel-chip WIP
Consolidates the working-tree state stashed during the
Adds IChatSummarizationService + concrete impl that compresses the dropped
Third of the four P0 chat tools — ChatGPT File Search parity.
Why: backend tier-budget context builder (slice52-Q-CHAT-CONTEXT-BUILDER)
Adds ImageEditTool (mirror of ImageGenerateTool) so the LLM can edit user-
Fans out the 46 Agent WebSearch + Menu:WebSearch + Permission:WebSearch.*
Why: P1 voice tools listed in feedback_chat_context_management.md — text
Closes the user-complaint → shipped-fix loop automatically so we never make
Backend:
The /me/web-search slice landed almost entirely via Serkan's recent
Post-streaming runner that drives Pyodide in a Web Worker and feeds
MyMediaUploadAppService.PurposeChatAttachment validation extended to
Two-endpoint AppService that bridges the server-side code_interpreter
Ship the ADR-043 Pyodide v1 backend slice — the LLM-facing IAgentTool
Why: long chats (100+ turns) bloat browser memory + slow ngx-markdown re-renders
Fourth of 4 P0 chat tools per feedback_chat_context_management.md roadmap and
Phase 1 design spike for code_interpreter chat tool (second P0 tool after
Public-chat launcher now boots a Cloudflare Turnstile widget at view
Locale key for the new Cloudflare Turnstile rejection banner shipped
The [AllowAnonymous] PublicChatAppService now verifies a Cloudflare
Marketing landing's anon chat now streams the assistant reply
Surface the three new WebSearchOptions knobs in appsettings.json so the
Three tools wired to the canonical authoring-tier IWebSearchProviderFactory.
Catalog seed for the dual-tier chat web-search tooling.
Adds the second half of the provider contract needed by the dual-tier chat
User report 2026-05-27 — public chat marketing surface 60s+ bekleyip
User: "ana sayfada neden markdown renderer yok, direk markdown olarak
Bridges the gap between DeepResearchSession CRUD (sat at default state forever)
Propagate Public:Chat:Error:NoModel / CallFailed / EmptyPrompt
User report 2026-05-27: pricing sayfasındaki Partner card'ın
User: "burayı geçen gün yaptık sağlamdı, yine bozuldu.
Slice 452-fu already shipped first-class Brave + Tavily IWebSearchProvider
Replaces the stub web_search tool with a config-selectable provider:
User: "deepseek response geldi ekran 2'de, sayfayı refresh edince
Native-quality translations for "Action completed.
User şikayet: "gpt 4o mini response boş geldi.
User: "her sayfa refresh ettiğimde chatlerin yerleri ve sıraları
Önceki commit (e2a74db8) sadece relativeTime/fullTimestamp helper'ını
Sprint 50-S backend fix made the wire format emit `Z`-suffixed ISO
User direktif: "arkada iş kalmasın".
Önceki "fix" (a56449db) Opus 4.7 / Sonnet 4.6 için preemptive olarak
Pre-fix rendered the warning triangle as an inline <i> followed by
Önceki rev (a56449db) sadece ilk-mount fallback'i çözüyordu —
Third regression of the same bug class in three sessions.
User reported four issues in a single round of chat smoke-testing:
Atladığım şey buydu.
Three iterations of the same bug (Monthly Spend $0 → $0.33 → $0.15) had
Mic-capture via MediaRecorder (chat composer Whisper STT, Sprint 52-O)
OpenAI gpt-4.1 family (Deprecated → Retired, isActive:false, version 3→4):
Close 10 pricing rows for the 5 retired models:
Anthropic (DeprecatedAt 2025-09-29, RetiresAt 2026-05-01):
User reported a wide swath of dropdown rows error on send:
User report: "reason yapar gibi baya bekliyor ama hareket yok, reason
Audit continuation after slice52-Q-FINANCIAL-AUDIT-1.
- PROGRESS.md: Sprint 52-Q-USER-BILLING-DAILY entry with all 4 commits,
User report: "monthly spend 0.33 olamaz, burada bir hata var, muhtemelen
- New IDataSeedContributor: UserBillingDailyBackfillDataSeedContributor
- New IInboxConsumer: GroupId "torun-user-billing-daily-summary"
- Suite entity JSON: modules/torun.subscription/.suite/entities/UserBillingDailySummary.json
User: "TelemetryUserDailySummaries tablomuz var gördüğün gibi içide dolu.
User report (continued from slice 52-O-NIGHT-TODO-IMPL/home-spend-fallback):
User report: "monthly spend her gün sıfırlanıyor — redis recycle ettiğimden,
activity routes done + remaining TODO inventory
User feedback: "kod içerisine daha önce yazdığımız TODO lara hiç
TODO cleanup audit ledger
User directive: "TODO ve benzeri yorumları ara, sonraya bırakılmış iş
morning report for Serkan — overnight locale + changelog ledger
These four ad-hoc scripts drove the overnight locale recovery:
extract-sprint-changelog.py wrote 364 sprint rows to
Followed up the placeholder fill (commit a3834ea4) with native-language
Audit found 1311 missing keys spread across 27 sibling locales (en-GB
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds the 11 EN-master entries the new SourceContext chip strip
Surfaces the new SourceContext metadata as a user-facing filter so
Closes the chat-attachment data-loss bug: previously the composer
ChatTurn interface gains audioTranscripts[] with an expanded flag.
Add CapabilityKeys.AudioInput ("audio-input") so the fallback condition is
The chat composer's prior path inlined image attachments as base64 data
Pre-fix, the composer cost badge only sized the draft text via
`:streamGenerateContent` without `alt=sse` returns a JSON-array transport
GetActivePricingAsync now falls back to model-level pricing rows when the
Adds 9 new Chat:Continue:* keys (Button, Tooltip, Loading, Error, MaxReached,
Angular proxy: +wasTruncated/continuedFromMessageId/hasContinuation on both DTOs;
OpenAI Chat Completions silently consumes reasoning tokens for the
PersistAssistantMessageAsync now sets FinishReason/WasTruncated/ContinuedFromMessageId
Extend ChatMessage.Extended.cs with 4 new virtual properties (FinishReason,
User reported the "Daily free limit reached — Charge wallet" yellow
Propagate the new MediaRecorder + Whisper STT composer keys from en.json to all 28
Why: legacy Web Speech path produced transcript-only with no audio artifact
User reported two chat UX papercuts after the chat-footer fix landed:
User-reported chat composer trio:
Propagated Changelog:Sprint:<slug>:Title and :Body keys for the 38 new sprints
Minor bump for the Phase 1 feature wave summarized in the changelog backfill
Ran extract-sprint-changelog.py against HEAD.
- New IChatPipelineAppService.GenerateTextAsync endpoint (creative-writer
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Comment introduced in 57c15021 used backticks around '/marketplace' which
**Bug 1 — Card titles render raw `WorkflowTemplate:foo:Title` keys:**
Per-step output variable snapshot so the resume-aware wave loop can
In-memory wait loop in WorkflowExecutorAppService.RunWaveLoopOnRowAsync (line 1797) is
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Inject HumanApproval (kind=12) node into all three birthday catalog
WorkflowTemplate:BirthdayCinema:Title + :Description propagated to all 26
User wanted the third leg of the birthday trio: "isteyen kullanıcı video
Birthday workflows expose a textarea field 'provided_lyrics'; when filled
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
THE photo-binding bug.
User observation: "library bakınca sadece image görüyroum ne ses var ne
User report: merge step "Succeeded" but composite_url_duration_seconds
User report: "succeeded yazıyor da bunlar success degil ki hata veriyor
User directive 2026-05-25 — region prefix produced 401 Unauthorized on
Root cause (from Note column added in 0a9e941f):
Root cause: ImageCapabilityRunner with n>1 packs all generated URLs as a
Adds an "Or pick from your library" link/button beneath the workflow-wizard
Replaces the /me/audio direct file input (audio.component.html line 17 —
Replaces the /me/image Edit-tab mask widget (bespoke library-only modal +
Replaces the inline "Drop an image or click to upload" widget for character
Universal two-tab picker that replaces PC-only uploads across /me/* surfaces.
Pre-fix VideoPipelineAppService.GetCapabilitiesAsync (commit 5e39d434)
Pre-fix /me/video catalog query returned only sora-2 + sora-2-pro because no
Native translation per locale (prefix only; the numeric seconds cap
Pre-fix the duration slider on /me/music was hardcoded max=120s.
Pre-fix VideoPipelineAppService.GetCapabilitiesAsync returned a single
User generated music with `requestedDuration=120s` against Riffusion
User got
User got the UFE
User got HTTP 401 from Replicate after triggering musicgen and the
User reported the /me/music model dropdown stayed empty even with
Console showed:
Carry-forward from 05999c1c.
User reported video + music menus missing from My Account sidebar even
Mirrors fc625886 EN seeding into ar/cs/de/de-DE/en-GB/es/fi/fr/hi/hr/
Angular standalone component mirrors /me/voice + /me/image shape:
User-facing music generation pipeline mirroring ImagePipeline pattern:
The AuthoringPermissions.VideoPipeline.MyGenerate comment says the
Second-pass merge failure after b9dm94er4 + 21983ef0 still surfacing
Adds the Sprint 52-Q ModelOnboarding admin UI strings (Menu:ModelOnboarding +
Fans out the 32 EN keys added in commit be0190b2 (admin /cost-markup
39 MR keys (Menu:Admin:MarginReconciliation, Permission:MarginReconciliation, MarginReconciliation:*) added to every sibling locale under src/ToRun.Domain.Shared/Localization/ToRun/.
Sprint 52-Q-MODEL-ONBOARDING Phase D — round-trip bulk-import / bulk-export
Sprint 52-Q-MODEL-ONBOARDING Phase C — host-admin Angular UI at
Guardrail sweep finding from Phase D of the 52-O-MARGIN-AUDIT sprint.
Sprint 52-Q-MODEL-ONBOARDING Phase B.2 — adds the GenericRestClient that
Phase C UI of the 52-O-MARGIN-AUDIT sprint.
Sprint 52-O-REAL-COST-AUDIT phase C — each pipeline AppService that wraps
Sprint 52-Q-MODEL-ONBOARDING Phase B.1 — scaffolds the AiProviderClientStub
Phase C of the 52-O-MARGIN-AUDIT sprint.
Sprint 52-Q-MODEL-ONBOARDING Phase A — adds AdminModelOnboardingAppService
Sprint 52-O-REAL-COST-AUDIT phase B — every IAi*Client now stamps a
Sprint 52-O-REAL-COST-AUDIT phase A — parallel server-side-only ledger so
Phase B of the 52-O-MARGIN-AUDIT sprint.
Phase A of the 52-O-MARGIN-AUDIT sprint.
Error from DbMigrator on every restart:
Carry-forward from b4ab9daf music_v1 seed bump + feedback_pricing_
User feedback after 21983ef0 landed: looked at ElevenLabs analytics
- ToRun resource: 36 keys (Library:Share:* dialog + SharedMedia:* public page)
Pre-fix: workflow ArtifactSave nodes uploaded blobs to Bunny and stuffed
Sprint 51-M-fu2 completion pass.
Birthday-song-video template's `photos` multiphoto field reached Bunny CDN
Drops native v2.0 About/Terms/Privacy/Contact for 10 brand-new locales
EnhancePromptAsync wrote a BillingRecord and settled the budget but never
Root cause (two layers, one bug):
LoadHistoryAsync previously walked the leaf → ancestor chain by issuing one
Samkvæmt CLAUDE.md reglu 10.
Niðurstaða `python platform-plan/scripts/_validate-29-locales.py` eftir að öll 27 systkinalýðunarrunur komu og BOM-strippass fór fram:
Runur frá 6 samhliða Sonnet þýðandaforritum (allt skráð í kóðageymslu frá fyrri umferðum + nú lokin endanleg hópur):
Serkan caught this — the Generate tab on /me/image has a card-shaped progress bar that walks through Preparing → Requesting → Generating → Fetching with a striped animated `progress-bar bg-info`, phase-specific icon + la…
The bug Serkan surfaced from /me/workflow-runs (Detail click on a Failed run): every workflow step that delegates to an ApplicationService with class-level [Authorize] (ImagePipelineAppService, all the pipelines) termina…
Completes the locale-fanout begun in 0da3c077 (Sprint 52-O-12-locale).
Lesandi endurskoðun á ChatPipelineAppService + InAppAssistant + veitendaforritum + ProviderFallbackChain.
7 of 19 stub locales populated; 12 remaining (cs, sk, hu, ro-RO, hr, sl, ko, zh-Hans, zh-Hant, hi, ar, vi).
Sprint 52-O-18 added ModelLifecycleStatus.LegacyAvailable (used to mark Claude 4.5/4.1/Opus 4.6/Sonnet 4.5 etc.
Sprint 52-O-19 (provider runtime hardening) complete — 7 commits land:
Concrete unblock: AiModel rows whose ProviderKey was set to "musicgen" / "ltx-video" / "flux-1.1-pro" / "hunyuan-video" / "sd3.5-large" / "xtts-v2" / "bark" all route credential lookups through "replicate" when no per-mo…
New IProviderCircuitBreaker (Application.Contracts/AiClient/Resilience/) + default ProviderCircuitBreaker impl backed by IDistributedCache<CircuitState,string> keyed by torun:byok:circuit:{providerKey}:{capabilityKey} wi…
# Conflicts:
ProviderKey="elevenlabs".
ProviderKey=\"replicate\".
PayloadGrammarJson column declared on AiModelCapability.Extended.cs — backports the Sprint 52-O-17 chip's column that the worktree branched off main without (worktree base is 16 commits behind local main, so 52-O-17 wasn…
Adds ~60 new pricing rows in the 520180XX-...
ResolvedAiProvider DTO carries the read-only snapshot that generic adapters consume at request time — protocol drives which adapter class handles the request, BaseUrl is forwarded into the outbound HttpRequestMessage so…
SeedSlice52O18Async() runs at the end of SeedAsync regardless of count gate (idempotent EnsureCapabilityRowAsync calls, deterministic XOR-based GUIDs so reruns are no-ops).
Existing 108 rows: status / deprecatedAt / retiresAt patched per the deprecation calendar in 00-MASTER-SUMMARY.md §"Major Deprecation Calendar" — gpt-4o / 4.1 / 4.1-mini / 4.1-nano / o1 / o3-mini / gpt-image-1 land 2026-…
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
New shared enum EnWireProtocol (11 named + Custom catch-all) covers the realistic provider population: OpenAiCompat (OpenAI/xAI/DeepSeek/Mistral/Groq/Cerebras/Together/Perplexity/Azure-OpenAI/Fireworks/DeepInfra/OpenRout…
EnqueueRawSpecAsync inserts a Pending WorkflowExecution row, stamps QueuedAt + Activity Center row, emits torun.authoring.workflowexecution.queued.v1 via transactional outbox (Rule 8), and returns the DTO so the wizard n…
Claude 4.5 / Opus 4.1 / Sonnet 4.5 / earlier Gemini 2.0 / xAI Grok 3 are all examples of models that stay on the API surface but the provider is steering new traffic to a newer release.
EnPricingUnit grows 12 → 15 to model 2026 billing meters the legacy enum couldn't represent.
The 2026 model generation introduced capabilities that the old 18-key vocabulary couldn't address: Claude's adaptive vs.
23 → 25 providers (stability re-introduced after slice 4xx removal, two OSS-serving newcomers fireworks + deepinfra added).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Pre-52-O-15-fu the OpenAiImageClient hand-coded every model-specific quirk inline.
Backend (fu1): new POST /api/subscription/budget-preview/preview wraps IBudgetGuard.CheckAsync read-only.
OpenAI image API rejects unknown sizes outright with HTTP 400 + "Invalid size 'WxH'.
WorkflowSelectOptionsDataSeedContributor now does an idempotent per-(option, locale)
User feedback on Sprint 52-O-13: "tabi bunun için kullanıcıyı bi popup ile uyarmalıyoz." Letting the wallet bypass the daily cap is the right behaviour for paid credit (52-O-13 fixed the silent reject), but the user stil…
The Free-tier $0.10/day cap exists to spread $2/month allowance across days so a single user can't front-load the host's AI-cost reimbursement.
Sprint 52-O-12d completes the catalog story started by 52-O-12a (entity)
Hygiene-only follow-up to 52-O-12a/b.
User added a per-locale enrichment block to
Sprint 52-O-12a follow-up — DI bootstrap fail
Phase B (Angular wizard) for the 52-O-12a data-driven dropdowns.
Phase 1 backend stack for data-driven workflow wizard dropdowns.
Backend bug — Cache Manager shows 3 categories of ~10+, every Browse empty
UX bug — cryptic exception copy on /media/video-stream
Backend bug — empty Recent transactions list with non-zero balance
UI bug — multi-theme breakage
Backend bug — entire workflow editor surface ships raw keys
Backend bug — every workflow template run failed
Exception screenshot from Serkan (2026-05-23):
Serkan's motto (2026-05-23): "biz 25 farklı AI provider destekliyoruz...
THE ACTUAL ROOT CAUSE of the seven "title-gen yine bozdun" reports —
52-I excluded DeepSeek V4 from cheap-model picks, but on a deployment
50-LLL-2 added an ExcludeReasoningModels filter so the cost-saving
User reported VS Error List showing CS1501 "No overload for method
F15 (root cause: AgentAuditEntry table unused for the bubble's
Four backend regressions in InAppAssistantTurnAppService surfaced
Audit #14 — confirm Sprint 51-A's reasoning opt-in path is per-request,
Two more console warnings flagged in /me/chat after 52-E:
Bundles four small chat-pipeline polish fixes from the audit (#10, #11,
F10 (root cause: bare WriteSseEventAsync in the controller's outer
Three UX / a11y polish items from the sprint 52-D code-review pass.
Two DOM-side hygiene fixes from the sprint 52-D code-review pass:
Three concurrency / state-coherence regressions in the bubble component
Three SSE-stream regressions in the InAppAssistant bubble shipped with
Three chat-pipeline surfaces were emitting hardcoded strings in violation
Serkan flagged ~148 identical "The localization source separator (::)
C5: ResolveFallbackProviderKey returned the literal string "google"
Every state write in chat-pipeline.component.ts goes through a Signal
Three lifecycle / concurrency defects in the chat-pipeline component, all
Serkan flagged a visible dead band between the composer card and the
ChangelogBackfillDataSeedContributor reads from the embedded resource
> "bu contact formunda bütün maillerimizi açık açık yazdık spammerlara mail
Follow-up to Sprint 51-V (commit 373d84d9) which rewrote en.json only.
Smoke at 2026-05-22 showed `/personas` listing "Echo the Storyteller"
Three compounding bugs from 51-S → 51-U all visible in the same screenshot:
51-S / 51-T drifted from the catalog-first vocabulary and shipped a
Cleanup of regressions introduced by 51-S.
Sprint 51-S (28e76a7d) shipped lib-pricing-grid with a contact-sales price cell that
ONE pricing surface for all 6 plans (Free / Starter / Pro / Business /
User mandate (2026-05-22): "Bu description'ları biraz zenginleştir.
User mandate (2026-05-22): public surfaces leaked the visitor to a new
User report (2026-05-22): "Login durumdayken pricing geliyor, public
Two user-flagged issues on the same screenshot (2026-05-22, anon
User report (2026-05-22): "Login durumdayken pricing geliyor ama public
User report after 51-N landed: "DbMigrator çalıştırdım, proje yeniden
User report (2026-05-22): "ABP bunu hala 20 dil görüyor ve dilleri açtığımızda 20 dil çıkıyor.
User correction (2026-05-22): "bizim platformumuz 29 dilde." Legal seeds
User directive (2026-05-22): About too thin, Terms must hold up against
Three connected anasayfa bugs landed in the same commit because they all
User mandate from 2026-05-22: "release çıkmadan önce change loglarının seed
Three connected bugs from the anasayfa list (platform-plan/BUG_LIST_ANASAYFA_2026-05-22.md):
BUG-3+4+5 from anasayfa list closed.
Follow-up to 51-C — my own mistake.
BUG-1 closeout from anasayfa bug list (platform-plan/BUG_LIST_ANASAYFA_2026-05-22.md).
BUG-2 closeout (3-part user report + 1 rule refinement):
BUG-1 part 2.
- Workflow editor, wizard, templates, validation, preview, run history strings
- Workflow editor, wizard, templates, validation, preview, run history strings
- Workflow editor, wizard, templates, validation, preview, run history strings
- Workflow editor, wizard, templates, validation, preview, run history strings
- Workflow editor, wizard, templates, validation, preview, run history strings
- Workflow editor, wizard, templates, validation, preview, run history strings
- Workflow editor, wizard, templates, validation, preview, run history strings
- Workflow editor, wizard, templates, validation, preview, run history strings
Closes ADR-042 — previously Proposed, now Accepted.
`col-md-1 text-end` clipped the localized "Clear all" label at
Sprint 50-PPPP audit — most MessageKey expressions across the codebase
TEST_PLAN §4 deferred — capability key string literals (text-chat,
- persona-profile.component.ts: drop outer `lpx-content-container py-4` wrapper
Three deferred items landed (or were dismissed) since the previous closeout
Completes the slice50-workflow-engine audit pass for the QualityGate
Continues the slice50-media Phase1Note translation pass started by
Replaces 8 [en] placeholder Admin:StorageProviders:Phase1Note:* and
Sweeps the torun.media Localization resource for the 12 non-EN locales
Replaces ~110 [en] placeholder values in the Authoring resource's
[Cursor-aware var insert (slice50-S)]
Closes the loop on slice50-I's per-node budgetUsd intent layer with
User-driven polish on the /media/storage-providers surface:
Adds OptimizerOptions sub-block under BunnyCdnOptions for Pull-Zone-level
Closes chip #118 last deferred item:
Backend (modules/torun.persona):
Closes the deferred item from chip #118 wrap doc:
Two inspector enhancements that close the gap between author intent
WorkflowGraphComponent:
Closes the deferred item from chip #118 wrap doc:
Closes the deferred item from the workflow-editor wrap (chip #118):
Two related extensions to the advanced editor surface:
Rule 8 (transactional outbox) — after the executor's RunSpecAsync returns
StorageBrowse and UploadAsset landing card descriptions had leftover
The existing executor's QualityGate node (Slice 449/449b) already implements
Single AppService surfaces three endpoints:
Workflow-node-shaped wrapper over Sprint 50-LLL's IModelRoutingService.
User-facing wizard-catalogue endpoint.
Captures what landed this sprint (library landing + simple-mode wizard
Auto-propagated from the en.json additions in 9b95c79c (admin panel
Replaces the existing add-node dropdown with a permanent left-rail
Replaces the /me/workflow-editor entry that dropped users straight into
Idempotent host-pass DataSeedContributor that materialises the three wizard
Foundation for the six host-admin /media surfaces.
Catalog entity for wizard-surfaced workflow presets.
Public-site MVC Razor pages were rendering hardcoded fixture data
DbMigrator hit E11000 on BlogPostsDataSeedContributor: the legacy
BlogPostsDataSeedContributor adds the initial public marketing blog catalog
PublicWebsite layout header override:
- Anonymous browse for /marketplace (paged listings)
- Pages/Sitemap.cshtml (route /sitemap.xml) — returns sitemaps.org urlset
- Pages/Legal/Detail.cshtml (route /legal/{slug}) — Markdig-rendered long
- Pages/Pricing/Index.cshtml (route /pricing) — Monthly/Yearly toggle (real
- Pages/Docs/Index.cshtml (route /docs) — section grid landing + sidebar
- Anonymous browse for /personas (paged catalog)
Pull landing data from IPublicLandingAppService stub + pricing teaser from
- ToRun.Web.Public.csproj — add Markdig 0.37.0 for markdown rendering
- Anonymous read for /legal/{slug} — Terms, Privacy, Cookie, Refund,
- Anonymous read for /faq
- Anonymous read for /docs (tree + by-slug)
- Anonymous read for /changelog (paged, PublishedAt DESC)
- Threads list (paged, optional CategoryKey tag match against ForumThread.Tags)
- Anonymous read surface for /blog (list + by-slug)
smoke-backend.py fann VERB_MISMATCH: Angular kallar autt PUT.
Bakendahluti Sprint 50-F: nafnlaus kynningarsíðu demo-spjall með IP-takmarki.
Orðabókin `Dictionary<(DateTime Date, Guid?
Lokar eina kapphlaupsglufuna í KeywordSettlementJob sem gæti.
Framhald af verkefni #67 (50-SS skönnun).
Lokar 50-RRR grunninum (commits A/B/C) með því að víra saman raunverulega samsetta.
Endurfyllt Toggle / Heading / New / Untitled / Empty / Load:Failed / JustNow / MinAgo / HourAgo / DayAgo í öllum 28 staðfærslum sem ekki eru enska (en.json hafði nú þegar fulla uppstillingu frá Sprint 50-CCC-2).
Speglar Sprint 50-LL (Post.CreatorProfileId) + Sprint 50-VV-2 (AdAuction).
Leiðlína leiðir nú getulykil af inntaksfræðilíkani og notar.
Milligöngusamningur fyrir fjöl-inntakssamsettu slóðina.
Grunncommit fyrir fjöl-mynd breytingarendurhönnun (Valkostur C — getu).
Umfangsfundarniðurstaða: vírliðin á ChatPipelineAppService.cs:1415 kallar nú þegar.
5 skipulagðar skráarviðbætur svo framleiðslubilun birtir fulla samhengi sitt.
Tvíhliða lagfæring á bólu sem safnar tómum / óæskilegum lotum.
Lokar fresta -2 frá 50-YY (þar sem hljóðnemafesting var útskerin svo.
Lokar þvereiningarbilinu sem 50-AAA skildi eftir.
Notandinn tilkynnti bæði "Veldu upprunmynd" og "Veldu grímumynd".
Framleiðsluskrá.
Notandinn tilkynnti bæði source-upphlöðun og grímun-upphlöðun á /me/image Edit.
Lokasafn einingasneiðin.
Notandaáhrif: grænn "Upload complete." banner blikkti inn/út fyrir.
Sprint 50-CCCC reyndi að laga upload-pipeline ObjectDisposedException.
Rótarorsök þrálátu "Upload failed" tilkynningarinnar — þótt skrár.
Notandinn tilkynnti fimm aðskilin vandamál.
Notandinn tilkynnti part_001.wav / part_002.wav eytt úr safni en.
50-YYY skildi eftir afturför: openAssetDetail ræsti aðeins textaforhleðslu.
Notandinn tilkynnti Skjöl-flipann tóman eftir að hlaða upp .md / .txt skrám.
CDN almennt URL-mynstur var rangt fyrir /me/library — efni er á hvern notanda.
Tvær villur í einni runu — báðar komu fram í notandaprófun þar sem 4 skrár voru 'hlaðið upp' samkvæmt græna bannera en safnsíðan stóð í 0 hlutum.
Notandinn: 'settu inn framvindustiku fyrir upphlöðun, skrifaðu hversu margar sekúndur, láttu notandann vita hvað hefur verið hlaðið upp, þetta lítur daufur út.'
Tvö notanda-hindrunarvillur úr /me/library-prófum.
Notandinn tilkynnti safn-upphlöðun 400 'Only image/* MIME types are accepted on this endpoint.' eftir að hlaða upp skrá sem ekki er mynd úr Allt-flipanum.
Notandinn tilkynnti Message Citations admin 500 'Internal error'.
Notandinn tilkynnti safn-upphlöðun 'Bunny storage upload failed with HTTP 401'.
Notandinn tilkynnti /me/image Mynda bilað: "Image generation provider".
Notandinn tilkynnti að Sprint 50-III spjaldsstaðsetningarendurhönnun sé ENN ekki.
Rótarorsök (atburðarás B-afbrigði): `openSession()` kallar `messages.set(mapped)`.
Notandinn: "þú þarft ekki að nota sama líkan fyrir titla, þetta eru".
Notandinn tilkynnti að spjaldið héldi áfram að opnast laustengt við FAB þrátt fyrir Sprint.
Sprint 50-CCC hækkaði MaxOutputTokens 24 → 128 í von um ~100.
Notandinn tilkynnti að /me/activity-history væri tómt þrátt fyrir tímar af spjalli/mynd/raddi/o.fl.
Tvær notandaprófunar-afturfarir fundnar og lagfærðar; þriðji málið.
| # | Valmynd | Hópur | Angular-slóð | Bakendaslóð | Staða | Rótarorsök |
Notandinn: "þegar safninu er bætt við skrám af hverju þarf ég að gera það eitt í einu".
Notandinn: "í upprunanum er PC-upphlöðun en í grímunum af hverju er það ekki, við höfum".
Notandinn tilkynnti gagnrýna villu: sérhver PC-upphlöðun kastaði ObjectDisposedException.
Notandinn tilkynnti ítrekað í gær að /me/notifications/ skilaði 404.
Nýlegur spjallalisti í /agent/chat-pipeline hafði per-röð Endurnefna/Eyða.
Notandaprófanir afhjúpuðu 5 vandamál; 4 þeirra leyst í þessum commit, 1.
Daglegur AsyncPeriodicBackgroundWorker (24 klst. skell) fer yfir greiddar.
Sprint 47-O bjó til flatar AdAuction einingar án tengidálka.
Dagleg ABP AsyncPeriodicBackgroundWorker (24 klst. skell) fer yfir biðandi.
Sprint 50-TT var sent í þetta verkefni en fór af sporinu.
Notandinn spurði: safn efri stærðarmæli, PC-upphlöðun, áskriftarþrep kvóti.
Útvíkkar 50-RR mynstrið (VideoJobPollingWorker IAbpDistributedLock).
Sprint 50-P frestaði tölvu-upphlöðun vegna þess að bakendinn skorti Bunny.
50-AA var hætt við í heildarskönnun; þetta er endurtekin runuvinnsluferlið.
Sprint 50-U + 50-EE vírðu könnun + endurgreiðsluflæði en gerðu ráð fyrir einum pod.
Notandadirektíf (Sprint 50-E umferð): bjalla + virkni til hliðar við hliðarstiku táknin.
Bakendi náðist ekki á https://localhost:44304 í þessum sprint.
Sprint 47-H byggði niðurgengna samsetta vísitölu fyrir Creator/Post feed.
Sprint 47-H byggði niðurgengið (TenantId, CreationTime) skönnun fyrir PersonaPost.
Sprint 50-W BillingReconciliationJob fann göt (Paddle).
Sérhvert modules/torun.*/angular/angular.json vísar í.
Sprint 50-CC leigjendaskilnun-próf afhjúpaðu fyriliggjandi galla.
Sprint 47-A..47-P MT-skoðun bætti við TenantId-forskeyttum samsettum vísitölum við.
Sprint 49-röð lokið.
Fyrir-ræsingar R2 áhætta: Sprint 47-A..47-P fór yfir 219+ einingar til.
Sprint 50-U afhjúpaði gap: IBillingRecorder hafði aðeins RecordAsync.
Áætlun §2.3 / R1 úttekt — Sprint 47-A...47-P fór yfir 219+ einingar til.
Áætlun §2.5 eftirlisti: dreift 22 ImageEdit pipeline-lykla (Sprint).
Sprint 50-K fann eina árekstur (subscription plan paddle stillingar).
Áfangi 1.5 §2.1 #3 — þriðji bakgrunnsþjónn.
Áfangi 1.5 §2.1 #4 — fjórði og síðasti for-ræsingar bakgrunnsþjónn.
/api/app/run-input-upload skilaði 404 vegna þess að AppService var.
Sprint 50-P innleiddi /me/image Edit-flipa UI + bakvídd en skildi eftir.
Framhlið (Angular | date pipe + Date constructor) sér um UTC -> staðbundinn tíma.
Áfangi 1.5 §2.1 — forgangsbakgrunnsþjónn.
Áfangi 1.5 §2.1 #2 — annar bakgrunnsþjónn.
Notandinn tilkynnti að "form doldurma" framhaldsumferð skilaði "Message failed".
Villa A: spjallritillinn hundsaði Ctrl+V á klemmuspjaldsmyndir.
Markaðsvafrasíðan (angular/src/app/marketplace/) var með tvöfaldaðri umbúðir.
Breytingarflipin vantaði líkansval (Auto/Manual), gæðastillingu.
Notandinn tilkynnti að Sprint 50-I sjálfgefið (bottom:96 right:24) skarast við.
Notandaprófanir á /me/notifications gáfu 404.
PaddleOptions.WalletTopUpPriceIds var Dictionary<string,string>.
Notandinn tilkynnti "paddle.js popup á að opnast, en villa kemur" þegar.
Sprint 50-I lagar tvær UX-afturfarir sem komu fram eftir Sprint 50-B + 50-E.
Stjórnandinn vistaði Paddle-stillingu SubscriptionPlan; fyrsta vistunin gekk upp.
Kostnaðaryfirlitshnitanetið á /me/billing setti naivískt $ fyrir hvert gildi.
Sprint 49-B skildi eftir tvær harðkóðaðar /api/app/* URL-slóðir í chat-pipeline.
- 50-B (InAppAssistant:Bubble:Dock/Undock/DragHint): bætt við en.json + öll 28 önnur staðfærslur með innfæddum þýðingum.
Notandinn: 'minni síðunni smellib eyða þá kemur js confirm upp, af hverju notum við ekki leptonx'.
Lagfæring A (þjóni-GAGNRÝNIN villa).
Notandinn tilkynnti: SourceKind fellilist sýndi undarleg bleik/blá blokk (biluð birting).
Notendaáhrif: þeir tveir fljótandi bjöllur (tilkynningabjallan + virknimiðstöðin) skarast.
Sprint 47-I + 45-M mynstur beitt.
Sprint 46-A innleiddi IBillingRecorder þvert yfir einingar + gaf frá sér BillingRecords.
Sprint 46-F skipulagsnormun lauk lágstöfum → PascalCase en skildi eftir 4 staðfærslur með Suite-stubb ensku.
Sprint 45-M + 47-A til 47-N mynstur beitt.
Sprint 47-M mynstur beitt.
Sprint 45-M + 47-K mynstur beitt.
Sprint 45-M + 47-A til 47-K mynstur beitt.
Sprint 45-M + 47-A til 47-H mynstur beitt.
Sprint 45-M + 47-A/B/C/D/E/F/G/O mynstur beitt.
Sprint 45-M + 47-G mynstur beitt.
Sprint 45-M + 47-A/B/C/D/E/F mynstur beitt.
Sprint 45-M + 47-A/B/C/D/E mynstur beitt.
Sprint 45-M + 47-A/B/C/E mynstur beitt.
Sprint 45-M + 47-A + 47-B mynstur beitt.
Sprint 45-M + 47-A/B/C mynstur beitt.
Sprint 45-M + 47-A/B mynstur beitt.
Sprint 45-M + 47-A mynstur beitt.
Sprint 45-M mynstur beitt: Suite sendi EKKI frá sér IMultiTenant á grunnklasana þrátt fyrir IsMultiTenant: true í JSON.
Slice 56 — IModelRoutingService (ByokVault.Application + Contracts):