Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
588e47f
fix: leave keys typed into a field inside a shadow root to the field
mixedrays Nov 6, 2026
d71bcb9
Merge pull request #43 from mixedrays/fix/fieldset-disabled-item
mixedrays Nov 6, 2026
db99b3f
Merge pull request #41 from mixedrays/fix/shadow-root-field-keys
mixedrays Nov 6, 2026
42c40fd
feat: walk a move on past an item that refuses focus
mixedrays Nov 6, 2026
eeab50a
chore(bench): wait for Chrome to exit before removing its profile
mixedrays Nov 6, 2026
7343b39
fix: let CommonJS code require the package on Node versions that load…
mixedrays Nov 6, 2026
d21fa4f
Merge pull request #44 from mixedrays/feat/continue-past-refused-focus
mixedrays Nov 6, 2026
c066bbc
perf: walk on past refusing items in one pass
mixedrays Nov 6, 2026
eb08394
fix: treat AltGr presses as typing, not commands
mixedrays Nov 6, 2026
a12a030
Merge pull request #45 from mixedrays/chore/bench-profile-cleanup
mixedrays Nov 6, 2026
63b24cb
Merge pull request #46 from mixedrays/fix/require-from-commonjs
mixedrays Nov 6, 2026
c609c29
Merge pull request #47 from mixedrays/perf/linear-refused-focus-walk
mixedrays Nov 6, 2026
739a940
Merge pull request #48 from mixedrays/fix/altgr-is-typing
mixedrays Nov 6, 2026
3186092
feat: count the first line's items for cols auto on wrapping layouts
mixedrays Nov 6, 2026
bc99496
perf: read the layout only for a press that could move
mixedrays Nov 7, 2026
b3a817e
chore: time cols auto on flex layouts and with a changed layout in th…
mixedrays Nov 7, 2026
ef4a3ff
Merge pull request #49 from mixedrays/feat/cols-auto-wrapping-layouts
mixedrays Nov 8, 2026
dc70b52
refactor: name the shared group settings and boundary moves once
mixedrays Nov 8, 2026
aa88106
feat: export the AnyMove and BoundaryAction types
mixedrays Nov 8, 2026
8fd9056
feat: deprecate toggleTabIndex and the Options type alias
mixedrays Nov 8, 2026
bf3d1e2
fix: read data-keyrove-orientation trimmed and in any case
mixedrays Nov 8, 2026
e257859
Merge pull request #50 from mixedrays/refactor/review-findings
mixedrays Nov 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion DEVELOPMENT.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@ covers that part of the contract in a real browser: a small suite under
library's public entry and drives it with real key presses and clicks. It
checks that Tab and Shift+Tab enter, leave and return to a roving group, that
nested groups keep their own stops, that navigation works in a shadow root,
and that a hidden or inert target leaves focus and the stop alone.
that a move passes over a hidden or inert target, leaving its stop alone, and
that `cols: 'auto'` counts the columns of a grid or a wrapping layout.

It runs on Vitest's browser mode with Playwright, in headless Chromium.
Install the browser once:
Expand Down
8 changes: 4 additions & 4 deletions GLOSSARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,11 @@ _Avoid_: Vertical group, one-dimensional group

**Grid**:
A group with a column count above one, whose item sequence fills consecutive rows of that many items.
In keyrove, "grid" means a column count above one, which a CSS grid can supply; neither the ARIA `grid` role nor on-screen geometry makes a group a grid.
In keyrove, "grid" means a column count above one, which a CSS grid or a wrapping layout can supply; neither the ARIA `grid` role nor on-screen geometry makes a group a grid on its own.
_Avoid_: Matrix, table, spatial navigation

**Column count**:
The number of items per row of a group's item sequence, either fixed or counted from the root's CSS grid columns. A column count of one makes a list.
The number of items per row of a group's item sequence, either fixed or counted on screen, from the root's CSS grid columns or from the items on its first line. A column count of one makes a list.
_Avoid_: Row length, width

**Orientation**:
Expand Down Expand Up @@ -148,7 +148,7 @@ A combo assigned to one destination element, item or not, rather than to a strid
_Avoid_: Focus shortcut, access key, jump key

**Editable target**:
An event target inside a text field, select, editable content, or another input whose native behavior uses the keys keyrove binds. From an editable target, only focus keys pressed with Control, Alt, or Meta act.
An event target inside a text field, select, editable content, or another input whose native behavior uses the keys keyrove binds. From an editable target, only focus keys pressed with Control, Alt, or Meta act, unless AltGr is held.
In keyrove, buttons, checkboxes, and similar inputs are not editable targets, so navigation works from them.
_Avoid_: Input, form field, text input

Expand All @@ -160,7 +160,7 @@ In keyrove, consuming a key never stops its propagation.
_Avoid_: Handled key, captured key, swallowed key

**Consumed no-op**:
A consumed key that produces no move, such as an action at the end of a list or toward a destination that cannot receive focus.
A consumed key that produces no move, such as an action at the end of a list or one where no destination can receive focus.
_Avoid_: Failed move, ignored key

**Untouched key**:
Expand Down
299 changes: 204 additions & 95 deletions apps/bench/README.md

Large diffs are not rendered by default.

Loading
Loading