qwen-code/docs/design/task-notification-transcript-placement.md
ytahdn 8a44b1b9f7
Some checks are pending
E2E Tests / E2E Test (Linux) - sandbox:docker (push) Waiting to run
E2E Tests / E2E Test (Linux) - sandbox:none (push) Waiting to run
E2E Tests / E2E Test - macOS (push) Waiting to run
E2E Tests / cron-interactive E2E (nightly) (push) Waiting to run
E2E Tests / web-shell Browser Regression (push) Waiting to run
SDK Java / ubuntu-latest / Java 11 (push) Waiting to run
SDK Java / ubuntu-latest / Java 17 (push) Waiting to run
SDK Java / macos-latest / Java 21 (push) Waiting to run
SDK Java / ubuntu-latest / Java 21 (push) Waiting to run
SDK Java / windows-latest / Java 21 (push) Waiting to run
SDK Java / Real daemon E2E / Java 11 (push) Waiting to run
fix(web-shell): render task notifications as system messages (#7822)
* fix(web-shell): render background notifications as system messages

* fix(web-shell): use basic table rendering by default

---------

Co-authored-by: 钉萁 <dingqi.jww@alibaba-inc.com>
2026-07-27 09:15:18 +00:00

970 B

Task notification transcript placement

Background task completions are model inputs, not user-authored prompts. The live daemon path already identifies them with _meta.source = "background_notification", but history replay previously projected persisted notification records as unmarked user messages.

History replay will preserve the persisted model-input role while adding the same source marker used by live notifications. The Web Shell transcript adapter will map that source, from either a user or assistant chunk, to an informational system message. New records also persist the existing structured task status so live and replayed messages use the same completed, failed, or cancelled label; older records fall back to a generic notification label. The notification content is rendered unchanged beside a semantic status icon. This keeps both live and replayed notifications visible on the left without changing shared replay semantics for other consumers.