qwen-code/packages/web-shell/client/components/artifacts
易良 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
..
__fixtures__ feat(review): Add structured Web Shell review results (#8402) 2026-08-03 16:08:13 +00:00
ArtifactPanel.module.css feat(web-shell): add artifact downloads (#8234) 2026-08-01 00:40:57 +00:00
ArtifactPanel.test.tsx feat(review): Add structured Web Shell review results (#8402) 2026-08-03 16:08:13 +00:00
ArtifactPanel.tsx feat(review): Add structured Web Shell review results (#8402) 2026-08-03 16:08:13 +00:00
artifactUtils.test.ts feat(web-shell): add artifact downloads (#8234) 2026-08-01 00:40:57 +00:00
artifactUtils.ts feat(web-shell): add artifact downloads (#8234) 2026-08-01 00:40:57 +00:00
CodeReviewArtifactDetail.module.css feat(review): Add structured Web Shell review results (#8402) 2026-08-03 16:08:13 +00:00
CodeReviewArtifactDetail.test.tsx feat(review): Add structured Web Shell review results (#8402) 2026-08-03 16:08:13 +00:00
CodeReviewArtifactDetail.tsx feat(review): Add structured Web Shell review results (#8402) 2026-08-03 16:08:13 +00:00
codeReviewContract.test.ts feat(review): Add structured Web Shell review results (#8402) 2026-08-03 16:08:13 +00:00
LineStats.tsx feat(web-shell): add artifact right panel (#6591) 2026-07-11 00:13:49 +00:00
SideTaskPanel.test.tsx feat(web-shell): bind plan approval to its Todo revision (#8393) 2026-08-04 14:25:50 +00:00
SideTaskPanel.tsx feat(web-shell): gate session workflow behind experimental setting (#8391) 2026-08-03 03:14:45 +00:00
SubagentDetail.integration.test.tsx feat(web-shell): add contextual task panels (#7929) 2026-07-30 13:45:30 +00:00
SubagentDetail.module.css feat(web-shell): show subagent sessions in detail panel (#7380) 2026-07-22 02:31:08 +00:00
SubagentDetail.test.tsx feat(web-shell): show subagent sessions in detail panel (#7380) 2026-07-22 02:31:08 +00:00
SubagentDetail.tsx feat(web-shell): add artifact downloads (#8234) 2026-08-01 00:40:57 +00:00
TurnOutputs.dom.test.tsx feat(web-shell): add artifact downloads (#8234) 2026-08-01 00:40:57 +00:00
TurnOutputs.module.css feat(web-shell): add artifact downloads (#8234) 2026-08-01 00:40:57 +00:00
TurnOutputs.test.ts feat(web-shell): add artifact downloads (#8234) 2026-08-01 00:40:57 +00:00
TurnOutputs.tsx feat(web-shell): add artifact downloads (#8234) 2026-08-01 00:40:57 +00:00
turnOutputSelectors.test.ts feat(web-shell): add artifact right panel (#6591) 2026-07-11 00:13:49 +00:00
turnOutputSelectors.ts feat(web-shell): add artifact right panel (#6591) 2026-07-11 00:13:49 +00:00