What's Changed
- docs(providers): document Wally under OpenAI-compatible providers by @sanchitmonga22 in #16529
- fix(core): share one gh runner and name an unusable view directory by @wenshao in #16545
- fix(telemetry): report OpenAI cache_write_tokens as cache creation by @2SinceJuly in #16454
- feat(core): name the active shell in the startup context by @2SinceJuly in #16491
- docs(daemon): document session-scoped permission vote for channel auto-approve by @yiliang114 in #16541
- test(cli): stop a flaky A2A approval poll from failing the whole shard by @wenshao in #16555
- fix(ci): route external PR CI directly to disposable runners by @yiliang114 in #16551
- feat(qqbot): add opt-in forwardBotMessages for bot-authored messages by @Eric-GoodBoy-Tech in #15904
- fix(channels): skip memory extraction and follow-up suggestions on channel turns by @wenshao in #16565
- fix(ci): report timed-out main CI runs instead of letting cancelled hide them by @yiliang114 in #16280
- fix(web-shell): refresh standalone sessions after allocation by @ZedingZhang in #15311
- fix(batch): report provider-specific output budgets in readiness checks by @Jun516 in #15181
- fix(core): share compression cache for equivalent model selectors by @xxwtiancai in #15318
- fix(desktop): restore saved web previews by @zonemeen in #14597
- fix(managed-agent): create a never-attached Session for its first automation verb (#14548) by @xxwtiancai in #14561
- fix(memory): report why a background memory agent stopped by @everyoneexe in #13466
- fix(web-shell): do not persist rejected daemon URL credentials by @lorenzozanee in #12285
- fix(core): base web terminal backpressure on pending input by @dakjdakd in #14313
- fix(cli): emit headless results before draining memory by @xxwtiancai in #13885
- fix(lsp): Attribute diagnostics to explicit extension owners by @loglapa in #14117
- fix(cli): settle Live call stops after failure by @GoldArowana in #13835
- fix(cli): remove dead REPLACE mergeStrategy declarations for modelProviders and providerProtocol by @liwenjie200543 in #12613
- fix(ci): run the failure patrol on ECS and time its sandbox image pull separately by @wenshao in #16462
- refactor(serve): share the prompt admission with in-process callers by @wenshao in #16543
- fix(managed-agent): let --check read the configuration the server reads by @wenshao in #16364
- fix(ci): keep sdk-java resolver bookkeeping and in-house jars out of the host cache (#15281) by @qwen-code-dev-bot in #15286
- fix(web-shell): narrow sidebarless live-state polling to displayed workspaces by @yiliang114 in #16550
- fix(cli): warn about Node 24/25 Wasm memory spikes without disabling AST checks by @Willam2004 in #15321
- feat(agents): make default background execution configurable by @ZedingZhang in #15178
- fix(extension): persist CDP reconnect backoff across service worker restarts by @he-yufeng in #14022
- feat(cli): enable LSP through a user-scoped setting and env pair by @BigDaddy1337 in #14613
- fix(web-shell): isolate mixed-direction Markdown text by @hahahahahayesyeseys in #14035
- docs(tools): add You.com free MCP to the web search MCP services by @brainsparker in #14000
- fix(review): refuse the findings artifact by name and print the expected schema by @ZedingZhang in #14824
- fix(sdk-typescript): clamp an overflowing session-spawn deadline to the timer ceiling by @Bug-killer-prog in #14676
- fix(web-shell): route standalone reloads by session source type by @cactuser-Lu in #12384
- fix(ci): harden the already-published desktop probe by @lorenzozanee in #12184
- fix(web-shell): remove productScope gating on managed provider capabilities by @yiliang114 in #16554
- docs(channels): document self-pushed head echoes and scope their suppression by @wenshao in #16577
- docs(design): propose idle parking for resident Hosted Sessions by @wenshao in #16564
- fix(managed-agent): prove A3 rewritten command recovery without Hook rerun by @wenshao in #16116
- feat(channels): give bound sessions role guidance without operator templates by @wenshao in #16576
- ci: raise the ephemeral runner slot cap to 64 per host by @yiliang114 in #16591
- test(managed-agent): make the preflight tests pin what they claim by @wenshao in #16589
- fix(channels): journal GitHub mentions added by editing an older comment by @wenshao in #16588
- feat(ci): switch review runner day pool to a numeric count over hz runners by @yiliang114 in #16544
- feat(ci): support HTTP proxy in ephemeral runner containers by @yiliang114 in #16592
- test(serve): drive the reconcile probe through the Broker's real rejection path by @2SinceJuly in #16568
- fix(serve): refuse to validate a restored worktree whose lock is not held by @wenshao in #16593
- refactor(serve): move the restore's worktree reconciliation into a helper by @wenshao in #16583
- feat(serve): add the daemon PR watch store foundation by @wenshao in #16590
- fix(ci): check out all of .github for owner assignment by @yiliang114 in #16599
- feat(acp-bridge): expose replay projection watermark by @chiga0 in #16538
- fix(ci): stop ephemeral runner slots from wedging and alert on stalls by @yiliang114 in #16597
- feat(web-shell): expose Channel delivery targets in Scheduled Tasks by @jkxiao in #16524
- docs(memory): document external context_search MCP setup by @vshulcz in #16041
- fix(cli): accept explicitly named Local Control addresses outside RFC 1918/3927 by @pomelo-nwu in #14140
- fix(web-shell): keep footer actions stable during inline rename by @Jun516 in #15182
- test(acp-bridge): pin background activity and scope spy cleanup by @Oscar-Williams in #12243
- fix(web-shell): show file changes in standalone sessions by @zonemeen in #15070
- fix(web-shell): keep the first prompt running when switching sessions during creation by @wenshao in #16582
- fix(mcp): name the capped server timeout in App read timeout warnings by @tonydzi in #13312
- fix(channels): read GitHub comments of the cursor's own second once by @wenshao in #16606
- feat(web-shell): add workspace collapse controls and drag sorting by @ytahdn in #16197
- fix(web-shell): scope file changes to the session workspace by @ytahdn in #16102
- feat(web-shell): label rendered artifact cards Preview and strengthen the details UI-language prompt by @wenshao in #16587
- docs(serve): state the worktree lock key rule and the restore's lock-mismatch 500 by @wenshao in #16601
- fix(managed-agent): clear the SpotBugs null dereference in preflight by @wenshao in #16600
- fix(ci): stop cross-job qwen-home pollution from killing PR review by @yiliang114 in #16618
- fix(web-shell): reload an e2e boot aborted by host network churn by @wenshao in #16595
- fix(ci): exponential backoff on rate-limited runner registration by @yiliang114 in #16608
- feat(daemon): expose last user prompt time and session sorting by @samuelhsin in #14654
- test(cli): pin that the trust store is forwarded, not mounted by @qwen-code-dev-bot in #16401
- feat(serve): observe bound PRs and detect state transitions behind an off switch by @wenshao in #16611
- feat(managed-agent): add Session resource and agent-trace diagnostics by @doudouOUC in #16640
- test(ci): pin the stall alert to one per stall episode by @yiliang114 in #16650
- fix(web-shell): label proxied daemon failures instead of an empty 500 by @yiliang114 in #16610
- fix(ci): cover hz hosts in the fleet qwen update and pin both prefixes by @yiliang114 in #16619
- fix(web-shell): close managed host integration gaps left by the host mount entry by @yiliang114 in #16200
- fix(managed-agent): fail preflight rows this process cannot verify by @wenshao in #16639
- fix(channels): post the GitHub error comment only after the last attempt by @wenshao in #16631
- fix(ci): quarantine a qwen-home neither rm nor sudo can reclaim by @wenshao in #16627
- feat(ci): give the autofix address agent failed-check evidence by @wenshao in #16659
- fix(channels): stop paying for a CI aggregate a failure already decided by @wenshao in #16665
- refactor(web-shell): share session view reset state by @qwen-code-dev-bot in #15060
- fix(web-shell): keep Open for managed artifacts the default panel cannot preview by @wenshao in #16645
- fix(serve): clean a worktree checkout after more than one reset by @wenshao in #16643
- test(ci): keep the visuals publisher and the failure reporter off the pool by @wenshao in #16561
- ci: route the web-shell visuals capture for fork PRs to the disposable pool by @yiliang114 in #16617
- test(ci): pin the stall alert re-arm after a recovery by @yiliang114 in #16660
- feat(serve): drain bound-PR watch pending transitions behind an off switch by @wenshao in #16656
- test(managed-agent): give the diagnostics surface probes a session body by @wenshao in #16694
- fix(web-shell): harden the dev daemon probe and proxy error attribution by @yiliang114 in #16663
- fix(web-shell): keep transcript visible during session resync by @chiga0 in #16688
- feat(managed-agent): persist Session model statistics and request context by @doudouOUC in #16641
- fix(ci): self-heal ephemeral runner slots wedged by orphaned resource piles by @yiliang114 in #16628
- test(cli): give two serve-side CI waits real poll budgets by @wenshao in #16699
- fix(ci): add bounded, idempotent retry to the SDK release branch push by @yiliang114 in #16705
- test(serve): pin the worktree ownership lock key derivations together by @wenshao in #16646
- perf(managed-agent): read each restore resource once on a cold Workspace load by @wenshao in #16625
- feat(managed-agent): add archive and MCP self-service installation by @doudouOUC in #16500
- test(ci): isolate the checkout hook fixture from the release runner git config by @qwen-code-dev-bot in #16684
- feat(channels): protect the GitHub mention lane from watch budget spend by @wenshao in #16701
- feat(managed-agent): persist Session execution diagnostics by @doudouOUC in #16642
- test(web-shell): let a boot retry outlast a network-change abort storm by @wenshao in #16717
- feat(channels): deliver bound-PR comments to every session that did not post them by @wenshao in #16602
- fix(web-shell): let hosts own the composer add menu by @yiliang114 in #16715
- feat(web-shell): show scheduled task workspace when the picker is hidden by @jkxiao in #16630
- test(channels): pin the watch budget recovery edge against repeat rows by @wenshao in #16721
- test(cli): cover the Ink TUI's Goal, notification, cron and teammate turns by @qqqys in #16704
- fix(managed): Allow short browser tokens in Web gateway by @doudouOUC in #16723
- test(cli): derive the upload cleanup budget from the lane test timeout by @wenshao in #16711
- test: deflake the temp-name watcher and auto-open disarm suites by @wenshao in #16697
- feat(mods): run the prompts a Mod submits in the OpenTUI terminal by @qqqys in #16426
- feat(web-shell): add sidebar multi-select with bulk pin and archive by @deggs7 in #16702
- fix(stats): include time to first token in output speed by @qqqys in #16716
- feat(managed-agent): add opt-in personal memory backed by Mem0 by @doudouOUC in #16488
- fix(ci): only delete label-recovered registrations GitHub reports offline by @yiliang114 in #16713
- fix(ci): stop staling branches for eslint ignores they never excluded by @wenshao in #16706
- test(core): let the heavy title log test outlast a contended host by @wenshao in #16730
- fix(core): stop the renewal timer before reacquireWriter drops the grant by @wenshao in #16720
- fix(subscription): restore model switching and align session recovery by @liuxuely0626 in #16738
New Contributors
- @sanchitmonga22 made their first contribution in #16529
- @everyoneexe made their first contribution in #13466
- @brainsparker made their first contribution in #14000
- @vshulcz made their first contribution in #16041
Full Changelog: desktop-v0.27.0...desktop-v0.27.1