One Cue at a time: the transcript becomes a carousel #10
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
mobrule/kurageyomi#10
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent
#1
What to build
The scrolling transcript is replaced by a horizontal strip showing one Cue per panel at reading size (ADR 0007).
The reason is not cosmetic: a vertical list shows the lines below the current one, which is dialogue that has not been spoken yet. For a listening-practice tool that turns reading along into reading ahead. One Cue per panel makes future dialogue something the reader travels to deliberately.
The strip is
overflow-xwith CSS scroll snapping, one panel per Cue — momentum, rubber-banding, and partial-drag feedback come from the platform rather than from a hand-rolled touch handler. Reading type size lives in a CSS custom property, because the right value is found at sofa distance rather than chosen in advance.Swiping is free in both directions. Swiping away from live freezes the strip: it stops following the Playhead, the header says so and shows the offset from live (
-1:21, not a wall-clock time), and a control returns to live. The control is labelled by meaning, not direction — you can be on either side of live.Swiping is not seeking. The strip is a transcript, not a scrubber.
Acceptance criteria
holdThroughGapsis removed fromcurrentCueIndex— with one Cue per panel, silence just leaves the last panel in placetouchmoveon the root element as the reader scrolling, so gestures elsewhere on screen do not stop auto-followBlocked by
None - can start immediately
Merged to
mainin168b131.The scrolling transcript is gone; one Cue fills a panel in a CSS scroll-snap strip. Reading size is
--cue-reading-size, tunable without touching TypeScript — asserted by a C# test against the shell rather than left as a promise. Free swiping both directions, frozen state showing the offset from live measured Cue-start to Cue-start so it does not tick upward while following, and oneBack to livecontrol that works from either side.holdThroughGapsis removed fromcurrentCueIndex, and thetouchmovelisteners onrootare gone with the old transcript view.18 tests in
cueStrip.test.tscovering advance, freeze/unfreeze, offset formatting, and panel-index-at-scroll.One acceptance criterion could not become a runnable test: "the show does not seek" asserts an absence, and there is no
PlaybackRemoteto mock yet. Enforced structurally —cueStrip.tsimports only tick and Cue types, and the strip's only side effect isscrollTo. Worth a real test whenPlaybackRemotelands.