qwen-code/packages/web-shell/client
Shaojin Wen d61b0ea475
perf(web-shell): paint the composer git chip before git status completes (#7680)
* perf(web-shell): paint the composer git chip before git status completes

New sessions gated the chip on a full `git status --porcelain` subprocess
behind GET /workspaces/:ws/git, so the branch chip appeared hundreds of
milliseconds (worst case seconds) after the composer was ready.

The daemon now keeps a per-workspace last-known summary with in-flight
dedup and a 2s background-refresh throttle: the default GET returns the
cached status (branch-only on a cold start) immediately and recomputes in
the background, publishing git_status_changed over SSE only on a delta,
while ?wait=1 keeps the previous blocking semantics. The composer fetches
both paths concurrently — the fresh GET also covers the no-session state,
which has no per-session SSE stream — so the branch paints in ~3ms and
the counters land when the computation finishes. The sidebar keeps
wait:true since it has no SSE fill-in path.

* fix(web-shell): add exhaustiveness guard and worktree git-status test (#7680)

* fix(web-shell): add exhaustiveness guard and worktree git-status test (#7680)

* fix(web-shell): add exhaustiveness guard and worktree git-status test (#7680)

* fix(cli): use writeStderrLineSafe in git-status refresh error path (#7680)

* fix(web-shell): add debug trail to fresh-path catch and test branch-watcher dispose guard (#7680)

* fix(cli): assert writeStderrLineSafe in git-status refresh failure test (#7680)

---------

Co-authored-by: Qwen Code Bot <qwen-code-bot@users.noreply.github.com>
Co-authored-by: qwen-code-ci-bot <qwen-code-ci-bot@users.noreply.github.com>
2026-07-25 07:05:52 +00:00
..
adapters fix(web-shell): sync background agent status (#7561) 2026-07-23 06:35:04 +00:00
assets/icons feat(web-shell): add MCP mentions and iconized @ references (#6279) 2026-07-04 02:13:42 +00:00
completions feat(web-shell): add skill management pages (#7018) 2026-07-17 06:42:46 +00:00
components perf(web-shell): paint the composer git chip before git status completes (#7680) 2026-07-25 07:05:52 +00:00
config fix(web-shell): persist the daemon bearer token per-tab so it survives refresh (#7374) 2026-07-21 08:26:19 +00:00
constants feat(web-shell): add read-only GitHub pull requests panel (#7683) 2026-07-25 02:44:50 +00:00
e2e feat(web-shell): add read-only GitHub pull requests panel (#7683) 2026-07-25 02:44:50 +00:00
extensions Add harness infrastructure for web-shell package (#6517) 2026-07-09 08:11:58 +00:00
hooks fix(web-shell): render a plain textarea composer on touch devices (#7587) 2026-07-23 13:14:25 +00:00
lib feat(web-shell): add shadcn UI foundation (#6760) 2026-07-12 13:51:52 +00:00
styles feat(web-shell): add selective shadow DOM isolation (#7551) 2026-07-23 02:54:12 +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): add read-only GitHub pull requests panel (#7683) 2026-07-25 02:44:50 +00:00
voice fix(web-shell): respect voice enabled setting (#7345) 2026-07-20 22:25:35 +00:00
App.module.css feat(web-shell): add git mode selector for new session creation (#7471) 2026-07-24 03:48:43 +00:00
App.test.tsx perf(web-shell): paint the composer git chip before git status completes (#7680) 2026-07-25 07:05:52 +00:00
App.tsx perf(web-shell): paint the composer git chip before git status completes (#7680) 2026-07-25 07:05:52 +00:00
build-artifact.test.ts feat(web-shell): add selective shadow DOM isolation (#7551) 2026-07-23 02:54:12 +00:00
customization.tsx feat(web-shell): add renderChatHeader slot for custom session header (#7553) 2026-07-23 02:59:21 +00:00
i18n.tsx feat(web-shell): add read-only GitHub pull requests panel (#7683) 2026-07-25 02:44:50 +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 renderChatHeader slot for custom session header (#7553) 2026-07-23 02:59:21 +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 git mode selector for new session creation (#7471) 2026-07-24 03:48:43 +00:00
midTurnDedup.test.ts feat(daemon): deliver web-shell mid-turn messages into the running turn (#5175) 2026-06-16 16:16:47 +08:00
midTurnDedup.ts feat(daemon): deliver web-shell mid-turn messages into the running turn (#5175) 2026-06-16 16:16:47 +08:00
portalRoot.ts feat(web-shell): add shadcn UI foundation (#6760) 2026-07-12 13:51:52 +00:00
shadowDom.test.ts fix(web-shell): isolate slash command plugin pages (#7581) 2026-07-23 08:39:10 +00:00
shadowDom.ts fix(web-shell): isolate slash command plugin pages (#7581) 2026-07-23 08:39:10 +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-env.d.ts feat(daemon): merge daemon-mode feature batch into main (#4490) 2026-06-12 00:34:49 +08:00