Recover Telegram forum reaction topics from provider-observed message context before authorization, and drop unknown topics instead of routing them to General. Serialize each forum message with its reaction update to avoid cache races. Thanks @vovapetry.
* fix(qqbot): bind channel API tool to active account
* fix(qqbot): scope active account binding to QQ turns
* fix(qqbot): reject disabled channel API accounts
Prevent Telegram long replies from silently losing their tail after definite per-chunk rejections. Preserve accepted message IDs and explicit partial-delivery state across durable, rich fallback, and streamed replies.
Co-authored-by: alfredjbclaw <alfredjbclaw@users.noreply.github.com>
* fix(codex): cap compaction override warning cache via createDedupeCache
* test(codex): cover compaction warning cache eviction
* test(codex): use valid compaction trigger in cap coverage
* test(codex): assert warning retention at the 4096-entry boundary
* origin/main:
fix(test): isolate shared state between test files (#118781)
fix(telegram): use monotonic polling liveness
fix(setup): keep compatible Claude wrappers selectable
fix(agents): gate Claude live session protocol
fix(agents): preserve Claude fork successor on stalls
fix(agents): preserve Claude follow-up replies after background tasks
fix: unblock macOS release validation (#119110)
improve(qa): cover vision channel offload (#118862)
test(qa): cover sandboxed exec behavior (#119053)
fix(ai): preserve Google simple completion sanitation
fix(macos): keep setup activation within app checks
fix(tts): use prepared completion transport
fix(ai): prefer provider-owned completion streams
test(setup): type provider kind fixture
fix(setup): complete prepared model activation
fix(protocol): regenerate Swift wizard models
fix(ollama): activate the model selected during setup
fix(setup): preserve the prepared model handoff
Measure Telegram polling deadlines with a monotonic clock so wall-clock corrections cannot trigger false restarts or negative durations. Preserve the worker deadline and continued-stall recovery.
Co-authored-by: Galin Iliev <Galin.Iliev@microsoft.com>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
* commit '70d75c6fa3d022fb0de55640c4aca11baecd8175':
fix(macos): keep setup activation within app checks
test(setup): type provider kind fixture
fix(setup): complete prepared model activation
fix(protocol): regenerate Swift wizard models
fix(ollama): activate the model selected during setup
fix(setup): preserve the prepared model handoff
Keep Telegram Bot API deadlines and cancellation active until grammY finishes consuming each response body. Cancel discarded HTTP 421 bodies before retry and cover the stalled group-dispatch boundary with typed socket and live Telegram proof.
Record every accepted Telegram automatic delivery in the scoped sent-message ledger, including finalized streaming previews. This restores bot-owned reaction checks and removes the per-send full-ledger expiry scan.
* fix(googlechat): align doctor policy ownership with canonical account configuration
* test(googlechat): align generated channel metadata and typed doctor fixtures