base red: webviews bun run check is green (floating promises, #30357 a11y, tokens, type scale, browser lanes, format)

Merged
LA
4d ago
+691-191

bun run check in webviews/ fails at the feat-cmux-next tip on every webviews push, so scripts/web-lint.sh needs CMUX_WEB_LINT_SKIP_REASON, and the CI web lint is red for everyone. This PR makes it exit 0 at this head. No lint rule is disabled, and no baseline grows.

Red pieceCauseCulpritFix
vp lint, and vp check --no-fmt --no-lint ("0 errors and 4 warnings", exit 1)config/vite-plus/check.ts sets denyWarnings: true, so the 4 no-floating-promises warnings in App.tsx fail both commands.#30220 made requestFolder and chooseProject return Promise<void>.void at the 4 callers that start a pick and do not wait for it. pickFolder already catches the host's refusal, so the promise has no host error to report.
The same two commands, after the first fix4 jsx-a11y warnings (autoFocus, role="listbox" on a list of buttons, role="group" on a div), also red under denyWarnings.#30357The Popover focuses the search field through initialFocus={ref}, the list is a plain <ul>, and the repository choices are a named <fieldset> (its border, padding and min width removed in CSS).
check:design-tokensNew spacing literals off the 4/8 px scale#30357, #30386Spacing moves to the nearest scale step (1 or 2 px). The two status dots use aspect-ratio: 1 and not calc(space + 2px), so they stay 14 px and 6 px circles.
check:type-scaleNew raw font-size: 11px / 12px#30357var(--text-caption) / var(--text-detail). These are the same sizes at interface scale 1.
check:browser-lanesA requestAnimationFrame loop in a browser test#30297The probe resize moves into window.cmuxAfterPaint's drive, which runs in the same frame callbacks.
vp fmt --check17 files were not formatted#30357, #30386, #30297, #30205vp fmt. The 3 test files that #30711 also formats are byte-identical to that PR.
acpmux-protocol:check (appeared at feat 6c53035b782)methods.ts stale: the spec has 2 new Cloud turn methods#30775Generator output only: bun scripts/acpmux-protocol-codegen.ts (+4 lines in protocol/generated/methods.ts).

Red and green

All commands ran from webviews/.

  • At 7c549a483d05 and 265c68a569a, bun run check exited 1. The red pieces were check:design-tokens, check:type-scale, vp fmt --check, vp lint and vp check --no-fmt --no-lint, then also check:browser-lanes. bunx --bun vp lint showed the 4 no-floating-promises warnings at App.tsx lines 11518, 11678, 12128 and 12555.
  • At feat 87b4c905072, bun run acpmux-protocol:check exited 1: "acpmux protocol generated files are stale in src/agent-session/acpmux/protocol/generated: methods.ts". At head 85be59136f8 (merged with 87b4c905072), bun run check exits 0 and scripts/web-lint.sh --base origin/feat-cmux-next --head HEAD passes; the push passed the pre-push hook with no skip reason.
  • At this head, bun run check exits 0, and scripts/web-lint.sh passes.

Observed / Not run

  • Observed:
    • bun test for RepoRecoveryCard (3 pass), CloudStartView (8 pass), backgroundTurns (4 pass), subsessions (9 pass), subagentOrder (4 pass) and summary-started-chats-scale (2 pass).
    • CMUX_BROWSER_TESTS=1 bun test ./test/agent-pane-composer-rest-gap.test.ts: 3 pass.
    • prepush-gate.py: no new violations.
  • Not run:
    • No gallery before/after: scripts/gallery-compare.sh could not reach cmux-lawrence over ssh from this VM. The visual changes are 1–2 px spacing changes in the Cloud repository picker, the repository recovery card and the Cloud startup checklist. The gallery advisory run on this PR shows them.
    • No app build.

Changelog

none


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

bun run check in webviews/ was red on every push at the feat-cmux-next tip, blocking web lint for everyone. This PR makes it exit 0 without disabling any lint rule or growing a baseline.

Fixes

  • Four folder-pick promises in App.tsx that start a pick without waiting for it are now explicitly voided, silencing no-floating-promises.
  • The repository picker's search field focuses through the Popover's initialFocus ref instead of autoFocus, and the repo list is a plain <ul>.
  • The recovery card's repository choices are a <fieldset>, with its border, padding, and min width removed in CSS.
  • Spacing moved to the nearest 4/8 px scale step, and raw font sizes replaced with var(--text-caption) / var(--text-detail) (the same sizes at interface scale 1).
  • The rest-gap browser test resizes its probe in window.cmuxAfterPaint's drive instead of a requestAnimationFrame loop.
  • The generated methods.ts now lists #30775's two Cloud turn methods, so the protocol catalog check passes.
  • 17 files reformatted with vp fmt; the three test files are byte-identical to another PR's formatting.