docs(handoff): record HC marker + ← / → wiring; recommend v0.21.5 cut
Two more post-v0.21.4 carve-outs land: -23902cd: HC-mode coverage for keybind-footer top border (HighContrastBorder marker so apply_high_contrast_borders bumps the 1 px top border under HC). -e5c4f51: ← / → keyboard accelerators for paused stepping (hooks game's undo system for backwards step; footer extended to [SPACE] pause/resume · [ESC] stop · [← →] step). Update Since-cut log, visual-identity bullet, B option in the Resume menu, status (1244 → 1250 total tests / 1249 passing / 1 pre-existing flake), and HEAD hint. Six post-v0.21.4 commits now form a coherent through-line: replay-overlay scrubbing affordances + accessibility. Resume menu's B option now recommends cutting v0.21.5 as the natural next boundary. Pre-existing flake noted: daily_challenge warning test fails when wall-clock UTC is within 30 minutes of midnight (the warning window the test asserts against). Verified not introduced by recent commits via stash-and-retest. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
+124
-61
@@ -35,12 +35,18 @@ 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:** **1243 passing / 0 failing** across the workspace
|
- **Tests:** **1250 total / 1249 passing / 1 pre-existing
|
||||||
|
time-dependent flake** 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 + 4 from `1873b3f`'s
|
from `d322abf`'s notch-label tests + 4 from `1873b3f`'s
|
||||||
keybind-footer tests + 3 from `90e24d9`'s ESC-accelerator
|
keybind-footer tests + 3 from `90e24d9`'s ESC-accelerator
|
||||||
tests). Detail in `CHANGELOG.md` § [0.21.4] § Stats; post-cut
|
tests + 1 from `23902cd`'s HC-marker test + 6 from
|
||||||
delta tracked here.
|
`e5c4f51`'s arrow-keyboard tests). The flake is
|
||||||
|
`daily_challenge_plugin::tests::check_system_fires_warning_event_only_once_per_day`
|
||||||
|
— fails when wall-clock UTC is within 30 minutes of midnight
|
||||||
|
(the daily-expiry warning window the test asserts against).
|
||||||
|
Verified pre-existing. 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
|
||||||
@@ -110,6 +116,48 @@ resume.
|
|||||||
in lockstep with the wiring; the only-wired-keybinds
|
in lockstep with the wiring; the only-wired-keybinds
|
||||||
discipline holds. 3 new tests + 1 updated helper-pin test;
|
discipline holds. 3 new tests + 1 updated helper-pin test;
|
||||||
1240 → 1243.
|
1240 → 1243.
|
||||||
|
- **`23902cd` — `feat(replay): HC-mode coverage for
|
||||||
|
keybind-footer top border`.** Tag the footer's border-carrying
|
||||||
|
Node with `HighContrastBorder::with_default(BORDER_SUBTLE)` so
|
||||||
|
the existing `apply_high_contrast_borders` system bumps the
|
||||||
|
1 px top border from `#505050` → `#a0a0a0` under HC mode.
|
||||||
|
Footer text colours don't need bumps —
|
||||||
|
`TEXT_SECONDARY` (`#a0a0a0`) is already at `BORDER_SUBTLE_HC`
|
||||||
|
luminance by design (no `TEXT_SECONDARY_HC` constant exists).
|
||||||
|
The 1 px scrub track, notch ticks, and WIN MOVE marker render
|
||||||
|
via `BackgroundColor` (not `BorderColor`) so the marker
|
||||||
|
doesn't apply — HC coverage for those would need a
|
||||||
|
settings-aware paint system (precedent: `radial_rim_outline`
|
||||||
|
in `radial_menu`) and is deferred. 1 new test; 1243 → 1244.
|
||||||
|
- **`e5c4f51` — `feat(replay): wire ← / → keyboard accelerators
|
||||||
|
for paused stepping`.** New `step_backwards_replay_playback`
|
||||||
|
in `replay_playback.rs` decrements the cursor and dispatches
|
||||||
|
`UndoRequestEvent`; the game's `handle_undo` reads it next
|
||||||
|
frame to reverse its most-recent move — hooking the existing
|
||||||
|
undo system rather than replaying forward from cursor 0
|
||||||
|
(every replay-applied move pushes to the undo stack the same
|
||||||
|
way a player move would, so undo is the right reversal
|
||||||
|
primitive). Both arrow keys are paused-only via the same
|
||||||
|
destructure-gate pattern the forward step uses. Footer hint
|
||||||
|
extended in lockstep:
|
||||||
|
`[SPACE] pause/resume · [ESC] stop · [← →] step`. Footer
|
||||||
|
reads "step" not the mockup's "scrub" — single-move step is
|
||||||
|
what's wired; continuous scrub would need a key-held event
|
||||||
|
source. `ReplayOverlayPlugin` gains
|
||||||
|
`add_message::<UndoRequestEvent>()` defensively. 6 new tests
|
||||||
|
(2 hint pins + 4 keyboard scenarios) + 1 updated helper-pin
|
||||||
|
test; 1244 → 1250 total tests, 1249 passing.
|
||||||
|
|
||||||
|
**Pre-existing flake noted (verified):**
|
||||||
|
`daily_challenge_plugin::tests::
|
||||||
|
check_system_fires_warning_event_only_once_per_day` is
|
||||||
|
time-dependent — fails when wall-clock UTC is within 30
|
||||||
|
minutes of midnight (the daily-expiry warning window the test
|
||||||
|
asserts against). Verified pre-existing by stashing all
|
||||||
|
changes and re-running before commit — failure persisted. Same
|
||||||
|
shape as the `winnable_seed_search` flake from earlier in the
|
||||||
|
session. Will pass deterministically when UTC isn't in the
|
||||||
|
warning window. Not introduced by recent work.
|
||||||
|
|
||||||
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 notch-labels commit
|
inside fixed 60 px space, but the notch-labels commit
|
||||||
@@ -118,30 +166,33 @@ child" precedent and the keybind-footer commit applied it
|
|||||||
again. The next sub-pieces need significantly more vertical
|
again. The next sub-pieces need significantly more vertical
|
||||||
room and follow the same shape.
|
room and follow the same shape.
|
||||||
|
|
||||||
Next finite step on B-2: choices are
|
Next finite step on B-2: keyboard accelerator coverage is now
|
||||||
1. **Wire ← / → for prev/next move** — needs a "step
|
complete (`Space` / `Esc` / `←` / `→`). Remaining choices:
|
||||||
backwards" path in `replay_playback`, which currently only
|
1. **HC-mode coverage for the scrub-track / notch ticks /
|
||||||
supports forward stepping. Backwards stepping is non-trivial:
|
WIN MOVE marker.** These render via `BackgroundColor` (not
|
||||||
the `Replay` carries the move list but no intermediate game
|
`BorderColor`) so `HighContrastBorder` doesn't apply.
|
||||||
states, so rewinding means either replaying-from-start to
|
Pattern would mirror `radial_menu::radial_rim_outline` —
|
||||||
`cursor - 1` or hooking into the game's undo system. New
|
per-frame paint reading `Settings::high_contrast_mode`.
|
||||||
state plumbing either way. Footer hint would extend to
|
Small commit, accessibility-progressing.
|
||||||
`[SPACE] pause/resume · [ESC] stop · [← →] step` in
|
2. **Continuous scrub on key-held ← / →** instead of
|
||||||
lockstep with the wiring.
|
single-move step. Needs a key-held event source (or
|
||||||
2. **Move-log scroller / mini-tableau preview** — both need
|
accumulator timer in the keyboard handler). Medium scope;
|
||||||
a much larger banner-height grow (effectively the takeover
|
matches the mockup's `[← →] scrub` terminology.
|
||||||
|
3. **Move-log scroller / mini-tableau preview** — both need a
|
||||||
|
much larger banner-height grow (effectively the takeover
|
||||||
container itself). Bigger arcs; the natural place to land
|
container itself). Bigger arcs; the natural place to land
|
||||||
the layout reflow that turns the banner into a takeover.
|
the layout reflow that turns the banner into a takeover.
|
||||||
3. **HC-mode coverage for the new banner pieces** — labels
|
4. **Cut a v0.21.5 patch release** rolling up the four
|
||||||
and footer texts currently use `TEXT_SECONDARY`; under HC
|
post-cut commits (`fe68861`, `d322abf`, `1873b3f`,
|
||||||
mode they should bump to `TEXT_PRIMARY` (or use the
|
`90e24d9`, `23902cd`, `e5c4f51`) under the through-line
|
||||||
`HighContrastBorder` marker pattern for the 1 px borders).
|
"replay-overlay scrubbing affordances + accessibility."
|
||||||
Small accessibility polish.
|
Coherent narrative; six commits is a normal-sized patch
|
||||||
|
bundle for this project.
|
||||||
|
|
||||||
Recommended order: option 3 (HC polish) is the smallest next
|
Recommended order: option 4 (cut release) is a clean next
|
||||||
step and keeps the cadence; option 1 (← / →) is the right
|
boundary — six commits with a clear through-line is the right
|
||||||
medium-scope next-feature; option 2 is the multi-session arc
|
size to bundle. Option 1 (HC paint for decorative pieces) is
|
||||||
that closes B-2.
|
the smallest next-feature commit if continuing past the cut.
|
||||||
|
|
||||||
## Open punch list
|
## Open punch list
|
||||||
|
|
||||||
@@ -187,20 +238,25 @@ palette refresh all shipped in v0.20.0 + v0.21.0. What stays open:
|
|||||||
post-v0.21.4 in `fe68861` — first decoration step toward the
|
post-v0.21.4 in `fe68861` — first decoration step toward the
|
||||||
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). Keybind-hint footer shipped in `1873b3f`
|
||||||
Keybind-hint footer (vim-style mode line + `[SPACE]
|
(banner 76 → 92 px — vim-style mode line + `[SPACE]
|
||||||
pause/resume`) shipped post-v0.21.4 in `1873b3f` (banner
|
pause/resume`). ESC accelerator wiring (with cross-plugin
|
||||||
76 → 92 px). ESC accelerator wiring (with cross-plugin gate
|
gate in `pause_plugin::toggle_pause`) shipped in `90e24d9`.
|
||||||
in `pause_plugin::toggle_pause`) shipped post-v0.21.4 in
|
HC-mode coverage for the footer's top border shipped in
|
||||||
`90e24d9`; footer hint extended to
|
`23902cd`. ← / → keyboard accelerators for paused stepping
|
||||||
`[SPACE] pause/resume · [ESC] stop` in lockstep. Banner
|
shipped in `e5c4f51` (hooks the existing undo system for
|
||||||
geometry is now mutable. What still needs to land: ← / →
|
backwards step; footer extended to
|
||||||
scrub keys (needs new backwards-step path), HC-mode
|
`[SPACE] pause/resume · [ESC] stop · [← →] step`). Banner
|
||||||
coverage for the new banner pieces (labels + footer
|
geometry is mutable; keyboard accelerator coverage is
|
||||||
texts), then the bigger pieces — a move-log scroller and a
|
complete. What still needs to land: HC-mode coverage for
|
||||||
mini-tableau preview — both screen-takeover-only pieces
|
the scrub-track / notches / WIN MOVE marker (they render
|
||||||
that need a much larger banner height grow (effectively the
|
via `BackgroundColor` so the `HighContrastBorder` marker
|
||||||
takeover container itself). Multi-session.
|
doesn't apply — needs a settings-aware paint), continuous
|
||||||
|
scrub on key-held ← / → (vs single-step), then the 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
|
||||||
@@ -353,11 +409,13 @@ 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
|
||||||
`90e24d9` (four carved-out commits on top of v0.21.4 — scrub-bar
|
`e5c4f51` (six carved-out commits on top of v0.21.4 — scrub-bar
|
||||||
notches `fe68861`, notch labels `d322abf`, keybind-hint footer
|
notches `fe68861`, notch labels `d322abf`, keybind-hint footer
|
||||||
`1873b3f`, ESC accelerator + pause-modal gate `90e24d9`). All
|
`1873b3f`, ESC accelerator + pause-modal gate `90e24d9`, HC
|
||||||
workspace tests pass (1243; check with `cargo test --workspace`),
|
marker for footer border `23902cd`, ← / → keyboard accelerators
|
||||||
clippy clean.
|
`e5c4f51`). Workspace tests: 1250 total / 1249 passing / 1
|
||||||
|
pre-existing time-dependent flake (clock-near-midnight; verified
|
||||||
|
not introduced by recent work). 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
|
||||||
@@ -385,25 +443,30 @@ DECISION TO ASK THE PLAYER FIRST:
|
|||||||
work. Three sub-pieces shipped in v0.21.4: WIN MOVE
|
work. Three sub-pieces shipped in v0.21.4: WIN MOVE
|
||||||
marker (data field + UI) and pause / step / Space
|
marker (data field + UI) and pause / step / Space
|
||||||
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: scrub
|
||||||
mark scrub notches shipped in `fe68861` (5 ticks at
|
notches `fe68861`, notch labels `d322abf` (banner
|
||||||
0/25/50/75/100 %); percentage labels under each notch
|
60 → 76 px), keybind-hint footer `1873b3f` (banner
|
||||||
shipped in `d322abf` (banner 60 → 76 px — first layout
|
76 → 92 px), ESC accelerator + cross-plugin gate
|
||||||
change); keybind-hint footer shipped in `1873b3f`
|
`90e24d9`, HC-mode coverage for the footer top border
|
||||||
(banner 76 → 92 px — vim-style mode line + `[SPACE]
|
`23902cd`, and ← / → keyboard accelerators for paused
|
||||||
pause/resume`); ESC accelerator wiring shipped in
|
stepping `e5c4f51` (hooks the game's undo system for
|
||||||
`90e24d9` (cross-plugin gate in `pause_plugin`; footer
|
backwards step; footer extended to
|
||||||
extended to `[SPACE] pause/resume · [ESC] stop`).
|
`[SPACE] pause/resume · [ESC] stop · [← →] step`).
|
||||||
Banner geometry is now mutable. Natural next finite
|
Keyboard accelerator coverage is complete. Natural next
|
||||||
steps:
|
finite steps:
|
||||||
1. **HC-mode coverage** for the new banner pieces
|
1. **Cut a v0.21.5 patch release** rolling up the six
|
||||||
(labels + footer texts use `TEXT_SECONDARY`; under
|
post-cut commits under "replay-overlay scrubbing
|
||||||
HC they should bump). Smallest next step.
|
affordances + accessibility." Coherent narrative;
|
||||||
2. **Wire ← / → for prev/next move.** Needs a
|
clean release boundary.
|
||||||
backwards-step path in `replay_playback` — either
|
2. **HC-mode coverage** for the scrub-track / notches /
|
||||||
replay-from-start or hook into the game's undo
|
WIN MOVE marker (render via `BackgroundColor` not
|
||||||
system. Medium-scope next-feature.
|
`BorderColor`, so `HighContrastBorder` doesn't apply
|
||||||
3. **Move-log scroller / mini-tableau preview** — both
|
— needs a settings-aware paint, precedent
|
||||||
|
`radial_rim_outline`). Small commit.
|
||||||
|
3. **Continuous scrub on key-held ← / →** instead of
|
||||||
|
single-step. Needs a key-held event source. Matches
|
||||||
|
the mockup's `[← →] scrub` terminology.
|
||||||
|
4. **Move-log scroller / mini-tableau preview** — both
|
||||||
need a much larger banner-height grow (effectively
|
need a much larger banner-height grow (effectively
|
||||||
the takeover container itself). Multi-session arcs
|
the takeover container itself). Multi-session arcs
|
||||||
that close B-2.
|
that close B-2.
|
||||||
|
|||||||
Reference in New Issue
Block a user