What's Changed
- feat(managed): add session permission rules and Auto approval by @doudouOUC in #15448
- fix(cli): harden serve token resolution against project env injection by @yiliang114 in #15228
- feat(core): add an experimental shared agent loop and run headless on it by @qqqys in #15369
- fix(cli): align OpenTUI cancellation and retry with Ink by @chiga0 in #15283
- test(managed-agent): assert web_fetch in the Hosted workspace gate fixture by @yiliang114 in #15451
- fix(vscode): leave edit mode after a refused edit by @yiliang114 in #15439
- fix(rewind): resolve legacy turns by source identity by @yiliang114 in #13737
- test(cli): cover remaining Managed Workspace activation refusals by @doudouOUC in #15460
- fix(managed-agent): retire registered zombies before startup waits by @doudouOUC in #15459
- feat(core): attribute 千问AI平台 / QwenCloud requests with the source-config header by @yiliang114 in #15041
- fix(cli): preserve arrival order of direct-mode stream-json startup messages by @yiliang114 in #15378
- fix(managed-agent): restore the module and cli lanes after #15448 by @yiliang114 in #15455
- test(managed-agent): correct the CSI inventory column count after #15448 by @yiliang114 in #15469
- docs(design): fix first-run scheduled-task gate examples by @sxl-lucky7 in #15452
- test(managed-agent): retry the team-lead boot past the harness port race by @qwen-code-dev-bot in #15224
- feat(cli): preserve OpenTUI session replay and rewind by @chiga0 in #15384
- fix(cli): preserve checkpoint restore ownership and cold continuation by @chiga0 in #15386
- feat(cli): capture and restore complete OpenTUI checkpoints by @chiga0 in #15389
- fix(cli): run OpenTUI on private Bun 1.4.4 by @chiga0 in #15387
- test(ci): pin the disk-pressure collector revision and FULL_PAYLOAD run bodies by @yiliang114 in #15475
- fix(ci): file main CI failures whose successor has not settled by @yiliang114 in #15471
- test(integration): pin removeScratchDir retry budget with a mutation witness by @yiliang114 in #15488
- test: capture expected disk-full logs by @EthDing in #8549
- fix(web-shell): keep permission rule declarations self-contained by @yiliang114 in #15501
- fix(cli): preserve OpenTUI clipboard source across draft recovery by @chiga0 in #15396
- fix(hosted): preserve primary MySQL isolation failures by @yiliang114 in #15505
- fix(cli): stop double-counting reasoning tokens in cost estimates by @yiliang114 in #15464
- fix(release): bound summary concurrency and refresh release PRs by @yiliang114 in #15500
- fix(web-shell): Prevent duplicate Managed composers by @doudouOUC in #15496
- fix(serve): probe X11 display reachability before advertising the native directory picker by @yiliang114 in #15434
- test(managed-agent): wait for worker exit visibility by @yiliang114 in #15503
- ci(sdk-java): preserve failure reports and SQL causes by @Aling33 in #14910
- test(ci): pin JUnit report upload paths by @barry166 in #15502
- fix(test): budget the standalone runtime suite for the release pool by @qwen-code-dev-bot in #15102
- feat(managed-agent): pool the automation scanner's rows and lease from the claim time by @yiliang114 in #15442
- test(cli): budget hosted approval waits for slow runners (#15176) by @qwen-code-dev-bot in #15183
- fix(cli): refuse an autofix watch a daemon cannot run by @wenshao in #15506
- feat(generated-ui): continue analysis with reviewed parameters by @qqqys in #15333
- fix(web-shell): simplify status when loading phrases are hidden by @deggs7 in #15423
- fix(ci): keep the incremental lint history fetch blobless and visible by @yiliang114 in #15511
- test(cli): budget the hosted approval wait for loaded runners (#15093) by @qwen-code-dev-bot in #15101
- feat(runtime-broker): add HTTP-backed external scratch workers by @yiliang114 in #15261
- fix(ci): preserve independent validation for main push SHAs by @yiliang114 in #15508
- fix(release): authenticate managed OSS preflight by @yiliang114 in #15504
- feat(verify-pr): declare an argument hint for the command prompt by @wenshao in #15463
- fix(ci): run the sdk-java suite before taking the host lock by @qwen-code-dev-bot in #15254
- fix(ci): skip main-failure issues for post-merge reruns (#15239) by @qwen-code-dev-bot in #15250
- feat(managed): add durable mid-turn user message queue by @doudouOUC in #15449
- feat(cli): list /autofix-pr watches and resume them in a later session by @wenshao in #15510
- perf(ci): overlap web-shell and standalone tests with the CLI suite by @wenshao in #15438
- fix(cli): Hide unavailable Managed background tools by @doudouOUC in #15497
- feat(web-shell): create workspaces from a Git URL by @wenshao in #15361
- fix(managed-agent): guard lifecycle renewal scheduling during shutdown (#15208) by @qwen-code-dev-bot in #15231
- perf(memory): retain unchanged legacy catalog snapshots by @yiliang114 in #15246
- fix(runtime): deliver bounded provider images and PDFs by @water-in-stone in #13606
- fix(runtime): unblock independent resident workspaces and tool admission by @doudouOUC in #15457
- fix(web-shell): keep UI language changes out of standalone workspace scope by @wenshao in #15521
- fix(core): handle a failed queued memory extraction rejection by @wenshao in #15338
- fix(ci): run credential-free release fanout on ecs runners by @yiliang114 in #15517
- fix(cli): surface retry classification in headless mode by @yiliang114 in #15515
- feat(managed-agent): give the Hosted Harness its Broker through the environment by @wenshao in #15244
- fix(cli): keep a Web Shell /autofix-pr watch alive through an idle session by @wenshao in #15523
- test(memory): pin recovery-path and hard-rescue catalog accounting by @yiliang114 in #15535
- test(managed-agent): pin the row pool's fan-out, correct its design claims by @yiliang114 in #15528
- test(managed-agent): Add shared Harness Kubernetes qualification tools by @doudouOUC in #15519
- test(cli): pin the lifecycle-protocol refusal on the load route by @yiliang114 in #15536
- test(lint): observe the --setup installer guard by @yiliang114 in #15533
- refactor(core): share the curated catalog-visibility predicate by @yiliang114 in #15534
- fix(memory): delete a turn's catalog snapshot record with the turn by @yiliang114 in #15540
- refactor(core): import the QwenCloud host list instead of repeating it by @yiliang114 in #15532
- fix(ci): price ARM64 fleet lanes from the self-hosted label by @yiliang114 in #15529
- feat(managed-agent): register external Workspace storage ownership by @yiliang114 in #15516
- fix(managed): persist session Todo and project committed task lists by @yiliang114 in #15155
- fix(ci): deepen the incremental lint history until the merge base is provable by @yiliang114 in #15525
- feat(core): skip re-injecting an unchanged UserPromptSubmit hook context block by @yiliang114 in #14129
- fix(lint): group incremental Prettier by the nearest config directory by @yiliang114 in #15531
- feat(mods): observe turn start and completion by @qqqys in #15443
- test(cli): budget the flaky hosted-harness waits through the settle policy by @yiliang114 in #15551
- feat(web-shell): manage extra workspace directories from settings by @wenshao in #15393
- feat(autofix-pr): run the helpers through a tool, and let a confirmed watch's fixes run unattended by @wenshao in #15548
- feat(managed-agent): let the bootstrap set the service account and MySQL up by @wenshao in #15543
- feat(managed-agent): add pinned extension package management by @doudouOUC in #15490
- docs(design): external Hosted Workspace profile (phase 2) by @yiliang114 in #15520
- docs(managed): describe gate scanner capacity under the row pool by @wenshao in #15571
- docs: clarify usage statistics across authentication methods by @sxl-lucky7 in #15554
- feat(managed-agent): support Workspace file uploads by @doudouOUC in #15586
- feat(core): Add durable terminal identity lookup by @doudouOUC in #15566
- test(managed-agent): align S1 acceptance fixtures with runtime contracts by @doudouOUC in #15585
- fix(managed-agent): pass the pool Harness the Broker pair serve removes by @wenshao in #15394
- fix(ci): route the tui-parity changes gate to the ECS pool for trusted PRs by @yiliang114 in #15561
- fix(core): preserve hook dedup across compaction by @yiliang114 in #15575
- test(managed-agent): Fix workspace upload admission fixtures by @doudouOUC in #15588
- fix(mods): pin the Mod contract to Claude Code 2.1.310 by @qqqys in #15560
- feat(acp): run the model round of fresh prompts on the shared agent loop by @qqqys in #15509
- fix(core): preserve hook context deduplication after catalog snapshots by @yiliang114 in #15556
- feat(mods): add ui.render, $.ui.resolve and $.ui.invalidate to the runtime by @qqqys in #15591
- test(runtime-broker): build the extension-profile fixture paths portably by @yiliang114 in #15598
- test(cli): budget the skill-recovery poll through the settle policy by @yiliang114 in #15589
- fix(ci): resolve the pool's Maven dependencies through a domestic mirror by @yiliang114 in #15610
- fix(ci): stop failing the Maven bootstrap on a rate-limited pool egress by @yiliang114 in #15539
- fix(managed-agent): retry read-only attestation after EOF by @doudouOUC in #15608
- feat(web-shell): add plain-text and Markdown reply copying by @ytahdn in #15345
- fix(ci): resolve libfaketime for the host architecture by @yiliang114 in #15609
- fix(ci): bound setup-java on the pool and fall back to the tool cache by @yiliang114 in #15605
- feat(cli): connect OpenTUI voice input to the shared pipeline by @chiga0 in #15617
- feat(ci): canary-split the PR review model by PR number by @yiliang114 in #15538
- feat(daemon): add cached workspace artifact queries and batch removal by @BZ-D in #15594
- fix(web-shell): match cancellation duration to turn summary by @ytahdn in #15615
- feat(managed-agent): add native snapshots and HTTP recovery by @doudouOUC in #15569
- fix(web-shell): hide turn navigation without sufficient gutters by @ytahdn in #15604
- feat(cli): admit Managed Runtime boot-v2 with external storage and publication surface in container mode by @yiliang114 in #15522
- fix(core): stop warning about a placeholder in the attribution header by @yiliang114 in #15636
- feat(tools): let an explicitly configured search backend name its host by @yiliang114 in #15638
- fix(managed-agent)!: simplify Web Shell controls and retire cwd submissions by @doudouOUC in #15616
- feat(cli): align OpenTUI foreground shell controls with Ink by @chiga0 in #15642
- test(lint): pin the .gitignore grouping arm and the batch stride by @yiliang114 in #15640
- docs(qwencloud): document the forced attribution header and pin the admission split by @yiliang114 in #15633
- feat(acp): run the tool batches of fresh prompts on the shared agent loop by @qqqys in #15627
- feat(serve): allow secondary sessions to cd within their workspace by @rockybot2026 in #15323
- feat(mods): draw the band above the prompt in the Ink terminal by @qqqys in #15619
- fix(ci): resolve the pool's Maven dependencies from the intranet mirror by @yiliang114 in #15641
- Pin unknown sed long options by @waybarrios in #15223
- fix: preserve interleaved reasoning in TUI and Chat replay by @DragonnZhang in #15621
- feat(autofix-pr): run an unattended watch's fix agent in the background by @wenshao in #15578
- feat(core): add local managed journal snapshot recovery by @doudouOUC in #15626
- fix(cli): preserve previews and verify installed OpenTUI distribution by @chiga0 in #15655
- feat(verify-pr): add a local preflight and a verdict check by @wenshao in #15614
- fix(ci): Isolate Managed runtime release test classes by @doudouOUC in #15676
- ci: run every suite but CLI and core in the side test lane by @wenshao in #15570
- test(cli): read xn-- hosts by the running URL parser in the Broker URL fixture by @wenshao in #15544
- feat(web-shell): show /autofix-pr watches and stop them from the Web Shell by @wenshao in #15668
- fix(ci): deepen until the lint scope's own acceptance holds by @yiliang114 in #15644
- test(integration): widen the ready-prompt budget on GitHub-hosted macOS x64 by @yiliang114 in #15692
- fix(release): extend standalone runtime download retries by @qwen-code-dev-bot in #15673
- fix(ci): preserve setup-java JDKs during pool fallback by @yiliang114 in #15623
- feat(mods): compile JSX in .tsx and .jsx Mod modules by @qqqys in #15624
- fix(ci): keep the sdk-java cache write-back on a failed suite by @wenshao in #15555
- chore(goal): remove an unused evidence helper and stale /goal hook comments by @qqqys in #15693
- fix(serve): Fix Hosted local state and foreground Shell validation by @doudouOUC in #15670
- test(web-shell): raise the 200-record history-viewport smoke budget to 300s by @yiliang114 in #15656
- feat(cli): bind the PR named by a /verify-pr prompt by @wenshao in #15625
- feat(cli): complete OpenTUI extension discovery and source management by @chiga0 in #15671
- refactor(managed-agent): close the scanner row-pool residues (#15527) by @yiliang114 in #15632
- feat(managed-agent): add the external-workspace provisioning prerequisite (#15512) by @yiliang114 in #15654
- fix(release): close the failure issue once a re-run passes by @yiliang114 in #15711
- test(managed-agent): initialize the snapshot pool connection synchronously by @doudouOUC in #15715
- fix(ci): refresh the stale ci.yml workflow-size baseline by @wenshao in #15717
- test(cli): close the deferred review Suggestions from #15625 by @wenshao in #15710
- feat(web-shell): nest derived sessions under their parent in the sidebar by @wenshao in #15714
- fix(web-shell): keep session rename responsive by @wenshao in #15688
- fix(cli): preserve OpenTUI extension update state by @chiga0 in #15716
- feat(web-shell): name new sessions from the first prompt by @wenshao in #15689
- feat(managed-agent): check Harness compatibility, leftover workers and a live service in preflight by @wenshao in #15564
- feat(web-shell): stream BTW answers with reconnect and scroll following by @ytahdn in #15709
- feat(cli): run only the tests related to the diff in review build-test by @wenshao in #15547
- fix(ci): Preserve canonical artifacts across job retries by @doudouOUC in #15713
- feat(memory): opt-in extraction cadence after a no-op run by @yiliang114 in #13571
- fix(core): recover outer XML calls with quoted call content by @yiliang114 in #13579
- feat(core): shrink tool results to the headroom left before auto-compaction by @yiliang114 in #13599
- fix(acp): carry rewind identity through daemon clients by @yiliang114 in #15441
- feat(web-shell): retain Generated UI instances across same-page navigation by @qqqys in #15611
- feat: add persistent session Workflow mode (DW-04A) by @qqqys in #15422
- feat(web-shell): add configurable simple composer by @samuelhsin in #15663
- feat(cli): keep autofix-pr starts off the user's own branch work by @wenshao in #15736
- fix(release): use the run-scoped token for the publish checkout by @qwen-code-dev-bot in #15728
- fix(ci): pin PR retries to the triggering head SHA by @yiliang114 in #15734
- docs(managed-agent): decide the shared-Session queue and correct the pool comment (#15667) by @yiliang114 in #15724
- fix(cli): forward workflow switches into the CLI sandbox (#15740) by @qwen-code-dev-bot in #15743
- fix(core): size the qwen-latest-series invite aliases at 1M by @wenshao in #15758
- fix(cli): honor channel approval mode without webhooks by @qqqys in #15754
- fix(managed-agent): name a message-less row failure in the scan summary (#15700 item 4) by @yiliang114 in #15725
- feat(runtime): add resident workspace reclamation and reuse by @doudouOUC in #15729
- fix(serve): revalidate skill snapshots in the background by @callmeYe in #14890
- fix(core): size the qwen4 generation at 1M by @wenshao in #15762
- feat(mods): draw the band above the prompt in the OpenTUI terminal by @qqqys in #15699
- test(core): assert the prune dry run as a set, not in git's order by @yiliang114 in #15767
- fix(test): wait for focused shell tab input before asserting bytes by @yiliang114 in #15763
- test(managed-agent): give snapshot pool setup a realistic connection lease by @yiliang114 in #15749
- ci: run installed npm acceptance nightly instead of on PR updates by @yiliang114 in #15719
- feat(acp): project subagent identity through live and replay frames [13902 A/3] by @yiliang114 in #15657
- feat(web-shell): move archived conversations into Settings by @deggs7 in #15557
- feat(managed-agent): support opt-in same-context Java embedding by @yiliang114 in #15718
- fix(ci): Decouple managed runtime distribution from Maven Central by @doudouOUC in #15782
- fix(generated-ui): offer Generated UI only to clients that render MCP Apps by @qqqys in #15720
- fix(web-shell): keep live Generated UI cards attached by @qqqys in #15787
- test(managed-agent): gate G3 terminal recovery faults by @wenshao in #15756
- test(cli): pin pid liveness in the review cleanup unlink case by @yiliang114 in #15751
- fix(ci): reset desktop release runner Git metadata by @yiliang114 in #15761
- feat(verify-pr): attribute failures, close the publish guard, enumerate coverage by @wenshao in #15764
- test(managed-agent): share one zombie-aware liveness check across the Hosted gates by @wenshao in #15777
- feat(managed-agent): add an admin launcher for the maintenance entry points by @wenshao in #15772
- feat(generated-ui): check a view's initial calculation before display by @qqqys in #15790
New Contributors
- @sxl-lucky7 made their first contribution in #15452
- @EthDing made their first contribution in #8549
- @Aling33 made their first contribution in #14910
Full Changelog: desktop-v0.26.1...desktop-v0.26.3