Repository navigation
Conversation
tang-vu
marked this pull request as ready for review
September 15, 2026 02:48
Collaborator
|
Thanks for this contribution. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why this matters
Settings replaces a native category select with PanelSelect. It supports arrow navigation but ignores typed category names, making a long configuration list unnecessarily slow to navigate by keyboard. Add prefix navigation and repeated-initial cycling while retaining focus on the combobox and committing only on Enter/Space.
This is an optional usability enhancement described by the WAI-ARIA combobox pattern, not a claim that every select-only widget is required to implement it: https://www.w3.org/WAI/ARIA/apg/patterns/combobox/#keyboardinteraction
Overlap check
Searched open/closed PRs touching PanelSelect.jsx and typeahead/category/keyboard keywords. #4224 preserves highlighted selection when option arrays refresh; this adds printable-character navigation. It retains existing index state so #4224 remains independently useful and should be reconciled when merged. #4210 introduced the contained selector.
Validation
npx vitest run src/components/PanelSelectTypeahead.test.jsx src/components/PanelSelect.test.jsx: 5 passed. Covers prefix search, repeated-letter cycling, explicit commit, Escape reset, IME/modified-key exclusion, existing arrows, pointer selection and disabled/empty lists.Prefix accumulation expires after 700 ms and is capped at 256 characters. No configuration value is saved by navigation alone. Screen-reader announcement relies on existing aria-activedescendant; a live assistive-technology session was not run. Revert removes only typeahead.
Batch integration receipt
Validated with the other 19 public-beta PRs on integration commit ce0d0132, based on upstream f5f49b7. All 20 patches compose without conflicts in creation order; no new PR requires another to fix its own behavior. For shared files, use #4325 before #4327 and #4339 before #4356 as the tested order.
Merge coordination
Not merge-ready until reconciled with open #4224: both touch the category keyboard handler. A tested resolution is 4e7f55e9, which retains #4224's active option identity and sets activeValue from the typeahead match. All 7 combined selector tests pass. The independent branch remains based on public-beta; do not merge both heads without this reconciliation.
Latest candidate CI: 32 successful checks, 4 skipped. Independent human review of filesystem/authorization changes remains required despite green CI.
Review status update — 2026-09-15
Ready for review at the author's request. Not merge-ready. The branch conflicts with public-beta. Preserve the tested typeahead behavior while reconciling the category control with overlapping #4224; the previously recorded comparison and union are not proof that this PR head is mergeable.
Reviewed head: 72fdafa. Changing draft status does not bypass these gates or authorize a merge.