Skip to content

feat(webui): keyboard shortcuts, persisted view prefs, settings search & a11y (RT-WP7) - #114

Merged
thedancingdeveloper merged 4 commits into
mainfrom
wi-1732-web-ui-keyboard-prefs-a11y
Oct 18, 2026
Merged

thedancingdeveloper merged 4 commits into
mainfrom
wi-1732-web-ui-keyboard-prefs-a11y

Conversation

@thedancingdeveloper

Copy link
Copy Markdown
Collaborator

WI-1732 (RT-WP7, from polish review PR #94).

  • Settings registry: restart-required markers (listen port, peer and HTTP API bind addresses, DHT, data directory) and registry-sourced field labels
  • Per-setting search that switches to the setting's tab, scrolls to the field and focuses it
  • Accessibility: dialogs named by their titles (aria-labelledby), polite live region announcing torrent state changes and errors
  • Persisted view prefs: detail-pane tab and height, status/tracker/category filters, sidebar collapsed state
  • Shortcut help overlay (?), shortcut hints in toolbar tooltips and the context menu, and Shift+F10 / ContextMenu key to open the row menu

Gates at e55ed64 (independent review): npm test pass, tsc clean, build ok, lint 0 errors, Playwright 21/21. All tests run in-process; no deployed topology was exercised.

🤖 Generated with Claude Code

thedancingdeveloper and others added 3 commits October 18, 2026 00:43
…(WI-1732)

- "?" opens a shortcut reference; Backspace no longer deletes (Delete only,
  always through the confirm modal).
- Space pauses or resumes the selection; Enter opens details for a single
  selected torrent; Ctrl/Cmd+O opens the file picker; M focuses magnet input.
  These are bound only from the Toolbar so multiple hook mounts do not double-fire.
- Sort column/direction, status, category and tracker filters, and sidebar
  collapse persist per browser (localStorage, best-effort, validated on read).
- Settings modal gets a search box that filters tabs by label and keywords.
- Details modal is rendered from the Toolbar so the compact view can open it.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…ne prefs (WI-1732)

- Settings search matches individual settings by label. The list lives in
  config/settingsRegistry.ts; the search and the restart notes are generated
  from it, and the per-tab keyword lists are gone.
- Restart-required markers on: listen port, peer listen address, DHT enabled,
  HTTP API bind address, data directory. Checked against the engine: each is
  bound or read once at startup and has no runtime setter. The download folder
  is applied live (api_set_folders), so it is not marked. No TLS support exists
  in the codebase, so there is no TLS setting to mark.
- Every dialog is named by its title (aria-labelledby via Modal).
- Polite live region (LiveAnnouncer) announces added, removed, paused, resumed
  and errored torrents, and errors shown to the user.
- Detail pane remembers its active tab and height across reloads.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
… hints (WI-1732)

- Field labels in the config tabs are read from settingsRegistry, so the
  search and the fields share one source. settingLabel throws on an
  unknown id.
- Settings search focuses the matched field after switching tab, not just
  the tab. Form fields carry the setting id as data-setting-id.
- Toolbar tooltips and the torrent context menu quote the shortcut for
  resume/pause, delete, settings and logs.
- Registry tests: unique ids, both bind addresses restart-required.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
@thedancingdeveloper
thedancingdeveloper force-pushed the wi-1732-web-ui-keyboard-prefs-a11y branch from e55ed64 to 0fe563c Compare October 18, 2026 00:43
… test

Toasts from WI-1731 are also a role=status live region, so the bare
getByRole('status') locator matched two elements and failed strict mode.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@thedancingdeveloper
thedancingdeveloper merged commit 64c8df0 into main Oct 18, 2026
11 checks passed
@thedancingdeveloper
thedancingdeveloper deleted the wi-1732-web-ui-keyboard-prefs-a11y branch October 18, 2026 01:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants