docs(handoff): record keybind footer; B's next step is ESC accelerator
Post-v0.21.4 third carve-out: 1873b3f ships a keybind-hint footer
(vim-style mode line + `[SPACE] pause/resume`) at the bottom of
the banner (76 → 92 px). Update Since-cut log, visual-identity
bullet, B option in the Resume menu, status (1236 → 1240 tests),
and HEAD hint.
Footer lists only wired keybinds. Next finite step on B-2: wire
ESC for stop and extend the footer to `[SPACE] pause/resume ·
[ESC] stop` — small, single-axis, surfaces another keyboard
accelerator alongside the existing Stop button.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
+69
-35
@@ -35,10 +35,11 @@ resume.
|
|||||||
- **`artwork/` directory:** still untracked. Intentional.
|
- **`artwork/` directory:** still untracked. Intentional.
|
||||||
- **Build:** `cargo clippy --workspace --all-targets -- -D warnings`
|
- **Build:** `cargo clippy --workspace --all-targets -- -D warnings`
|
||||||
clean.
|
clean.
|
||||||
- **Tests:** **1236 passing / 0 failing** across the workspace
|
- **Tests:** **1240 passing / 0 failing** across the workspace
|
||||||
(1228 in v0.21.4 + 4 from `fe68861`'s scrub-notch tests + 4
|
(1228 in v0.21.4 + 4 from `fe68861`'s scrub-notch tests + 4
|
||||||
from `d322abf`'s notch-label tests). Detail in `CHANGELOG.md`
|
from `d322abf`'s notch-label tests + 4 from `1873b3f`'s
|
||||||
§ [0.21.4] § Stats; post-cut delta tracked here.
|
keybind-footer tests). Detail in `CHANGELOG.md` § [0.21.4]
|
||||||
|
§ Stats; post-cut delta tracked here.
|
||||||
- **Tags on origin:** `v0.9.0` through `v0.21.4`. v0.21.4 is on
|
- **Tags on origin:** `v0.9.0` through `v0.21.4`. v0.21.4 is on
|
||||||
`23ff62c`; v0.21.3 stays on `3d92a91`; v0.21.2 stays on
|
`23ff62c`; v0.21.3 stays on `3d92a91`; v0.21.2 stays on
|
||||||
`f23df3b`; v0.21.1 stays on `daa655a`; v0.21.0 stays on
|
`f23df3b`; v0.21.1 stays on `daa655a`; v0.21.0 stays on
|
||||||
@@ -79,20 +80,46 @@ resume.
|
|||||||
offset). Label colour is `TEXT_SECONDARY` (mockup's
|
offset). Label colour is `TEXT_SECONDARY` (mockup's
|
||||||
`BORDER_SUBTLE` reads as too low-contrast at 12 px against
|
`BORDER_SUBTLE` reads as too low-contrast at 12 px against
|
||||||
`BG_ELEVATED_HI`). 4 new tests; 1232 → 1236.
|
`BG_ELEVATED_HI`). 4 new tests; 1232 → 1236.
|
||||||
|
- **`1873b3f` — `feat(replay): add keybind-hint footer to
|
||||||
|
overlay banner`.** Second layout-changing commit in B-2's arc.
|
||||||
|
Banner grew from 76 → 92 px to fit a 16 px footer row at the
|
||||||
|
bottom edge with a vim-style mode line on the left
|
||||||
|
(`▌ NORMAL │ replay`) and a keybind-hint on the right
|
||||||
|
(`[SPACE] pause/resume`). Surfaces the existing Space
|
||||||
|
accelerator visually so CLAUDE.md §3.3's UI-first contract
|
||||||
|
holds for keyboard accelerators too. Footer lists *only
|
||||||
|
wired* keybinds — future commits that wire ESC for stop or
|
||||||
|
← / → for prev/next will extend the right-hand text in
|
||||||
|
lockstep. Two pure helpers (`keybind_footer_mode_text`,
|
||||||
|
`keybind_footer_hint_text`) keep the static text testable;
|
||||||
|
shared `font_handle_for_labels` clone covers both label and
|
||||||
|
footer text spawns. 1px top border in `BORDER_SUBTLE`
|
||||||
|
separates the footer from the labels row. 4 new tests;
|
||||||
|
1236 → 1240.
|
||||||
|
|
||||||
Banner geometry is now mutable — every prior B-2 commit fit
|
Banner geometry is now mutable — every prior B-2 commit fit
|
||||||
inside fixed 60 px space, but the labels commit established the
|
inside fixed 60 px space, but the notch-labels commit
|
||||||
"grow the container, add a new flex-column child" precedent. The
|
established the "grow the container, add a new flex-column
|
||||||
next sub-pieces need significantly more vertical room and follow
|
child" precedent and the keybind-footer commit applied it
|
||||||
the same shape.
|
again. The next sub-pieces need significantly more vertical
|
||||||
|
room and follow the same shape.
|
||||||
|
|
||||||
Next finite step on B-2: a **keybind-hint footer** at the bottom
|
Next finite step on B-2: choices are
|
||||||
of the banner (e.g. `[SPACE] pause`). Tiny scope — surfaces the
|
1. **Wire ESC for stop** + extend the keybind-footer text to
|
||||||
existing Space accelerator visually (UI-first §3.3). Or jump
|
`[SPACE] pause/resume · [ESC] stop`. Small, single-axis
|
||||||
straight to the move-log card / mini-tableau preview, both of
|
commit. UI-first contract for the existing Stop button gets
|
||||||
which need a much larger banner-height grow (effectively the
|
a keyboard accelerator; the footer carrying only-wired
|
||||||
takeover container itself). Footer keeps the cadence small;
|
keybinds means the text update is in lockstep.
|
||||||
move-log/preview is the bigger arc.
|
2. **Wire ← / → for prev/next move** — needs a "step
|
||||||
|
backwards" path in `replay_playback`, which currently only
|
||||||
|
supports forward stepping. Bigger; new state plumbing.
|
||||||
|
3. **Move-log scroller / mini-tableau preview** — both need
|
||||||
|
a much larger banner-height grow (effectively the takeover
|
||||||
|
container itself). Bigger arcs.
|
||||||
|
|
||||||
|
Recommended order: ESC (option 1) next as the smallest
|
||||||
|
cadence-preserving step, then either ← / → or move-log/preview
|
||||||
|
depending on appetite.
|
||||||
|
|
||||||
## Open punch list
|
## Open punch list
|
||||||
|
|
||||||
@@ -139,12 +166,15 @@ palette refresh all shipped in v0.20.0 + v0.21.0. What stays open:
|
|||||||
takeover layout. Percentage labels under each notch shipped
|
takeover layout. Percentage labels under each notch shipped
|
||||||
post-v0.21.4 in `d322abf` — first **layout-changing** commit
|
post-v0.21.4 in `d322abf` — first **layout-changing** commit
|
||||||
(banner 60 → 76 px to make room for a 16 px label row).
|
(banner 60 → 76 px to make room for a 16 px label row).
|
||||||
Banner geometry is now mutable. What still needs to land: a
|
Keybind-hint footer (vim-style mode line + `[SPACE]
|
||||||
keybind-hint footer (small carve-out) and the bigger pieces —
|
pause/resume`) shipped post-v0.21.4 in `1873b3f` (banner
|
||||||
a move-log scroller and a mini-tableau preview — both
|
76 → 92 px). Banner geometry is now mutable. What still
|
||||||
screen-takeover-only pieces that need a much larger banner
|
needs to land: ESC accelerator wiring (small) + ← / →
|
||||||
height grow (effectively the takeover container itself).
|
scrub keys (needs new backwards-step path), then the
|
||||||
Multi-session.
|
bigger pieces — a move-log scroller and a mini-tableau
|
||||||
|
preview — both screen-takeover-only pieces that need a
|
||||||
|
much larger banner height grow (effectively the takeover
|
||||||
|
container itself). Multi-session.
|
||||||
- *Floating `MOVE N/M` chip above the focused card during
|
- *Floating `MOVE N/M` chip above the focused card during
|
||||||
playback — closed 2026-05-08 by `2fb2d63`.* World-space
|
playback — closed 2026-05-08 by `2fb2d63`.* World-space
|
||||||
`Text2d` entity sibling to the banner overlay; uses the same
|
`Text2d` entity sibling to the banner overlay; uses the same
|
||||||
@@ -297,10 +327,10 @@ v0.21.1 at daa655a, v0.21.0 at 04f9bf9. Working tree clean. See
|
|||||||
CHANGELOG.md § [0.21.4] for full detail.
|
CHANGELOG.md § [0.21.4] for full detail.
|
||||||
|
|
||||||
State: HEAD locally — see `git rev-parse HEAD`. Post-cut HEAD is
|
State: HEAD locally — see `git rev-parse HEAD`. Post-cut HEAD is
|
||||||
`d322abf` (two carved-out commits on top of v0.21.4 — scrub-bar
|
`1873b3f` (three carved-out commits on top of v0.21.4 — scrub-
|
||||||
notches `fe68861`, then notch labels `d322abf`). All workspace
|
bar notches `fe68861`, notch labels `d322abf`, keybind-hint
|
||||||
tests pass (1236; check with `cargo test --workspace`), clippy
|
footer `1873b3f`). All workspace tests pass (1240; check with
|
||||||
clean.
|
`cargo test --workspace`), clippy clean.
|
||||||
|
|
||||||
READ FIRST (in order, before doing anything):
|
READ FIRST (in order, before doing anything):
|
||||||
1. SESSION_HANDOFF.md — this file
|
1. SESSION_HANDOFF.md — this file
|
||||||
@@ -330,17 +360,21 @@ DECISION TO ASK THE PLAYER FIRST:
|
|||||||
playback controls. The smaller floating-MOVE-chip piece
|
playback controls. The smaller floating-MOVE-chip piece
|
||||||
shipped in v0.21.2 (`2fb2d63`). Post-v0.21.4: quarter-
|
shipped in v0.21.2 (`2fb2d63`). Post-v0.21.4: quarter-
|
||||||
mark scrub notches shipped in `fe68861` (5 ticks at
|
mark scrub notches shipped in `fe68861` (5 ticks at
|
||||||
0/25/50/75/100 %), and percentage labels under each
|
0/25/50/75/100 %); percentage labels under each notch
|
||||||
notch shipped in `d322abf` (banner grew 60 → 76 px to
|
shipped in `d322abf` (banner 60 → 76 px — first layout
|
||||||
accommodate a 16 px label row — first layout change in
|
change); keybind-hint footer shipped in `1873b3f`
|
||||||
the arc, banner geometry is now mutable). The natural
|
(banner 76 → 92 px — vim-style mode line on the left,
|
||||||
next finite step is a **keybind-hint footer** at the
|
`[SPACE] pause/resume` on the right). Banner geometry
|
||||||
bottom of the banner (e.g. `[SPACE] pause`) — small
|
is now mutable. The natural next finite step is to
|
||||||
carve-out that surfaces the existing Space accelerator
|
**wire ESC for stop** and extend the footer text to
|
||||||
visually (UI-first §3.3). After that: move-log scroller
|
`[SPACE] pause/resume · [ESC] stop` — small, single-
|
||||||
and mini-tableau preview, both screen-takeover-only
|
axis, surfaces another keyboard accelerator alongside
|
||||||
pieces that need a much larger banner-height grow
|
the existing Stop button. After that: ← / → for
|
||||||
(effectively the takeover container itself). Mockup at
|
prev/next move (needs new backwards-step path in
|
||||||
|
`replay_playback`), then move-log scroller and mini-
|
||||||
|
tableau preview — both screen-takeover-only pieces that
|
||||||
|
need a much larger banner-height grow (effectively the
|
||||||
|
takeover container itself). Mockup at
|
||||||
`docs/ui-mockups/replay-overlay-mobile.html`.
|
`docs/ui-mockups/replay-overlay-mobile.html`.
|
||||||
C. Phase 8 (sync) — local storage scaffolding, self-hosted
|
C. Phase 8 (sync) — local storage scaffolding, self-hosted
|
||||||
Axum server, `SolitaireServerClient` impl, GPGS stub
|
Axum server, `SolitaireServerClient` impl, GPGS stub
|
||||||
|
|||||||
Reference in New Issue
Block a user