From 2ea2c877c0c4ff5bea90ff6a32c283e2c974e74e Mon Sep 17 00:00:00 2001 From: Randall Stillwell Date: Fri, 29 May 2026 22:56:59 -0500 Subject: [PATCH] Remove prod Quick Login and finish scanner a11y polish. Drop alice/bob password prefill from the login page, add a regression test, and improve bulk-toolbar and disambiguation accessible names. Co-authored-by: Cursor --- .convoys/purge-quick-login-from-loginpage.md | 26 +++++++++++++ .convoys/scanner-redesign-a11y-fixes.md | 20 +++++----- components/CameraScanner.js | 3 +- components/ScannedCardItem.js | 8 +++- pages/login.js | 39 -------------------- pages/scanner.js | 19 ++++++---- test/pages/login.test.js | 29 +++++++++++++++ 7 files changed, 85 insertions(+), 59 deletions(-) create mode 100644 .convoys/purge-quick-login-from-loginpage.md create mode 100644 test/pages/login.test.js diff --git a/.convoys/purge-quick-login-from-loginpage.md b/.convoys/purge-quick-login-from-loginpage.md new file mode 100644 index 0000000..98a6c8a --- /dev/null +++ b/.convoys/purge-quick-login-from-loginpage.md @@ -0,0 +1,26 @@ +--- +name: purge-quick-login-from-loginpage +classification: fix +success_metric: | + pages/login.js no longer ships alice123/bob123 in client HTML; smoke sign-in + CTA unchanged. +status: closed +created: 2026-05-26 +closed: 2026-05-29 +pr: pending +--- + +# Convoy: purge-quick-login-from-loginpage + +Remove production Quick Login buttons that exposed test-user passwords in +view-source HTML. + +## Scope + +- Delete Quick Login section + `handleQuickLogin` from `pages/login.js` +- Regression test: no quick-login copy or password literals in rendered output + +## Out of scope + +- Rotating alice/bob DB hashes (operators rotate manually if needed) +- `TESTING_GUIDE.md` dev account table (local QA reference only) diff --git a/.convoys/scanner-redesign-a11y-fixes.md b/.convoys/scanner-redesign-a11y-fixes.md index 4d86d24..e898a0b 100644 --- a/.convoys/scanner-redesign-a11y-fixes.md +++ b/.convoys/scanner-redesign-a11y-fixes.md @@ -7,24 +7,22 @@ success_metric: | uses list semantics and live count updates. depends_on: - redesign-scanner-flow -status: open +status: closed created: 2026-05-27 +closed: 2026-05-29 +pr: pending --- # Convoy: scanner-redesign-a11y-fixes Closes P1 follow-up from `audit-redesign-scanner-flow-44`. -## Scope - -- `components/ScannedCardItem.js` — ownership `role="status"`, labeled selects/buttons -- `components/CameraScanner.js` — camera control labels, disambiguation focus trap, video label, heading fix -- `pages/scanner.js` — create-collection modal a11y, bulk toolbar labels, queue list semantics, live count -- `lib/use-focus-trap.js` (new) — shared modal focus trap +**Note:** Core a11y shipped in PR #45; this follow-up closes remaining polish +(bulk toolbar semantics, disambiguation button labels, condition select ids). ## Acceptance criteria -1. Ownership badge announced by screen readers. -2. All icon-only and placeholder ` onUpdateMetadata({ condition: e.target.value })} className="px-2 py-1 rounded border text-sm" @@ -171,6 +176,7 @@ export default function ScannedCardItem({ borderColor: 'var(--border)', color: 'var(--text-primary)', }} + aria-label={`Condition for ${card.name}`} > {CONDITION_OPTIONS.map((option) => (