What's Changed
- docs(serve): record merged ACP boundary acceptance by @wenshao in #12024
- fix(ci): wait for the published export renderer before packaging the VSIX by @yiliang114 in #12036
- fix(web-shell): stop dropping the daemon credential on two navigation paths by @yiliang114 in #12011
- fix(acp): restore managed auto-memory extraction by @yiliang114 in #12018
- fix(cli): close twelve OpenTUI parity gaps found against ink by @chiga0 in #11806
- fix(core): count Stop-hook blocks across tool round trips by @qqqys in #12062
- feat(workflows): let agent() narrow a subagent to an explicit tool allowlist by @qqqys in #12051
- fix(core): avoid false interruption after completed slash commands by @ytahdn in #12052
- test(cli): refresh the loop-guard comments to the shipped mechanism by @yiliang114 in #12065
- fix(web-shell): restore context usage after page refresh by @ytahdn in #12070
- docs(hooks): merge the duplicated Browsing sections by @qqqys in #12071
- feat: select the OpenAI wire API per model by @tanzhenxin in #11538
- fix(desktop): wait out the daemon drain before removing the smoke workspace by @yiliang114 in #12049
- fix(core,cli): green the Windows lane's three remaining failures by @yiliang114 in #12063
- fix(ci): wait for the release on npm before dispatching the benchmark by @yiliang114 in #12086
- feat(core): identify hook invocations in progress events and announce the message bus by @qqqys in #12075
- feat(external-context): Support configurable Mem0 providers by @yiliang114 in #9952
- fix(extensions): show progress and clear the update flag after an update by @yiliang114 in #11886
- fix(acp): preserve user resource links in transcript replay by @XIQIXIQIXIQI in #12088
- feat(web-shell): support host settings item exclusions by @Lilian0122 in #11975
- feat(web-shell): fold oversized pastes into an attachment card by @ytahdn in #12084
- feat(browser-use): add Playwright-based Browser SDK by @tanzhenxin in #11241
- feat(workflows): add a name-only lock that restricts the Workflow tool to named workflows by @qqqys in #12078
- fix(core): load system-scope hooks under their own source by @qqqys in #12077
- fix(core): report real outcomes from the http, prompt and function hook runners by @qqqys in #12081
- fix(core): scrub a known path the filesystem re-spells by @yiliang114 in #12087
- fix(vscode): reject unsupported IPv6 remote webview URLs by @yiliang114 in #12092
- feat(web-shell): manage git remotes from the workspace branch picker by @wenshao in #11163
- fix(web-shell): alias the tools.workflowNameOnly settings row by @yiliang114 in #12100
- test(core): compare hook progress outcomes without the invocation id by @qqqys in #12104
- fix(web-shell): alias tools.workflowNameOnly in the settings panel (#12094) by @qwen-code-dev-bot in #12103
- docs(core): tell /goal-draft the objective limit propose_goal enforces by @qqqys in #12101
- feat(cli): write Goal state records into session exports by @qqqys in #12099
- feat(goal): judge terminal proposals from the transcript tail by @qqqys in #12105
- fix(cli): prefer per-session cached token count in /context by @kabishou11 in #12066
- refactor(goal): stop showing checkpoint health on every surface by @qqqys in #12114
- feat(web-shell): add PWA installability and Android development shell by @jabrailkhalil in #11722
- fix(core): keep MCP App html in recorded transcripts so replay can render by @yiliang114 in #12131
- fix(core): resolve DeepSeek's official API deepseek-flash name at V4 limits by @he-yufeng in #11909
- refactor(goal): delete the evidence checkpoint and catalog code by @qqqys in #12120
- refactor(cli): draw the ink Goal cards from the view OpenTUI already uses by @qqqys in #12110
- test(serve): bind guide operations to their protocol sections by @mohammedmessaoudene-cmd in #11808
- fix(core): keep the DeepSeek V4 generation suffix through model-name normalization by @he-yufeng in #12124
- fix(core): treat only space/tab/newline as word separators in isAsyncOperator by @yiliang114 in #11865
- fix(mcp): show MCP App resource load warnings by @doudouOUC in #11960
- fix(serve): read channel settings from user scope when workspace is home by @yiliang114 in #11083
- fix(core): purge a deleted session's prompts from the log history by @L4XB in #11769
- fix(workflows): refuse a resume that has no journal, and keep a run's sourceRef across restarts by @qqqys in #12097
- refactor(goal): cut what the Goal tools cost every model request by two fifths by @qqqys in #12123
- feat(core): define enabled and disabledReason in the hooks listing by @qqqys in #12139
- test(cli): step through Grok before MiniMax in the provider-order test by @harjothkhara in #10089
- feat(core): export hook event display metadata and pure timeout helpers by @qqqys in #12138
- docs(ci): explain why the review-pr sweep needs a whole-workspace quarantine by @CanReader in #10493
- docs(daemon): complete REST integration coverage by @yiliang114 in #12144
- docs(config): note baseUrl is the /v1 root for hosted OpenAI-compatible gateways (#10362) by @now-ing in #11155
- fix(web-shell): keep first-prompt session when its attach is superseded by @cactuser-Lu in #12149
- feat(browser-use): add Chrome Native Messaging relay by @tanzhenxin in #11242
- fix(goal): say which newer records recovery walked past by @qqqys in #12148
- fix(review): put PR worktree absolute path in dimension-agent briefs by @kabishou11 in #11926
- feat(workflows): record a checkpoint for every run and surface runs a restart interrupted by @qqqys in #12159
- fix(web-shell): allow sequential SDK requests during session creation by @shenyankm in #11913
- feat(web-shell): render the compression outcome from structured meta by @ytahdn in #12141
- test(sdk): validate content block stops per message by @yiliang114 in #12158
- feat(core): add container execution for subagents by @wenshao in #11711
- feat(web-shell): draw the commit history as a lane graph, across all branches, with search by @wenshao in #12152
- refactor(goal): retire recovery of Goals recorded before Goal state was journaled by @qqqys in #12155
- feat(live): admit the Web Shell as a browser Live Host by @qqqys in #12166
- fix(web-shell): keep the mermaid canvas fixed while zooming out by @ytahdn in #12177
- fix(core): stop session recovery from flagging unanswered notifications by @yiliang114 in #12007
- fix(cli): keep full-turn tool cancellation out of the error path by @yiliang114 in #11154
- feat(web-shell): add per-turn satisfied / not satisfied marks by @ytahdn in #12174
- feat(live): resolve the Live Voice model from a realtimeOnly modelProviders route by @qqqys in #12173
- refactor(goal)!: stop emitting the active_goal stream event by @qqqys in #12181
- feat(web-shell): publish the package with the cli release by @yiliang114 in #12178
- refactor(goal): keep one Goal card on the ACP wire and name the module for it by @qqqys in #12187
- perf(core): manifest-only refresh for the extension catalog route by @callmeYe in #12153
- feat(core): assemble the system prompt from the resident tool set by @yiliang114 in #12145
- feat(web-shell): hold a Live Voice call from the browser by @qqqys in #12189
- refactor(goal): read the unreadable-state running card through the core reader by @qqqys in #12194
- fix(release): temporarily pause web-shell publishing by @yiliang114 in #12202
- test(core): await full run exit before resuming in the authoring-hint test by @yiliang114 in #12196
New Contributors
- @Lilian0122 made their first contribution in #11975
- @jabrailkhalil made their first contribution in #11722
- @mohammedmessaoudene-cmd made their first contribution in #11808
- @L4XB made their first contribution in #11769
Full Changelog: v0.24.0...v0.24.1-preview.0