Skip to content

Implement Player::seek_block_id and enhance TUI with modal keymap - #7

Merged
AlexanderSlokov merged 3 commits into
mainfrom
develop
Sep 2, 2026
Merged

AlexanderSlokov merged 3 commits into
mainfrom
develop

Conversation

@AlexanderSlokov

Copy link
Copy Markdown
Owner

No description provided.

AlexanderSlokov and others added 3 commits September 2, 2026 15:25
The outline sidebar holds Headings, which carry a block_id, not a token
index. Give it a way to jump there without reaching into the token
stream, and report failure rather than moving somewhere arbitrary when a
block produced no tokens at all — tables and markup-only headings do not
appear in the stream.

Part of OXD-032.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011e2oRctuPGDRf9pLs2xWgr
The half of the design that gives back what RSVP takes away. Spec §0.2
admits the cost: no page, no sense of place, no backward glance. Each of
these answers one of those.

The panel renders Document::source rather than the stripped block text,
because Token::byte_span indexes the source. Rendering anything else
would need a second mapping that could disagree with the first, and a
highlight on the wrong word is worse than no panel. The wrap is cached
and redone only when the panel's inner width changes, so a 50 KB
document is not re-wrapped 25 times a second at 1500 WPM.

The keymap is modal because J/K cannot mean both "speed" and "scroll" at
once (§7.1). A binding now declares the modes it applies in, and the help
popup and status hints read the same table, so neither can advertise a
key that does something else where you are standing.

Two layout decisions departed from the §5 mockup: the status block spans
the full width, and panel visibility is a width test rather than a size
class that also weighed height. Both are argued in ADR 002.

Golden frames cover every mode at 80x24, 200x50 and 40x10, plus a style
grid — the §3.4.1 guarantees are about attributes, so an ORP that quietly
stopped being bold would pass a text-only snapshot.

Closes OXD-030, OXD-031, OXD-032, OXD-034, OXD-036

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011e2oRctuPGDRf9pLs2xWgr
Back-annotate spec §5 with the two layout changes, mark the finished
Phase 3 cards, and note in OXD-033 that everything but the <n>% jump
already shipped in v0.1.0 — its real remaining size is S, not M.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011e2oRctuPGDRf9pLs2xWgr
@AlexanderSlokov
AlexanderSlokov merged commit 54acfb7 into main Sep 2, 2026
17 checks passed
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.

1 participant