.qwen/e2e-tests/2026-08-31-web-shell-workspaces-panel.md
Issue: https://github.com/QwenLM/qwen-code/issues/10399
Design: docs/design/web-shell/web-shell-workspace-overview.md
⋮
menu, but there is no single place that lists every registered workspace
with its health — the Projects section is the only aggregate view.npm run build from the repository root.node dist/cli.js serve --workspace <primary> --workspace <secondary>
on loopback, with the secondary a git repository carrying local changes
and one broken MCP server configured.workspacesOverview footer item; it is not part of
the default footer. A sidebar locked to one workspace shows no entry.One row per registered workspace (daemon-owned kind: 'live' runtimes are
not listed):
primary / untrusted
badges; full path with tooltip.n running / n need attention badges; — for untrusted rows. Counts refresh on a 30 s tick.connected/configured plus n failed; — until the runtime is
initialized (never 0/0 for an idle placeholder).n changed when the working tree is dirty
(60 s cadence, same as the sidebar chip).— when the
workspace has no sessions.workspace_runtime_removal. Uses the same dialog and
busy/force flow as the sidebar row (409 workspace_busy lists the
activity and arms Force remove; removing the workspace the active
session lives in stays blocked).dynamic_workspace_registration).packages/web-shell/client/components/workspaces/useWorkspaceRemoval.test.tsx
(shared removal flow: busy→force, mismatch, blocked force, error path)packages/web-shell/client/components/workspaces/WorkspacesOverviewPanel.test.tsx
(rows, badges, counts, unknown-not-zero, untrusted gating, actions)packages/web-shell/client/components/sidebar/WebShellSidebar.workspace-removal.test.tsx
(sidebar flow on the shared hook + the Manage workspaces entry)packages/web-shell/client/App.test.tsx (panel opens from the sidebar)packages/web-shell/client/e2e/web-shell.workspaces-panel.spec.ts