Mirrors the post-v0.21.0 → v0.21.1 → v0.21.2 cut-then-refresh
pattern. Cut commit (f23df3b) edited only CHANGELOG; this
follow-up resets the handoff so a fresh session picks up cleanly
post-v0.21.2.
Updated:
- Header points to v0.21.2 at f23df3b; opening paragraph
summarizes the patch's three threads (accessibility
extensions, replay polish, first real Toast Error consumer).
- Status at pause: tests bumped to 1195 (net +3 from v0.21.1's
1192); tags list extended through v0.21.2.
- "Since the v0.21.1 cut" → "Since the v0.21.2 cut" with the
closure narratives dropped (now in CHANGELOG.md § [0.21.2]).
Section reset to "no threads in flight" placeholder.
- Visual-identity follow-ups: marked floating MOVE chip closed
by v0.21.2 (`2fb2d63`), Toast Error closed by v0.21.2
(`68d50b5`); HC + reduce-motion entries updated to reflect
v0.21.2's HC chrome rollout (8 surfaces) and splash
reduce-motion gating. Toast Warning still open with a
candidate driver suggestion (daily-challenge expiry).
- Resume prompt menu retuned: A (Android) and D (Phase 8)
unchanged; B narrowed to just the screen-takeover redesign
(the floating chip piece shipped); C narrowed to just
Warning variant (Error done); new E added for
HC+reduce-motion on dynamic-paint sites (HUD action buttons,
etc — explicitly carved out of the v0.21.2 HC rollout
because of paint-cycle races).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Mirrors the post-v0.20.0 → v0.21.0 → v0.21.1 cut-then-refresh
pattern. Cut commit (daa655a) edited only CHANGELOG; this
follow-up resets the handoff so a fresh session picks up cleanly
post-v0.21.1.
Updated:
- Last-updated header points to v0.21.1 at daa655a; opening
paragraph summarizes the patch's three threads (icon,
accessibility, card-visual iteration with two bug fixes).
- Status at pause: tests bumped to 1192 (net +8 from
v0.21.0's 1184); tags list extended through v0.21.1.
- "Since the v0.21.0 cut" → "Since the v0.21.1 cut" with the
closure narratives dropped (now in CHANGELOG.md § [0.21.1]).
Section reset to "no threads in flight" placeholder so
future post-cut work has a clean starting point.
- Resume prompt menu trimmed: A and F closure entries dropped
(preserved in CHANGELOG); remaining options renumbered A-E
with the v0.21.1 closure callouts inline. New option E
added: "extend HC through chrome borders + reduce-motion to
splash/warning-chip" — both small finite items that v0.21.1
flagged as future scope.
- Workflow notes gain the doc-vs-implementation-drift pattern
observation from the pile-marker fix: when a module's
top-level doc comment claims "X happens" but no code enforces
it, the gap is invisible until a player notices the missing
behaviour. Worth checking such claims and adding tests.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Two post-v0.21.0 options closed today; "Since the v0.21.0 cut"
section now narrates both:
- A — App icon (`3eb3a26` + `716a025`). Runtime Window::icon
wired via WinitWindows on desktop, 9-size PNG hierarchy at
assets/icon/. The follow-up `716a025` wraps NonSend in
Option<...> to satisfy Bevy 0.18's stricter system-param
validation.
- F — Accessibility modes (`c5787c6` + `07e0357`). High-
contrast and reduce-motion settings flags + Settings UI
toggles + engine wiring. CBM and HC compose; reduce-motion
forces card slide_secs to 0.
Open punch list refreshed:
- Visual-identity follow-ups: HC and reduce-motion entries
marked closed with future-scope notes (HC chrome borders,
reduce-motion splash gating).
- Carried forward from v0.19.0: App icon entry marked closed
with future-scope note for .ico/.icns bundle formats (need
new deps + matter only at packaging time).
Resume prompt menu trimmed: A and F decision options now
marked closed inline (preserved for audit-trail readability).
B, C, D, E remain live.
No runtime / test changes — pure docs hygiene to keep the
handoff orientation accurate as work flows.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Mirrors the v0.20.0 → post-cut refresh pattern (commit a65e5b8):
the cut commit (04f9bf9) only edits CHANGELOG.md; this follow-up
resets the handoff so it serves a fresh session cleanly rather
than carrying forward the v0.20.0-era narrative as cruft.
Removed (now redundant with CHANGELOG.md § [0.21.0]):
- The full "Since the v0.20.0 cut (un-pushed)" section — ~300
lines of per-commit narratives for the post-tag work.
- The "What shipped in v0.20.0 (frozen at 41a009a)" section —
v0.20.0 detail lives in CHANGELOG.md § [0.20.0].
Replaced with:
- Short header pointing to CHANGELOG.md § [0.21.0] for cycle
detail.
- "Since the v0.21.0 cut" placeholder ("No threads in flight").
Refreshed:
- Status at pause: HEAD on origin matches local; latest tag
v0.21.0 at 04f9bf9; tests 1184; references to v0.20.0
baseline preserved as audit trail.
- Visual-identity follow-ups: dropped the closed entries
(card-face arc, splash polish, replay banner pieces). Added
what's still open: replay screen-takeover redesign, floating
MOVE chip above focused card, toast Warning/Error wiring,
high-contrast accessibility, reduced-motion accessibility.
- Canonical remote: dropped the "unpushed commits" warning
since origin is caught up.
- Design direction palette: brick-red primary instead of cyan,
red→lime CBM swap instead of red→cyan, glyph orientation
upright. v0.21.0 source commits cited.
- Resume prompt: rebased to v0.21.0 anchor. Decision options
rewritten — closed B/C/D dropped; live A/E/F renumbered into
fresh A/B/C plus three new candidates (Toast variants, Phase
8 sync, accessibility modes). Workflow notes gain the
token-port-pattern lesson from v0.21.0's three "fallback path
the migration walked past" follow-ups.
Net diff: −513 / +117 lines; file shrinks from 668 to 272.
v0.20.0 historical context preserved in CHANGELOG.md.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Updates SESSION_HANDOFF.md to reflect the post-2026-05-08 state:
- "Last updated" + status header rewritten — origin caught up
to local through dd101b3, 1184 tests passing (net +4 from
the 1180 baseline: splash polish +2, card-face pin +1, CBM
test consolidation -2 then +1).
- New narrative entry under "Since the v0.20.0 cut" walks
through the 9-commit Option D arc: plan + tooling
(5623368/3a4bb63/babe5cc/48b28d2), lockstep step 4+5
(e8bf9d7), the three sign-off follow-ups (a14200a default-
theme SVG override, 8719f77 backgrounds flattened, ae84dc1
top-bar overlap), the path-glyph fix (af414b6), and the
glyph-orientation tweak (dd101b3).
- "Visual-identity follow-ups" punch-list: card-face item
marked closed with the same commit chain referenced from
the narrative.
- Resume prompt header rewritten — Options B/C/D all closed,
the post-tag work is fully on origin. Option D's bullet
expanded to record the closure rather than describe pending
work.
- The "fallback path the migration walked past" pattern is
documented explicitly so a future session can pattern-match
on it (token migrations need a checklist of every concrete
artifact downstream of the tokens, not just the tokens
themselves).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Bookkeeping pass after 29136d8 (cursor pulse) and a27cf5a (scanline
overlay) shipped — both halves of the splash polish arc deferred in
cacb19c are now done.
Changes:
- "Since the v0.20.0 cut": added per-commit narratives for 29136d8
and a27cf5a with the implementation notes worth preserving past
the commit log:
- The "multiply, don't override" pattern that resolved the
cursor-pulse / fade-timeline conflict (and generalises to any
two ECS systems writing the same per-frame component).
- The texture-α × tint-α GPU-composite trick that integrates the
scanline with the fade without a new "multiplicative fadable"
abstraction.
- Two Bevy 0.18 API surprises (RenderAssetUsages module move;
pixel_size() returning Result) — pinned for next time we touch
runtime-generated images.
- The defensive period <= 0.0 guard on cursor_pulse_factor — a
cheap NaN-prevention pattern worth mirroring on every trig
helper.
- "Open punch list" → "Visual-identity follow-ups": collapsed the
two splash-polish bullets into closed pointers.
- Resume prompt → Option B: marked closed with "no further splash
work pending unless a new mockup detail surfaces" so a future
session knows it's a finished arc, not an in-flight one.
Three options now closed (A, B, C); D / E / F remain — all three
have a real blocker (D = multi-session, E = artwork PNGs missing,
F = Android hardware/AVD) so the next session starts with a
genuine commitment-vs-blocker decision rather than picking the
smallest piece.
Bookkeeping pass after 54005d5 (GAME #YYYY-DDD caption) and e080b49
(MOVE N/M chip restyle) shipped — both pieces of the Option C
banner-local enrichments arc are now done.
Changes:
- "Since the v0.20.0 cut": added per-commit narratives for 54005d5
and e080b49 with the implementation notes worth preserving past
the commit log (the BANNER_HEIGHT 48→60 bump rationale, the Bevy
0.18 BorderColor::all() correction, the "marker on the leaf, not
the wrapper" ECS-design choice).
- "Open punch list" → "Replay-overlay enrichments beyond the scrub
bar": pivoted from "tractable banner additions still open" to
"all banner-local pieces shipped; remaining are cross-plugin or
multi-session". Reflects current state without erasing the
forward-looking work.
- Resume prompt → Option C: marked closed with a forward pointer to
the cross-plugin/multi-session items that should get their own
decision tree next time.
- Resume prompt → test count: dropped the hardcoded "1180 tests
pass" (already stale at 1182) for "~1180+; check with
`cargo test --workspace`" — same dynamic-reference pattern as
44f5972's commit-count fix, applied to the next aggregate that
was vulnerable to it.
The "4 commits ahead" / explicit-HEAD-SHA lines in SESSION_HANDOFF.md
were stale the moment 13ae160 (the prior touch-up commit) landed —
docs that count themselves are a recursion trap. Replaced four sites
with pointers to `git log --oneline origin/master..HEAD` and
`git rev-parse HEAD` so future docs-only edits don't immediately
stale the handoff.
Sites updated:
- "Last updated:" preamble.
- "Status at pause" → HEAD locally + ahead-count bullets.
- "Canonical remote" → push reminder.
- Resume prompt → branch state.
The narrative entries under "Since the v0.20.0 cut" still name SHAs
explicitly because those *are* the per-commit anchors readers grep
against; only the rolling totals were brittle.
Pure docs; no code changes, no test impact.
Three small clarity touch-ups to SESSION_HANDOFF.md so a future-session
reader doesn't have to reconstruct intent from git log alone:
- The c84d9f4 narrative listed "header text treatment" as still open;
6204db8 closed it the same session. Added a parenthetical pointer.
- The cacb19c "Skipped" sub-section now cross-links each item to its
follow-up status in the punch list (scanline + cursor pulse → still
open; "RUSTY SOLITAIRE" wordmark → closed, the in-engine wordmark
stays "Solitaire Quest").
- 6204db8 adopted "▌ replay" instead of the mockup's literal
"▌replay.tsx" — the .tsx was a Stitch/React prototyping leak.
Documented the deviation alongside the existing RUSTY SOLITAIRE
precedent so the in-engine string isn't second-guessed later.
Pure docs; no code changes, no test impact.
The prior handoff (f2d2119) was written when [Unreleased] was
accumulating v0.20 candidates. v0.20.0 is now cut at 41a009a and
tagged; four post-cut commits sit on top locally — 39b8496
desktop-adaptation spec, cacb19c splash boot-screen port, c84d9f4
replay-overlay scrub bar finish, 6204db8 replay banner ▌ cursor-
block label — none yet pushed. Working tree is clean.
Rewrites the handoff to:
- Distinguish local-master (6204db8) from origin-master (41a009a)
so the next session doesn't assume git push has happened.
- Document each of the four post-cut commits in its own subsection
under "Since the v0.20.0 cut" — the cycle is closed; these are
early entries in whatever cuts next.
- Name docs/ui-mockups/desktop-adaptation.md as the canonical
geometry reference for future plugin ports — applies to every
screen including the 8 still-unported missing-plugin surfaces.
- Note the Stitch generate_variants reliability issue
(timed out on layout-only adaptation prompts) so a future
session reaches for generate_screen_from_text instead.
- Refresh the SplashFadable scaffolding pattern to the process
notes (introduced in cacb19c) — the reusable shape for any
future overlay that fades N >> 3 elements together.
- Refresh the Resume Prompt's A–F options: push / v0.20.1 cut
decision (A), splash polish (B), replay-overlay enrichments
beyond the scrub bar (C), card artwork regeneration (D), app
icon round (E), APK launch verification + JNI bridges (F).
Tests: 1180 passing / 0 failing. Build clippy-clean.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Aligns the replay overlay's headline with the splash boot-screen idiom
landed in cacb19c — the cursor block (`▌`, U+258C) prefixed to a
lowercased label reads as a Terminal output line rather than a
generic UI title. "Replay" → "▌ replay" and "Replay complete" →
"▌ replay complete" in both the spawn-time path and the per-frame
update_banner_label updater. Doc comments that quote the literal
strings updated in lockstep so the next reader doesn't grep for an
absent literal.
Tests adjusted to match (banner_text assertions in
overlay_spawns_when_playback_starts and overlay_text_changes_on_completed).
The existing 1178 unit tests still pass; clippy clean.
Move-log scroll, MOVE chip, and WIN MOVE callout from the same mockup
remain open — separate commits.
Promotes the [Unreleased] section to [0.20.0] dated 2026-05-07
and opens a fresh empty [Unreleased]. The cycle's two through-
lines:
- **Terminal visual-identity port.** ui_theme token system
(0d477ac) is load-bearing; downstream chrome migrations cover
the modal scaffold, gameplay-feedback layer (ceec4fc), toasts
with a new ToastVariant enum (a137607), table chrome (651f406),
card chrome (d752870), splash cursor (cdcadda), and final
hint-source / dest pairing (9891ae4). Card-face / suit / card-
back palette intentionally NOT migrated — those track PNG
artwork that hasn't been regenerated yet. The 24 Stitch-rendered
mockups and design-system.md spec landed in fa7f98a.
- **Android persistence shim.** solitaire_data::data_dir
routes through a per-platform shim (4b51e50) closing the
CLAUDE.md §10 dirs::data_dir() = None pitfall on Android.
Settings, stats, achievements, replays, game-state, time-attack
sessions, and user themes now persist on a real APK.
Also closes three v0.19.0 punch-list candidates that landed
earlier in the cycle (pull_failure flake at 67c150b, smart-window-
size opt-out at e1b8766, Shareable badge at 9b065e5).
Tests: 1176 passing / 0 failing (six new this cycle: ui_theme
invariant guards, toast-variant-border-mapping, palette-tracking
guards on MARKER_VALID / HINT_PILE_HIGHLIGHT_COLOUR /
RIGHT_CLICK_HIGHLIGHT_COLOUR / toast-border distinctness).
SESSION_HANDOFF.md refreshed: HEAD pointer, test count, the
v0.20.0 changelog summary, the open punch list (Phase Android
runtime gaps, visual-identity follow-ups including the artwork
regeneration item), the updated design-direction box (was
Midnight Purple + Balatro yellow; now base16-eighties Terminal),
and a refreshed Resume Prompt offering A–F next-step options.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The v0.19.0 handoff had drifted material across seven commits:
HEAD pointer was wrong (still claimed 6037596; actually 59424a3),
"Tags on origin" still claimed v0.19.0 wasn't pushed, the
known-flake list still mentioned `pull_failure_sets_error_status`
(fixed in 67c150b), and three of four v0.19.0 punch-list
"candidates" had silently shipped without the doc tracking it.
The Android build target landing in fb8b2ac wasn't mentioned at
all despite being the largest single change in the cycle.
CHANGELOG [Unreleased] populated with all seven commits grouped
into Added / Fixed:
Added:
- Android build target — first working APK (fb8b2ac)
- Android developer setup + build runbook (59424a3)
- F3 FPS / frame-time overlay (690e1d2)
- "Smart window size" Settings toggle (e1b8766)
- "Shareable" badge on Latest-win caption (9b065e5)
- Help: M / P / Win-Summary-Enter rows (35516d3)
Fixed:
- pull_failure_sets_error_status flake (67c150b)
SESSION_HANDOFF.md fully rewritten:
- Status section reflects HEAD 59424a3, clean working tree (apart
from this commit's docs), 1170 passing tests, no known flakes
- "Where we are" tracks v0.19.0 candidates' close status (3 of 4
shipped, App icon still open and now blocked on a re-export)
- New v0.20 candidates table covers all seven commits
- New "Phase Android" punch-list section captures the unblocked-
by-fb8b2ac work: APK launch verification, dirs::data_dir port,
JNI ClipboardManager, Android Keystore, gpgs integration, the
cosmetic cargo-apk panic workaround
- Process notes call out the async-test starvation pattern
(seen twice now), the bin→lib+shim refactor as a reusable
pattern, and target-gating-by-default for cross-platform deps
- Resume prompt's A–D menu refreshed to reflect actually-open
work: APK verification, Phase-Android persistence, app icon,
and a v0.20 cut
Build: cargo clippy --workspace --all-targets -- -D warnings clean.
Tests: 1170 passing / 0 failing.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Promotes [Unreleased] to [0.19.0]. The release closes v0.18.0's
punch list (async H-key hint, persistent replay share URLs),
expands desktop platform fit (Wayland session support +
monitor-aware default window size), polishes the win-celebration
and double-click animation paths, and clears two test-flake
contributors. The Rusty Pixel pixel-art card theme arc was
prototyped and reverted in the same window — the engine plumbing
(pixel_art ThemeMeta field, PNG manifest face support, second
embedded:// theme channel) was fully reverted and is not part of
this release.
SESSION_HANDOFF.md refreshed to reflect the v0.19.0 ship:
v0.18.0 punch-list items B and D marked shipped; new Open punch
list documents the Rusty Pixel arc as historical, calls out the
desktop-packaging follow-through (app icon next), the
pull_failure_sets_error_status flake (next-round candidate),
and a settings-UI item for the smart-default-size opt-out.
Resume prompt refreshed with the post-v0.19.0 A-D decision menu.
Build: cargo clippy --workspace --all-targets -- -D warnings clean.
Tests: 1170 passing / 0 failing.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Three commits sit on top of v0.18.0 — async H-key hint
(3e11e9e), persistent replay share URLs (42d90b1), and the
auto-save flake fix (91b7605). [Unreleased] now describes them
as Changed / Fixed bullets ready to promote to a [0.19.0]
section whenever the next cut feels right. SESSION_HANDOFF.md
marks v0.18.0 punch-list items B and D as shipped, preserves C
(desktop packaging) as still gated on artwork + signing certs,
and refreshes the resume prompt's A–D menu around the
v0.19.0-cut decision. The previous handoff's
`-c user.name=...` workflow note is replaced with a pointer to
the system git config (which is now correct on this machine via
the v0.18.0 push session's `gh auth setup-git`).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
CHANGELOG.md gains a [0.18.0] section synthesising the 24 commits
since v0.17.0: the Restore prompt + auto-show Home picker launch
flow, MSSC-style picker (header chips, draw-mode chips, picture
tiles with FiraMono-covered glyphs, Today's Event callout), the
last solver hot path moving onto AsyncComputeTaskPool with
cancel-on-replace, "Won before" HUD chip, "Copy share link" Stats
button via arboard, the N-key flow finally routing through the
real Confirm/Cancel modal, Esc-on-modal layering fixes, and the
unified-3.0 Claude rule set adoption.
SESSION_HANDOFF.md (root) refreshed to reflect HEAD at
v0.17.0-24-gc497c31, the carryover punch list trimmed (items B
and C shipped, A partially shipped, D unchanged), and a new
Process notes section describing the test-discipline prune and
the smaller-port template the async hint work should follow.
Build: cargo clippy --workspace --all-targets -- -D warnings clean.
Tests: 1166 passing / 0 failing (one flake on
auto_save_writes_after_30_seconds reproduced clean on re-run;
passes in isolation).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Two follow-up commits on top of v0.16.0:
- 87275bf: H-key hint asks the v0.15.0 solver for the actual best
first move, with the existing heuristic kept as fallback.
- 53e3b81: Settings → Gameplay slider tunes replay playback rate
(0.10–1.00 s, default 0.45 s) read per frame from SettingsResource.
Adds the [0.17.0] CHANGELOG section, folds the post-v0.16.0
provisional table into a v0.17.0 shipped table in SESSION_HANDOFF,
prunes the now-stale "Cut v0.17.0" item from the punch list, and
re-letters the resume-prompt decision options A–D.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The post-v0.16.0 table marked the replay-rate slider as `(pending)`
but 53e3b81 already shipped it. Resume prompt said "HEAD at v0.16.0
/ 1196 tests" while the same doc above said HEAD was post-v0.16.0
with two follow-ups and 1208 tests.
Updates the slider row to reference 53e3b81, refreshes the resume
prompt's HEAD/test counts, and rewrites the "DECISION TO ASK THE
PLAYER FIRST" list — drops the smoke-test and "solver hints" bullets
(both already covered) and pulls forward the actual open items
(cut v0.17.0, solver-on-AsyncComputeTaskPool, won-previously,
replay sharing, packaging).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Documents the two follow-ups landed on top of v0.16.0 (solver-driven
hints in 87275bf, replay-rate slider in this commit's parent) and
notes that an async-solver attempt was rolled back when a sub-agent
was interrupted leaving 3 failing tests. Async-solver is still
worth doing but needs smaller scoping next round.
Also records the process note raised this session: agent briefs had
been mandating ≥3 tests per feature, which produced low-value
coverage on trivial settings fields (Default trait arithmetic,
serde derive round-trips, stdlib clamp). Future briefs should ask
only for tests that pin behaviour contracts or regressions on real
bugs.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
CHANGELOG gains a [0.16.0] section covering the modal-feel polish
round: per-modal Overflow::scroll_y on Achievements / Help / Stats /
Profile / Leaderboard, pointer cursor on hover for every Button,
same-frame focus on modal open (attach + auto_focus moved to
PostUpdate), and click-outside-to-dismiss for the six read-only
modals via a new ScrimDismissible marker.
The bottom-of-file compare links thread the new tag into the chain.
Test count updated to 1196.
SESSION_HANDOFF rewritten for the post-v0.16.0 state. Punch list
collapsed to two release-prep items (smoke-test, desktop packaging)
plus the carryover from v0.15.0's next-round candidates that didn't
ship this round (solver-driven hints, replay-rate slider, solver
progress overlay, async solver, "won previously" indicator, replay
sharing). Resume prompt asks A–E.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The previous v0.15.0 doc commit only landed CHANGELOG — the
SESSION_HANDOFF write silently no-op'd due to a Write tool param
mix-up. This commit lands the matching handoff refresh:
- Status block updated to v0.15.0 / HEAD / 1178 tests
- New v0.15.0 changelog table covering the seven feature commits
(Bevy trim, replay playback core + overlay + Stats wiring,
rolling replay history, Cinephile achievement, solver + toggle)
- Open punch list collapsed to two release-prep items (smoke-test,
desktop packaging) and six fresh next-round candidates
(solver-driven hints — now unblocked, replay-rate slider, solver
progress overlay, async solver, "won previously" indicator,
replay sharing)
- Resume prompt asks A–E
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
CHANGELOG gains a [0.14.0] section covering 18 commits since v0.13.0
across three threads: the v0.13.0-era UX candidates that missed the
v0.13.0 tag (theme thumbnails, daily-challenge calendar, Time Attack
auto-save, per-mode bests, time-bonus slider), Quat's three bug
fixes from a smoke-test round (multi-card lift validation, softlock
detection, deal-tween information leak), and the major new replay
pipeline (record → persist → upload → web viewer with a new
solitaire_wasm crate).
The bottom-of-file compare links thread the new tag into the chain.
Test count updated to 1134.
SESSION_HANDOFF rewritten as the session 9 / post-v0.14.0 doc.
The session 8 changelog table is preserved alongside a new "v0.14.0
shipped" rollup. The next-round candidates list seeds six fresh
ideas (deferred Bevy audio trim, solver toggle, in-engine replay
playback, per-replay history, solver-driven hints, "won via
replay" achievement). Resume prompt asks A–F about smoke-test,
audio trim, solver toggle, in-engine playback, fresh UX, or
packaging.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Captures the three bug-fix commits (move validation, deal-tween leak,
softlock detection), notes that bug #3's "no end-game screen" was
downstream of the softlock-detection bug and is now resolved, and
records the two investigation findings (audio-stack feature trim,
solver-at-deal toggle) as deferred decisions for the player.
Updates HEAD/test counts (origin at 2716472, 1126 tests passing).
Cleans the next-round candidates list — calendar / thumbnails /
Time-Attack auto-save shipped between v0.13.0's doc commit and
session 8; replay is WIP in the working tree.
Resume prompt now offers six choices (A–F) covering finish-replay,
smoke-test, audio-feature trim, solver toggle, other UX, packaging.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
CHANGELOG gains a [0.13.0] section covering the third UX iteration
round on top of v0.12.0:
- Tooltip-delay slider, streak fire, score-breakdown reveal
- Card backs follow active theme
- Drag-with-keyboard
- Right-click radial menu
Plus two code-review fixes (Removed: sccache wiring, Fixed: bundled-
only font handling).
The bottom-of-file compare links thread the new tag into the
existing chain. Test count updated to 1053.
SESSION_HANDOFF gains a "Session 7 round 3" table summarising the
six commits and rolls the punch list forward — UX candidate list
exhausted again, fresh six-item list seeded for a future round
(daily-challenge calendar, theme-picker thumbnails, per-mode high
scores, in-progress auto-save for Zen/Time Attack, configurable
scoring weights, win replays). Resume prompt asks A/B/C/D about
push, smoke-test, next round, or packaging.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
CHANGELOG gains a [0.12.0] section covering the second UX iteration
round on top of v0.11.0:
- Foundation completion flourish
- Drag-cancel return tween
- Focus ring breathing
- First-win achievement onboarding toast
- Mode Launcher digit shortcuts
- Card aspect-ratio fix (1.4 → 1.4523)
- Plus the README and CHANGELOG-add docs that rode along
The bottom-of-file compare links thread the new tag into the
existing chain (Unreleased → 0.12.0 → 0.11.0 → ...). Test count
updated to 1007.
SESSION_HANDOFF now distinguishes session 7 round 1 (v0.11.0,
morning) from round 2 (v0.12.0, afternoon) — keeping the audit
trail readable instead of conflating them. The release-prep punch
list collapses to the three tag/push/packaging items; the UX
iteration list opens with six fresh candidates for whoever picks
the next round.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The GitHub repo was renamed from Rusty_Solitare to Rusty_Solitaire
(adding the missing 'i'). The local origin remote has been updated
via `git remote set-url`; this commit updates the three doc
references that hardcoded the old URL.
SESSION_HANDOFF.md's "Canonical remote" section now names the new
URL and explains the rename for future readers, including the note
that local clone directories may still be named Rusty_Solitare —
that's a local-only name and works fine, only the GitHub repo URL
changed.
docs/SESSION_HANDOFF.md (older snapshot, unchanged otherwise) gets
its single URL line corrected.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Session 6 closed with a four-item UX punch list (unlock foundations,
drop shadows, drop-target highlights, stock badge). All four shipped
in session 7, plus an unrelated font-fallback fix surfaced by a
second-machine smoke test that landed before the UX work.
Refreshes the doc to reflect:
- HEAD: 655dfde, 3 commits ahead of origin
- 982 tests pass (was 962)
- Session 7 changelog table summarising the five commits
- UX punch-list entirely closed; release-prep items still on the
table but un-deferred (player gets a directional choice next session)
- New "next-round candidates" UX list (animated focus ring,
achievement onboarding, mode-switch keyboard shortcut, aspect-ratio
fidelity, foundation completion flourish, drag-cancel tween)
- Resume prompt asks A/B/C: tag v0.11.0, README/CHANGELOG first, or
start a new UX round
Length 120 → 109 (-11) by trimming the spent priority list.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Captures today's six commits (theme loader fix, exit-warn silence, two
font-warn rounds, HUD band, action fade), updates HEAD/test counts,
records that the player redirected from "cut v0.11.0 / package" to
"keep iterating on UX," and lists the new four-item UX punch list
(unlock foundations, drop shadows, drop highlighting, stock badge).
Resume prompt is rewritten so a fresh agent on a different machine
picks up cleanly: notes GitHub is the canonical remote (Gitea drift
caused commits to silently miss the alex machine earlier in session),
flags that the in-progress save format will invalidate when (1)
lands, and explicitly defers the release-prep items.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Drops dead deps and stale doc content carried over from the pre-MIT
art swap.
Cargo.toml manifests:
- solitaire_core no longer depends on chrono (no source references it
since the original sync-payload timestamps moved to solitaire_data).
- solitaire_sync no longer depends on serde_json (the sync types use
serde-derive with whatever serializer the caller picks; the old
json-specific helpers were removed earlier).
Cargo.lock pruned by `cargo build` to drop the now-untransitively-
referenced versions.
CREDITS.md redistribution clause: "LGPL and OFL notices" tightened to
"MIT (project + hayeah card art) and OFL (FiraMono)" since the LGPL
art is gone.
SESSION_HANDOFF.md:
- HEAD bumped to 924a1e2; test count to 960; 9 ignored.
- Punch list rewritten — the xCards-URL line is obsolete (we did the
swap), v0.1.0 tag exists locally, and player smoke-test is the
current top item.
- New "Card-theme system (CARD_PLAN.md, fully shipped)" section
summarises the seven-phase end-to-end flow so a future session has
the integration map without re-reading the plan.
- Optional list gains the SVG-vs-layout aspect-ratio note as a
cosmetic-only follow-up.
Removed the locked worktree at .claude/worktrees/agent-aa55a94d18c669d70
left behind by a prior Claude session.
cargo build / clippy --workspace --all-targets -- -D warnings / test
--workspace all green (960 passed, 0 failed, 9 ignored).
Phase 4 ended at 5d57b67 with the doc reflecting "16 commits ahead,
working tree dirty, splash always shows". The next session opened the
binary, found three real bugs (resize lag, off-screen cards,
mis-aligned hit-test), fixed them, and layered four bonus polish
items on top: persisted window geometry, achievement tooltips, a
clippy::pedantic sweep, client-side sync round-trip tests, and the
splash skip on subsequent launches.
Rewrites the doc to reflect the post-push state:
- HEAD: 902560c, branch up to date with origin
- 906 tests pass, working tree clean
- Phase 5 table summarising the nine new commits
- Stale "in-flight" / "deferred" items removed where they landed
- Punch list shrunk to xCards URL, v0.1.0 tag, desktop packaging
Length drops 142 → 121 lines (-21) by trimming the prior session's
"original Track G prompt" callbacks and recovery options that no
longer apply.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The handoff document was written mid-overhaul during Phase 3 / early
Phase 4 and accumulated stale "in-flight" sections, recovery
instructions for a long-completed background agent, and a 7-track
speculative list of future directions that no longer matches reality.
This rewrite halves the document (284 → 142 lines) and reorients it
toward the actual current state: Phase 3 and Phase 4 shipped, every
substantial release-readiness thread landed, working tree clean.
Replaced the pause-state recovery section, original prompt blocks,
and Phase 3 smoke-test checklist with a compact table summarizing
what each Phase 4 commit landed, a chronological commit list as an
audit trail, and a five-item punch list scoping what's left for v1
(xCards URL, smoke test, push, tag v0.1.0, optional polish).
The resume prompt at the end is rewritten to orient a future agent
toward release prep — push, tag, package — rather than ongoing UX
work.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Reflects that Track B (window polish) and Track G (modal + score
animations) are now landed, and brings the resume prompt and
release-readiness scope in line with the post-commit state.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces the 3-line resume prompt with a senior-Rust-developer framing
plus seven concrete next-direction tracks (A–G) covering the Home modal
decision, window/release polish, sound, sync, achievements, release
backlog, and UI/UX professional polish. Each track names specific
files/tokens so the next session can act on a chosen direction without
re-discovery.
Pause point in the UX overhaul Phase 3. Documents:
- The 11 commits landed this session (foundation + HUD + 8 overlay
conversions).
- Test status (797 / 797 pass, clippy clean).
- The 5 steps still pending (Pause + Forfeit, Settings, Onboarding,
animation upgrades, final literal sweep) and what each touches.
- A smoke-test checklist for the user to run on the current state.
- A copy-pasteable kickoff prompt for the next session.
- An open question about whether to keep, repurpose, or drop the
Home overlay (now that the action bar + Help cover its surface).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>