• v0.12.0 — UX feel polish round 2

    funman300 released this 2026-05-02 03:09:09 +00:00 | 501 commits to master since this release

    Six small UX feel improvements on top of v0.11.0, plus the README
    and CHANGELOG refresh that should have ridden along with v0.11.0
    itself. Together they make the play surface feel more responsive,
    forgiving, and discoverable.

    UX feel polish

    • Foundation completion flourish. Each Ace-through-King run now
      fires a brief celebration when the King lands: scale-pulse on the
      King card, marker tints STATE_SUCCESS, and a synthesised C6→E6→G6
      bell ping (~240 ms, octave above win_fanfare's root so the fourth
      completion + win cascade layer cleanly). New
      FoundationCompletedEvent carries the trigger.
    • Drag-cancel return tween. Illegal drops glide each dragged card
      back to its origin slot over 150 ms with a quintic ease-out
      (Responsive curve, zero overshoot — reads forgiving rather than
      jittery). The audio cue still fires for negative feedback.
    • Focus ring breathes. The keyboard focus ring's alpha modulates
      with a 1.4 s sin curve over [0.65, 1.0] of native value so it
      catches the eye on focus changes without competing with gameplay.
      Static under AnimSpeed::Instant.
    • First-win achievement onboarding. After the player's very first
      win a one-shot info toast surfaces "First win! Press A to see
      your achievements." Persisted via Settings.shown_achievement_
      onboarding so the cue never re-fires.
    • Mode Launcher digit shortcuts. Pressing M opens the Home modal
      (Mode Launcher); pressing 1-5 inside it launches each mode
      directly without Tab+Enter. Locked modes (level < 5) silent
      no-op. Modal-scoped — won't accidentally launch mid-game.

    Fixes

    • Card aspect ratio matches hayeah SVGs. CARD_ASPECT 1.4 → 1.4523
      to match the bundled artwork's natural 167.087 × 242.667
      dimensions. Cards previously rendered ~3.6 % vertically squashed.
      The vertical-budget math in compute_layout adapts via the
      constant.

    Documentation

    • README refresh with v0.11.0+ features and a corrected controls
      table (the previous version had Z/U inverted and listed H for
      help when F1 is the actual binding).
    • CHANGELOG.md added covering v0.9.0 through v0.12.0 with Keep a
      Changelog 1.1.0 conventions.

    By the numbers: 1007 passing tests (was 982 at v0.11.0), zero
    clippy warnings under --workspace --all-targets -- -D warnings.

    Downloads