What is new on the ToRun platform, newest first.
June 2026 — 53 changes
Die Modellauswahl umfasst jetzt Google Imagen und Gemini für Bilder sowie OpenAI Sora und Google Veo für Videos – zusätzlich zu den Modellen, die du bereits kennst. Wähle genau das Modell, das du möchtest, oder lass Auto…
Verkette mehrere KI-Schritte zu einem Workflow, den du auf Knopfdruck ausführst, und veröffentliche ihn anschließend im Marketplace – oder entdecke, was andere Creator geteilt haben. Workflow Editor, Runner und Marketpla…
Füge ToRun zu deinem Startbildschirm hinzu und starte es wie eine native App – im Vollbild und mit eigenem Symbol. So ist ToRun nur einen Fingertipp entfernt, bis die mobile App kommt.
Ein neues Logo und ein aufgeräumteres Branding in der gesamten App – perfekt abgestimmt auf das helle und das dunkle Design.
Bestimme selbst, wie intensiv die KI nachdenkt – jetzt auch im Auto-Modus. Bildanfragen können unauffällig auf deinen gespeicherten Speicher zurückgreifen, damit die Ergebnisse zu den Personen und Details passen, die dir…
Der Generierungsfortschritt erscheint jetzt direkt neben dem Ergebnis statt unter dem Formular, jede Seite startet aufgeräumt, und deine neueste Kreation bleibt im Mittelpunkt – während ältere in deiner Library griffbere…
Dein Wallet-Verlauf ist jetzt seitenweise aufgeteilt und zeigt Beträge centgenau bis unter einen Cent an. Außerdem lassen sich Elemente aus deiner Library jetzt ganz ohne Fehlermeldung entfernen.
Erstelle dein Werbekonto und reiche Kampagnen direkt über dein Konto zur Prüfung ein – ganz ohne Wartezeit auf eine manuelle Einrichtung.
Hinter den Kulissen: faireres Verrechnen von Gratisguthaben, strengere Prüfungen bei Creator-Auszahlungen und Berechtigungen, sicherere Medienmoderation und zuverlässigere Workflow-Durchläufe.
Bei der Live-Übersetzung kannst du jetzt zwischen zwei Engines wählen und die nehmen, die am besten zu deinem Gespräch passt – darunter eine neue Option, die 77 Sprachen beherrscht, unter anderem Türkisch und Russisch. B…
Modelle, die dein Tarif nicht abdeckt, erscheinen jetzt mit einem kleinen Schloss und einer Möglichkeit, mit nur einem Tippen dein Wallet aufzuladen oder auf einen höheren Tarif zu wechseln – statt erst nach dem Absenden…
Teile ein Bild einmal, und der Assistent behält das Gesehene für den Rest des Gesprächs im Kopf – so kannst du auch viele Nachrichten später noch dazu nachfragen, sogar nach einem Modellwechsel, ohne dass das Bild erneut…
Chat-Antworten zeichnen Diagramme jetzt als echte Diagramme, stellen Tabellen mit klaren Rahmen dar und passen die Größe von Überschriften an die Nachricht an, statt den ganzen Bildschirm zu füllen – so sind Antworten au…
Wenn ein Modell einen höheren Tarif erfordert oder dein Guthaben zur Neige geht, bekommst du jetzt direkt einen freundlichen Hinweis mit Buttons zum Tarif-Upgrade und zum Aufladen deines Wallets. Antworten, die nicht ers…
Abrechnungen, Verlauf und Aktivitäten werden jetzt in deiner lokalen Zeit statt in UTC angezeigt, sodass die Zeitstempel zu deiner Uhr passen.
Ein neuer Chat nutzt jetzt einen bereits vorhandenen leeren Chat weiter, statt leere anzuhäufen, Chats ohne Antwort verstopfen deine Liste nicht mehr, und Platzhalter-Titel werden durch einen echten Namen ersetzt, sobald…
Unternehmen können jetzt ein Werbekonto einrichten und ihre eigenen Werbekampagnen von Anfang bis Ende durchführen – Kampagnen erstellen, die passenden Werbemittel hinzufügen und sie zur schnellen Prüfung einreichen, bev…
Dein eigener Anbieterschlüssel (BYOK) deckt jetzt auch Echtzeit-Sprache, Live-Übersetzung und Live-Transkription ab: Die KI-Nutzung läuft über deinen eigenen Schlüssel, und wir berechnen nur die geringe Plattformgebühr p…
Unsere öffentlichen Seiten werden jetzt von bearbeitbaren Inhalten in vielen Sprachen gespeist, hochgeladene Bilder werden vor dem Speichern auf unsichere Inhalte geprüft, Kontoanmeldung und Bestätigungs-E-Mails funktion…
Lange Antworten laufen jetzt auf dem Server und werden fortgesetzt, während du zwischen Chats wechselst, eine andere Seite öffnest oder den Tab schließt. Komm jederzeit zurück und die Antwort streamt noch oder wartet ber…
Chats, die in einem Projekt gestartet werden, übernehmen automatisch dessen Anweisungen, hochgeladenes Wissen und Erinnerungen, zeigen ein Projekt-Badge mit einem schnellen Link zurück zum Projekt und nennen das Projekt…
Das Gedächtnis deines Assistenten verfolgt jetzt, wie schnell sich jede Information ändert, und markiert diejenigen, die möglicherweise veraltet sind, damit es sich auf das stützt, was noch zutrifft. Mit einem neuen Edit…
Wir haben die neuesten Modelle für Bild, Video, Transkription und Echtzeit-Sprache hinzugefügt und eigenständige Seiten zum Übersetzen und Transkribieren eröffnet, sodass du diese Tools direkt aus dem Menü erreichst.
Sprich und lass deine Worte fast in Echtzeit übersetzen: Wähle zwei Sprachen, tausche sie mit einem einzigen Tippen und der Übersetzer erfasst deine Stimme und streamt die Übersetzung zurück, während du sprichst.
Die Videoseite hält ihre Kacheln jetzt synchron, wenn du etwas aus deiner Bibliothek löschst, lässt dich die Cliplänge pro Modell festlegen, einzelne Clips entfernen und kennzeichnet Vorschauergebnisse klar, sodass du im…
Der In-App-Assistent zeigt jetzt schön formatierte Antworten, behält die neueste Nachricht beim Tippen im Blick, speichert die fertige Antwort zuverlässig und vergibt jedem Gespräch automatisch einen Titel.
Antworten mit Links, mathematischen Formeln oder Währungsbeträgen erscheinen nicht mehr leer oder nur halb dargestellt, selbst nach einem Seitenneuladen, und Deep-Research-Antworten enthalten immer ihre abschließende Zus…
Eine umfassende Runde an Arbeit hinter den Kulissen: präzisere Nutzungsmessung und Ausgabensummen, fairere automatische Erstattungen, robusteres Echtzeit-Messaging, stärkere Datenschutz- und Sicherheitsvorkehrungen sowie…
Öffentliche Blogbeiträge und Forendiskussionen — samt ihrer Reaktionen und Antworten — sind jetzt auch für nicht angemeldete Besucher sichtbar.
Die Nutzung wird jetzt mit einem einzigen, fairen Aufschlag berechnet, deine Anzeigen für Monatsausgaben und Restbudget stimmen genau, und die Modellliste wurde überarbeitet — veraltete Modelle entfernt und neue Spitzenm…
Workflow-Angebote und Bundles können nun ein passendes Titelbild anzeigen, was das Stöbern im Marktplatz einfacher und angenehmer macht.
Frag den Assistenten, und er füllt Formulare aus, klickt Schaltflächen und navigiert für dich durch die App — unterstützt von einem erweiterten Werkzeugkasten, der nun Kontakt, FAQ, Forum, Erinnerungen und das Erstellen…
Antworten erscheinen jetzt Wort für Wort statt alle auf einmal, und die Assistenten-Sprechblase lässt sich beliebig hinziehen, mit einem Live-Hinweis darauf, woran er gerade arbeitet.
Ein Projekt anzulegen und darin einen neuen Chat zu starten, klappt jetzt reibungslos — so behältst du zusammengehörige Chats, Dateien und Kontext an einem Ort.
Videos laufen zuverlässig, private Medien werden über einen sicheren Proxy geladen, Avatare von Creators und Personas sind jetzt für alle sichtbar, und Sprachnachrichten werden fehlerfrei transkribiert.
Wenn ein Teil des Dienstes Probleme hat, ist der Hinweis jetzt leichter verständlich und nennt keine internen Anbieternamen mehr.
Verknüpfe externe Apps per einmaliger Anmeldung oder API-Schlüssel, sodass der Assistent direkt mit den Tools arbeiten kann, die du bereits nutzt.
Die Bildwerkzeuge wählen jetzt ein Modell, das zu deinem Vorhaben passt, zeigen das Ergebnis sofort als Inline-Vorschau, und das Bearbeiten funktioniert auch nach einem Modellwechsel beim Anbieter wieder.
Wurde ein Bild oder Anhang entfernt, zeigen dein Chatverlauf, deine Mediengalerie und der Bildeditor jetzt einen freundlichen Platzhalter, statt mit einem Fehler abzubrechen.
Der Übersetzer bietet jetzt eine durchsuchbare Auswahl mit etwa 100 Sprachen, jeweils mit ihrem einheimischen und englischen Namen.
Wir haben eine Reihe neuer Blogartikel und Forenbeiträge hinzugefügt — samt beantworteter Fragen —, sodass es vom ersten Tag an mehr zu lesen und entdecken gibt.
Der Chat kann jetzt Ihre hochgeladenen Dateien durchsuchen, Python in einer Sandbox ausführen, Bilder bearbeiten, Audio transkribieren und vorlesen sowie Ihre Workflows auslösen — alles ohne das Gespräch zu verlassen.
Lassen Sie den Chat das Live-Web durchsuchen, mehrquellige Tiefenrecherchen durchführen und vollständige Seiten abrufen und lesen — jede Antwort enthält die verwendeten Quellen.
Ihr Assistent speichert jetzt leichtgewichtige Erinnerungen über Chats hinaus, kann auflisten, woran er sich erinnert, und respektiert eine Vergessensbitte in jeder Sprache.
Erstellen und bearbeiten Sie Bilder, produzieren Sie Kurzfilme und komponieren Sie Songs mit Liedtexten — angetrieben von neuen Bild-, Video- und Musik-Engines, mit einer gemeinsamen Medienauswahl und Ihrer Bibliothek au…
Sprechen Sie laut mit ToRun — eine neue Echtzeit-Sprach-Funktion bringt gesprochene Gespräche und Live-Transkription in den Chat.
Workflow-Ausführungen bevorzugen jetzt Premium-Qualitätsmodelle, halten für Ihre Genehmigung inne wo es nötig ist, und können abgebrochen, neu generiert und fortgesetzt werden — jede Ausgabe wird direkt in Ihrer Biblioth…
Fassen Sie verwandte Chats, Dateien und Kontext in Projekten zusammen, damit Ihr Assistent immer den richtigen Hintergrund für die anstehende Aufgabe hat.
Entwerfen und iterieren Sie an Langformtexten und Code in einem dedizierten Canvas-Panel direkt neben Ihrem Chat.
Rollierende Zusammenfassungen, intelligentere Kontextfenster und schnelleres Scrollen im Verlauf halten lange Unterhaltungen kohärent und flüssig — mit klaren Steuerelementen, wenn ein Gespräch das Modellfenster überschr…
Ein faires Freikontingent, das sich über ein rollierendes Fenster auffüllt, klarere Ausgaben-Anzeigen, automatische Rückerstattungen bei fehlgeschlagener Bild- oder Videogenerierung sowie Denk-Aufwand-Steuerungen, die nu…
Dutzende Modelle aus 2026 wurden hinzugefügt und veraltete wurden deaktiviert, plus eine tägliche automatische Synchronisierung, die Provider-Modelle und Preise aktuell hält — verwaltet über einen neuen Admin-Katalog.
Veröffentlichen Sie ein Gespräch über einen öffentlichen Link und stärken Sie die Community rund um Ihre Kreationen.
May 2026 — 499 changes
Eigenständiges .NET-Konsolen-Testframework (test/ToRun.SmokeTests), das sich gegen den laufenden Host authentifiziert (OpenIddict-Passwortgrant) und jede Kernfähigkeit End-to-End über die echte HTTP-API ausübt: auth/me,…
Plattform-Medien befinden sich in einer PRIVATEN Bunny Storage Zone, daher scheitert ein einfacher
Vervollständigt die chat-gesteuerte Speicherverwaltungsfunktion auf Basis von
memory_forget lieferte no_match für vorhandene Erinnerungen.
gemini-2.5-flash begann mit HTTP 400 bei thinkingBudget=128 zu antworten (das niedrige 52-N
Die beiden Host-Admin-Seiten (/admin/model-catalog, /admin/model-onboarding)
Die Erkennung traf nur bei exakter Übereinstimmung von ProviderModelId/ModelKey, sodass veraltete Provider-
Das Denk-Aufwand-Gate basiert jetzt auf Finanzierung, nicht auf Abonnementstufe.
Best-of-Both-Zusammenführung in die gelandete 52-Q-MODEL-SYNC-JOB-Synchronisierung: wenn OpenRouter
Der Denk-Aufwand-Selektor war hart auf die Abonnementstufe und eine Admin/Host-Ausnahme aus einem früheren, abgelehnten Ansatz gesperrt.
Phase-1-Lieferobjekt: 26-Provider-Listen-/Preisquellen-Inventar, die
Der Onboarding-Assistent (Phasen A–D) erstellt nur Katalogeinträge; es fehlte ein
Backend (torun.agent): SharedChat erhält IsListed/ListedSlug/ListedAt + denormalisierte Kartenfelder; PublicCommunityAppService + PublicCommunityController (anonymer /community-Feed + Viewer nach Slug); CommunityListingA…
Audioanhänge im Chat waren defekt; die eigentlichen Ursachen unterschieden sich von
TEIL 1 — Das Chat-Header-Dropdown "Kontextüberlauf-Behandlung" war auf
Die Entfernung des Tageslimits (84178afab) löschte DailyKey/MonthlyKey aus BudgetBucketCacheItem
Teil 1 — MongoDB-Integrationstest-Grundlinie wieder grün schalten.
Zeichenketten des Denk-Aufwand-Selektors (Effort:Tooltip, Effort:Locked:Tooltip,
Kanonische, providerunabhängige Denk-Aufwand-Steuerung am Chat-Composer,
Abschließender Toter-Code-Durchlauf für die Sitzungsfenster-Budget-Umschreibung.
Der Monats-/Tagesausgaben-Messwert liest Telemetrie UserDailySummary (ScopeKey=userId,
Audit-Nachbereitung zur Sitzungsfenster-Budget-Umschreibung (2a33fd31f).
Die Budget-Bucket-Anzeige auf Home (/) + me-home zeigte "$0.00 / 0% / $0.00" immer dann, wenn
Das Freibudget-Bucket war ein "$2 / 30d / 24h"-Tropf: Auffüllung = $2/720/h und
Die BUDGET-BUCKET-Anzeige auf Home (/) und me-home (/me) zeigte "$0.00 (2% / $0.01)":
Multi-Turn-Vision-Fehler.
Erste Regressionssicherung auf der Smoke-Ebene.
Ursachen-Fix für die wiederkehrenden Title-Gen-/Public-Chat-/Vision-404s: Capability
Nutzer bestätigte, dass die Bildbeschreibung nun funktioniert.
Auch für den legitimen Chat-Besitzer erhielt der Besitzer-Scope ein 403: manager-erstellte
A3 ECHTER Grundursache (gefunden durch Live-Browser-Test): Chat-Anhang-Bild
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Das Auflösen von IQueuedRequestDispatcher führte beim Start zu einem StackOverflow (nicht abfangbar — ein
Sowohl der Host-Laufzeit-Sink (appsettings.json) als auch die Bootstrap-Logger
Wiederkehrende Ursache: ChangelogBackfillDataSeedContributor prüfte Idempotenz auf
extract-sprint-changelog.py + propagate-changelog-locales.py von main ausgeführt:
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-Capability-Seed + Join
Backend exception → frontend humane message + retry hint + status banner.
Consolidator landed both 52-Q-CHAT-CONTEXT-BUILDER's ChatSummaries
Spiegelung der Echtzeit-Voice-Mode-UI-Schlüssel, die in en.json hinzugefügt wurden in
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
Gemäß CLAUDE.md Regel 10.
Ausgabe von `python platform-plan/scripts/_validate-29-locales.py` nach Abschluss aller 27 Schwester-Übersetzer-Batches + dem BOM-Strip-Durchlauf:
Batches von 6 parallelen Sonnet-Übersetzer-Agenten (alle aus früheren Durchläufen in das Repo eingecheckt + jetzt geflusste finale Gruppe):
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).
Lesender Audit-Durchlauf gegen ChatPipelineAppService + InAppAssistant + Provider-Clients + 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 meldete ein VERB_MISMATCH: Angular ruft bare PUT auf
Backend-Hälfte von Sprint 50-F: anonymer Landing-Page-Demo-Chat mit per-IP
Das Dictionary `Dictionary<(DateTime Date, Guid?
Schließt das einzige Race-Fenster in KeywordSettlementJob, das
Fortsetzung von task #67 (50-SS-Bereinigung).
Schließt das 50-RRR-Fundament (Commits A/B/C) durch Verdrahtung des tatsächlichen Composite
Toggle / Heading / New / Untitled / Empty / Load:Failed / JustNow / MinAgo / HourAgo / DayAgo in alle 28 nicht-englischen Sprachversionen nachgefüllt (en.json hatte den vollständigen Satz bereits aus Sprint 50-CCC-2).
Spiegelt Sprint 50-LL (Post.CreatorProfileId) + Sprint 50-VV-2 (AdAuction
Pipeline leitet jetzt den Capability-Schlüssel aus der Eingabetopologie ab und verwendet
Adapter-Vertrag für den Mehrfacheingabe-Composite-Pfad.
Grundlegendes Commit für den Mehrfachbild-Bearbeitungs-Refactor (Option C — Capability
Bereichsbefund: Die Verdrahtung in ChatPipelineAppService.cs:1415 ruft bereits auf
5 strukturierte Protokollergänzungen, damit Produktionsfehler ihren vollständigen Kontext anzeigen
Zweigliedriger Fix für die Blase, die leere/unerwünschte Sitzungen ansammelt:
Schließt das aufgeschobene -2 aus 50-YY (wo der Mikrofon-Anschluss ausgegliedert wurde, damit
Schließt die moduleübergreifende Pipeline-Lücke aus 50-AAA.
Nutzer meldete, dass sowohl "Quellbild auswählen" als auch "Maskenbild auswählen"
Produktionsprotokoll:
Nutzer meldete sowohl Quell-Upload als auch Masken-Upload auf /me/image Bearbeiten
Letzter Bibliotheksmodul-Abschnitt.
Nutzer-Feedback: Grünes "Upload abgeschlossen."-Banner flimmerte bei
Sprint 50-CCCC versuchte, die Upload-Pipeline ObjectDisposedException zu beheben
Grundursache des anhaltenden "Upload fehlgeschlagen"-Hinweises — obwohl Dateien
Nutzer meldete fünf separate Probleme:
Nutzer meldete part_001.wav / part_002.wav aus Bibliothek gelöscht, aber
50-YYY hinterließ eine Regression: openAssetDetail löste nur Text-Vorladen aus
Nutzer meldete Dokumente-Tab leer nach dem Hochladen von .md / .txt-Dateien —
CDN-öffentliches URL-Muster war für /me/library falsch — Inhalt ist benutzerspezifisch
Zwei Fehler in einem Stapel — beide durch einen Nutzertest aufgedeckt, bei dem 4 Dateien laut grünem Banner 'hochgeladen' wurden, die Bibliotheksseite aber bei 0 Elementen blieb.
Nutzer: 'Füge einen Fortschrittsbalken für Uploads hinzu, zeige verbleibende Sekunden an und informiere den Nutzer, welche Datei hochgeladen wurde — so sieht es zu leer aus.'
Zwei nutzerblockierende Probleme aus dem /me/library-Test:
Nutzer meldete Bibliotheks-Upload 400 'Nur image/* MIME-Typen werden auf diesem Endpunkt akzeptiert.' nach dem Hochladen einer Nicht-Bilddatei über den Alle-Tab.
Nutzer meldete Nachrichtenzitate-Admin 500 'Interner Fehler'.
Nutzer meldete Bibliotheks-Upload 'Bunny-Speicher-Upload fehlgeschlagen mit HTTP 401'.
Nutzer meldete /me/image Generieren defekt: "Bildgenerierungsanbieter
Nutzer meldete, dass der Sprint 50-III Panel-Positions-Refactor IMMER NOCH nicht
Grundursache (Szenario-B-Variante): `openSession()` ruft `messages.set(mapped)` auf
Nutzer: "Du musst nicht dasselbe Modell für Titel verwenden, diese sind
Nutzer meldete, dass das Panel trotz Sprint weiterhin vom FAB losgelöst öffnete
Sprint 50-CCC erhöhte MaxOutputTokens 24 → 128 in Erwartung von "~100
Nutzer meldete /me/activity-history leer trotz stundenlangem Chat/Bild/Voice/etc.
Zwei Nutzertest-Regressionen gefunden und behoben; das dritte Anliegen
| # | Menü | Gruppe | Angular-Pfad | Backend-Route | Status | Grundursache |
Nutzer: "Warum muss ich beim Hinzufügen von Bibliotheksdateien jede einzeln manuell hinzufügen,
Nutzer: "Bei source gibt es PC-Upload, warum nicht bei mask, unsere
Kritischer gemeldeter Fehler: jeder PC-Upload-Versuch warf
Nutzer meldete wiederholt seit gestern, dass /me/notifications/
Aktuelle-Chats-Liste in /agent/chat-pipeline hatte zeilenweise Umbenennen/Löschen
Nutzertest brachte 5 Probleme ans Licht; 4 davon in diesem Commit behoben, 1
Täglicher AsyncPeriodicBackgroundWorker (24h-Takt) bereinigt bezahlte
Sprint 47-O erstellte flache AdAuction-Entitäten ohne Join-FKs;
Täglicher ABP AsyncPeriodicBackgroundWorker (24h-Takt) bereinigt ausstehende
Sprint 50-TT wurde hierfür eingesetzt, wich aber vom Plan ab (er
Nutzer fragte nach: Bibliothek-Größenindikator oben, PC-Upload, Plan-Tier-Kontingent,
Erweitert das 50-RR-Muster (VideoJobPollingWorker IAbpDistributedLock)
Sprint 50-P verschob PC-Upload, da Backend einen Bunny-Endpunkt fehlte
50-AA während der vollständigen Bereinigung abgebrochen; dies ist die fortgesetzte stapelweise
Sprint 50-U + 50-EE verdrahtete Polling + Rückerstattungsablauf, setzte aber Einzelpod voraus
Nutzeranweisung (Sprint 50-E): Glocke + Aktivität neben die rechten Menüsymbole
Backend unter https://localhost:44304 während dieses Sprints nicht erreichbar;
Sprint 47-H erstellte einen degradierten Verbundindex für den Creator/Post-Feed
Sprint 47-H erstellte einen degradierten (TenantId, CreationTime)-Scan für PersonaPost
Sprint 50-W BillingReconciliationJob erkannte Lücken (Paddle
Jede modules/torun.*/angular/angular.json referenzierte
Sprint 50-CC-Mandantenisolationstests deckten einen vorhandenen Defekt auf:
Sprint 47-A..47-P MT-Bereinigung fügte jeder Entität TenantId-vorangestellte Verbundindizes hinzu
Sprint 49-Serie abgeschlossen.
Vorstart-R2-Risiko: Sprint 47-A..47-P bereinigte 219+ Entitäten für
Sprint 50-U deckte Lücke auf: IBillingRecorder hatte nur RecordAsync.
Plan §2.3 / R1-Audit — Sprint 47-A...47-P bereinigt 219+ Entitäten für
Plan §2.5-Rückstand: 22 ImageEdit-Pipeline-Schlüssel weitergegeben (Sprint
Sprint 50-K erkannte eine Kollision (Abonnementplan-Paddle-Konfiguration
Phase 1.5 §2.1 #3 — dritter Hintergrundworker.
Phase 1.5 §2.1 #4 — vierter und letzter Hintergrundworker vor dem Launch.
/api/app/run-input-upload gab 404 zurück, weil der AppService
Sprint 50-P lieferte die /me/image Bearbeiten-Tab-UI + Backend-Verdrahtung, aber
Frontend (Angular | date pipe + Date-Konstruktor) verarbeitet UTC -> lokal
Phase 1.5 §2.1 — höchstpriorisierter Hintergrundworker.
Phase 1.5 §2.1 #2 — zweiter Hintergrundworker.
Nutzer meldete: Nach einem Formular-Ausfüll-Follow-up kam "Nachricht fehlgeschlagen."
Fehler A: Chat-Composer ignorierte Strg+V bei Zwischenablagebildern.
Die Marketplace-Suchseite (angular/src/app/marketplace/
Im Bearbeiten-Tab fehlten Modellauswahl (Auto/Manuell), Qualität
Nutzer meldete, dass der Sprint 50-I Standard (bottom:96 right:24) überlappt
Nutzertest von /me/notifications traf 404 auf
PaddleOptions.WalletTopUpPriceIds war ein Dictionary<string,string>
Nutzer meldete "paddle.js Popup sollte öffnen, gibt Fehler" bei
Sprint 50-I behebt zwei UX-Regressionen, die nach Sprint 50-B + 50-E auftraten:
Admin speicherte eine Paddle-Konfiguration für einen SubscriptionPlan; das erste Speichern funktionierte.
Kostenaufschlüsselungstabelle auf /me/billing setzte naiv jedem Wert
Sprint 49-B hinterließ zwei hart kodierte /api/app/*-URLs im chat-pipeline
- 50-B (InAppAssistant:Bubble:Dock/Undock/DragHint): zu en.json + alle 28 anderen Sprachversionen mit nativen Übersetzungen hinzugefügt
Nutzer: 'Auf der Speicher-Seite erscheint beim Klicken auf Löschen ein JS confirm — warum nutzen wir nicht LeptonX
Korrektur A (Server-KRITISCHER Fehler):
Nutzer meldete: SourceKind-Dropdown zeigte seltsame rosa/blaue Blöcke (defekt
Nutzer-Feedback: die zwei schwebenden Glocken (Benachrichtigungsglocke + Aktivitätscenter)
Sprint 47-I + 45-M-Muster angewandt.
Sprint 46-A führte moduleübergreifenden IBillingRecorder ein + gab BillingRecords aus
Sprint 46-F-Strukturnormalisierung abgeschlossen lowercase→PascalCase, ließ jedoch 4 Sprachversionen mit englischen Suite-Platzhaltern.
Sprint 45-M + 47-A bis 47-N-Muster angewandt.
Sprint 47-M-Muster angewandt.
Sprint 45-M + 47-K-Muster angewandt.
Sprint 45-M + 47-A bis 47-K-Muster angewandt.
Sprint 45-M + 47-A bis 47-H-Muster angewandt.
Sprint 45-M + 47-A/B/C/D/E/F/G/O-Muster angewandt.
Sprint 45-M + 47-G-Muster angewandt.
Sprint 45-M + 47-A/B/C/D/E/F-Muster angewandt.
Sprint 45-M + 47-A/B/C/D/E-Muster angewandt.
Sprint 45-M + 47-A/B/C/E-Muster angewandt.
Sprint 45-M + 47-A + 47-B-Muster angewandt.
Sprint 45-M + 47-A/B/C-Muster angewandt.
Sprint 45-M + 47-A/B-Muster angewandt.
Sprint 45-M + 47-A-Muster angewandt.
Sprint 45-M-Muster angewandt: Suite hat IMultiTenant auf Basisklassen nicht ausgegeben, obwohl IsMultiTenant: true im JSON.
Slice 56 — IModelRoutingService (ByokVault.Application + Contracts):