What is new on the ToRun platform, newest first.
June 2026 — 53 changes
Trình chọn mô hình giờ đã có Google Imagen và Gemini cho ảnh, cùng OpenAI Sora và Google Veo cho video, bên cạnh những mô hình bạn vẫn đang dùng. Hãy chọn đúng mô hình bạn muốn, hoặc để Auto tự chọn lựa chọn phù hợp nhất…
Kết nối nhiều bước AI thành một workflow để chạy bất cứ lúc nào, rồi đăng lên Marketplace hoặc khám phá những gì các nhà sáng tạo khác đã chia sẻ. Workflow Editor, Runner và Marketplace giờ đã có sẵn ngay trên menu.
Thêm ToRun vào màn hình chính và mở như một ứng dụng thực thụ — toàn màn hình, có biểu tượng riêng — để chỉ cách bạn một chạm cho đến khi ứng dụng di động chính thức ra mắt.
Logo mới và nhận diện thương hiệu gọn gàng hơn trên toàn bộ ứng dụng, được tinh chỉnh cho cả giao diện sáng và tối.
Chọn mức độ suy nghĩ của AI, giờ ngay cả trong chế độ Auto. Lời nhắc tạo ảnh có thể âm thầm tận dụng bộ nhớ đã lưu của bạn để kết quả khớp với những người và chi tiết bạn quan tâm. Và những ký ức gần như trùng lặp sẽ đượ…
Tiến trình tạo nội dung giờ hiển thị ngay bên cạnh kết quả thay vì bên dưới biểu mẫu, mỗi trang đều mở ra sạch sẽ, và tác phẩm mới nhất của bạn luôn nổi bật ở vị trí trung tâm trong khi những tác phẩm cũ hơn được lưu tro…
Lịch sử ví của bạn giờ được chia trang và hiển thị chính xác cả những khoản nhỏ dưới một xu, và việc xóa mục khỏi Library không còn báo lỗi nữa.
Tạo tài khoản nhà quảng cáo và gửi chiến dịch để xét duyệt ngay từ tài khoản của bạn, không phải chờ thiết lập thủ công.
Phía sau hậu trường: hạch toán tín dụng miễn phí công bằng hơn, kiểm tra chặt chẽ hơn với khoản chi trả và quyền hạn của nhà sáng tạo, kiểm duyệt nội dung an toàn hơn, và các lượt chạy workflow đáng tin cậy hơn.
Dịch Trực Tiếp giờ đây cho phép bạn lựa chọn giữa hai công cụ và chọn công cụ phù hợp với cuộc trò chuyện của mình — bao gồm một tùy chọn mới hỗ trợ 77 ngôn ngữ, trong đó có cả tiếng Thổ Nhĩ Kỳ và tiếng Nga. Mỗi lựa chọn…
Những mô hình mà gói của bạn chưa bao gồm giờ sẽ hiện một biểu tượng khóa nhỏ kèm cách nâng cấp hoặc nạp tiền vào ví chỉ với một chạm, thay vì chỉ báo lỗi sau khi bạn đã gửi. Chúng tôi cũng mở thêm nhiều mô hình mạnh mẽ…
Chỉ cần gửi một bức ảnh một lần và trợ lý sẽ ghi nhớ những gì đã thấy trong suốt cuộc trò chuyện — nhờ vậy bạn có thể hỏi về nó nhiều lượt sau đó, kể cả khi đã đổi mô hình, mà không bao giờ phải tải ảnh lên lại hay bị tí…
Câu trả lời trong trò chuyện giờ đây vẽ sơ đồ thành sơ đồ thực sự, trình bày bảng biểu với đường viền rõ ràng, và điều chỉnh kích thước tiêu đề cho vừa với nội dung thay vì lấp đầy màn hình — nhờ vậy các câu trả lời dễ đ…
Khi một mô hình cần nâng cấp hoặc số dư của bạn sắp hết, bạn sẽ thấy ngay một thông báo thân thiện kèm nút Nâng cấp gói và Nạp tiền vào ví. Những câu trả lời không thể tạo ra sẽ giải thích lý do thay vì để lại một bong b…
Hồ sơ thanh toán, lịch sử và hoạt động giờ đây hiển thị theo giờ địa phương của bạn thay vì UTC, để các mốc thời gian khớp với đồng hồ ngay bên bạn.
Bắt đầu một cuộc trò chuyện mới giờ sẽ tái sử dụng một cuộc trống thay vì chồng chất các cuộc rỗng, những cuộc trò chuyện chưa từng được trả lời sẽ không còn làm rối danh sách của bạn, và tiêu đề tạm thời sẽ được thay bằ…
Doanh nghiệp giờ đây có thể thiết lập tài khoản nhà quảng cáo và chạy chiến dịch quảng cáo của riêng mình từ đầu đến cuối — tạo chiến dịch, thêm các mẫu quảng cáo đi kèm, và gửi chúng để được duyệt nhanh trước khi xuất h…
BYOK giờ đây cũng bao gồm giọng nói thời gian thực, dịch trực tiếp và phiên âm trực tiếp: phần sử dụng AI sẽ đi qua key của riêng bạn và chúng tôi chỉ thu một khoản phí nền tảng nhỏ tính theo phút.
Các trang công khai của chúng tôi giờ đây được điều khiển bằng nội dung có thể chỉnh sửa ở nhiều ngôn ngữ, hình ảnh tải lên được quét nội dung không an toàn trước khi lưu trữ, việc đăng ký tài khoản và email xác nhận hoạ…
Những câu trả lời dài giờ đây chạy trên máy chủ và tiếp tục diễn ra khi bạn chuyển cuộc trò chuyện, mở trang khác hoặc đóng thẻ. Quay lại bất cứ lúc nào và câu trả lời vẫn đang được truyền tới, hoặc đã sẵn sàng chờ bạn.
Các cuộc trò chuyện bắt đầu trong một Dự án sẽ tự động tiếp nhận hướng dẫn, kiến thức đã tải lên và bộ nhớ của dự án, hiển thị huy hiệu dự án kèm liên kết quay lại nhanh, và nêu tên dự án trong các cuộc trò chuyện gần đâ…
Bộ nhớ của trợ lý giờ đây theo dõi mỗi thông tin thay đổi nhanh đến mức nào và đánh dấu những thông tin có thể đã lỗi thời, để dựa vào những gì vẫn còn đúng. Một trình chỉnh sửa mới cho phép bạn tự xem lại, thêm và xóa t…
Chúng tôi đã bổ sung các mô hình mới nhất về hình ảnh, video, ghi lời và giọng nói thời gian thực, đồng thời mở các trang Dịch và Ghi lời độc lập để bạn có thể truy cập những công cụ này ngay từ menu.
Nói và lời của bạn được dịch gần như tức thì: chọn hai ngôn ngữ, hoán đổi chúng chỉ bằng một lần chạm, trình dịch sẽ thu giọng nói của bạn và truyền bản dịch trở lại ngay khi bạn đang nói.
Trang video giờ đây giữ các ô đồng bộ khi bạn xóa khỏi Thư viện, cho phép bạn đặt độ dài đoạn phim theo từng mô hình, xóa từng đoạn phim riêng lẻ, và đánh dấu rõ ràng các kết quả xem trước để bạn luôn biết mình đang xem…
Trợ lý trong ứng dụng giờ đây hiển thị các câu trả lời được định dạng đẹp mắt, giữ tin nhắn mới nhất trong tầm nhìn khi đang gõ, lưu câu trả lời hoàn chỉnh một cách đáng tin cậy, và tự động đặt tiêu đề cho mỗi cuộc trò c…
Những câu trả lời có chứa liên kết, công thức toán học hoặc số tiền không còn hiển thị trống hoặc dở dang nữa, kể cả sau khi làm mới trang, và các câu trả lời nghiên cứu chuyên sâu luôn kèm theo bản tóm tắt cuối cùng.
Một đợt làm việc sâu rộng phía sau hậu trường: đo lường mức sử dụng và tổng chi tiêu chính xác hơn, hoàn tiền tự động công bằng hơn, nhắn tin thời gian thực ổn định hơn, các biện pháp bảo vệ quyền riêng tư và bảo mật mạn…
Các bài blog công khai và thảo luận trên diễn đàn — bao gồm cả lượt tương tác và phản hồi — giờ đã hiển thị cho khách chưa đăng nhập.
Mức dùng giờ được tính với một khoản phụ thu duy nhất và công bằng, các đồng hồ chi tiêu hằng tháng và ngân sách còn lại của bạn hiển thị chính xác, và danh sách mô hình đã được dọn dẹp — loại bỏ mô hình ngừng hoạt động…
Các mục đăng quy trình và gói có thể hiển thị ảnh bìa đúng nghĩa, giúp việc duyệt marketplace dễ dàng và dễ chịu hơn.
Chỉ cần yêu cầu, trợ lý sẽ điền biểu mẫu, nhấn nút và di chuyển trong ứng dụng thay bạn — được hỗ trợ bởi bộ công cụ mở rộng nay vươn tới phần liên hệ, FAQ, diễn đàn, bộ nhớ và tạo quy trình chỉ trong một bước.
Câu trả lời giờ hiện ra từng từ một thay vì xuất hiện cùng lúc, và bạn có thể kéo bong bóng trợ lý đến bất cứ đâu thuận tiện, kèm gợi ý trực tiếp về việc nó đang xử lý.
Việc tạo một dự án và bắt đầu cuộc trò chuyện mới bên trong nó giờ hoạt động mượt mà, để bạn giữ các cuộc trò chuyện, tệp và ngữ cảnh liên quan ở cùng một nơi.
Video phát ổn định, media riêng tư tải qua một proxy an toàn, ảnh đại diện của nhà sáng tạo và persona giờ hiển thị cho mọi người, và ghi chú thoại được chuyển thành văn bản không lỗi.
Khi một phần của dịch vụ gặp sự cố, thông báo giờ dễ hiểu hơn và không còn để lộ tên nhà cung cấp nội bộ.
Liên kết ứng dụng bên ngoài chỉ với một lần đăng nhập hoặc một khóa API, để trợ lý làm việc trực tiếp với những công cụ bạn đang dùng.
Công cụ ảnh giờ chọn một mô hình phù hợp với việc bạn đang làm, hiển thị bản xem trước nội tuyến tức thì của kết quả, và việc chỉnh sửa đã hoạt động trở lại sau khi nhà cung cấp đổi mô hình.
Khi một hình ảnh hoặc tệp đính kèm đã bị xóa, lịch sử trò chuyện, thư viện media và trình chỉnh sửa ảnh giờ hiển thị một ảnh giữ chỗ thân thiện thay vì dừng lại với lỗi.
Trình dịch giờ cung cấp bộ chọn có tìm kiếm với khoảng 100 ngôn ngữ, mỗi ngôn ngữ hiển thị theo tên bản địa và tên tiếng Anh.
Chúng tôi đã thêm một loạt bài blog và chủ đề diễn đàn mới — bao gồm cả những câu hỏi đã có lời giải đáp — để bạn có thêm nhiều thứ để đọc và khám phá ngay từ ngày đầu.
Chat giờ đây có thể tìm kiếm trong các tệp bạn tải lên, chạy Python trong sandbox, chỉnh sửa hình ảnh, phiên âm và đọc âm thanh, và kích hoạt workflow của bạn — tất cả mà không rời khỏi cuộc trò chuyện.
Cho chat tìm kiếm web trực tiếp, thực hiện nghiên cứu chuyên sâu đa nguồn, và tải về đọc toàn bộ trang — mỗi câu trả lời đều đi kèm với các nguồn đã sử dụng.
Trợ lý của bạn giờ đây lưu giữ bộ nhớ nhẹ qua các cuộc trò chuyện, có thể liệt kê những gì nó nhớ và thực hiện yêu cầu quên bằng bất kỳ ngôn ngữ nào.
Tạo và chỉnh sửa hình ảnh, sản xuất phim ngắn và sáng tác bài hát có lời — được hỗ trợ bởi các công cụ tạo hình ảnh, video và âm nhạc mới, với bộ chọn phương tiện dùng chung và thư viện của bạn chỉ một cú nhấp chuột.
Nói chuyện với ToRun bằng giọng nói — khả năng giọng nói realtime mới mang đến các cuộc trò chuyện bằng lời nói và phiên âm trực tiếp cho chat.
Các lần chạy workflow giờ đây ưu tiên các model chất lượng cao, dừng lại để xin phê duyệt khi cần, và có thể được hủy, tạo lại và tiếp tục — với mọi đầu ra được lưu thẳng vào thư viện của bạn.
Nhóm các cuộc trò chuyện, tệp và ngữ cảnh liên quan vào Dự án để trợ lý của bạn luôn có đúng thông tin nền cho nhiệm vụ đang thực hiện.
Soạn thảo và chỉnh sửa nội dung dài và code trong bảng canvas chuyên dụng ngay bên cạnh cuộc trò chuyện của bạn.
Tóm tắt cuộn, cửa sổ ngữ cảnh thông minh hơn và cuộn lịch sử nhanh hơn giúp các cuộc trò chuyện dài vẫn mạch lạc và nhanh nhẹn, với các điều khiển rõ ràng khi cuộc trò chuyện vượt quá cửa sổ model.
Trợ cấp miễn phí nhân văn được nạp lại theo cửa sổ cuộn, đồng hồ đo chi tiêu rõ ràng hơn, hoàn tiền tự động khi tạo hình ảnh hoặc video thất bại, và các điều khiển cường độ suy luận chỉ mở khóa những gì số dư của bạn có…
Hàng chục model 2026 đã được thêm vào và các model lỗi thời bị ngừng sử dụng, cùng với tính năng tự động đồng bộ hàng ngày để cập nhật model và giá từ nhà cung cấp — được quản lý từ danh mục admin mới.
Xuất bản cuộc trò chuyện lên liên kết công khai và phát triển cộng đồng xung quanh những gì bạn tạo ra.
May 2026 — 499 changes
Bộ kiểm tra console .NET độc lập (test/ToRun.SmokeTests) xác thực đối với Host đang chạy (cấp mật khẩu OpenIddict) và kiểm tra từng đầu cuối đến đầu cuối qua HTTP API thực: auth/me, bộ nhớ CRUD, wallet, billing, library,…
Phương tiện nền tảng nằm trong Vùng Lưu trữ Bunny RIÊNG TƯ, nên một yêu cầu đơn giản
Hoàn thành tính năng quản lý bộ nhớ dựa trên chat trên nền tảng
memory_forget trả về no_match cho các ký ức tồn tại.
gemini-2.5-flash bắt đầu trả về HTTP 400 với thinkingBudget=128 (giá trị thấp 52-N
Hai trang admin máy chủ (/admin/model-catalog, /admin/model-onboarding)
Quá trình khám phá chỉ khớp theo ProviderModelId/ModelKey chính xác, do đó các nhà cung cấp đã lỗi thời
Cổng kiểm soát cường độ suy luận hiện dựa trên số dư, không phải theo gói.
Kết hợp tốt nhất vào tính năng đồng bộ 52-Q-MODEL-SYNC-JOB đã hoàn thành: khi OpenRouter
Bộ chọn cường độ suy luận bị khóa cứng theo gói đăng ký cộng với tính năng miễn trừ admin/host từ một cách tiếp cận trước đó đã bị từ chối.
Kết quả bàn giao Giai đoạn 1: danh sách 26-provider và kho nguồn giá,
Trình hướng dẫn onboarding (các giai đoạn A-D) chỉ TẠO các hàng danh mục; không có
Backend (torun.agent): SharedChat được bổ sung IsListed/ListedSlug/ListedAt + các trường thẻ denormalized; PublicCommunityAppService + PublicCommunityController (nguồn cấp /community ẩn danh + trình xem theo slug); Commu…
Tệp đính kèm âm thanh trong chat bị hỏng; nguyên nhân gốc rễ thực sự khác so với
PHẦN 1 — menu thả xuống "Xử lý tràn ngữ cảnh" trên tiêu đề chat bị kẹt ở
Việc xóa daily-cap (84178afab) đã xóa DailyKey/MonthlyKey khỏi BudgetBucketCacheItem
Phần 1 — xóa lỗi đỏ ở tầng tích hợp MongoDB.
Các chuỗi bộ chọn cường độ suy luận (Effort:Tooltip, Effort:Locked:Tooltip,
Bộ điều khiển cường độ suy luận chuẩn, không phụ thuộc nhà cung cấp trên giao diện soạn thảo chat,
Bước dọn dẹp dead-code cuối cùng cho quá trình viết lại ngân sách cửa sổ phiên.
Đồng hồ đo Chi tiêu Tháng/Ngày đọc telemetry UserDailySummary (ScopeKey=userId,
Theo dõi kiểm tra sau khi viết lại ngân sách cửa sổ phiên (2a33fd31f).
Đồng hồ đo ngân sách bucket trên trang chủ (/) + me-home hiển thị "$0.00 / 0% / $0.00" mỗi khi
Ngân sách bucket của gói miễn phí là dạng nhỏ giọt "$2 / 30d / 24h": nạp lại = $2/720/h và
Đồng hồ đo NGÂN SÁCH trên trang chủ (/) và me-home (/me) hiển thị "$0.00 (2% / $0.01)":
Lỗi vision nhiều lượt.
Khóa hồi quy đầu tiên ở tầng smoke.
Sửa nguyên nhân gốc rễ cho các lỗi 404 lặp đi lặp lại của title-gen / public-chat / vision: khả năng
Người dùng xác nhận mô tả hình ảnh hiện hoạt động.
Phạm vi chủ sở hữu bị lỗi 403 ngay cả đối với chủ sở hữu chat hợp lệ: các đính kèm do manager tạo
A3 NGUYÊN NHÂN GỐC RỄ THỰC SỰ (phát hiện qua kiểm thử trình duyệt trực tiếp): hình ảnh đính kèm chat
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Việc giải quyết IQueuedRequestDispatcher gây StackOverflow khi khởi động (không thể bắt —
Cả sink thời gian chạy của Host (appsettings.json) và các logger khởi động
Nguyên nhân gốc rễ lặp lại: ChangelogBackfillDataSeedContributor kiểm tra tính idempotency trên
Đã chạy extract-sprint-changelog.py + propagate-changelog-locales.py từ 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 + hạt giống khả năng voice-realtime + nối
Backend exception → frontend humane message + retry hint + status banner.
Consolidator landed both 52-Q-CHAT-CONTEXT-BUILDER's ChatSummaries
Phản chiếu các khóa UI chế độ giọng nói realtime được thêm vào en.json trong
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
Theo CLAUDE.md Rule 10.
Đầu ra của `python platform-plan/scripts/_validate-29-locales.py` sau khi tất cả 27 lô dịch thuật anh chị em đã hoàn thành + bước loại bỏ BOM:
Các lô từ 6 agent dịch thuật Sonnet chạy song song (tất cả đã được commit vào repo từ các lượt trước + nhóm cuối cùng vừa được đẩy):
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).
Kiểm tra chỉ đọc đối với ChatPipelineAppService + InAppAssistant + các client nhà cung cấp + 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 phát hiện VERB_MISMATCH: Angular gọi PUT trực tiếp
Nửa backend của Sprint 50-F: chat demo trang đích ẩn danh với giới hạn theo IP
Dictionary `Dictionary<(DateTime Date, Guid?
Đóng cửa sổ race duy nhất trong KeywordSettlementJob có thể
Tiếp nối task #67 (quét 50-SS).
Đóng nền tảng 50-RRR (commit A/B/C) bằng cách kết nối thực tế kết hợp
Đã điền lại Toggle / Heading / New / Untitled / Empty / Load:Failed / JustNow / MinAgo / HourAgo / DayAgo cho 28 locale không phải tiếng Anh (en.json đã có đầy đủ từ Sprint 50-CCC-2).
Phản chiếu Sprint 50-LL (Post.CreatorProfileId) + Sprint 50-VV-2 (AdAuction
Pipeline nay suy ra key capability từ topology đầu vào và sử dụng
Hợp đồng adapter cho đường dẫn kết hợp đa đầu vào.
Commit nền tảng cho tái cấu trúc chỉnh sửa đa ảnh (Tùy chọn C — capability
Phát hiện phạm vi: kết nối tại ChatPipelineAppService.cs:1415 đã gọi
5 bổ sung log có cấu trúc để lỗi sản xuất hiển thị đầy đủ ngữ cảnh
Sửa hai hướng cho tình trạng bong bóng tích lũy phiên rỗng / không mong muốn:
Đóng phần -2 bị hoãn từ 50-YY (nơi tính năng gắn micro bị tách ra để
Đóng khoảng trống liên pipeline còn lại từ 50-AAA.
Người dùng báo cả "Chọn ảnh nguồn" và "Chọn ảnh mask"
Log sản xuất:
Người dùng báo cả tải lên source và mask trên tab Edit /me/image
Slice module thư viện cuối cùng.
Phản hồi người dùng: banner xanh "Upload complete." nháy vào/ra khi
Sprint 50-CCCC cố sửa ObjectDisposedException của pipeline tải lên
Nguyên nhân gốc của toast "Upload failed" dai dẳng — dù các file
Người dùng báo năm vấn đề riêng biệt:
Người dùng báo part_001.wav / part_002.wav đã xóa khỏi thư viện nhưng
50-YYY để lại hồi quy: openAssetDetail chỉ kích hoạt tải trước văn bản
Người dùng báo tab Documents trống sau khi tải lên file .md / .txt —
Mẫu URL CDN công khai sai cho /me/library — nội dung theo từng người dùng
Hai lỗi trong một lô — cả hai xuất hiện khi thử nghiệm người dùng thấy 4 file 'đã tải lên' theo banner xanh nhưng trang thư viện vẫn hiện 0 mục.
Người dùng: 'thêm thanh tiến trình cho thao tác tải lên, hiển thị đang tải / số giây, cho người dùng biết cái nào đã tải xong, hiện tại trông rất nhàm.'
Hai vấn đề chặn người dùng từ kiểm thử /me/library:
Người dùng báo tải lên thư viện lỗi 400 'Only image/* MIME types are accepted on this endpoint.' sau khi tải file không phải ảnh từ tab Tất cả.
Người dùng báo admin Message Citations gặp lỗi 500 'Internal error'.
Người dùng báo tải lên thư viện 'Bunny storage upload failed with HTTP 401'.
Người dùng báo /me/image Generate bị lỗi: "Image generation provider
Người dùng báo tái cấu trúc vị trí panel Sprint 50-III VẪN chưa
Nguyên nhân gốc (biến thể Kịch bản B): `openSession()` gọi `messages.set(mapped)`
Người dùng: "Không cần dùng cùng model cho tiêu đề, những cái này
Người dùng báo panel liên tục mở tách rời khỏi FAB dù đã có Sprint
Sprint 50-CCC nâng MaxOutputTokens 24 → 128 kỳ vọng "~100
Người dùng báo /me/activity-history trống dù đã dùng chat/ảnh/giọng nói/v.v. nhiều giờ.
Hai hồi quy kiểm thử người dùng được tìm thấy và sửa; vấn đề thứ ba
| # | Menu | Nhóm | Đường dẫn Angular | Route backend | Trạng thái | Nguyên nhân gốc |
Người dùng: "tại sao khi thêm file vào library phải thêm từng cái,
Người dùng: "source có tải lên từ PC mà mask thì không, tại sao
Lỗi nghiêm trọng người dùng báo: mọi lần tải lên PC đều ném ngoại lệ
Người dùng báo cáo liên tục từ hôm qua rằng /me/notifications/
Danh sách chat gần đây trong /agent/chat-pipeline có Đổi tên/Xóa từng hàng
Kiểm thử người dùng nêu 5 vấn đề; 4 được giải quyết trong commit này, 1
AsyncPeriodicBackgroundWorker hàng ngày (chu kỳ 24h) quét các mục Paid
Sprint 47-O tạo entity AdAuction phẳng không có FK join;
ABP AsyncPeriodicBackgroundWorker hàng ngày (chu kỳ 24h) quét
Sprint 50-TT được giao cho việc này nhưng lệch hướng (nó đã
Người dùng yêu cầu: chỉ số dung lượng thư viện, tải lên PC, hạn mức theo gói,
Mở rộng mẫu 50-RR (VideoJobPollingWorker IAbpDistributedLock)
Sprint 50-P hoãn tải lên PC vì backend thiếu Bunny
50-AA bị hủy giữa chừng; đây là lô tiếp tục được chia nhỏ
Sprint 50-U + 50-EE kết nối polling + luồng hoàn tiền nhưng giả định một pod
Chỉ thị người dùng (lượt Sprint 50-E): bell + activity sağdaki menü ikonlarının
Backend không thể tiếp cận tại https://localhost:44304 trong sprint này;
Sprint 47-H xây dựng index kép thoái hóa cho feed Creator/Post
Sprint 47-H xây dựng quét (TenantId, CreationTime) thoái hóa cho PersonaPost
Sprint 50-W BillingReconciliationJob phát hiện lỗ hổng (Paddle
Mỗi modules/torun.*/angular/angular.json tham chiếu
Kiểm thử cô lập tenant Sprint 50-CC tiết lộ lỗi có sẵn từ trước:
Đợt quét MT Sprint 47-A..47-P thêm index kép tiền tố TenantId vào mọi
Hoàn thành chuỗi Sprint 49.
Rủi ro R2 trước ra mắt: Sprint 47-A..47-P quét 219+ entity để
Sprint 50-U phát hiện thiếu sót: IBillingRecorder chỉ có RecordAsync.
Kế hoạch §2.3 / kiểm tra R1 — Sprint 47-A...47-P quét 219+ entity để
Backlog kế hoạch §2.5: truyền bá 22 key pipeline ImageEdit (Sprint
Sprint 50-K phát hiện một xung đột (cấu hình paddle plan subscription
Phase 1.5 §2.1 #3 — worker nền thứ ba.
Phase 1.5 §2.1 #4 — worker nền thứ tư và cuối cùng trước khi ra mắt.
/api/app/run-input-upload trả về 404 vì AppService
Sprint 50-P đưa vào UI tab Edit /me/image + kết nối backend nhưng
Frontend (Angular | date pipe + Date constructor) xử lý UTC -> giờ địa phương
Phase 1.5 §2.1 — worker nền ưu tiên hàng đầu.
Phase 1.5 §2.1 #2 — worker nền thứ hai.
Người dùng báo lượt tiếp theo "form doldurma" trả về "Message failed.
Lỗi A: khung soạn chat bỏ qua Ctrl+V khi dán ảnh từ clipboard.
Trang duyệt Marketplace (angular/src/app/marketplace/
Tab Edit thiếu lựa chọn Model (Auto/Manual), Chất lượng
Người dùng báo mặc định Sprint 50-I (bottom:96 right:24) bị chồng lên
Kiểm thử người dùng tại /me/notifications gặp lỗi 404 trên
PaddleOptions.WalletTopUpPriceIds là Dictionary<string,string>
Người dùng báo "paddle.js popup açması lazım, hata veriyor" khi
Sprint 50-I giải quyết hai hồi quy UX xuất hiện sau Sprint 50-B + 50-E:
Admin đã lưu cấu hình Paddle của SubscriptionPlan; lần lưu đầu tiên thành công.
Bảng chi tiết chi phí trên /me/billing đang thêm tiền tố vào mọi
Sprint 49-B để lại hai URL /api/app/* cứng trong chat-pipeline
- 50-B (InAppAssistant:Bubble:Dock/Undock/DragHint): thêm vào en.json + 28 locale còn lại với bản dịch gốc
Người dùng: 'trang memory khi bấm xóa hiện js confirm, tại sao không dùng leptonx
Sửa A (lỗi server QUAN TRỌNG):
Người dùng báo: dropdown SourceKind hiển thị khối màu hồng/xanh kỳ lạ (bị vỡ
Phản hồi người dùng: hai chuông nổi (notification-bell + activity-center)
Áp dụng mẫu Sprint 47-I + 45-M.
Sprint 46-A giới thiệu IBillingRecorder liên module + phát ra BillingRecords
Sprint 46-F hoàn thành chuẩn hóa cấu trúc lowercase→PascalCase nhưng để lại 4 locale với nội dung tiếng Anh stub từ Suite.
Áp dụng mẫu Sprint 45-M + 47-A đến 47-N.
Áp dụng mẫu Sprint 47-M.
Áp dụng mẫu Sprint 45-M + 47-K.
Áp dụng mẫu Sprint 45-M + 47-A đến 47-K.
Áp dụng mẫu Sprint 45-M + 47-A đến 47-H.
Áp dụng mẫu Sprint 45-M + 47-A/B/C/D/E/F/G/O.
Áp dụng mẫu Sprint 45-M + 47-G.
Áp dụng mẫu Sprint 45-M + 47-A/B/C/D/E/F.
Áp dụng mẫu Sprint 45-M + 47-A/B/C/D/E.
Áp dụng mẫu Sprint 45-M + 47-A/B/C/E.
Áp dụng mẫu Sprint 45-M + 47-A + 47-B.
Áp dụng mẫu Sprint 45-M + 47-A/B/C.
Áp dụng mẫu Sprint 45-M + 47-A/B.
Áp dụng mẫu Sprint 45-M + 47-A.
Áp dụng mẫu Sprint 45-M: Suite không phát ra IMultiTenant trên các lớp Base dù IsMultiTenant: true trong JSON.
Slice 56 — IModelRoutingService (ByokVault.Application + Contracts):