Files
Ferrous-Solitaire/SESSION_HANDOFF.md
T
funman300 61d891fb76 docs: CHANGELOG + SESSION_HANDOFF refresh for v0.12.0
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>
2026-05-02 03:08:46 +00:00

8.3 KiB
Raw Blame History

Solitaire Quest — UX Overhaul Session Handoff

Last updated: 2026-05-02 (session 7, late) — Second UX iteration round complete. Six small UX feel items shipped on top of v0.11.0 and the README/CHANGELOG refresh that should have ridden along. Ready to tag v0.12.0.

Status at pause

  • HEAD: 7dba772 plus the impending CHANGELOG/handoff doc commits. Local master is 3 commits ahead of origin/master (9887343, ca5788f, 7dba772 unpushed); doc commits to follow.
  • Working tree: clean apart from this doc + CHANGELOG, both intentional.
  • Build: cargo clippy --workspace --all-targets -- -D warnings clean.
  • Tests: 1007 passed / 0 failed across the workspace (+25 from session 7 morning's 982 baseline).
  • Tags on origin: v0.9.0, v0.10.0, v0.11.0. Local has v0.11.0 too. v0.12.0 is the next tag.

Where we are

v0.11.0 shipped the headline structural changes (card themes, HUD overhaul, four UX feel wins, font fallback). The second UX round — six smaller items — is also done now. v0.12.0 is the right slice for them; together with the README refresh and CHANGELOG add it makes a clean release.

The post-v0.11.0 UX candidate list is exhausted. Direction is open again.

Design direction (unchanged)

  • Tone: Balatro — chunky readable type, theatrical hierarchy, satisfying micro-interactions.
  • Palette: Midnight Purple base + Balatro yellow primary + warm magenta secondary.
  • See ~/.claude/projects/-home-manage-Rusty-Solitare/memory/project_ux_overhaul_2026-04.md (auto-memory; on a different machine, recreate this fresh from the README + ARCHITECTURE.md).

Canonical remote

github.com/funman300/Rusty_Solitaire is the canonical repo. Always push there. (Local clone directories may still be named Rusty_Solitare; that's just a directory name and works fine.)

Session 7 round 1 (shipped 2026-05-02 morning) — v0.11.0

Area Commit What landed
Font fallback fdb6c2e FiraMono bundled into the SVG fontdb so cards render rank/suit text on machines without Bitstream Vera Sans / Arial. Surfaced when a second-machine pull lost glyphs.
Unlock foundations 95df542 PileType::Foundation(Suit)Foundation(u8) with claim derived from the bottom card. Save schema 1 → 2; pre-v2 saves silently fall through to fresh game.
Drop overlay f6c9166 Soft fill + 3 px outline drawn ABOVE stacked cards for every legal target during drag. Replaces the hidden pile-marker tint.
Drop shadows f712b89 Each card casts a 25 % black shadow; lifts to 40 % with bigger offset/halo while in the active drag set.
Stock badge 655dfde "·N" chip at the top-right of the stock so players can see how close they are to a recycle. Hides at zero.

Tagged as v0.11.0 (commit 063269c plus URL refresh).

Session 7 round 2 (shipped 2026-05-02 afternoon) — v0.12.0

Area Commit What landed
Aspect ratio 13aa0fd CARD_ASPECT 1.4 → 1.4523 to match hayeah SVG dimensions; cards no longer ~3.6 % squashed. Vertical-budget math adapts via the constant.
Foundation flourish 69ce9af King-on-foundation celebration: scale-pulse on the King, marker tints STATE_SUCCESS, synthesised C6→E6→G6 bell ping (~240 ms). New FoundationCompletedEvent.
Drag-cancel tween 525fe0f Illegal drops glide each card back to its origin over 150 ms with a quintic ease-out (Responsive curve, zero overshoot). Audio cue still fires. ShakeAnim retained for non-drag rejection paths.
Focus pulse 9887343 Focus ring breathes at 1.4 s sin period over [0.65, 1.0] of native alpha. Static under AnimSpeed::Instant.
Achievement onboarding ca5788f First-win toast "First win! Press A to see your achievements." plus persisted shown_achievement_onboarding flag so the cue fires exactly once.
Mode Launcher shortcuts 7dba772 Digit 15 inside the Mode Launcher launches Classic / Daily / Zen / Challenge / TimeAttack. Locked modes silent no-op. Modal-scoped.
Docs (rode along) d8c7034, 9f095c4 README refresh for v0.11.0 features and corrected controls table; CHANGELOG.md added covering v0.9.0v0.11.0.

The first three items in this round (13aa0fd, 69ce9af, 525fe0f) shipped before the v0.11.0 tag's commit window closed; treating them as v0.12.0 since v0.11.0 was already cut at 063269c.

Open punch list — release prep

  1. Tag v0.12.0 — meaningful slice since v0.11.0: six UX feel items + the README/CHANGELOG refresh. Tag at the doc-commit HEAD that closes this round.
  2. Push to origin — three-plus commits unpushed.
  3. Desktop packaging per ARCHITECTURE.md §17. The Arch PKGBUILD exists in /home/manage/solitaire-quest-pkgbuild/ (separate repo, no remote yet). Pending: app icon, macOS .icns + notarisation cert, Windows .ico + Authenticode cert, AppImage recipe.

Open punch list — UX iteration (next-round candidates)

The v0.12.0 list is exhausted. Candidates for a future round:

  • Card-back theme support — the current theme system swaps face SVGs but not the back. Players asked for animated backs in passing.
  • Streak fire animation in the HUD when win-streak crosses 3, 5, 10. Foundation flourish suggests the per-suit completion pattern; streak milestones are the lifetime equivalent.
  • Score-breakdown reveal at win — show base / time-bonus / no-undo bonus / mode multiplier as the score animates up. Currently the win modal just shows the final number.
  • Right-click radial menu for power users: hold right-click on a card → quick-drop options without dragging.
  • Drag-with-keyboard — Tab to a card, Enter to "lift", arrow keys to choose destination, Enter to drop. Keyboard-only completion of a game.
  • Settings: tooltip-delay slider so power users can disable the 0.5 s hover delay. Cheap.

Card-theme system (CARD_PLAN.md, fully shipped)

Seven phases landed across b8fb3fb924a1e2 in v0.11.0:

  • Bundled default theme ships in the binary via embedded:// — 52 hayeah/playing-cards-assets SVGs (MIT) + a midnight-purple back.svg (original work).
  • User themes live under themes:// rooted at solitaire_engine::assets::user_theme_dir(). Drop a directory containing theme.ron + 53 SVG files; appears in the registry on next launch.
  • Importer at solitaire_engine::theme::import_theme(zip) validates an archive and atomically unpacks.
  • Picker UI in Settings → Cosmetic.

Resume prompt

You are a senior Rust + Bevy developer working on Solitaire Quest.
Working directory: <Rusty_Solitaire clone path on this machine — local
directory may still be named Rusty_Solitare from earlier; that's fine>.
Branch: master. Direction is OPEN — both UX iteration rounds shipped
and v0.12.0 is ready to tag.

State: HEAD at the doc-commit closing session 7 round 2. Local master
is several commits ahead of origin and unpushed. Working tree clean
apart from untracked CARD_PLAN.md (intentional).
Build: cargo clippy --workspace --all-targets -- -D warnings clean.
Tests: 1007 passed / 0 failed.

READ FIRST (in order, before doing anything):
  1. SESSION_HANDOFF.md  — full state, session 7 changelog, punch list
  2. CHANGELOG.md        — release-by-release record
  3. CLAUDE.md           — hard rules (UI-first, no panics, etc.)
  4. ARCHITECTURE.md     — crate responsibilities + data flow
  5. ~/.claude/projects/<this-project>/memory/MEMORY.md
                         — saved feedback / project context (machine-local;
                           may be missing on a fresh machine)

DECISION TO ASK THE PLAYER FIRST:
  A. Push the unpushed commits and cut v0.12.0 now.
  B. Smoke-test the new feel layer first (foundation flourish, drag
     tween, focus pulse, mode digits), then tag.
  C. Skip the tag for another iteration round — see "next-round
     candidates" in SESSION_HANDOFF for ideas.
  D. Take the deferred desktop-packaging item (needs artwork +
     signing certs from the user).

WORKFLOW NOTES:
  - Commits use:
      git -c user.name=funman300 -c user.email=root@vscode.infinity \
          commit -m "..."
  - Sub-agents stage + verify only; orchestrator commits.
  - Every commit must pass build / clippy / test before pushing.
  - Push to GitHub (origin) — that is the canonical remote.

OPEN AT THE START: ask which of A / B / C / D. Don't pick unilaterally.