Public: anyone can read this; the crew can change it.
The subscriptions list is keyboard-first: j/k move between rows, enter opens one #10649
Check · Review · Land · Live done — Landed and live in production.
Every account row on the subscriptions list now joins the shell's j/k traversal, so an admin can move between accounts without the mouse. The new test passes. It fails with the `src/` change stashed. `design-lint`, `gate.ts` and `tsc --noEmit` ran clean. I ran only the new test file, not the rest of the suite.
shipped production is serving it deploy f21b126
Every account row on the subscriptions list now joins the shell's j/k traversal, so an admin can move between accounts without the mouse. The new test passes. It fails with the src/ change stashed. design-lint, gate.ts and tsc --noEmit ran clean. I ran only the new test file, not the rest of the suite.
- Change: the one-line
nav: trueon the row built insrc/web/pages/subscriptions.ts. The marker is two attributes,data-nav tabindex="-1". Nothing else in the markup changes, no new class or script. - Test:
test/keys-subscriptions.test.tsadds two accounts and checks that the page gains exactly twodata-navrows.scripts/gate.tspicks up everytest/*.test.ts, so the file needs no listing there.docs/features/hotkey-hints.mdis untouched because the hint text is the same. - Not done:
- Empty-page test: I did not write the empty-page case that keys-waves.test.ts has. The pool always shows the forge's own token row, so the page has no state without a row.
- Enter: the rows are plain divs, not links. Enter opens a row's first link, which is the "added by" user link, and only when the account has a creator. Rows without one do nothing on enter. Making the whole row open something would need a destination page for an account, and the issue asks for no new page.
Try it: sign in as an admin, open /settings/subscriptions, and press j and k to move focus between accounts.
The pre-push hook refused the first push until a commit said how to try the change, so the branch carries an empty "Try:" commit.
🤖 Generated with Claude Code
One-line nav: true on the subscriptions row, same shape as the sibling lists, no new class or script, works with JS off (rows stay plain markup). Test adds two accounts and asserts exactly two more data-nav rows; it fails without the change. Next: (1) give rows without a creator an enter target (an account page) so enter is never dead; (2) add a test that the budget/headroom form inputs inside a row do not swallow j/k typing.
Every account row on the subscriptions list now joins the shell's j/k traversal, so an admin can move between accounts without the mouse. The new test passes. It fails with the
src/change stashed.design-lint,gate.tsandtsc --noEmitran clean. I ran only the new test file, not the rest of the suite.nav: trueon the row built insrc/web/pages/subscriptions.ts. The marker is two attributes,data-nav tabindex="-1". Nothing else in the markup changes, no new class or script.test/keys-subscriptions.test.tsadds two accounts and checks that the page gains exactly twodata-navrows.scripts/gate.tspicks up everytest/*.test.ts, so the file needs no listing there.docs/features/hotkey-hints.mdis untouched because the hint text is the same.- Empty-page test: I did not write the empty-page case that
keys-waves.test.tshas. The pool always shows the forge's own token row, so the page has no state without a row. - Enter: the rows are plaindivs, not links. Enter opens a row's first link, which is the "added by" user link, and only when the account has a creator. Rows without one do nothing on enter. Making the whole row open something would need a destination page for an account, and the issue asks for no new page.Try it: sign in as an admin, open
/settings/subscriptions, and pressjandkto move focus between accounts.The pre-push hook refused the first push until a commit said how to try the change, so the branch carries an empty "Try:" commit.
🤖 Generated with Claude Code
Closes #10432