qwen-code/packages/web-shell/client
易良 52e0d1b364
feat(web-shell): bind plan approval to its Todo revision (#8393)
* feat(web-shell): gate session workflow behind experimental setting

* feat(web-shell): bind plan approval to todo revision

* fix(cli): clear stale workflow revision on plan entry

* test(web-shell): pin revised workflow snapshot

* fix(cli): clear stale plan revisions on restore

* fix(cli): keep replayed history from rebinding plan revisions

History replay re-sends stale plan updates through Session.sendUpdate,
re-stamping activeTodoPlanRevision from finished plan cycles. Clear the
revision after every replay path (cold replayHistory and live non-bulk
loadSession) so a replayed snapshot can never bind a later exit_plan_mode
approval; reloaded sessions fall back to text-only approval until the next
live todo_write re-establishes the binding. Also drop the bulk-load restore
that could never be read before a plan-mode transition cleared it, and pin
the workflow gates and mode-entry clears with negative tests.

* test(web-shell): pin older plan revision in ChatPane approval test (#8393)

* test(cli): pin unbindable plan updates in approval revision test (#8393)

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* fix(cli): clear Todo plan revision on history restore (#8393)

restoreHistory was the one history-resetting path that kept
activeTodoPlanRevision, so a restored snapshot could let a stale
revision bind the next exit_plan_mode approval. Clear it like the
sibling reset paths, pin the behavior with a test, and pin the
live-load clear ordering after the replayed updates.

* fix(cli): restore Todo stop guard clear on plan re-select (#8393)

The previous-mode guard added for the revision binding also skipped the
Todo Stop Guard trust clear on a redundant plan re-select; scope the
guard to the revision reset so every transition into plan clears the
stop guard as before. The replay-time revision clears now run in
finally blocks so a transport failure part-way through a replay cannot
leave a replayed binding on the live session, and the web-shell
exit-plan approval rule is unified in one predicate. Revision tests
assert through the observable qwenTodoApproval approval metadata
instead of the private field.

---------

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Co-authored-by: qwen-code-dev-bot <qwen-code-dev@service.alibaba.com>
2026-08-04 14:25:50 +00:00
..
adapters feat(web-shell): bind plan approval to its Todo revision (#8393) 2026-08-04 14:25:50 +00:00
assets/icons feat(web-shell): support mutable default mid-turn messages (#8229) 2026-08-01 10:41:29 +00:00
completions fix(web-shell): reduce composer input latency (#8015) 2026-07-29 08:06:53 +00:00
components feat(web-shell): bind plan approval to its Todo revision (#8393) 2026-08-04 14:25:50 +00:00
config fix(web-shell): preserve token and base path in session URLs (#7926) 2026-07-29 06:12:37 +00:00
constants feat(web-shell): add contextual task panels (#7929) 2026-07-30 13:45:30 +00:00
e2e fix(web-shell): add explicit ::selection for message content in Firefox (#8417) 2026-08-04 12:33:51 +00:00
extensions fix(web-shell): reduce composer input latency (#8015) 2026-07-29 08:06:53 +00:00
hooks fix(web-shell): keep pending background agents active (#8413) 2026-08-04 06:46:14 +00:00
lib feat(web-shell): add shadcn UI foundation (#6760) 2026-07-12 13:51:52 +00:00
styles fix(web-shell): add explicit ::selection for message content in Firefox (#8417) 2026-08-04 12:33:51 +00:00
test feat(cli): improve subagent observability — untruncated live commands, transcript path, approval context (#6580) 2026-07-11 11:21:23 +00:00
utils feat(web-shell): bind plan approval to its Todo revision (#8393) 2026-08-04 14:25:50 +00:00
voice feat(web-shell): honor voice hold mode (#7839) 2026-07-28 13:32:02 +00:00
App.module.css feat(web-shell): support mutable default mid-turn messages (#8229) 2026-08-01 10:41:29 +00:00
App.test.tsx feat(web-shell): bind plan approval to its Todo revision (#8393) 2026-08-04 14:25:50 +00:00
App.tsx feat(web-shell): bind plan approval to its Todo revision (#8393) 2026-08-04 14:25:50 +00:00
build-artifact.test.ts fix(web-shell): add explicit ::selection for message content in Firefox (#8417) 2026-08-04 12:33:51 +00:00
customization.tsx feat(web-shell): add contextual task panels (#7929) 2026-07-30 13:45:30 +00:00
i18n.tsx feat(review): Add structured Web Shell review results (#8402) 2026-08-03 16:08:13 +00:00
index-html.test.ts fix(web-shell): prevent React measure detail OOM (#7596) 2026-07-23 11:35:42 +00:00
index.html fix(web-shell): prevent React measure detail OOM (#7596) 2026-07-23 11:35:42 +00:00
index.test.tsx fix(web-shell): initialize workspace selector from ID (#7518) 2026-07-23 11:29:40 +00:00
index.tsx feat(web-shell): add contextual task panels (#7929) 2026-07-30 13:45:30 +00:00
interactionBlockContext.ts feat(web-shell): add cell value dialog on double-click in markdown tables (#6530) 2026-07-11 15:21:34 +00:00
main.tsx feat(web-shell): add contextual task panels (#7929) 2026-07-30 13:45:30 +00:00
midTurnDedup.test.ts feat(web-shell): support mutable default mid-turn messages (#8229) 2026-08-01 10:41:29 +00:00
midTurnDedup.ts feat(web-shell): support mutable default mid-turn messages (#8229) 2026-08-01 10:41:29 +00:00
monitorDetailsContext.tsx feat(web-shell): add monitor task details (#7817) 2026-07-27 12:30:17 +00:00
portalRoot.ts feat(web-shell): add shadcn UI foundation (#6760) 2026-07-12 13:51:52 +00:00
shadowDom.test.ts feat(web-shell): add Channel management page (#7793) 2026-07-27 17:58:11 +00:00
shadowDom.ts feat(web-shell): add Channel management page (#7793) 2026-07-27 17:58:11 +00:00
subagentDetailsContext.tsx feat(web-shell): show subagent sessions in detail panel (#7380) 2026-07-22 02:31:08 +00:00
themeContext.ts feat(web-shell): daemon web-shell improvements — token usage, settings, retry, streaming metrics, hidden commands (#5066) 2026-06-13 02:58:08 +00:00
transcriptRenderMode.ts feat(webshell): replay ChatRecord history in readonly WebShell (#6999) 2026-07-19 00:09:44 +00:00
vite-config.test.ts feat(web-shell): Scope voice to composer workspace (#7754) 2026-07-27 15:47:45 +00:00
vite-env.d.ts feat(daemon): merge daemon-mode feature batch into main (#4490) 2026-06-12 00:34:49 +08:00