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]
|
## [Unreleased]
|
||||||
|
|
||||||
No threads in flight. v0.21.8 cut on 2026-05-08; CHANGELOG accumulates
|
**`a449f60`** — Stats overlay Prev/Next replay selector spawn site
|
||||||
the next cycle here.
|
(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
|
## [0.21.8] — 2026-05-08
|
||||||
|
|
||||||
|
|||||||
+38
-35
@@ -1,7 +1,8 @@
|
|||||||
# Solitaire Quest — Session Handoff
|
# Solitaire Quest — Session Handoff
|
||||||
|
|
||||||
**Last updated:** 2026-05-08 — **v0.21.8 cut and tagged at
|
**Last updated:** 2026-05-08 — **v0.21.8 tagged at `c50eaf8`**;
|
||||||
`c50eaf8`**, working tree clean (tag + push pending).
|
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
|
v0.21.8 closes the last optional polish items in the B-2
|
||||||
replay screen-takeover arc: **notch-label centering** (middle
|
replay screen-takeover arc: **notch-label centering** (middle
|
||||||
@@ -18,30 +19,31 @@ resume.
|
|||||||
|
|
||||||
## Status at pause
|
## Status at pause
|
||||||
|
|
||||||
- **HEAD locally:** `c50eaf8` (v0.21.8 commit). Docs ride on
|
- **HEAD locally:** `a449f60` (Stats Prev/Next selector spawn).
|
||||||
top; tag + push pending:
|
Docs ride on top; push pending:
|
||||||
`git tag v0.21.8 c50eaf8 && git push origin master && git push origin v0.21.8`.
|
`git push origin master && git push origin v0.21.8`.
|
||||||
- **HEAD on origin:** `52407e7` (v0.21.7 docs). v0.21.8 not
|
- **HEAD on origin:** `52407e7` (v0.21.7 docs). v0.21.8 and
|
||||||
yet pushed.
|
v0.21.9 not yet pushed.
|
||||||
- **Working tree:** clean. No WIP outstanding.
|
- **Working tree:** clean (docs uncommitted). No WIP outstanding.
|
||||||
- **`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:** **1276 passing / 0 failing** across the workspace.
|
- **Tests:** **1282 passing / 0 failing** across the workspace.
|
||||||
Detail in `CHANGELOG.md` § [0.21.8] § Stats.
|
Detail in `CHANGELOG.md` § [0.21.9] § Stats.
|
||||||
- **Tags on origin:** `v0.9.0` through `v0.21.7`. v0.21.8
|
- **Tags on origin:** `v0.9.0` through `v0.21.7`. v0.21.8 tag
|
||||||
tag exists locally at `c50eaf8`; push to origin.
|
exists locally at `c50eaf8`; push when pushing master.
|
||||||
|
|
||||||
## Since the v0.21.8 cut
|
## Since the v0.21.8 cut
|
||||||
|
|
||||||
Two commits since the v0.21.7 tag (not yet pushed):
|
One commit since the v0.21.8 tag (not yet pushed):
|
||||||
- `b44d277` — notch-label centering fix
|
- `a449f60` — Stats Prev/Next selector spawn site (closes
|
||||||
- `c50eaf8` — WIN MOVE HC bump + HC system extension
|
punch-list item "Prev/Next selector chips spawn site" from
|
||||||
|
v0.19.0's `9b065e5`)
|
||||||
|
|
||||||
CHANGELOG + SESSION_HANDOFF docs ride on top.
|
CHANGELOG + SESSION_HANDOFF docs ride on top.
|
||||||
|
|
||||||
Open next-step menu (B-2 arc fully closed, no replay polish
|
Open next-step menu (B-2 arc fully closed, Prev/Next selector
|
||||||
items remain):
|
spawn site closed; no known open UI items):
|
||||||
1. **APK launch verification on AVD / device** — see Phase
|
1. **APK launch verification on AVD / device** — see Phase
|
||||||
Android punch list in this file.
|
Android punch list in this file.
|
||||||
2. **Phase 8 (sync)** — the biggest open arc. Local storage
|
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
|
### Other small candidates
|
||||||
|
|
||||||
- **Prev/Next selector chips spawn site.** v0.19.0's `9b065e5`
|
- *Prev/Next selector chips spawn site — closed 2026-05-08 by
|
||||||
noted Prev/Next markers exist in `stats_plugin` but no spawn
|
`a449f60`.* `ReplayPrevButton` / `ReplayNextButton` /
|
||||||
site renders them today — the Shareable badge therefore lands
|
`ReplaySelectorCaption` / `ReplaySelectorDetail` now spawn in
|
||||||
on the single-replay caption. If/when Prev/Next is plumbed,
|
`spawn_stats_screen` as a compact chip row above the Watch
|
||||||
the badge will need to follow.
|
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
|
- **Toast queue / immediate unification.** The two toast paths
|
||||||
(`spawn_queued_toast` for `InfoToastEvent` queue; `spawn_toast`
|
(`spawn_queued_toast` for `InfoToastEvent` queue; `spawn_toast`
|
||||||
for fire-and-forget) now share visual treatment but remain
|
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.
|
You are a senior Rust + Bevy developer working on Solitaire Quest.
|
||||||
Working directory: <Rusty_Solitaire clone path on this machine>.
|
Working directory: <Rusty_Solitaire clone path on this machine>.
|
||||||
Branch: master. v0.21.8 is tagged at c50eaf8 (cut 2026-05-08,
|
Branch: master. v0.21.8 is tagged at c50eaf8 (cut 2026-05-08,
|
||||||
replay-overlay polish: scrub-bar notch-label centering + WIN
|
replay-overlay polish). One post-cut commit a449f60 is on master:
|
||||||
MOVE HC legibility bump via extended HighContrastBackground::
|
Stats Prev/Next replay selector spawn site (closes the v0.19.0
|
||||||
with_hc + new STATE_SUCCESS_HC constant). v0.21.7 stays at
|
punch-list item). v0.21.7 stays at da3e542, v0.21.6 at f63db76,
|
||||||
da3e542, v0.21.6 at f63db76, v0.21.5 at a2432df, v0.21.4 at
|
v0.21.5 at a2432df, v0.21.4 at 23ff62c, v0.21.3 at 3d92a91,
|
||||||
23ff62c, v0.21.3 at 3d92a91, v0.21.2 at f23df3b, v0.21.1 at
|
v0.21.2 at f23df3b, v0.21.1 at daa655a, v0.21.0 at 04f9bf9.
|
||||||
daa655a, v0.21.0 at 04f9bf9. Working tree clean (CHANGELOG +
|
Working tree: uncommitted CHANGELOG + SESSION_HANDOFF docs; push
|
||||||
SESSION_HANDOFF docs ride on top; push pending).
|
pending (master + v0.21.8 tag). See CHANGELOG.md § [0.21.9] for
|
||||||
See CHANGELOG.md § [0.21.8] for full detail.
|
full detail.
|
||||||
|
|
||||||
State: HEAD locally — see `git rev-parse HEAD`. Workspace
|
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):
|
READ FIRST (in order, before doing anything):
|
||||||
1. SESSION_HANDOFF.md — this file
|
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
|
and Android Keystore stubs that need real bridges. Larger
|
||||||
scope; needs an Android device or emulator running.
|
scope; needs an Android device or emulator running.
|
||||||
B. Replay-overlay arc — **fully closed** as of v0.21.8 (15
|
B. Replay-overlay arc — **fully closed** as of v0.21.8 (15
|
||||||
commits across v0.21.4–v0.21.8). Notch-label centering,
|
commits across v0.21.4–v0.21.8). Stats Prev/Next selector
|
||||||
WIN MOVE HC legibility, and the HighContrastBackground
|
spawn site closed by `a449f60` (post-v0.21.8). No known
|
||||||
extension all shipped. No known replay-overlay items
|
UI punch-list items remain open.
|
||||||
remain open.
|
|
||||||
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
|
||||||
wired into Settings. The biggest open arc by scope; rolls
|
wired into Settings. The biggest open arc by scope; rolls
|
||||||
|
|||||||
Reference in New Issue
Block a user