docs(handoff): cut v0.21.8 — replay arc fully closed; 1276 tests

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
funman300
2026-05-08 18:20:24 -07:00
parent c50eaf81f7
commit ad5f613277
2 changed files with 99 additions and 64 deletions
+49 -1
View File
@@ -6,9 +6,57 @@ project follows [Semantic Versioning](https://semver.org/).
## [Unreleased] ## [Unreleased]
No threads in flight. v0.21.7 cut on 2026-05-08; CHANGELOG accumulates No threads in flight. v0.21.8 cut on 2026-05-08; CHANGELOG accumulates
the next cycle here. the next cycle here.
## [0.21.8] — 2026-05-08
Patch release for replay-overlay polish. Through-line:
**notch-label centering + WIN MOVE HC legibility + HC system extension**.
All three items were "optional polish" flagged in the v0.21.7 handoff;
all three ship in two commits.
### Added
- **`STATE_SUCCESS_HC` constant** (`c50eaf8`). Brighter lime
(`#c8e862`, L≈0.73) in `ui_theme` for use wherever the
standard `STATE_SUCCESS` (`#acc267`, L≈0.51) needs extra
luminance under HC mode. Sits above the bumped notch ticks
(`BORDER_SUBTLE_HC` gray, L≈0.60) so a WIN MOVE marker at
this colour is unambiguous.
- **`HighContrastBackground::with_hc(default, hc)` constructor**
(`c50eaf8`). Extends `HighContrastBackground` with an
`hc_color: Color` field (default = `BORDER_SUBTLE_HC` via
`with_default()`). `update_high_contrast_backgrounds` now
reads `marker.hc_color` instead of the hardcoded constant —
backwards-compatible; all existing `with_default()` usages
continue to bump to gray.
- **WIN MOVE scrub-bar marker HC bump** (`c50eaf8`). Marker
now carries `HighContrastBackground::with_hc(STATE_SUCCESS,
STATE_SUCCESS_HC)` so the lime stays lime under HC (brighter
lime rather than gray). Pin test locks both the default and
HC colour fields on the spawned entity.
### Fixed
- **Scrub-bar notch-label centering** (`b44d277`). Middle
three labels ("25%", "50%", "75%") previously had their
left edge at the notch; now their text centre coincides
with the notch tick. Implemented using the CSS
`translateX(-50%)` pattern for Bevy 0.18 UI: a fixed
`SCRUB_LABEL_CENTER_WIDTH = 36 px` container with
`margin.left = -18 px` is placed at `left: Percent(pct)`,
and `Justify::Center` centres the text within it. Endpoint
labels ("0%", "100%") keep their flush-left / flush-right
anchoring. `with_default()` remains one-argument.
### Stats
- Tests: 1276 passing / 0 failing (engine: 831)
- Clippy: clean
- Crates touched: `solitaire_engine` (replay_overlay.rs,
ui_theme.rs, settings_plugin.rs)
## [0.21.7] — 2026-05-08 ## [0.21.7] — 2026-05-08
Patch release closing the last major B-2 sub-piece. Through-line: Patch release closing the last major B-2 sub-piece. Through-line:
+50 -63
View File
@@ -1,66 +1,57 @@
# Solitaire Quest — Session Handoff # Solitaire Quest — Session Handoff
**Last updated:** 2026-05-08 — **v0.21.7 cut and tagged at **Last updated:** 2026-05-08 — **v0.21.8 cut and tagged at
`da3e542`**, working tree clean (tag pending push). `c50eaf8`**, working tree clean (tag + push pending).
v0.21.7 is a single-commit patch closing the last major B-2 v0.21.8 closes the last optional polish items in the B-2
sub-piece: **mini-tableau preview dim layer**. A full-screen replay screen-takeover arc: **notch-label centering** (middle
`ReplayTableauDimLayer` UI node (100 % × 100 %, 50 % opacity three scrub-bar labels now centred on their notch ticks via the
black) at `Z_REPLAY_DIM = 54` (one rung below the replay CSS `translateX(-50%)` pattern for Bevy 0.18 UI) and **WIN
chrome at z=55) darkens the card world during replay so the MOVE HC legibility** (lime stays lime under HC mode via the
banner and move-log panel read clearly against the scene — extended `HighContrastBackground::with_hc` constructor and a
matching the mockup's "Game Peek Band at 50 % opacity" spec new `STATE_SUCCESS_HC` brighter-lime constant). The replay
without touching `card_plugin`. 13 commits have now shipped overlay arc is now fully closed with no known open items.
across v0.21.4v0.21.7 on the B-2 replay screen-takeover
arc; every major sub-piece is closed.
Full v0.21.7 detail lives in `CHANGELOG.md` § [0.21.7]. This Full v0.21.8 detail lives in `CHANGELOG.md` § [0.21.8]. This
file from here on focuses on what's *open* post-cut and how to file from here on focuses on what's *open* post-cut and how to
resume. resume.
## Status at pause ## Status at pause
- **HEAD locally:** `da3e542` (v0.21.7 commit). Tag pending — - **HEAD locally:** `c50eaf8` (v0.21.8 commit). Docs ride on
push with `git tag v0.21.7 da3e542 && git push origin v0.21.7`. top; tag + push pending:
- **HEAD on origin:** `f63db76` (v0.21.6). v0.21.7 commit `git tag v0.21.8 c50eaf8 && git push origin master && git push origin v0.21.8`.
not pushed yet; a docs-only edit will ride on top before push. - **HEAD on origin:** `52407e7` (v0.21.7 docs). v0.21.8 not
yet pushed.
- **Working tree:** clean. No WIP outstanding. - **Working tree:** clean. 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:** **1275 passing / 0 failing** across the workspace. - **Tests:** **1276 passing / 0 failing** across the workspace.
Detail in `CHANGELOG.md` § [0.21.7] § Stats. Detail in `CHANGELOG.md` § [0.21.8] § Stats.
- **Tags on origin:** `v0.9.0` through `v0.21.6`. v0.21.7 - **Tags on origin:** `v0.9.0` through `v0.21.7`. v0.21.8
tag exists locally at `da3e542`; push to origin when ready. tag exists locally at `c50eaf8`; push to origin.
## Since the v0.21.7 cut ## Since the v0.21.8 cut
One commit in flight (not yet pushed to origin): `da3e542` Two commits since the v0.21.7 tag (not yet pushed):
adds the full-screen tableau dim layer. CHANGELOG and - `b44d277` — notch-label centering fix
SESSION_HANDOFF updates ride on top. Push with: - `c50eaf8` — WIN MOVE HC bump + HC system extension
```
git push origin master
git push origin v0.21.7
```
Open next-step menu (all major B-2 sub-pieces now closed): CHANGELOG + SESSION_HANDOFF docs ride on top.
1. **Polish: notch label centering.** Bevy 0.18 lacks a
clean `translate-x: -50%` primitive so the middle three
scrub-bar labels sit slightly right-of-notch. Could use a
child Text wrapper with computed left-margin compensation.
Tiny commit, requires visual review.
2. **Polish: WIN MOVE marker HC bump.** Currently uses
`STATE_SUCCESS` lime which stays visible under HC, but a
contrast bump under HC would make it even more legible
alongside the bumped notches. Optional.
3. **Move Log auto-scroll** — only relevant if the panel's
row count grows beyond the current 5-row fixed window.
Currently the prev-2 / active / next-2 layout fits all
visible content, so auto-scroll is unneeded.
Recommended order: options 1 and 2 are tiny polish commits Open next-step menu (B-2 arc fully closed, no replay polish
that benefit from visual review. Option 3 is a non-starter items remain):
unless the panel's row capacity grows. 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
scaffolding, self-hosted Axum server, GPGS stub.
3. **Move Log auto-scroll** — only relevant if the panel
row count grows beyond the current 5-row fixed window;
non-starter until then.
Recommended order: resume with A or C from the DECISION menu
in the resume prompt below.
## Open punch list ## Open punch list
@@ -246,18 +237,18 @@ 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.7 is tagged at da3e542 (cut 2026-05-08, Branch: master. v0.21.8 is tagged at c50eaf8 (cut 2026-05-08,
closes the last major B-2 sub-piece: full-screen tableau dim replay-overlay polish: scrub-bar notch-label centering + WIN
layer — 50 % opacity black UI scrim at z=54 that darkens the MOVE HC legibility bump via extended HighContrastBackground::
card world during replay so the chrome reads clearly above it). with_hc + new STATE_SUCCESS_HC constant). v0.21.7 stays at
v0.21.6 stays at f63db76, v0.21.5 at a2432df, v0.21.4 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 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 + daa655a, v0.21.0 at 04f9bf9. Working tree clean (CHANGELOG +
SESSION_HANDOFF docs ride on top of da3e542; push pending). SESSION_HANDOFF docs ride on top; push pending).
See CHANGELOG.md § [0.21.7] for full detail. See CHANGELOG.md § [0.21.8] for full detail.
State: HEAD locally — see `git rev-parse HEAD`. Workspace State: HEAD locally — see `git rev-parse HEAD`. Workspace
tests: 1275 passing / 0 failing. Clippy clean. tests: 1276 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
@@ -281,15 +272,11 @@ DECISION TO ASK THE PLAYER FIRST:
tests can't catch. Likely surfaces JNI ClipboardManager tests can't catch. Likely surfaces JNI ClipboardManager
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 polish (B-2 arc fully closed in v0.21.7). B. Replay-overlay arc — **fully closed** as of v0.21.8 (15
All 13 planned sub-pieces shipped. Remaining items are commits across v0.21.4v0.21.8). Notch-label centering,
minor polish: (a) scrub-bar notch-label centering — middle WIN MOVE HC legibility, and the HighContrastBackground
three labels sit slightly right-of-notch due to Bevy 0.18 extension all shipped. No known replay-overlay items
lacking `translate-x: -50%`; tiny commit, needs visual remain open.
review. (b) WIN MOVE marker HC contrast bump — optional
luminance boost under HC mode. Both are single commits
requiring visual review; recommend treating as a v0.21.8
polish pass after manual testing.
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