What's Changed
- fix(channels): keep GitHub inbound recovery armed after a failed read by @wenshao in #16402
- test(core): harden renewal waits and writer seal coverage by @xxwtiancai in #14482
- feat(verify-pr): give the sandboxed round the PR's review threads by @wenshao in #16300
- perf(core): read each Managed message body once per process by @wenshao in #16337
- perf(managed-agent): index the activation lease lookup by @wenshao in #16336
- perf(managed-agent): narrow SSH settlement and worktree locking by @doudouOUC in #16386
- fix(core): keep a writer grant an in-flight renewal refreshed by @wenshao in #16287
- feat(autofix-pr): give helper refusals a code and a next step by @wenshao in #16238
- test(web-shell): consolidate sidebar suite fixtures on the shared sidebarHarness by @4ekuct25 in #16016
- docs(design): propose PR state transitions from the daemon PR refresh by @wenshao in #16246
- perf(core): load the MCP client's Google auth providers on demand by @wenshao in #16242
- perf(managed-agent): take native journal snapshots off the tenant guards by @doudouOUC in #16410
- fix(core): keep session list titles when a transcript is rebuilt by @wenshao in #16299
- feat(qqbot): deliver proactive loop messages as active group messages by @Eric-GoodBoy-Tech in #15635
- fix(core): accept images for Llama 3.2 Vision, Llama 4, LLaVA, Pixtral and Mistral Small 3.1 and 3.2 by @Shizoqua in #16311
- feat(cli): have an Ink TUI turn await its shared tool batch by @qqqys in #16385
- feat(serve): add atomic user Skill activation by @callmeYe in #16186
- feat(skills): add file-backed archive installation kernel (1/4) by @callmeYe in #16421
- feat(skills): expose native archive routes and receipts (2/4) by @callmeYe in #16422
- feat(sdk): support native Skill archives and receipt lookup (3/4) by @callmeYe in #16423
- perf(managed-agent): take tool execution control off the tenant guards by @doudouOUC in #16415
- chore(ci): shorten stale PR window to 30 + 14 days by @wenshao in #16435
- feat(web-shell): polish composer action menu presentation by @ytahdn in #16181
- fix(ci): apply the apt-mirror probe to the release docker lane too by @yiliang114 in #16278
- fix(core): make persisted session pagination safe for equal mtimes by @yiliang114 in #16024
- fix(serve): bound command snapshot replay memory by @doudouOUC in #16413
- ci: route the no-AK integration gate to ECS for every pull request by @yiliang114 in #16132
- feat(managed-agent): support durable structured user questions by @doudouOUC in #16433
- feat(cli): report interactive program status with OSC 7501 by @sorrycc in #16407
- feat(web-shell): upload Skill archives and reconcile results (4/4) by @callmeYe in #16424
- feat(channels): journal private bound-session delivery and scan health by @wenshao in #16237
- fix(web-shell): preserve wrapped drafts during arrow navigation by @jianyx1 in #14909
- fix(web-shell): batch session deletions at the route limit by @jianyx1 in #14637
- fix(core): accept images for Qwen VL models under their Ollama names by @Shizoqua in #16309
- feat(managed-agent): enable automation by default by @doudouOUC in #16448
- test(managed-agent): cover pending sibling approval holds by @jianyx1 in #15994
- docs(providers): document OCI Generative AI under OpenAI-compatible providers by @fede-kamel in #16345
- ci: build the PR tree once and shorten the required path by @sorrycc in #16450
- fix(subscription): isolate activation and restore sign-in recovery by @liuxuely0626 in #16453
- test(interactive): poll the foreground-shell frame instead of snapshotting it by @yiliang114 in #16455
- test(managed-agent): retarget the lifecycle IT and retry snapshot claim deadlocks by @yiliang114 in #16446
- fix(managed-agent): settle a title the dispatcher claimed first by @yiliang114 in #16447
- feat(hooks): add FileChanged notifications for local sessions by @samuelhsin in #13969
- fix(ci): move audio prebuilds to macOS 15 by @liuxuely0626 in #16464
- fix(web-shell): show readable Skill completion details by @callmeYe in #16451
- feat(ci): make flaky-patrol rerun and no_action decisions visible by @wenshao in #16459
- feat(cli): align managed agent basic tools with daemon by @doudouOUC in #16445
- test(serve): cover the workspace_runtime_stop boot-time conjunction by @yiliang114 in #16469
- test(web-shell): unit-test settings development route by @yiliang114 in #16456
- feat(web-shell): move session search beside the activity toggle by @wenshao in #16467
- fix(ci): refresh host assets on older PR checkouts by @yiliang114 in #16476
- perf(managed-agent): take runtime binding control off the tenant guards by @doudouOUC in #16480
- perf(managed-agent): take tool execution admission off tenant placement by @doudouOUC in #16478
- feat(ci): isolate triage agent credentials and run all triage on ECS by @wenshao in #16468
- fix(web-shell): place the session search right of the activity toggle by @wenshao in #16481
- fix(channels): deliver plain conversation comments to PR-bound sessions by @wenshao in #16416
- docs(design): correct the daemon PR state transitions design by @wenshao in #16487
- fix(managed-agent): lock storage rows through their alias key by @wenshao in #16376
- perf(managed-agent): cache parsed statements on the MySQL pools by default by @wenshao in #16414
- refactor(managed-agent): consolidate storage alias keys and use DigestUtils by @doudouOUC in #16485
- refactor(managed-agent): share JDBC statement helper and reuse JSON mappers by @doudouOUC in #16486
- fix(core): re-read a grown local journal prefix even when its timestamps did not move by @wenshao in #16483
- feat(managed-agent): support concurrent child questions by @doudouOUC in #16484
- feat(cli): have an Ink TUI turn send the round its tool batch continues with by @qqqys in #16428
- fix(core): match one sed character for . and bracket expressions by @2SinceJuly in #15701
- fix(ci): preserve Maven suite results across cache write-back failures by @qwen-code-dev-bot in #15274
- refactor(managed-agent): fold the last CSI statement helper copies by @doudouOUC in #16503
- fix(core): report a cancelled shell as interrupted, not completed by @2SinceJuly in #15836
- refactor(runtime): import inline fully qualified names in runtime modules by @doudouOUC in #16504
- fix(managed-agent): let a late snapshot publication wait for the claim instead of losing deadlocks by @wenshao in #16489
- fix(vscode): keep sibling model settings when writing provider config by @2SinceJuly in #15829
- fix(sdk): name daemon UI tool blocks from _meta.toolLifecycle frames by @yiliang114 in #16306
- fix(cli): surface workflow agent approvals in the interactive TUI (#16425) by @yiliang114 in #16432
- fix(cli): surface stacked-skill overflow in non-interactive and ACP runs by @yiliang114 in #16404
- fix(serve): treat a payload-invalid start reply as a definite refusal by @yiliang114 in #16460
- fix(cli): scrub advisor selector from startup errors by @yiliang114 in #16083
- fix(core): register promoted initial commits in unborn repos by @yiliang114 in #16081
- fix(ci): recreate git metadata before the publish-triage checkout by @wenshao in #16494
- feat(web-shell): surface task Q&A activity above the composer by @samuelhsin in #16037
- feat(channels): add GitHub repository event filter with allowlist and blocklist by @wenshao in #16493
- chore(types): compile cleanly under the TypeScript 7 native compiler by @sorrycc in #16463
- fix(core): keep follow-up suggestions in Thai, Lao, Khmer and Myanmar by @spped2000 in #16341
- fix(ci): probe the host egress proxy so mainland release hosts can build the sandbox image by @yiliang114 in #16281
- fix(core): keep the user's instruction last in the model request by @yiliang114 in #16274
- refactor(runtime-broker): extract binding provisioning from RuntimeBrokerService by @doudouOUC in #16501
- test(ci): harden TUI workspace reconciliation by @jianyx1 in #16033
- fix(managed-agent): mask digit-led passwords and refuse an empty Harness user info in the upgrade command by @wenshao in #16352
- fix(web-shell): close out managed-host review threads from #15928 by @yiliang114 in #16203
- refactor(runtime-broker): import inline fully qualified names by @doudouOUC in #16535
- refactor(adapters): import inline fully qualified names in adapters by @doudouOUC in #16533
- fix(channels): keep a delivered turn completed when the notice send fails by @yiliang114 in #16512
- refactor(contracts): import inline fully qualified names in contracts by @doudouOUC in #16534
- fix(channels): watch every open bound PR and keep polling during public turns by @wenshao in #16502
- feat(web-shell): offer a details side task from pending AskUser questions by @wenshao in #16458
- feat(serve): reclaim idle channel sessions by @wenshao in #16532
- refactor(channels): share the bound-session prompt contract via channel-base by @wenshao in #16523
- fix(web-shell): respect optional transport capabilities and local turn timing by @chiga0 in #16536
- ci(release): only file issues on failure and reconcile stale ones by @2SinceJuly in #15852
- perf(core): compare a grown local journal prefix in chunks by @wenshao in #16507
- fix(web-shell): fall back to English copy when the UI language has no relay dictionary by @4ekuct25 in #15474
- feat(core): view one pull request by URL for the PR-state watch by @wenshao in #16530
- fix(channels): keep the cursor write alive when the temp file mode cannot be tightened by @wenshao in #16257
- fix(ci): route the review/resolve permission gate to the ECS pool by @wenshao in #16482
- fix(cli): restore OpenTUI dialog editing controls by @chiga0 in #15908
- feat(ci): add disposable external PR runners by @yiliang114 in #16513
- fix(managed-agent): restore two runtime-broker classes to their size ratchet by @wenshao in #16542
- fix(serve): serialize overlapping cleanup retries by @jabrailkhalil in #15482
- fix(memory): match reader advice to the binding index budget by @jabrailkhalil in #15368
- fix(release): derive the next patch when the preview baseline lags latest by @qwen-code-dev-bot in #16470
- fix(web-shell): include channel sessions in release dialog by @wenshao in #16537
- feat(web-shell): show tool arguments and result in expanded cards by @BigDaddy1337 in #15435
- fix(core): surface Anthropic refusal details by @yiliang114 in #16079
New Contributors
- @fede-kamel made their first contribution in #16345
Full Changelog: desktop-v0.26.8...desktop-v0.27.0