2.5 KiB
2.5 KiB
UX-003 Kanban theme-state verification
Updated: 2026-08-10
Confirmed execution path
- The board previously used
theme.palette.grey[100]and[300]. Under the CSS-variable theme these resolved to the static light palette, producing white destination columns in dark mode. - The initial mocked dark-browser regression failed with the computed column background
rgb(245, 242, 250). Evidence:docs/audits/evidence/ux-003-kanban-dark-before.png. - Native drag updated only after a successful owner-scoped status API call, but had no visible target state, keyboard pickup/drop model or failure feedback.
Implemented behavior
- Columns, counters, status tones and pills now use live shared theme variables with fallback only for isolated unit-test themes.
- Empty, filled, valid, active and invalid columns have explicit state; invalid custom-status columns cannot accept a drop.
- Cards expose selected/picked-up state, visible hover/focus, a named status button, Space pickup/cancel, Escape cancel and Enter/Space drop on focused valid columns.
- A polite live region announces pickup, cancel, success, invalid target and failure. Failed API moves retain the card and show a visible error.
- The board owns horizontal mobile scrolling; the application main flex child can shrink. The live region uses literal one-pixel dimensions and no longer adds eight pixels of document overflow.
- The invalid kebab-case
-webkit-overflow-scrollingstyle was corrected to React'sWebkitOverflowScrollingproperty. - Normal E2E runs no longer rewrite committed audit screenshots; evidence refresh requires
UPDATE_AUDIT_EVIDENCE=1.
Verification
- Focused component tests: 7/7 for grouped/empty/filled, pointer target, invalid target, keyboard move, load/error/retry, move failure and named menu behavior.
- Full frontend: 50 suites, 204/204 tests.
- Production frontend build and TypeScript: pass.
- Complete Playwright: 6/6. Kanban browser journey covers 1440 dark, 768 light, 375 mobile, visible hover, native pointer drag, keyboard move, invalid target and page-level containment with mocked data/API.
- After evidence:
docs/audits/evidence/ux-003-kanban-dark-after.png. - Commits:
fb6f17e,4e5ce0c.
Remaining gates
- Production board smoke is not authorized/available.
- Browser data and status updates were synthetic/mocked. Authorization remains covered by existing API tests, not this UI package.
- No native screen-reader/device laboratory was available; semantics and live announcements were inspected/tested in Chromium and component DOM.