Settings: a panel in the sheet, not a screen #17

Closed
opened 2026-08-10 12:43:10 +00:00 by aiko · 1 comment
Owner

Parent

#1

What to build

A settings panel occupying the sheet region, opened from the footer. Because it shares the sheet slot, it and a Lookup can never be open at once — by construction, with no navigation, no route, and no back-stack, and it inherits the sheet cap and scrolling for free.

One setting in this slice:

  • Pause when I tap a word — on by default. Wired in #18.

Built as rows rather than as one toggle, because three more are already specified: swiping seeks the show (#18), which English track to use when a show has several (PRD story 25), and where Anki lives and which deck receives cards (PRD story 45).

Two homes, decided now so it is not retrofitted. Reading size and auto-pause are about this phone in this room and belong in localStorage. The Anki host and deck are server-side and belong in the plugin configuration, because Export runs on the server and the phone never talks to Anki. Same panel, two stores. This slice only needs the first, but the seam goes in now.

Reading size stays in the footer and is not repeated here. It is the one preference that changes mid-episode when the lights change; everything else is set once. Duplicating it in both places would be worse than either.

Acceptance criteria

  • The panel opens from the footer and closes back to the watching screen
  • Opening it closes an open Lookup, and opening a Lookup closes it — never both at once
  • The toggle persists across a reload and across a browser restart
  • A setting the app has never seen falls back to its default rather than breaking
  • The toggle has default, focus, pressed, and disabled states, and a 44px hit target
  • Rows are structured so a second and third setting are additive, not a rewrite
  • Persistence and defaulting are covered by tests

Blocked by

## Parent #1 ## What to build A settings panel occupying the sheet region, opened from the footer. Because it shares the sheet slot, it and a Lookup can never be open at once — by construction, with no navigation, no route, and no back-stack, and it inherits the sheet cap and scrolling for free. One setting in this slice: - **Pause when I tap a word** — on by default. Wired in #18. Built as rows rather than as one toggle, because three more are already specified: swiping seeks the show (#18), which English track to use when a show has several (PRD story 25), and where Anki lives and which deck receives cards (PRD story 45). **Two homes, decided now so it is not retrofitted.** Reading size and auto-pause are about this phone in this room and belong in `localStorage`. The Anki host and deck are server-side and belong in the plugin configuration, because Export runs on the server and the phone never talks to Anki. Same panel, two stores. This slice only needs the first, but the seam goes in now. Reading size stays in the footer and is not repeated here. It is the one preference that changes mid-episode when the lights change; everything else is set once. Duplicating it in both places would be worse than either. ## Acceptance criteria - [ ] The panel opens from the footer and closes back to the watching screen - [ ] Opening it closes an open Lookup, and opening a Lookup closes it — never both at once - [ ] The toggle persists across a reload and across a browser restart - [ ] A setting the app has never seen falls back to its default rather than breaking - [ ] The toggle has default, focus, pressed, and disabled states, and a 44px hit target - [ ] Rows are structured so a second and third setting are additive, not a rewrite - [ ] Persistence and defaulting are covered by tests ## Blocked by - #15
Author
Owner

This was generated by AI during triage.

Merged to main in af73452. Suites at merge: 79 C#, 335 phone.

Settings as a panel in the sheet's own slot, so it and a Lookup can never both be open — enforced by the slot being a type with three variants rather than by a guard anyone has to remember.

Built as rows because three more settings are already specified. Two stores decided up front: this phone's preferences in localStorage, the Anki host and deck server-side, because Export runs on the server.

> *This was generated by AI during triage.* Merged to `main` in af73452. Suites at merge: 79 C#, 335 phone. Settings as a panel in the sheet's own slot, so it and a Lookup can never both be open — enforced by the slot being a type with three variants rather than by a guard anyone has to remember. Built as rows because three more settings are already specified. Two stores decided up front: this phone's preferences in `localStorage`, the Anki host and deck server-side, because Export runs on the server.
aiko closed this issue 2026-08-10 16:21:25 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
mobrule/kurageyomi#17
No description provided.