What is new on the ToRun platform, newest first.
June 2026 — 53 changes
モデルピッカーに、これまでのモデルに加えて画像向けのGoogle ImagenとGemini、動画向けのOpenAI SoraとGoogle Veoが新たに加わりました。使いたいモデルをご自身でピンポイントに選ぶのはもちろん、Autoにおまかせすれば、お使いのプランに最適なモデルを自動で選んでくれます。
複数のAIステップをひとつのWorkflowにつなげて、必要なときにいつでも実行できます。作ったWorkflowはMarketplaceに公開したり、他のクリエイターが共有したものを探したりすることも可能。Workflow Editor、Runner、Marketplaceはメニューからすぐにご利用いただけます。
ToRunをホーム画面に追加すれば、専用アイコンからフルスクリーンでネイティブアプリのように起動できます。モバイルアプリの登場までは、ワンタップでさっとアクセスできて便利です。
新しいロゴと、よりすっきりとしたブランディングをアプリ全体に採用。ライトテーマ・ダークテーマのどちらにも美しくなじむよう仕上げました。
AIがどこまでじっくり考えるかを、Autoモードでも選べるようになりました。画像プロンプトでは保存したメモリをさりげなく参照し、あなたが大切にしている人物やディテールに沿った結果を生成します。さらに、よく似たメモリは自動で統合されるので、増えすぎて散らかる心配もありません。
生成の進捗が、フォームの下ではなく結果のすぐ横に表示されるようになりました。各ページは毎回すっきりした状態で開き、最新の作品は常に中央で目立つ位置に。過去の作品はLibraryにきちんと整理されます。
ウォレットの履歴がページ分けされ、1セント未満の金額まで正確に表示されるようになりました。また、Libraryからアイテムを削除してもエラーが発生しなくなりました。
広告主アカウントを作成し、アカウントから直接キャンペーンを審査に提出できます。手動でのセットアップを待つ必要はもうありません。
見えないところでも改善を重ねました。無料クレジットの計算をより公平に、クリエイターへの支払いと権限のチェックをより厳格に、メディアのモデレーションをより安全に、そしてWorkflowの実行をより安定したものにしています。
ライブ翻訳で2つのエンジンから選べるようになり、会話に合ったものをお選びいただけます。トルコ語やロシア語を含む77言語に対応した新しいエンジンも追加されました。それぞれの料金が事前に表示され、ワンタップで翻訳の向きを切り替えられるので、相手もすぐに返信できます。
プランに含まれないモデルには小さな鍵マークが表示され、ワンタップでアップグレードやウォレットへのチャージができるようになりました。送信してから初めて失敗する、ということがなくなります。さらにFree planでも高性能なモデルを開放し、Haiku、Sonnet、Gemini Flashといった普段使いのモデルを無料でご利用いただけます。
一度画像を共有すれば、アシスタントはその内容を会話の最後まで記憶します。何度かやり取りを重ねた後でも、モデルを切り替えた後でも画像について質問でき、画像が再アップロードされたり二重に課金されたりすることはありません。
チャットの回答で、図はちゃんとした図として描画され、表は見やすい枠線付きで整い、見出しは画面いっぱいにならずメッセージに合ったサイズになりました。回答がひと目で読みやすくなります。
モデルにアップグレードが必要なときや残高が少なくなったときは、その場にアップグレードとウォレットへのチャージのボタン付きの分かりやすいバナーが表示されます。生成できない回答は、空の吹き出しのままにせず理由を説明します。チャットを切り替えて戻ってきた後でも同様です。
課金記録、履歴、アクティビティがUTCではなく現地時間で表示されるようになりました。お手元の時計と同じ時刻でご確認いただけます。
新しいチャットを始めると空のチャットを再利用するようになり、空白のチャットが積み重なりません。返信のないチャットが一覧を散らかすこともなくなり、仮のタイトルは意味のある発言をするとすぐに本当の名前に置き換わります。
企業の方は広告主アカウントを開設し、広告キャンペーンを最初から最後までご自身で運用できるようになりました。キャンペーンを作成し、合わせて広告クリエイティブを追加し、掲載前の簡単な審査に提出できます。
ご自身のプロバイダーキーの利用が、リアルタイム音声、ライブ翻訳、ライブ文字起こしにも対応しました。AIの利用はご自身のキーを通して行われ、当社はわずかな分単位のプラットフォーム手数料のみを頂戴します。
公開ページは多言語で編集可能なコンテンツで配信されるようになり、アップロードされた画像は保存前に不適切なコンテンツがないかスキャンされます。アカウント登録や確認メールも安定して動作するようになり、幅広い裏側の改善によってプラットフォーム全体がより安定しました。
長い回答はサーバー側で実行されるようになり、チャットを切り替えても、別のページを開いても、タブを閉じても処理が続きます。いつ戻ってきても、回答はまだ生成中か、すでに完成して待っています。
プロジェクト内で始めたチャットは、その指示・アップロードした知識・メモリを自動的に引き継ぎ、戻るためのリンク付きプロジェクトバッジを表示し、最近のチャット一覧にプロジェクト名を表示します。PDF、Word、テキストファイルをプロジェクトの知識に追加することもできます。
アシスタントのメモリが、各情報の変化の速さを把握し、古くなっている可能性のあるものに印を付けるようになりました。これにより、今も正しい情報をより重視します。新しいエディターで、一つひとつのメモリを自分で確認・追加・削除できます。
最新の画像・動画・文字起こし・リアルタイム音声モデルを追加し、独立した翻訳ページと文字起こしページを開設しました。メニューからこれらのツールに直接アクセスできます。
話すだけで、ほぼ瞬時に訳されます。2つの言語を選び、ワンタップで入れ替え。翻訳ツールが音声を聞き取り、話している間に訳文をリアルタイムで返します。
動画ページは、ライブラリから削除したときにタイル表示も連動するようになりました。モデルごとにクリップの長さを設定でき、クリップを個別に削除でき、プレビュー結果には明確な印が付くので、今見ているものが常にわかります。
アプリ内アシスタントは、見やすく整形された回答を表示し、入力中も最新のメッセージが見えるようにスクロールし、完成した回答を確実に保存し、各会話に自動でタイトルを付けるようになりました。
リンクや数式、通貨の金額を含む回答が、空白になったり途中までしか表示されなかったりすることがなくなりました。ページを更新した後でも同様です。さらに、ディープリサーチの回答には必ず最終的な要約が含まれます。
幅広い舞台裏の改善を行いました。より正確な使用量の計測と利用額の集計、より公平な自動返金、より安定したリアルタイムメッセージング、より強固なプライバシーとセキュリティの保護、そしてよりわかりやすいサービス状況のお知らせです。
公開ブログ記事やフォーラムのディスカッションは、リアクションや返信も含めて、未ログインの訪問者にも表示されるようになりました。
利用料はシンプルで公正な単一のマークアップで請求され、月間利用額と残り予算のメーターも正確に表示されます。モデル一覧も整理され、廃止されたモデルを除き、新しいフラッグシップモデルを組み込みました。
ワークフローの出品やバンドルにきちんとしたカバー画像を表示できるようになり、マーケットプレイスがより見やすく、より快適に閲覧できます。
アシスタントに頼むだけで、フォームの入力、ボタンのクリック、アプリ内の移動まで代行します。お問い合わせ、FAQ、フォーラム、メモリ、ワンステップのワークフロー作成にまで広がった充実のツールセットが、これを支えます。
回答が一度にまとめて表示されるのではなく、一語ずつストリーミングで表示されるようになりました。アシスタントの吹き出しは好きな場所へドラッグでき、いま何に取り組んでいるかもリアルタイムでヒント表示します。
プロジェクトの作成や、その中での新しいチャットの開始がスムーズに動作するようになり、関連するチャット・ファイル・コンテキストをひとまとめに管理できます。
動画が安定して再生され、非公開メディアは安全なプロキシ経由で読み込まれます。クリエイターやペルソナのアバターが誰にでも表示されるようになり、ボイスメモもエラーなく文字起こしされます。
サービスの一部に不具合が生じている場合、お知らせがより理解しやすくなり、内部のベンダー名を表示しないようになりました。
1 回のサインインまたは API キーで外部アプリを連携でき、アシスタントがあなたの使い慣れたツールと直接連携して作業できます。
画像ツールは、あなたの作業内容に合ったモデルを自動で選び、結果をその場でインラインプレビュー表示します。プロバイダーのモデル変更後も編集が再び正しく動作するようになりました。
画像や添付ファイルが削除されている場合でも、チャット履歴、メディアギャラリー、画像エディターはエラーで止まらず、わかりやすいプレースホルダーを表示するようになりました。
翻訳機能に、約 100 言語を収録した検索可能な選択ツールが加わりました。各言語は、その現地名と英語名の両方で表示されます。
新しいブログ記事やフォーラムのスレッドをまとめて追加しました。回答済みの質問も含まれており、初日からもっと多くの読みものや見どころを楽しめます。
チャットから離れることなく、アップロードしたファイルの検索、サンドボックスでの Python 実行、画像編集、音声のトランスクリプションや読み上げ、ワークフローのトリガーが可能になりました。
チャットがライブウェブを検索し、マルチソースの詳細リサーチを実行し、ページ全体を取得して読み込めるようになりました — すべての回答に使用したソースが添付されます。
アシスタントがチャット間で軽量なメモリを保持し、記憶している内容を一覧表示し、どの言語でも忘却リクエストに応じるようになりました。
新しい画像・動画・音楽エンジンを搭載し、画像の生成・編集、短編映像の制作、歌詞付き楽曲の作成が可能です。共有メディアピッカーとライブラリにワンクリックでアクセスできます。
ToRun に声で話しかけましょう — 新しいリアルタイム音声機能により、チャットで音声会話とライブトランスクリプションが利用できます。
ワークフロー実行がプレミアム品質モデルを優先し、重要な箇所で承認を一時停止し、キャンセル・再生成・再開が可能になりました — すべての出力がライブラリに直接保存されます。
関連するチャット、ファイル、コンテキストをプロジェクトにまとめることで、アシスタントが常にタスクに最適な背景情報を持てるようになります。
専用のキャンバスパネルでチャットの横に並べながら、長文コンテンツやコードを作成・反復できます。
ローリングサマリー、スマートなコンテキストウィンドウ、高速な履歴スクロールにより、長い会話を一貫性よくスムーズに保ちます。会話がモデルウィンドウを超えた際には、明確な操作コントロールを提供します。
ローリングウィンドウで補充される人道的な無料枠、より明確な支出ゲージ、画像や動画生成が失敗した際の自動返金、そして残高でまかなえる範囲のみ解放される推論エフォートコントロール。
2026年の多数のモデルが追加され、古いモデルは廃止されました。さらに、新しい管理カタログから管理できる日次自動同期により、プロバイダーのモデルと価格を常に最新に保ちます。
会話を公開リンクとして公開し、作成したコンテンツを中心にコミュニティを育てましょう。
May 2026 — 499 changes
スタンドアロン .NET コンソールハーネス (test/ToRun.SmokeTests) は、実行中のHost(OpenIddict パスワードグラント)に対して認証し、実際の HTTP API を通じてすべてのコア機能をエンドツーエンドで検証: auth/me、メモリCRUD、ウォレット、課金、ライブラリ、ワークフローサンプル、ウェブ検索など...
プラットフォームのメディアはプライベートな Bunny Storage Zone に保存されているため、通常の
チャット駆動メモリ管理機能を完成させる
memory_forget が存在するメモリに対して no_match を返していた。
gemini-2.5-flash が thinkingBudget=128(52-N の低い値)で HTTP 400 を返すようになった
2つのホスト管理者ページ (/admin/model-catalog, /admin/model-onboarding)
検出は正確な ProviderModelId/ModelKey のみで一致していたため、日付付きプロバイダーの
推論エフォートゲートがティアベースではなく資金ベースになった。
マージ済みの 52-Q-MODEL-SYNC-JOB 同期への最良の統合: OpenRouter が
推論エフォートセレクターはサブスクリプションティアと、以前の却下されたアプローチに由来する管理者/ホスト免除によりハードゲートされていた。
フェーズ1の成果物: 26-provider リスト/価格ソースインベントリ、
オンボーディングウィザード(フェーズA-D)はカタログ行の作成のみ行い、
バックエンド (torun.agent): SharedChat に IsListed/ListedSlug/ListedAt と非正規化カードフィールドを追加; PublicCommunityAppService + PublicCommunityController(匿名 /community フィード + スラッグ別ビューワー); CommunityListingAppService + MyCommunityListingCon…
チャット内の音声添付が壊れていたが、実際の根本原因は当初の想定とは異なっていた。
パート1 — チャットヘッダーの「コンテキストオーバーフロー処理」ドロップダウンが固定されていた問題:
日次上限の削除 (84178afab) により、BudgetBucketCacheItem から DailyKey/MonthlyKey が削除された
パート1 — MongoDB インテグレーションテストのフロアをグリーンに戻す。
推論エフォートセレクターの文字列(Effort:Tooltip、Effort:Locked:Tooltip など)を
チャットコンポーザー上の正規のプロバイダー非依存推論エフォートコントロール、
セッションウィンドウ予算書き換えに伴う最終デッドコードパス。
月次/日次支出ゲージはテレメトリの UserDailySummary(ScopeKey=userId)を読み取る。
セッションウィンドウ予算書き換え (2a33fd31f) の監査フォローアップ。
ホーム (/) + me-home のバジェットバケットゲージが、バケットキャッシュミス時に「$0.00 / 0% / $0.00」と表示されていた:
フリーティアの予算バケットは「$2 / 30d / 24h」の点滴方式だった: 補充 = $2/720時間、かつ
ホーム (/) および me-home (/me) の BUDGET BUCKET ゲージが「$0.00 (2% / $0.01)」と表示されていた:
マルチターンビジョンのバグ。
スモークレイヤーでの初回リグレッションロック。
繰り返し発生するタイトル生成 / パブリックチャット / ビジョン 404 の根本原因修正: 機能
ユーザーが画像説明が動作することを確認した。
オーナースコープでも正規のチャットオーナーが403を受けていた: マネージャーが作成した
A3 実際の根本原因(ライブブラウザテストで発見): チャット添付画像
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
IQueuedRequestDispatcher の解決がスタートアップ時に StackOverflow を起こしていた(キャッチ不可能な
Hostランタイムシンク (appsettings.json) とブートストラップロガーの両方
再発の根本原因: ChangelogBackfillDataSeedContributor がべき等性を
メインから extract-sprint-changelog.py + propagate-changelog-locales.py を実行:
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 + ボイスリアルタイム機能シード + ジョイン
Backend exception → frontend humane message + retry hint + status banner.
Consolidator landed both 52-Q-CHAT-CONTEXT-BUILDER's ChatSummaries
en.json に追加されたリアルタイム音声モード UI キーのミラー
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
CLAUDE.md ルール10に従い。
27件の兄弟翻訳バッチがすべてマージされ、BOMストリップパスが完了した後の `python platform-plan/scripts/_validate-29-locales.py` の出力:
6件の並列 Sonnet 翻訳エージェントによるバッチ(以前のターンからリポジトリにチェックイン済み+フラッシュ済みの最終グループ):
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).
ChatPipelineAppService + InAppAssistant + プロバイダークライアント + 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 が VERB_MISMATCH を検出: Angular がベア PUT を呼び出していましたが、コントローラーに明示的な [HttpPut] 属性がありませんでした。
Sprint 50-F のバックエンド部分: ランディングページデモチャットの匿名アクセスと IP ごとのレート制限。
Dictionary<(DateTime Date, Guid? ...) のタプル分解で型推論の問題が発生していました。
KeywordSettlementJob で二重処理を引き起こす可能性のある唯一のレース条件を解消しました。
task #67(50-SS スイープ)の継続。
50-RRR 基盤(コミット A/B/C)を実際のコンポジット画像編集 UI に接続して解消します。
Toggle / Heading / New / Untitled / Empty / Load:Failed / JustNow / MinAgo / HourAgo / DayAgo を英語以外の28ロケール全てにバックフィルしました(en.json には Sprint 50-CCC-2 から完全なセットがありました)。
Sprint 50-LL (Post.CreatorProfileId) + Sprint 50-VV-2 (AdAuction FK) のパターンを踏襲。
パイプラインが入力トポロジーから capability キーを導出し、それを使用してルーティングするようになりました。
マルチ入力コンポジットパスのアダプターコントラクト。
マルチ画像編集リファクタリング(Option C — capability-shape アプローチ)の基盤コミット。
スコープの所見: ChatPipelineAppService.cs:1415 の配線は既に ChatAttachment.Insert を呼び出していましたが、挿入がゼロ件でした。
本番障害時に全コンテキストが表面化するよう、5件の構造化ログを追加しました。
バブルに空/不要なセッションが蓄積する問題への二段構えの修正:
50-YY の延期された -2 を解消します(マイク添付は別コミットに切り出されていました)。
50-AAA で残ったクロスパイプラインのギャップを解消します。
ユーザー報告: 「ソース画像を選択」と「マスク画像を選択」の両方のライブラリピッカーが正しく動作していませんでした。
本番ログ:
ユーザー報告: /me/image 編集でソースアップロードとマスクアップロードの両方が失敗していました。
ライブラリモジュールの最終スライス。
ユーザーフィードバック: グリーンの「Upload complete.」バナーが各ファイルごとに点滅して表示されていました。
Sprint 50-CCCC でアップロードパイプラインの ObjectDisposedException を修正しようとしました。
「Upload failed」トーストが繰り返し表示される根本原因 — ファイルは実際にアップロードされていたにもかかわらず。
ユーザーが5件の別々の問題を報告しました:
ユーザー報告: part_001.wav / part_002.wav をライブラリから削除しても CDN 経由でまだアクセスできていました。
50-YYY で退行が残っていました: openAssetDetail がテキストプリロードのみをトリガーしていました。
ユーザー報告: .md / .txt ファイルをアップロード後、Documents タブが空のままでした。
/me/library の CDN パブリック URL パターンが誤っていました — コンテンツはユーザーごとのプライベートアセットです。
1回のバッチで2件のバグ修正 — どちらも4ファイルを「アップロード」した際にグリーンバナーは表示されるもののライブラリページに0件のままという状況で発覚しました。
ユーザー: 「アップロード処理にプログレスバーを付けて、アップロード中/秒数を表示し、どれがアップロードされたか分かるようにしてほしい。このままでは味気ない。」
/me/library テストで発見された2件のユーザーブロッキング問題:
ユーザー報告: 「All」タブから画像以外のファイルをアップロードしたところ 400「Only image/* MIME types are accepted on this endpoint.」が返されました。
ユーザー報告: Message Citations 管理画面で 500「Internal error」。
ユーザー報告: ライブラリアップロードで「Bunny storage upload failed with HTTP 401」。
ユーザー報告: /me/image 生成が壊れていました。「画像生成プロバイダーエラー」
ユーザー報告: Sprint 50-III のパネル位置リファクタリング後もまだ正しく動作していませんでした。
根本原因(シナリオB変形): `openSession()` が `messages.set(mapped)` を呼び出す際にマッピングが不完全でした。
ユーザー: 「タイトルに同じモデルを使う必要はない、安いモデルでいい。」
ユーザー報告: Sprint 50-MMM 後もパネルが FAB から切り離されて開き続けていました。
Sprint 50-CCC で MaxOutputTokens を 24 → 128 に上げて「約100トークン」を期待しましたが十分ではありませんでした。
ユーザーが /me/activity-history が何時間もチャット/画像/音声等を使っても空のままと報告しました。
ユーザーテストで2件の退行が発見され修正されました。3件目の懸念は継続調査中。
| # | メニュー | グループ | Angular パス | バックエンドルート | ステータス | 根本原因 |
ユーザー: 「ライブラリにファイルを追加するとき、なぜ一つずつ手動で追加しないといけないのか、複数選択できるようにしてほしい。」
ユーザー: 「ソースにはPC アップロードがあるのにマスクにはないのはなぜか、うちはどんな画像もアップロードできるはずなのに。」
ユーザー報告のクリティカルバグ: すべての PC アップロード試行が例外をスローしていました。
ユーザーが昨日から繰り返し /me/notifications/ が 404 になると報告していました。
/agent/chat-pipeline の最近のチャット一覧に行ごとの名前変更/削除ドロップダウンがありましたが、日付区切りの下に隠れていました。
ユーザーテストで5件の懸念が浮上し、このコミットで4件を対処、1件は継続。
日次 AsyncPeriodicBackgroundWorker(24時間ティック)が支払い済みの MarketplacePurchase をスイープします。
Sprint 47-O で作成した AdAuction エンティティには結合 FK がありませんでした。
日次 ABP AsyncPeriodicBackgroundWorker(24時間ティック)が保留中の KeywordSettlement をスイープします。
Sprint 50-TT がこのために投入されましたが、別の方向に進んでしまいました。
ユーザー要求: ライブラリの容量インジケータ、PC アップロード、プランティア別クォータ、ウォレット残高からの課金。
50-RR パターン(VideoJobPollingWorker IAbpDistributedLock)を他のワーカーに拡張します。
Sprint 50-P でバックエンドに Bunny プリアップロードエンドポイントが不足していたため PC アップロードを延期しました。
50-AA が全スイープ中に中断しました。これは再開されたバッチ処理です。
Sprint 50-U + 50-EE でポーリング + 返金フローを配線しましたが、シングルポッドを前提にしていました。
ユーザー指示(Sprint 50-E ターン): ベルとアクティビティは右側のメニューアイコンの隣に配置すること。
このスプリント中、https://localhost:44304 のバックエンドに到達できませんでした。
Sprint 47-H で Creator/Post フィードに劣化した複合インデックスが使われていました。
Sprint 47-H で PersonaPost に劣化した (TenantId, CreationTime) スキャンが使われていました。
Sprint 50-W の BillingReconciliationJob が Paddle ↔ ローカルの穴を検出しました。
各 modules/torun.*/angular/angular.json が参照していた設定に乖離がありました。
Sprint 50-CC のテナント分離テストで既存の不具合が発覚しました。
Sprint 47-A..47-P の MT スイープにより、すべてのエンティティに TenantId プレフィックス付き複合インデックスが追加されました。
Sprint 49 シリーズの完了。
プレローンチ R2 リスク: Sprint 47-A..47-P で219以上のエンティティをスイープし IMultiTenant を追加しました。
Sprint 50-U でギャップが判明: IBillingRecorder には RecordAsync しかありませんでした。
プラン §2.3 / R1 監査 — Sprint 47-A...47-P で219以上のエンティティをスイープし IMultiTenant を修正しました。
プラン §2.5 バックログ: Sprint 50-P 由来の22個の ImageEdit パイプラインキーを伝播しました。
Sprint 50-K でサブスクリプションプラン Paddle 設定の衝突が1件検出されました。
Phase 1.5 §2.1 #3 — 3番目のバックグラウンドワーカー。
Phase 1.5 §2.1 #4 — 4番目かつ最後のプレローンチ バックグラウンドワーカー。
/api/app/run-input-upload が 404 を返していました。AppService が欠落した TypePredicate を使用していたためです。
Sprint 50-P で /me/image 編集タブの UI + バックエンド配線が実装されましたが、画像編集 Capability のシードが不足していました。
フロントエンド(Angular | date パイプ + Date コンストラクタ)が UTC → ローカル変換を処理します。
Phase 1.5 §2.1 — 最優先バックグラウンドワーカー。
Phase 1.5 §2.1 #2 — 2番目のバックグラウンドワーカー。
ユーザー報告: 「フォーム入力」フォローアップターンが「Message failed.」を返していました。
バグA: チャットコンポーザーがクリップボード画像の Ctrl+V を無視していました。
マーケットプレイス閲覧ページに余分な lpx-content-container ラッパーがありました。
編集タブにモデル選択(自動/手動)、品質などが欠けていました。
ユーザー報告: Sprint 50-I のデフォルト(bottom:96 right:24)が他のUI要素と重なっていました。
ユーザーが /me/notifications をテストしていた際に 404 が発生しました。
PaddleOptions.WalletTopUpPriceIds は Dictionary<string,string> でした。
ユーザー報告: 「paddle.js ポップアップが開くはずなのにエラーが出る」
Sprint 50-I は Sprint 50-B + 50-E 後に表面化した2つの UX 退行に対処します。
管理者が SubscriptionPlan の Paddle 設定を保存した際、1回目は成功しましたが2回目以降が失敗していました。
/me/billing のコスト内訳テーブルがすべての値に無差別に $ プレフィックスを付けていました。
Sprint 49-B でチャットパイプラインに2つのハードコードされた /api/app/* URL が残っていました。
- 50-B (InAppAssistant:Bubble:Dock/Undock/DragHint): en.json と他28ロケールすべてにネイティブ翻訳を追加
ユーザー: 「メモリページで削除をクリックすると js confirm が出る。なぜ LeptonX を使わないのか。」
修正A(サーバー CRITICAL バグ):
ユーザー報告: SourceKind ドロップダウンがピンク/青のブロック(壊れたスタイル)として表示されていました。
ユーザーフィードバック: 2つのフローティングベル(通知ベル + アクティビティセンター)が重複していました。
Sprint 47-I + 45-M パターン適用。
Sprint 46-A でクロスモジュール IBillingRecorder を導入し、BillingRecord を出力しました。
Sprint 46-F の構造正規化で小文字→PascalCase への変換は完了しましたが、4つのロケールに Suite スタブの英語コンテンツが残っていました。
Sprint 45-M + 47-A から 47-N パターン適用。
Sprint 47-M パターン適用。
Sprint 45-M + 47-K パターン適用。
Sprint 45-M + 47-A から 47-K パターン適用。
Sprint 45-M + 47-A から 47-H パターン適用。
Sprint 45-M + 47-A/B/C/D/E/F/G/O パターン適用。
Sprint 45-M + 47-G パターン適用。
Sprint 45-M + 47-A/B/C/D/E/F パターン適用。
Sprint 45-M + 47-A/B/C/D/E パターン適用。
Sprint 45-M + 47-A/B/C/E パターン適用。
Sprint 45-M + 47-A + 47-B パターン適用。
Sprint 45-M + 47-A/B/C パターン適用。
Sprint 45-M + 47-A/B パターン適用。
Sprint 45-M + 47-A パターン適用。
Sprint 45-Mパターン適用: Suite はJSONで IsMultiTenant: true と指定していても、ベースクラスに IMultiTenant を出力していませんでした。
Slice 56 — IModelRoutingService (ByokVault.Application + Contracts):