qwen-code/packages/web-shell/client
BaboBen edb420393e
Some checks are pending
E2E Tests / E2E Test (Linux) - sandbox:docker - shard 1/3 (push) Waiting to run
E2E Tests / E2E Test (Linux) - sandbox:docker - shard 2/3 (push) Waiting to run
E2E Tests / E2E Test (Linux) - sandbox:docker - shard 3/3 (push) Waiting to run
E2E Tests / E2E Test (Linux) - sandbox:none - shard 1/3 (push) Waiting to run
E2E Tests / E2E Test (Linux) - sandbox:none - shard 2/3 (push) Waiting to run
E2E Tests / E2E Test (Linux) - sandbox:none - shard 3/3 (push) Waiting to run
E2E Tests / E2E Test - macOS - shard 1/2 (push) Waiting to run
E2E Tests / E2E Test - macOS - shard 2/2 (push) Waiting to run
E2E Tests / channel-plugin E2E (nightly) (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(channels): manage DingTalk interactive card config (#8517)
* fix(channels): manage DingTalk interactive card config

* test(cli): cover nested channel object validation

* fix(channels): harden nested management metadata

* fix(channels): isolate invalid management descriptors

* fix(channels): isolate invalid management metadata from channel runtime

* fix(channels): reject reserved unknown keys in management config upserts

* fix(channels): harden channel management validation and editor checks

Reject management descriptors that lack a fields array at registration so
broken plugins are stripped to unmanageable instead of being advertised as
manageable and failing every upsert with an unmapped TypeError. Reserve the
top-level "type" field key and require enum fields to declare at least one
option, both of which the settings store could never accept. Treat
whitespace-only number drafts as empty in the channel editor, consistent
with the module's other emptiness checks.

Also give the SDK descriptor mirror test a runtime wire-shape walk over the
built-in catalog, add the parser's timeout rejection boundary, and restore
the exact built-in catalog membership assertion.

* fix(channels): validate management field shapes and editor bounds (#8517)

* fix(channels): align management validation layers and pin gate behavior (#8517)

Read envResolvable by truthiness in the settings store so it matches the
registration gate and the editor, instead of rejecting the advertised
environment references of untyped plugins. Fail closed at registration on
non-finite exclusiveMinimum values, empty object property lists, and async
validateConfig functions, all of which would otherwise advertise a field
or save path that can never succeed. Strip invalid management metadata
over a prototype-preserving copy so class-instance plugins keep their
createChannel implementation.

Move the unchanged-value preservation exemption ahead of the object shape
rejection so a stored non-record value (for example a hand-written null)
no longer locks every unrelated management edit of that channel. Clamp
DingTalk question-card timeouts at the maximum setTimeout delay, since
Node treats larger delays as one millisecond and would expire cards
instantly.

Pin the previously untested load-bearing behaviors: per-key previous
threading in the recursive validation, the preservation exemption's
precedence over nested required enforcement, nested "type" properties,
depth-2 nesting rules, and the nested-only constraints of the daemon
descriptor wire contract.

* fix(channels): close reserved-key preservation gaps and pin gate behavior (#8517)

* test(cli): tolerate IPv6-less hosts in serve ::1 bind tests (#8517)

The self-hosted CI containers can have no IPv6 loopback, where the two
runQwenServe tests that bind ::1 fail with EADDRNOTAVAIL. Probe the
interfaces once and skip only the IPv6-dependent binds there; every
assertion still runs on IPv6-capable hosts.

* fix(channels): align descriptor type contracts with runtime validation (#8517)

The registry already rejects object fields without a non-empty
properties array and enums without unique options, but the descriptor
types still admitted both, so TS-authored plugins only learned about
it when registration stripped their management surface. Make
`properties` required, give enums a dedicated descriptor member with
required `options`, and drop the never-honored `envResolvable` flag
from number descriptors, in both channel-base and the SDK mirror, and
export the descriptor sub-types through the webui barrels. Also map a
throwing `validateConfig` to the usual invalid-config error and pin
the store contracts that had no distinguishing tests: omitting a
parent object drops the stored object without checking its nested
required, writes replace nested values wholesale, unchanged stored
scalars are still re-validated, and valid plugins register by
original reference.

* fix(channels): defuse validateConfig rejection leak and close descriptor gate gaps (#8517)

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

---------

Co-authored-by: qwen-code-dev-bot <qwen-code-dev-bot@users.noreply.github.com>
Co-authored-by: qwen-code-dev-bot <qwen-code-dev@service.alibaba.com>
Co-authored-by: Shaojin Wen <shaojin.wensj@alibaba-inc.com>
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-08-07 15:47:20 +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 fix(channels): manage DingTalk interactive card config (#8517) 2026-08-07 15:47:20 +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 feat(channels): support group pairing (#8440) 2026-08-07 09:20:18 +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
live feat(web-shell): add native Live Voice (#7859) 2026-08-05 08:33:22 +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): run read-only info commands immediately mid-turn (#8496) 2026-08-05 14:05:08 +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 fix(web-shell): discard stale automatic recaps (#8573) 2026-08-07 01:32:58 +00:00
App.tsx fix(web-shell): discard stale automatic recaps (#8573) 2026-08-07 01:32:58 +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 fix(channels): manage DingTalk interactive card config (#8517) 2026-08-07 15:47:20 +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