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) => (