Public: anyone can read this; the crew can change it.
The accounts list is keyboard-first: j/k move between rows, enter opens one #10646
Check · Review · Land · Live done — Landed and live in production.
The accounts list rows now join j/k traversal, and enter opens the focused one. The change is one line: `nav: true` on the person rows in `src/web/pages/accounts.ts`. Markup for readers without JavaScript is unchanged. `test/keys-accounts.test.ts` and `bun scripts/gate.ts` pass. `bun scripts/design-lint.ts` reports nothing added outside the system.
shipped production is serving it deploy 2937aef
The accounts list rows now join j/k traversal, and enter opens the focused one. The change is one line: nav: true on the person rows in src/web/pages/accounts.ts. Markup for readers without JavaScript is unchanged. test/keys-accounts.test.ts and bun scripts/gate.ts pass. bun scripts/design-lint.ts reports nothing added outside the system.
bun x tsc --noEmit reports one error in test/crew-sandbox-escape.test.ts: @vscode/ripgrep can't be found in this sandbox. I didn't touch that file.
Why the check was red before: the earlier branch also edited scripts/unreached-allow.json and test/child-quota.test.ts, which have nothing to do with this issue. I merged current main and took main's version of both, so the diff against main is now only the accounts row and the new test. I haven't seen the forge's check result on this push.
Test: it renders /settings/accounts as an admin with three accounts and expects three data-nav rows in the list. It fails without the nav: true line.
Left out:
- No new component class or script.
docs/features/hotkey-hints.mdis unchanged.- I did not add the test to
scripts/gate.ts; the issue said to do so only if the gate needs it, andbun scripts/gate.tspasses without it.
Try it: open /settings/accounts as an admin, press j/k to move between rows, then enter.
🤖 Generated with Claude Code
One line, nav: true on the person row, which is the only row on the accounts list. The other row() calls in that file are on the per-account detail pages, so they are out of scope. No new class or script, and the no-JS markup is unchanged. The test fails without the line. scripts/gate.ts does not list keys-waves either, so leaving this test out of it matches the pattern. I did not exercise the preview as an admin because I have no session there. Next, in order: (1) assert in the test that the rows are links or have an open target, so enter is covered and not only the marker; (2) check on a 360px phone that the focus ring on a row does not clip the Suspend and Remove actions.
The accounts list rows now join j/k traversal, and enter opens the focused one. The change is one line:
nav: trueon the person rows insrc/web/pages/accounts.ts. Markup for readers without JavaScript is unchanged.test/keys-accounts.test.tsandbun scripts/gate.tspass.bun scripts/design-lint.tsreports nothing added outside the system.bun x tsc --noEmitreports one error intest/crew-sandbox-escape.test.ts:@vscode/ripgrepcan't be found in this sandbox. I didn't touch that file.Why the check was red before: the earlier branch also edited
scripts/unreached-allow.jsonandtest/child-quota.test.ts, which have nothing to do with this issue. I merged current main and took main's version of both, so the diff against main is now only the accounts row and the new test. I haven't seen the forge's check result on this push.Test: it renders
/settings/accountsas an admin with three accounts and expects threedata-navrows in the list. It fails without thenav: trueline.Left out:
docs/features/hotkey-hints.mdis unchanged.scripts/gate.ts; the issue said to do so only if the gate needs it, andbun scripts/gate.tspasses without it.Try it: open
/settings/accountsas an admin, press j/k to move between rows, then enter.🤖 Generated with Claude Code
Closes #10430