docs(handoff): record Stats selector spawn; 1282 tests; next is A or C
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+45
-2
@@ -6,8 +6,51 @@ project follows [Semantic Versioning](https://semver.org/).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
No threads in flight. v0.21.8 cut on 2026-05-08; CHANGELOG accumulates
|
||||
the next cycle here.
|
||||
**`a449f60`** — Stats overlay Prev/Next replay selector spawn site
|
||||
(2026-05-08). See [0.21.9] for the committed detail once cut.
|
||||
|
||||
## [0.21.9] — pending cut
|
||||
|
||||
Closes the "Prev/Next selector chips spawn site" punch-list item from
|
||||
v0.19.0.
|
||||
|
||||
### Added
|
||||
|
||||
- **Prev/Next replay selector in the Stats overlay** (`a449f60`).
|
||||
`ReplayPrevButton`, `ReplayNextButton`, `ReplaySelectorCaption`, and
|
||||
`ReplaySelectorDetail` nodes now spawn inside `spawn_stats_screen`
|
||||
as a flex row of two bordered chips flanking a `"Replay N / M"`
|
||||
caption, with a detail line below showing the selected replay's
|
||||
duration + date and an optional `"· Shareable"` badge. Both chips
|
||||
carry `ModalButton(Secondary)` so the existing `repaint_modal_buttons`
|
||||
paint loop gives them hover/press feedback at zero extra cost.
|
||||
`repaint_replay_selector_detail` is wired into the existing
|
||||
`.chain()` alongside `handle_replay_selector_buttons` and
|
||||
`repaint_replay_selector_caption`. The click handler and repaint
|
||||
systems have been registered (and dormant) since v0.19.0; this
|
||||
commit is purely the missing spawn site.
|
||||
- **6 new selector unit tests** (`a449f60`). Covers: spawn-site
|
||||
presence (Prev, Next, Caption, Detail all spawn with the screen),
|
||||
caption initial text ("Replay 1 / 1"), detail initial text
|
||||
("{dur} win on {date}"), Shareable badge when `share_url` is set,
|
||||
empty-history "No replays" caption, and ordinal wrapping.
|
||||
`make_test_replay(time_seconds, share_url)` helper encapsulates
|
||||
`Replay::new(...)` + `chrono::NaiveDate`.
|
||||
|
||||
### Fixed
|
||||
|
||||
- **`const { assert!() }` for dim-layer z-order test** (`a449f60`).
|
||||
Converted `assert!(Z_REPLAY_DIM < Z_REPLAY_OVERLAY, …)` in
|
||||
`replay_overlay` tests to `const { assert!(…) }` to satisfy
|
||||
`clippy::assertions_on_constants` (constant-fold at compile time
|
||||
rather than a runtime no-op).
|
||||
|
||||
### Stats
|
||||
|
||||
- Tests: 1282 passing / 0 failing (was 1276; +6 selector tests)
|
||||
- Clippy: clean
|
||||
- Crates touched: `solitaire_engine` (stats_plugin.rs,
|
||||
replay_overlay.rs)
|
||||
|
||||
## [0.21.8] — 2026-05-08
|
||||
|
||||
|
||||
+38
-35
@@ -1,7 +1,8 @@
|
||||
# Solitaire Quest — Session Handoff
|
||||
|
||||
**Last updated:** 2026-05-08 — **v0.21.8 cut and tagged at
|
||||
`c50eaf8`**, working tree clean (tag + push pending).
|
||||
**Last updated:** 2026-05-08 — **v0.21.8 tagged at `c50eaf8`**;
|
||||
one post-cut commit `a449f60` (Stats Prev/Next selector spawn site)
|
||||
is on master, uncommitted docs ride on top, push pending.
|
||||
|
||||
v0.21.8 closes the last optional polish items in the B-2
|
||||
replay screen-takeover arc: **notch-label centering** (middle
|
||||
@@ -18,30 +19,31 @@ resume.
|
||||
|
||||
## Status at pause
|
||||
|
||||
- **HEAD locally:** `c50eaf8` (v0.21.8 commit). Docs ride on
|
||||
top; tag + push pending:
|
||||
`git tag v0.21.8 c50eaf8 && git push origin master && git push origin v0.21.8`.
|
||||
- **HEAD on origin:** `52407e7` (v0.21.7 docs). v0.21.8 not
|
||||
yet pushed.
|
||||
- **Working tree:** clean. No WIP outstanding.
|
||||
- **HEAD locally:** `a449f60` (Stats Prev/Next selector spawn).
|
||||
Docs ride on top; push pending:
|
||||
`git push origin master && git push origin v0.21.8`.
|
||||
- **HEAD on origin:** `52407e7` (v0.21.7 docs). v0.21.8 and
|
||||
v0.21.9 not yet pushed.
|
||||
- **Working tree:** clean (docs uncommitted). No WIP outstanding.
|
||||
- **`artwork/` directory:** still untracked. Intentional.
|
||||
- **Build:** `cargo clippy --workspace --all-targets -- -D warnings`
|
||||
clean.
|
||||
- **Tests:** **1276 passing / 0 failing** across the workspace.
|
||||
Detail in `CHANGELOG.md` § [0.21.8] § Stats.
|
||||
- **Tags on origin:** `v0.9.0` through `v0.21.7`. v0.21.8
|
||||
tag exists locally at `c50eaf8`; push to origin.
|
||||
- **Tests:** **1282 passing / 0 failing** across the workspace.
|
||||
Detail in `CHANGELOG.md` § [0.21.9] § Stats.
|
||||
- **Tags on origin:** `v0.9.0` through `v0.21.7`. v0.21.8 tag
|
||||
exists locally at `c50eaf8`; push when pushing master.
|
||||
|
||||
## Since the v0.21.8 cut
|
||||
|
||||
Two commits since the v0.21.7 tag (not yet pushed):
|
||||
- `b44d277` — notch-label centering fix
|
||||
- `c50eaf8` — WIN MOVE HC bump + HC system extension
|
||||
One commit since the v0.21.8 tag (not yet pushed):
|
||||
- `a449f60` — Stats Prev/Next selector spawn site (closes
|
||||
punch-list item "Prev/Next selector chips spawn site" from
|
||||
v0.19.0's `9b065e5`)
|
||||
|
||||
CHANGELOG + SESSION_HANDOFF docs ride on top.
|
||||
|
||||
Open next-step menu (B-2 arc fully closed, no replay polish
|
||||
items remain):
|
||||
Open next-step menu (B-2 arc fully closed, Prev/Next selector
|
||||
spawn site closed; no known open UI items):
|
||||
1. **APK launch verification on AVD / device** — see Phase
|
||||
Android punch list in this file.
|
||||
2. **Phase 8 (sync)** — the biggest open arc. Local storage
|
||||
@@ -149,11 +151,13 @@ palette refresh all shipped in v0.20.0 + v0.21.0. What stays open:
|
||||
|
||||
### Other small candidates
|
||||
|
||||
- **Prev/Next selector chips spawn site.** v0.19.0's `9b065e5`
|
||||
noted Prev/Next markers exist in `stats_plugin` but no spawn
|
||||
site renders them today — the Shareable badge therefore lands
|
||||
on the single-replay caption. If/when Prev/Next is plumbed,
|
||||
the badge will need to follow.
|
||||
- *Prev/Next selector chips spawn site — closed 2026-05-08 by
|
||||
`a449f60`.* `ReplayPrevButton` / `ReplayNextButton` /
|
||||
`ReplaySelectorCaption` / `ReplaySelectorDetail` now spawn in
|
||||
`spawn_stats_screen` as a compact chip row above the Watch
|
||||
Replay action. The Shareable badge is in the detail line.
|
||||
The click handler and repaint systems were already live since
|
||||
v0.19.0; this was purely the missing spawn site.
|
||||
- **Toast queue / immediate unification.** The two toast paths
|
||||
(`spawn_queued_toast` for `InfoToastEvent` queue; `spawn_toast`
|
||||
for fire-and-forget) now share visual treatment but remain
|
||||
@@ -238,17 +242,17 @@ into a v0.21.1 / v0.22.0 cut.
|
||||
You are a senior Rust + Bevy developer working on Solitaire Quest.
|
||||
Working directory: <Rusty_Solitaire clone path on this machine>.
|
||||
Branch: master. v0.21.8 is tagged at c50eaf8 (cut 2026-05-08,
|
||||
replay-overlay polish: scrub-bar notch-label centering + WIN
|
||||
MOVE HC legibility bump via extended HighContrastBackground::
|
||||
with_hc + new STATE_SUCCESS_HC constant). v0.21.7 stays at
|
||||
da3e542, v0.21.6 at f63db76, v0.21.5 at a2432df, v0.21.4 at
|
||||
23ff62c, v0.21.3 at 3d92a91, v0.21.2 at f23df3b, v0.21.1 at
|
||||
daa655a, v0.21.0 at 04f9bf9. Working tree clean (CHANGELOG +
|
||||
SESSION_HANDOFF docs ride on top; push pending).
|
||||
See CHANGELOG.md § [0.21.8] for full detail.
|
||||
replay-overlay polish). One post-cut commit a449f60 is on master:
|
||||
Stats Prev/Next replay selector spawn site (closes the v0.19.0
|
||||
punch-list item). v0.21.7 stays at da3e542, v0.21.6 at f63db76,
|
||||
v0.21.5 at a2432df, v0.21.4 at 23ff62c, v0.21.3 at 3d92a91,
|
||||
v0.21.2 at f23df3b, v0.21.1 at daa655a, v0.21.0 at 04f9bf9.
|
||||
Working tree: uncommitted CHANGELOG + SESSION_HANDOFF docs; push
|
||||
pending (master + v0.21.8 tag). See CHANGELOG.md § [0.21.9] for
|
||||
full detail.
|
||||
|
||||
State: HEAD locally — see `git rev-parse HEAD`. Workspace
|
||||
tests: 1276 passing / 0 failing. Clippy clean.
|
||||
tests: 1282 passing / 0 failing. Clippy clean.
|
||||
|
||||
READ FIRST (in order, before doing anything):
|
||||
1. SESSION_HANDOFF.md — this file
|
||||
@@ -273,10 +277,9 @@ DECISION TO ASK THE PLAYER FIRST:
|
||||
and Android Keystore stubs that need real bridges. Larger
|
||||
scope; needs an Android device or emulator running.
|
||||
B. Replay-overlay arc — **fully closed** as of v0.21.8 (15
|
||||
commits across v0.21.4–v0.21.8). Notch-label centering,
|
||||
WIN MOVE HC legibility, and the HighContrastBackground
|
||||
extension all shipped. No known replay-overlay items
|
||||
remain open.
|
||||
commits across v0.21.4–v0.21.8). Stats Prev/Next selector
|
||||
spawn site closed by `a449f60` (post-v0.21.8). No known
|
||||
UI punch-list items remain open.
|
||||
C. Phase 8 (sync) — local storage scaffolding, self-hosted
|
||||
Axum server, `SolitaireServerClient` impl, GPGS stub
|
||||
wired into Settings. The biggest open arc by scope; rolls
|
||||
|
||||
Reference in New Issue
Block a user