From 51fecb24b05748c9c957f6818f45c6a2d996f44a Mon Sep 17 00:00:00 2001 From: funman300 Date: Thu, 14 May 2026 18:15:11 -0700 Subject: [PATCH] chore: remove stale docs, mockups, and one-off artifacts Delete CLAUDE_PROMPT_PACK/SPEC/WORKFLOW (superseded by CLAUDE.md), SESSION_HANDOFF files, old android investigation notes, phase-plan docs under docs/superpowers/, and all docs/ui-mockups/ (HTML+PNG mockups from the pre-Terminal design pass). Also removes local artifacts: analytics_impl_prompt.md, review_project.py, delete_runs.sh, ruvector.db files, and the stray solitaire_wasm/solitaire_server/ build artefact. Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE_PROMPT_PACK.md | 497 ---- CLAUDE_SPEC.md | 296 --- CLAUDE_WORKFLOW.md | 335 --- SESSION_HANDOFF.md | 177 -- docs/SESSION_HANDOFF.md | 262 -- docs/android/PLAYABILITY_TODO.md | 270 -- docs/android_investigation.md | 247 -- .../2026-04-20-phase1-2-workspace-core.md | 2170 ----------------- .../plans/2026-04-23-phase3-bevy-rendering.md | 172 -- .../plans/2026-04-23-phase4-statistics.md | 1304 ---------- docs/ui-mockups/achievements-mobile.html | 293 --- docs/ui-mockups/achievements-mobile.png | Bin 42222 -> 0 bytes docs/ui-mockups/card-face-migration.md | 251 -- docs/ui-mockups/challenge-mode-mobile.html | 219 -- docs/ui-mockups/challenge-mode-mobile.png | Bin 68234 -> 0 bytes docs/ui-mockups/daily-challenge-mobile.html | 258 -- docs/ui-mockups/daily-challenge-mobile.png | Bin 42465 -> 0 bytes docs/ui-mockups/design-system.md | 285 --- docs/ui-mockups/desktop-adaptation.md | 283 --- docs/ui-mockups/game-table-mobile.html | 253 -- docs/ui-mockups/game-table-mobile.png | Bin 26384 -> 0 bytes docs/ui-mockups/help-mobile.html | 200 -- docs/ui-mockups/help-mobile.png | Bin 42597 -> 0 bytes docs/ui-mockups/home-menu-desktop.html | 343 --- docs/ui-mockups/home-menu-desktop.png | Bin 47895 -> 0 bytes docs/ui-mockups/home-menu-mobile.html | 225 -- docs/ui-mockups/home-menu-mobile.png | Bin 28883 -> 0 bytes docs/ui-mockups/leaderboard-mobile.html | 315 --- docs/ui-mockups/leaderboard-mobile.png | Bin 44477 -> 0 bytes docs/ui-mockups/level-up-mobile.html | 259 -- docs/ui-mockups/level-up-mobile.png | Bin 49739 -> 0 bytes docs/ui-mockups/onboarding-draw-mobile.html | 206 -- docs/ui-mockups/onboarding-draw-mobile.png | Bin 35321 -> 0 bytes docs/ui-mockups/onboarding-tap-mobile.html | 211 -- docs/ui-mockups/onboarding-tap-mobile.png | Bin 31740 -> 0 bytes docs/ui-mockups/onboarding-theme-mobile.html | 218 -- docs/ui-mockups/onboarding-theme-mobile.png | Bin 34959 -> 0 bytes docs/ui-mockups/pause-menu-mobile.html | 212 -- docs/ui-mockups/pause-menu-mobile.png | Bin 32319 -> 0 bytes docs/ui-mockups/profile-mobile.html | 274 --- docs/ui-mockups/profile-mobile.png | Bin 83684 -> 0 bytes docs/ui-mockups/radial-menu-mobile.html | 271 -- docs/ui-mockups/radial-menu-mobile.png | Bin 23113 -> 0 bytes docs/ui-mockups/replay-overlay-mobile.html | 284 --- docs/ui-mockups/replay-overlay-mobile.png | Bin 27241 -> 0 bytes docs/ui-mockups/settings-mobile.html | 258 -- docs/ui-mockups/settings-mobile.png | Bin 23970 -> 0 bytes docs/ui-mockups/splash-mobile.html | 213 -- docs/ui-mockups/splash-mobile.png | Bin 17924 -> 0 bytes docs/ui-mockups/stats-mobile.html | 279 --- docs/ui-mockups/stats-mobile.png | Bin 55488 -> 0 bytes docs/ui-mockups/sync-mobile.html | 262 -- docs/ui-mockups/sync-mobile.png | Bin 37397 -> 0 bytes docs/ui-mockups/theme-picker-mobile.html | 250 -- docs/ui-mockups/theme-picker-mobile.png | Bin 34602 -> 0 bytes docs/ui-mockups/time-attack-mobile.html | 215 -- docs/ui-mockups/time-attack-mobile.png | Bin 44914 -> 0 bytes docs/ui-mockups/weekly-goals-mobile.html | 265 -- docs/ui-mockups/weekly-goals-mobile.png | Bin 85871 -> 0 bytes docs/ui-mockups/win-summary-mobile.html | 200 -- docs/ui-mockups/win-summary-mobile.png | Bin 34891 -> 0 bytes 61 files changed, 12532 deletions(-) delete mode 100644 CLAUDE_PROMPT_PACK.md delete mode 100644 CLAUDE_SPEC.md delete mode 100644 CLAUDE_WORKFLOW.md delete mode 100644 SESSION_HANDOFF.md delete mode 100644 docs/SESSION_HANDOFF.md delete mode 100644 docs/android/PLAYABILITY_TODO.md delete mode 100644 docs/android_investigation.md delete mode 100644 docs/superpowers/plans/2026-04-20-phase1-2-workspace-core.md delete mode 100644 docs/superpowers/plans/2026-04-23-phase3-bevy-rendering.md delete mode 100644 docs/superpowers/plans/2026-04-23-phase4-statistics.md delete mode 100644 docs/ui-mockups/achievements-mobile.html delete mode 100644 docs/ui-mockups/achievements-mobile.png delete mode 100644 docs/ui-mockups/card-face-migration.md delete mode 100644 docs/ui-mockups/challenge-mode-mobile.html delete mode 100644 docs/ui-mockups/challenge-mode-mobile.png delete mode 100644 docs/ui-mockups/daily-challenge-mobile.html delete mode 100644 docs/ui-mockups/daily-challenge-mobile.png delete mode 100644 docs/ui-mockups/design-system.md delete mode 100644 docs/ui-mockups/desktop-adaptation.md delete mode 100644 docs/ui-mockups/game-table-mobile.html delete mode 100644 docs/ui-mockups/game-table-mobile.png delete mode 100644 docs/ui-mockups/help-mobile.html delete mode 100644 docs/ui-mockups/help-mobile.png delete mode 100644 docs/ui-mockups/home-menu-desktop.html delete mode 100644 docs/ui-mockups/home-menu-desktop.png delete mode 100644 docs/ui-mockups/home-menu-mobile.html delete mode 100644 docs/ui-mockups/home-menu-mobile.png delete mode 100644 docs/ui-mockups/leaderboard-mobile.html delete mode 100644 docs/ui-mockups/leaderboard-mobile.png delete mode 100644 docs/ui-mockups/level-up-mobile.html delete mode 100644 docs/ui-mockups/level-up-mobile.png delete mode 100644 docs/ui-mockups/onboarding-draw-mobile.html delete mode 100644 docs/ui-mockups/onboarding-draw-mobile.png delete mode 100644 docs/ui-mockups/onboarding-tap-mobile.html delete mode 100644 docs/ui-mockups/onboarding-tap-mobile.png delete mode 100644 docs/ui-mockups/onboarding-theme-mobile.html delete mode 100644 docs/ui-mockups/onboarding-theme-mobile.png delete mode 100644 docs/ui-mockups/pause-menu-mobile.html delete mode 100644 docs/ui-mockups/pause-menu-mobile.png delete mode 100644 docs/ui-mockups/profile-mobile.html delete mode 100644 docs/ui-mockups/profile-mobile.png delete mode 100644 docs/ui-mockups/radial-menu-mobile.html delete mode 100644 docs/ui-mockups/radial-menu-mobile.png delete mode 100644 docs/ui-mockups/replay-overlay-mobile.html delete mode 100644 docs/ui-mockups/replay-overlay-mobile.png delete mode 100644 docs/ui-mockups/settings-mobile.html delete mode 100644 docs/ui-mockups/settings-mobile.png delete mode 100644 docs/ui-mockups/splash-mobile.html delete mode 100644 docs/ui-mockups/splash-mobile.png delete mode 100644 docs/ui-mockups/stats-mobile.html delete mode 100644 docs/ui-mockups/stats-mobile.png delete mode 100644 docs/ui-mockups/sync-mobile.html delete mode 100644 docs/ui-mockups/sync-mobile.png delete mode 100644 docs/ui-mockups/theme-picker-mobile.html delete mode 100644 docs/ui-mockups/theme-picker-mobile.png delete mode 100644 docs/ui-mockups/time-attack-mobile.html delete mode 100644 docs/ui-mockups/time-attack-mobile.png delete mode 100644 docs/ui-mockups/weekly-goals-mobile.html delete mode 100644 docs/ui-mockups/weekly-goals-mobile.png delete mode 100644 docs/ui-mockups/win-summary-mobile.html delete mode 100644 docs/ui-mockups/win-summary-mobile.png diff --git a/CLAUDE_PROMPT_PACK.md b/CLAUDE_PROMPT_PACK.md deleted file mode 100644 index 35a49c0..0000000 --- a/CLAUDE_PROMPT_PACK.md +++ /dev/null @@ -1,497 +0,0 @@ -# CLAUDE_PROMPT_PACK.md - -version: 1.0 - ---- - -# 0. GLOBAL INSTRUCTION (prepend to every prompt) - -``` -You must follow CLAUDE_SPEC.md strictly. - -Rules: -- Do not expand scope beyond what is defined -- Do not refactor unrelated code -- Do not introduce new dependencies to solitaire_core or solitaire_sync without confirmation -- Prefer minimal, surgical changes -- Use existing patterns in the codebase -- Return minimal diffs or changed functions only - -Before writing code: -1. List relevant constraints from CLAUDE_SPEC.md -2. Identify risks -3. Then implement -``` - ---- - -# 1. FEATURE IMPLEMENTATION - -``` -# TASK: Feature Implementation - -feature: "" - -goal: -"" - -scope: -crates: [] -systems: [] -files: [] - -non_goals: -- "" - -constraints: -- must follow CLAUDE_SPEC.md -- event-driven architecture required -- no blocking operations -- no cross-crate leakage - -acceptance_criteria: -- "" -- "" - -edge_cases: -- "" - ---- - -## Required Patterns - -Use this pattern for systems: - - ---- - -## Output Format - -intent: -plan: -constraints_used: -risks: - -code_changes: -(minimal diffs only) - -notes: -``` - ---- - -# 2. BUGFIX - -``` -# TASK: Bug Fix - -bug_description: -"" - -expected_behavior: -"" - -root_cause_hint (optional): -"" - -scope: -crates: [] -files: [] - -constraints: -- minimal fix only -- no refactors unless required -- must add regression protection if applicable - ---- - -## Requirements - -1. Identify root cause -2. Fix it minimally -3. Preserve all invariants -4. Do not change unrelated logic - ---- - -## Output Format - -analysis: -root_cause: -fix_strategy: - -code_changes: -(minimal diff) - -regression_test (only if high-value): - -notes: -``` - ---- - -# 3. REFACTOR - -``` -# TASK: Refactor - -target: -"" - -goal: -"" - -scope: -crates: [] -files: [] - -non_goals: -- no behavior changes -- no new features - -constraints: -- must preserve behavior exactly -- must respect crate boundaries -- must not duplicate logic - ---- - -## Refactor Type - -- [ ] simplify logic -- [ ] reduce duplication -- [ ] improve readability -- [ ] performance (non-invasive) - ---- - -## Output Format - -analysis: -issues_found: - -refactor_plan: - -code_changes: -(diff only) - -verification: -- behavior unchanged: yes/no -- invariants preserved: yes/no - -notes: -``` - ---- - -# 4. SYSTEM DESIGN (NEW FEATURE) - -``` -# TASK: System Design - -feature: -"" - -goal: -"" - -constraints: -- must fit existing architecture -- must follow plugin + event model -- must not violate crate boundaries - ---- - -## Required Output - -design: - -components: -- plugins: -- systems: -- events: -- resources: - -data_flow: -(step-by-step) - -integration_points: -- where it connects to existing systems - -risks: -- "" - -tradeoffs: -- "" - ---- - -## DO NOT - -- write full implementation -- modify unrelated systems -``` - ---- - -# 5. NEW BEVY SYSTEM - -``` -# TASK: Add Bevy System - -system_name: -"" - -trigger: -(event or condition) - -reads: -[Resources] - -writes: -[Resources] - -emits: -[Events] - -constraints: -- must be event-driven -- must not directly mutate unrelated state -- must be single responsibility - ---- - -## Output Format - -system_signature: - -implementation: -(code only) - -notes: -``` - ---- - -# 6. CORE LOGIC FUNCTION (solitaire_core) - -``` -# TASK: Core Logic Implementation - -function: -"" - -goal: -"" - -rules: -- no IO -- no async -- no Bevy -- deterministic - -invariants: -- "" -- "" - -errors: -- "" - ---- - -## Output Format - -constraints_checked: - -implementation: -(code only) - -edge_case_handling: - -notes: -``` - ---- - -# 7. SYNC / MERGE LOGIC - -``` -# TASK: Sync Logic - -goal: -"" - -constraints: -- must be deterministic -- must be idempotent -- must be lossless -- must not delete data - -rules: -- counters → max -- times → min -- collections → union - ---- - -## Output Format - -analysis: - -merge_logic: - -code_changes: - -invariants_verified: -- deterministic -- idempotent -- lossless - -notes: -``` - ---- - -# 8. PERFORMANCE OPTIMIZATION - -``` -# TASK: Optimization - -target: -"" - -constraints: -- no behavior change -- no architecture change -- minimal code changes - ---- - -## Output Format - -analysis: -bottleneck: - -optimization_strategy: - -code_changes: - -impact_estimate: - -notes: -``` - ---- - -# 9. TEST GENERATION (STRICT MODE) - -``` -# TASK: Test Generation - -target: -"" - -reason: -- bugfix | complex logic | invariant protection - -constraints: -- no redundant tests -- must test real behavior -- must fail if logic breaks - ---- - -## Output Format - -test_cases: -- "" - -test_code: - -notes: -``` - ---- - -# 10. DEBUGGING / INVESTIGATION - -``` -# TASK: Debug - -problem: -"" - -context: -"" - ---- - -## Required Steps - -1. List possible causes -2. Narrow down most likely -3. Suggest verification steps -4. Provide minimal fix - ---- - -## Output Format - -hypotheses: - -most_likely: - -verification_steps: - -fix: - -notes: -``` - ---- - -# 11. HARD CONSTRAINT OVERRIDE (RARE) - -``` -# TASK: Exception Handling - -reason: -"" - -requested_exception: -"" - -justification: -"" - ---- - -## Output Format - -analysis: - -alternatives_considered: - -final_decision: - -risk: -``` - ---- - -# 12. STOP CONDITIONS (always append) - -``` -Stop when: -- acceptance criteria are met -- code is minimal and correct - -Do NOT: -- expand scope -- refactor unrelated code -- optimize prematurely -``` - ---- - -# END diff --git a/CLAUDE_SPEC.md b/CLAUDE_SPEC.md deleted file mode 100644 index 74b0cab..0000000 --- a/CLAUDE_SPEC.md +++ /dev/null @@ -1,296 +0,0 @@ -# CLAUDE_SPEC.md - -version: 1.0 - ---- - -## 0. Global Rules - -(Core determinism, panic policy, and event-driven engine constraints live in CLAUDE.md §2.1, §2.3, §3.1. Listed here only when they add information CLAUDE.md doesn't carry.) - -rules: - -* id: single_source_of_truth - description: "GameStateResource is the only mutable game state in runtime" - -* id: sync_is_additive - description: "Remote data must never destructively overwrite local data" - ---- - -## 1. Crate Graph - -crates: -solitaire_core: -depends_on: [rand, serde, chrono] -forbidden_deps: [bevy, reqwest, tokio, std::fs] - -solitaire_sync: -depends_on: [serde, serde_json, uuid, chrono] -role: "shared_types" - -solitaire_data: -depends_on: [solitaire_core, solitaire_sync, reqwest, tokio, keyring] -role: "persistence_and_sync" - -solitaire_engine: -depends_on: [bevy, kira, solitaire_core, solitaire_data] -role: "runtime_engine" - -solitaire_server: -depends_on: [solitaire_sync, axum, sqlx, jsonwebtoken] -role: "backend" - -solitaire_wasm: -depends_on: [solitaire_core, wasm-bindgen, serde-wasm-bindgen] -role: "wasm_replay_player" - -solitaire_app: -depends_on: [solitaire_engine] -role: "entrypoint" - ---- - -## 2. Data Ownership - -ownership: -GameState: -owner: solitaire_core -mutable_in: solitaire_engine -access_pattern: "via GameStateResource only" - -StatsSnapshot: -owner: solitaire_data - -PlayerProgress: -owner: solitaire_data - -AchievementRecord: -owner: solitaire_data - -SyncPayload: -owner: solitaire_sync - ---- - -## 3. State Transitions - -state_machine: -GameState: -transitions: -- action: move_cards -returns: Result - -``` - - action: draw - returns: Result - - - action: undo - returns: Result - -invariants: - - "52 cards always exist" - - "no duplicate card IDs" - - "all cards belong to exactly one pile" -``` - ---- - -## 4. Event System - -events: - -input: -- MoveRequestEvent -- DrawRequestEvent -- UndoRequestEvent -- NewGameRequestEvent - -state: -- StateChangedEvent -- GameWonEvent - -meta: -- AchievementUnlockedEvent -- SyncCompleteEvent - -rules: - -* "Input events trigger core logic" -* "Core logic emits state events" -* "UI reacts to state events only" - ---- - -## 5. Sync Contract - -sync: - -provider_trait: -methods: -- pull() -> SyncPayload -- push(payload) -> SyncResponse - -guarantees: -- "non-blocking during gameplay" -- "blocking allowed on exit only" - -merge: -rules: -counters: "max" -best_times: "min" -collections: "union" -achievements: "never removed" - -``` -properties: - - deterministic - - idempotent - - lossless -``` - ---- - -## 6. Persistence - -storage: - -format: json - -files: -- stats.json -- progress.json -- achievements.json -- settings.json -- game_state.json - -guarantees: -- atomic_write: true -- crash_safe: true - ---- - -## 7. Engine Rules - -engine: - -mutation_rules: -- "Only GameLogicSystem mutates GameState" -- "UI systems are read-only" - -threading: -- "sync runs on AsyncComputeTaskPool" -- "main thread must never block" - -plugins: -pattern: "feature_isolation" -communication: "events and resources" - ---- - -## 8. Server Contract - -server: - -auth: -method: jwt -access_expiry: 24h -refresh_expiry: 30d - -endpoints: -- POST /api/auth/register -- POST /api/auth/login -- GET /api/sync/pull -- POST /api/sync/push - -limits: -payload_max: 1MB -rate_limit: "10 req/min auth routes" - ---- - -## 9. Achievement System - -achievements: - -definition_location: solitaire_core -state_location: solitaire_data - -types: -- condition_based -- event_driven - -rule: -- "achievements cannot be revoked" - ---- - -## 10. Testing Rules - -testing: - -philosophy: -- "test real failures" -- "avoid redundant tests" - -required_coverage: -solitaire_core: -- move_validation -- undo_integrity -- win_detection - -``` -solitaire_sync: - - merge_correctness - - idempotency -``` - ---- - -## 11. Prohibited Patterns - -(See CLAUDE.md §11 for the canonical forbidden-patterns list.) - ---- - -## 12. Extension Points - -extensibility: - -sync_backends: -pattern: "implement SyncProvider" - -game_modes: -location: solitaire_core::GameMode - -plugins: -rule: "new feature = new plugin" - ---- - -## 13. Validation Checklist (for Claude) - -validation: - -* check: "crate dependency rules respected" -* check: "no panics in core" -* check: "events used for cross-system communication" -* check: "GameState mutations centralized" -* check: "merge function properties preserved" -* check: "no blocking operations in main loop" - ---- - -## 14. Mental Model - -model: - -layers: -- core -- engine -- data -- server - -flow: -- input -> engine -> core -> engine -> ui -- data <-> sync <-> server diff --git a/CLAUDE_WORKFLOW.md b/CLAUDE_WORKFLOW.md deleted file mode 100644 index 58e8a9a..0000000 --- a/CLAUDE_WORKFLOW.md +++ /dev/null @@ -1,335 +0,0 @@ -# CLAUDE_WORKFLOW.md - -version: 1.0 - ---- - -## 0. Overview - -This workflow defines a **two-agent system**: - -* **Builder Agent** → writes and modifies code -* **Guardian Agent** → enforces architecture + rejects invalid changes - -No code is considered valid unless it passes Guardian validation. - ---- - -## 1. Agent Roles - -### 1.1 Builder Agent - -role: "code_generation" - -responsibilities: - -* implement features -* refactor code -* generate tests (only when justified) -* follow CLAUDE_SPEC.md - -constraints: - -* cannot bypass validation -* must declare intent before writing code - -output_contract: -must_produce: -- change_summary -- files_modified -- reasoning (short) -- code_diff - ---- - -### 1.2 Guardian Agent - -role: "architecture_enforcement" - -responsibilities: - -* validate against CLAUDE_SPEC.md -* detect violations -* reject or approve changes -* suggest minimal fixes (not full rewrites) - -constraints: - -* no feature implementation -* no large rewrites -* must be deterministic - -output_contract: -must_produce: -- status: APPROVED | REJECTED -- violations[] -- required_fixes[] -- optional_improvements[] - ---- - -## 2. Workflow Pipeline - -```text -User Request - ↓ -Builder Agent (proposal + code) - ↓ -Guardian Agent (validation) - ↓ -IF approved → commit -IF rejected → feedback → Builder retry -``` - ---- - -## 3. Builder Protocol - -### Step 1 — Intent Declaration - -Builder MUST start with: - -```yaml -intent: - feature: "" - crates_touched: [] - systems_affected: [] - risk_level: low|medium|high -``` - ---- - -### Step 2 — Plan - -```yaml -plan: - - step: "..." - - step: "..." -``` - ---- - -### Step 3 — Implementation - -* Only modify declared crates -* Follow ownership rules -* Use events for cross-system communication - ---- - -### Step 4 — Output - -```yaml -change_summary: "..." - -files_modified: - - path: ... - change: "..." - -violations_self_check: - - none | list - -notes: "short reasoning" -``` - ---- - -## 4. Guardian Protocol - -### Step 1 — Spec Validation - -Check against: - -* crate boundaries -* mutation rules -* event system usage -* sync guarantees -* forbidden patterns - ---- - -### Step 2 — Invariant Validation - -Must verify: - -* GameState invariants preserved -* no new panic paths -* no blocking calls in engine -* merge properties unchanged - ---- - -### Step 3 — Output Decision - -#### APPROVED - -```yaml -status: APPROVED - -notes: - - "no violations" -``` - ---- - -#### REJECTED - -```yaml -status: REJECTED - -violations: - - id: core_purity_violation - file: "solitaire_core/src/..." - reason: "uses std::fs" - -required_fixes: - - "move IO to solitaire_data" - -optional_improvements: - - "simplify event naming" -``` - ---- - -## 5. Enforcement Rules - -### Hard Fail (automatic rejection) - -* core crate uses IO / Bevy / network -* GameState mutated outside GameLogicSystem -* blocking async on main thread -* duplicate logic across crates -* merge function altered incorrectly - ---- - -### Soft Fail (allowed but flagged) - -* unnecessary complexity -* redundant tests -* minor architectural drift - ---- - -## 6. Iteration Loop - -Max attempts per task: **3** - -```text -Attempt 1 → Reject → Fix -Attempt 2 → Reject → Fix -Attempt 3 → Final decision -``` - -If still failing: -→ escalate to user - ---- - -## 7. Diff Strategy - -Builder MUST produce: - -* minimal diffs -* no unrelated refactors -* no formatting-only changes - ---- - -## 8. Test Strategy Integration - -Builder rules: - -* only add tests if: - - * fixing a bug - * protecting complex logic - * validating invariants - -Guardian rejects: - -* redundant tests -* no-op tests - ---- - -## 9. Optional Extensions - -### 9.1 Third Agent (Optimizer) - -role: performance + cleanup - -runs AFTER approval: - -* reduce allocations -* simplify logic -* improve ECS scheduling - ---- - -### 9.2 CI Integration - -Pipeline: - -```text -Builder → Guardian → cargo check → clippy → tests -``` - -Guardian runs BEFORE compilation to catch structural issues early. - ---- - -## 10. Example Interaction - -### Builder - -```yaml -intent: - feature: "undo stack limit fix" - crates_touched: [solitaire_core] - risk_level: low -``` - -```yaml -change_summary: "limit undo stack to 64 entries" - -files_modified: - - solitaire_core/src/game_state.rs - -notes: "prevents unbounded memory growth" -``` - ---- - -### Guardian - -```yaml -status: APPROVED - -notes: - - "respects core constraints" - - "no invariant violations" -``` - ---- - -## 11. Mental Model - -* Builder = **creative** -* Guardian = **strict** - -Builder explores -Guardian enforces - -Neither replaces the other. - ---- - -## 12. Success Criteria - -System is working if: - -* architectural violations go to ~0 -* code stays consistent across features -* refactors become safe -* complexity grows sub-linearly diff --git a/SESSION_HANDOFF.md b/SESSION_HANDOFF.md deleted file mode 100644 index c728965..0000000 --- a/SESSION_HANDOFF.md +++ /dev/null @@ -1,177 +0,0 @@ -# Ferrous Solitaire — Session Handoff - -**Last updated:** 2026-05-12 — Leaderboard display name shipped (`03be4fc`). All commits pushed to origin. - -Phase 8 closes the self-hosted-server connection arc end-to-end: login/register -modal, re-auth on token expiry, account deletion flow, server deployment -artifacts (Dockerfile + docker-compose), replay upload on win, web replay -player (WASM + HTML/CSS/JS served by the server), leaderboard opt-in/out, -and full server integration tests. - ---- - -## Current state - -- **HEAD locally:** `03be4fc` (feat: leaderboard custom display name). -- **HEAD on origin:** `03be4fc` (fully pushed). -- **Working tree:** clean (only `solitaire-release.jks.bak2` untracked — intentional). -- **Build:** `cargo clippy --workspace --all-targets -- -D warnings` clean. -- **Tests:** **1300+ passing / 0 failing** across the workspace. -- **Tags on origin:** `v0.9.0` through `v0.22.0`. - ---- - -## What shipped in Phase 8 (432061c – bd388fe) - -| Commit | Summary | -|--------|---------| -| `432061c` | Sync setup modal (login/register/connect/disconnect) | -| `6ce5564` | Re-auth on expired session + server deployment artifacts | -| `272d31f` | Account deletion flow + `handle_sync_buttons` refactor | -| `bd388fe` | CHANGELOG v0.23.0 documentation | - -Also shipped (pre-Phase 8 but post-v0.22.0, already in CHANGELOG): -- `solitaire_wasm` crate: WASM ReplayPlayer bindings for browser-side replay playback -- Server replay API: `POST /api/replays`, `GET /api/replays/recent`, `GET /api/replays/:id` -- Server web UI: `/replays/:id` HTML route + `ServeDir /web` static assets -- DB migration 002: `replays` table + two indexes -- Full server integration tests for replay endpoints -- `push_replay` in `sync_plugin` (uploads on win, writes share URL into replay history) -- Stats panel "Copy Share Link" button reads `share_url` from replay history - ---- - -## Open punch list (ordered by priority) - -### 1. Documentation debt (no code) -- [x] CHANGELOG [Unreleased] → v0.23.0 — done this session -- [x] ARCHITECTURE.md update — all 8 gaps closed, bumped to v1.3 -- [x] SESSION_HANDOFF.md update — this file - -### 2. Leaderboard wiring gaps -- [x] **Best-score auto-post.** Done (`303c78a`): `update_leaderboard_if_opted_in` - called from both first-push and merge paths in `sync.rs`; uses SQLite `MIN`/`MAX` - in the UPDATE so scores never regress on stale data. -- [x] **Display name = username.** Done (`03be4fc`): `leaderboard_display_name: - Option` added to `Settings`; editor modal in leaderboard panel; persists - to `settings.json`; `handle_opt_in_button` prefers custom name over username. - -### 3. Security hardening -- [x] **Refresh token rotation.** Done (`b129664`): `refresh_tokens` table - (migration 003); jti embedded in JWT; rotate-on-use pattern; 3 integration - tests. -- [x] **Sync endpoint rate limiting.** Done (`6e6f3ef`): `UserIdKeyExtractor` - decodes JWT for per-user identity; falls back to IP; burst 10 / 6 min - steady-state; integration test passes. - -### 4. Android validation -- [x] **Android Keystore functional test.** Done (2026-05-11, Pixel 7 AVD, - Android 14): `load_access_token()` exercised via `start_pull`; logcat confirmed - `NotFound` returned cleanly — no JNI panic. See `docs/android/PLAYABILITY_TODO.md` P4. -- [x] **JNI clipboard functional test.** Done (2026-05-11): temporary `KEYCODE_C` - hook confirmed `ClipboardManager.setPrimaryClip()` succeeds on Android 14. - Hook reverted. Production path requires Interaction::Pressed + non-null `share_url`. - Note: `adb shell input tap` doesn't deliver touch events on headless AVD (documented). -- [x] **`cargo apk build --lib` noisy stderr** — upstream cargo-apk bug; `--lib` - is the canonical command (CLAUDE.md §15.1, docs/ANDROID.md). No in-repo fix possible. - -### 5. Feature completeness -- [x] **Theme importer UI.** Done (`613bbf8`): "Scan for new themes" button in - Settings Appearance section. Shows import path label, scans user_theme_dir() - for .zip archives, fires InfoToastEvent per file, refreshes ThemeRegistry. -- [x] **`mirror_achievement` removed.** Done (`549a817`): method was a no-op - default never overridden and never called; achievements already sync via - `SyncPayload` push. Deleted from trait and blanket impl. -- [x] **WASM build script.** Done (`40d0712`): `build_wasm.sh` at repo root - documents `wasm-pack build --target web`, cleans up pkg metadata files, - includes dependency guard + install instructions. -- [x] **Server password reset.** Done (`7514684`): `--reset-password ` - subcommand reads new password from stdin, bcrypt-hashes it, invalidates all - active sessions for the user. - -### 5b. Android UX polish (2026-05-12) - -- [x] **UX-1 — Modal Done button in gesture zone.** `apply_safe_area_to_modal_scrims` system - added to `SafeAreaInsetsPlugin` (`safe_area.rs`). Pads every `ModalScrim` bottom by - `insets.bottom / scale`. Fires on resource change + `Added`. Verified on device. -- [x] **UX-5b — Home mode glyph corruption.** Geometric Shapes (U+25xx, absent from FiraMono) - replaced with card suits U+2660–2666 in `home_plugin.rs`. Affects Zen/Challenge/Daily mode - selector buttons at level 5+. -- [x] **UX-7 — Help text wrap.** Android HUD entry shortened to - `"Open menu (Stats, Settings, Profile...)"` in `help_plugin.rs` — fits one line. -- [x] **BUG-3 — Multi-modal stacking.** `handle_menu_button` now checks - `scrims: Query<(), With>` and guards `spawn_menu_popover` with `scrims.is_empty()`. - Verified on device: ≡ tap while Stats open does nothing. - - **Note:** These 4 fixes are implemented and verified but not yet committed. - -### 6. Testing gaps -- [x] **Server 401 → refresh → retry path.** Done (`198df75`): both - `jwt_refresh_on_401_succeeds` (pull) and - `push_retries_after_401_on_expired_access_token` (push) in - `solitaire_data/tests/sync_round_trip.rs`. -- [x] **WASM winning-replay step-through.** Done (`b4ada2a`): greedy solver - searches seeds 1–200 at test time; steps every move through `ReplayPlayer`; - asserts `is_won = true` on the final `StateSnapshot`. - ---- - -## ARCHITECTURE.md gaps (for the update pass) - -Items missing from the doc: -1. `solitaire_wasm` crate (§2 workspace + §3 responsibilities) -2. Replay API endpoints (§9 API Reference — 3 new routes) -3. Web replay player route (`/replays/:id` + `ServeDir /web`) -4. `SyncProvider` trait: 6 added methods -5. Theme system in Bevy plugin table (§5) -6. `Settings` new fields: `color_blind_mode`, `high_contrast_mode`, - `reduce_motion_mode`, `window_geometry`, `selected_card_back`, - `selected_background` -7. DB migration 002 (§7) -8. Update "Last Updated" date - ---- - -## Process notes - -- **Commit attribution:** use `funman300` as git user. Co-author line: - `Co-Authored-By: Claude Sonnet 4.6 `. -- **Commit format:** `type(scope): description` per CLAUDE.md §7. -- **Never commit without:** `cargo test --workspace` passing + clippy clean. -- **Sub-agents** stage/verify only; orchestrator commits. -- **`CARD_PLAN.md`** referenced in `theme/` module comments but not present in - repo. Clean up references or commit the file. -- **Token-port pattern** (v0.20.0): when migrating tokens, walk every concrete - artifact downstream — PNGs, SVGs, literals, comments. Three "walked past this" - follow-ups in v0.21.0 all had this shape. - ---- - -## Resume prompt - -``` -You are a senior Rust + Bevy developer working on Ferrous Solitaire. -Working directory: . -Branch: master. v0.23.0 is the current version (HEAD: 03be4fc). Fully pushed. - -READ FIRST (in order): - 1. SESSION_HANDOFF.md — this file - 2. CHANGELOG.md — [0.23.0] section has full Phase 8 detail - 3. CLAUDE.md — unified-4.0 rule set - 4. ARCHITECTURE.md — v1.3, fully up to date - 5. docs/ui-mockups/ — design system + mockup library - 6. docs/android/ — Android setup + build runbook - 7. ~/.claude/projects//memory/MEMORY.md - -OPEN WORK: - Phase 8 punch list is fully closed. All items verified complete. - Remaining nuisance: `cargo apk build --lib` noisy stderr (cosmetic, non-blocking). - - 4 Android UX fixes are implemented and verified but NOT YET COMMITTED: - - BUG-3 (hud_plugin.rs): multi-modal stacking guard - - UX-7 (help_plugin.rs): help text wrap on Android - - UX-5b (home_plugin.rs): FiraMono glyph corruption in mode selector - - UX-1 (safe_area.rs): modal Done button in gesture zone - - Commit those first, then suggest Phase 9 planning. -``` diff --git a/docs/SESSION_HANDOFF.md b/docs/SESSION_HANDOFF.md deleted file mode 100644 index 15304c9..0000000 --- a/docs/SESSION_HANDOFF.md +++ /dev/null @@ -1,262 +0,0 @@ -# Ferrous Solitaire — Session Handoff (ARCHIVED) - -> **This file is from Phase 2 (2026-04-25, 242 tests). It is kept for historical -> reference only. The authoritative session handoff is at the repo root: -> `SESSION_HANDOFF.md`.** - -> Last updated: 2026-04-25 -> Branch: `master` — pushed to https://github.com/funman300/Rusty_Solitaire.git -> Test count: **242 passing** (83 core + 60 data + 99 engine), `cargo clippy --workspace -- -D warnings` clean - ---- - -## What Has Been Built - -### Phase 1 — Workspace Setup ✅ COMPLETE - -All seven Cargo crates created and compiling cleanly: - -| Crate | Status | Purpose | -|---|---|---| -| `solitaire_core` | Fully implemented | Pure Rust game logic — NO Bevy, NO network | -| `solitaire_sync` | Stub | Shared API types (`SyncPayload`, `SyncResponse`) | -| `solitaire_data` | Stub | `SyncError` enum + `SyncProvider` trait | -| `solitaire_engine` | Stub | Bevy ECS systems — all plugins added in Phase 3 | -| `solitaire_server` | Stub | Axum sync server — implemented in Phase 8C | -| `solitaire_gpgs` | Compile-time stub | Google Play Games bridge — Android only, JNI in Phase: Android | -| `solitaire_app` | Working | Opens blank Bevy window titled "Ferrous Solitaire" at 1280×800 | - -Fast compile profiles, `assets/` directory structure, and `.env.example` are all in place. - -### Phase 2 — Core Game Engine ✅ COMPLETE - -`solitaire_core` is fully implemented with 68 passing tests and zero clippy warnings. - -**Modules:** -- `card.rs` — `Suit` (Clubs/Diamonds/Hearts/Spades, `is_red()`/`is_black()`), `Rank` (Ace–King, `value() -> u8`), `Card` (id, suit, rank, face_up) -- `pile.rs` — `PileType` (Stock, Waste, Foundation(Suit), Tableau(usize)), `Pile` (new, top) -- `error.rs` — `MoveError`: InvalidSource, InvalidDestination, EmptySource, RuleViolation(String), UndoStackEmpty, GameAlreadyWon, StockEmpty -- `deck.rs` — `Deck::new()`, `Deck::shuffle(seed: u64)` using seeded `StdRng` (cross-platform deterministic), `deal_klondike(deck) -> ([Pile; 7], Pile)` -- `rules.rs` — `can_place_on_foundation(card, pile, suit)`, `can_place_on_tableau(card, pile)` -- `scoring.rs` — `score_move(from, to)`, `score_undo()` (-15), `compute_time_bonus(elapsed_seconds)` (700_000/s) -- `game_state.rs` — `DrawMode`, `GameState` with full game loop - -**GameState public API:** -```rust -GameState::new(seed: u64, draw_mode: DrawMode) -> Self -GameState::draw(&mut self) -> Result<(), MoveError> -GameState::move_cards(&mut self, from: PileType, to: PileType, count: usize) -> Result<(), MoveError> -GameState::undo(&mut self) -> Result<(), MoveError> -GameState::check_win(&self) -> bool -GameState::check_auto_complete(&self) -> bool -GameState::compute_time_bonus(&self) -> i32 -GameState::undo_stack_len(&self) -> usize -``` - -**Key GameState rules:** -- Undo stack capped at 64 entries (oldest evicted) -- Score never goes below 0 -- Waste recycling is unlimited — `StockEmpty` only when both stock AND waste are simultaneously empty -- Recycle (waste → stock) pushes a snapshot so it can be undone -- Newly exposed top card of source pile is flipped face-up automatically on `move_cards` -- Win: all 4 foundations at 13 cards -- Auto-complete: stock empty + waste empty + all tableau cards face-up - ---- - -## Commit History - -``` -b8dc7cb fix(core): remove stock_recycled limit, replace unwrap, snapshot on recycle, fix derives -58f1465 feat(core): add GameState with draw, move_cards, undo, win/auto-complete detection -43194b0 fix(core): use StdRng doc comment, replace expect() with debug_assert in deal_klondike -17bbec0 feat(core): add pile, error, deck, rules, scoring modules with tests -fcf878b feat(core): add Card, Suit, Rank types with tests -f84d7c5 fix(workspace): add derives/docs per code review, remove unused thiserror from solitaire_sync -684f077 feat(workspace): initialize all seven crates with stubs and blank Bevy window -``` - ---- - -### Phase 3 — Bevy Rendering & Interaction ✅ COMPLETE - -All sub-phases (3A–3F) done. Plugins: `GamePlugin`, `TablePlugin`, `CardPlugin`, `InputPlugin`, `AnimationPlugin`. Full game playable — drag/drop with rule validation, keyboard shortcuts (U/N/D/Esc), animated slides, win cascade. UI via `bevy::ui`, no egui. - -### Phase 4 — Statistics Persistence ✅ COMPLETE - -- `solitaire_data::StatsSnapshot` with `update_on_win` / `record_abandoned` / `win_rate` -- Atomic file I/O via `save_stats_to` (`.tmp` → rename) -- `StatsPlugin` in `solitaire_engine` — loads on startup, persists on `GameWonEvent` (win) and `NewGameRequestEvent` (abandoned if move_count>0 and not won) -- Full-window overlay toggled with `S` — games played/won, win rate, streak, best score, fastest, avg -- `StatsPlugin::default()` for production, `StatsPlugin::headless()` for tests (no disk I/O) - -### Phase 5 — Achievements ✅ COMPLETE (14 of ~19) - -- `solitaire_core::achievement` — `AchievementContext` + `AchievementDef` + `ALL_ACHIEVEMENTS` + `check_achievements` -- `solitaire_core::GameState.undo_count` — tracks whether undo was used (for `no_undo` / `speed_and_skill`) -- `solitaire_data::AchievementRecord` + atomic `achievements.json` persistence -- `AchievementPlugin` — on `GameWonEvent`, build context from `StatsResource` + `GameState` + `chrono::Local` hour, evaluate all conditions, persist newly-unlocked records, emit `AchievementUnlockedEvent(id)` -- `AnimationPlugin`'s toast resolves the event's ID to the achievement's name via `achievement_plugin::display_name_for` -- New `StatsUpdate` system set lets `AchievementPlugin` order itself after stats are incremented -- Deferred: `daily_devotee` (needs `PlayerProgress`), `comeback` (needs recycle counter), `zen_winner` (needs modes), `perfectionist` (needs max-score calc). Stubs can be added in later phases. - -### Phase 6 (part 1) — XP, Levels, ProgressPlugin ✅ COMPLETE - -- `solitaire_data::PlayerProgress` with `total_xp`, `level`, daily/weekly/unlock fields -- `level_for_xp(xp)` and `xp_for_win(time, used_undo)` helpers (per ARCHITECTURE.md §13) -- `add_xp(amount) -> prev_level` with `leveled_up_from(prev)` for level-up detection -- Atomic `progress.json` persistence via `save_progress_to` / `load_progress_from` -- `ProgressPlugin` — on `GameWonEvent`, awards XP (base 50 + speed bonus 10–50 + no-undo 25), persists, emits `LevelUpEvent` -- `ProgressUpdate` system set for ordering downstream systems -- `ProgressPlugin::default()` for production, `::headless()` for tests - -### Phase 6 (part 2a) — Daily Challenge + Level-Up Toast ✅ COMPLETE - -- `daily_seed_for(date)` deterministic per-date seed -- `PlayerProgress::record_daily_completion(date)` with streak / reset / idempotency rules -- `DailyChallengePlugin`: today's seed in a resource; pressing **C** starts a daily-seed new game; on winning a daily-seed game, awards **+100 XP**, updates streak, persists, fires `DailyChallengeCompletedEvent` -- `LevelUpEvent` now spawns a toast through `AnimationPlugin` -- `daily_devotee` achievement wired (streak ≥ 7); `AchievementContext` gains `daily_challenge_streak` and reads from `ProgressResource` - -### Phase 6 (part 2b) — Weekly Goals ✅ COMPLETE - -- `solitaire_data::weekly` — `WeeklyGoalKind`, `WeeklyGoalDef`, `WeeklyGoalContext`, `current_iso_week_key`, three starter goals (5 wins / 3 no-undo / 3 fast) -- `PlayerProgress` — `weekly_goal_week_iso`, `roll_weekly_goals_if_new_week`, `record_weekly_progress` -- `WeeklyGoalsPlugin` — on `GameWonEvent`, rolls week if needed, increments matching goals, awards `WEEKLY_GOAL_XP` (75) per completion, fires `WeeklyGoalCompletedEvent` - -### Phase 6 (part 3) — Completion Toasts + Progression Panel ✅ COMPLETE - -- `AnimationPlugin` now surfaces `DailyChallengeCompletedEvent` (shows streak) and `WeeklyGoalCompletedEvent` (shows goal description) as 3-second toasts. -- Stats overlay (**S** key) appends a Progression section: level, total XP, daily streak, and a Weekly Goals list iterating `WEEKLY_GOALS` with `progress/target` for each. - -### Phase 6 (part 4a) — Elapsed Time + Zen Mode ✅ COMPLETE - -- `tick_elapsed_time` in `GamePlugin` ticks `GameState.elapsed_seconds` once per real-world second while not won; `advance_elapsed` is a pure helper for direct unit testing. -- `GameMode` enum (`Classic` / `Zen`) added to `solitaire_core::game_state`. `GameState.mode` field; `GameState::new_with_mode` ctor. Zen suppresses scoring in `move_cards` and `undo`. Field is `#[serde(default)]` for backwards-compatible saved games. -- `NewGameRequestEvent` carries an optional `mode`; `handle_new_game` falls back to the current game's mode when `None`. -- `Z` key starts a fresh Zen game. - -### Phase 6 (part 4b) — Challenge Mode + Level-5 Gate ✅ COMPLETE - -- `GameMode::Challenge` variant in core; `undo()` returns `RuleViolation` in Challenge. -- `solitaire_data::challenge` — `CHALLENGE_SEEDS` static list, `challenge_seed_for(index)` wrapping modulo length, `challenge_count()`. -- `PlayerProgress.challenge_index` (serde-default) tracks progression. -- `ChallengePlugin` advances the cursor on Challenge-mode wins, persists, fires `ChallengeAdvancedEvent`. **X** key starts a Challenge-mode game with the current seed. -- Both **Z** (Zen) and **X** (Challenge) are gated to `level >= CHALLENGE_UNLOCK_LEVEL` (5). - -### Phase 6 (part 4c) — Time Attack + Unlock UI ✅ COMPLETE - -- `GameMode::TimeAttack` variant added to core (no scoring/undo changes — just a session marker). -- `TimeAttackPlugin` (engine) — `TimeAttackResource { active, remaining_secs, wins }` (session-only, not persisted), `TimeAttackEndedEvent { wins }`. **T** starts a session (gated to level ≥ 5) and deals a TimeAttack-mode game; the timer (`TIME_ATTACK_DURATION_SECS = 600.0`) decrements each frame; wins during the active session bump the counter and auto-deal a fresh game. -- `AnimationPlugin` surfaces `TimeAttackEndedEvent` as a 5-second summary toast. -- `StatsPlugin` overlay (**S**) appends an "Unlocks" subsection (card backs / backgrounds, sorted/deduped, "None" when empty) and a live "Time Attack" panel showing remaining minutes/seconds + wins while a session is active. -- Helper `format_id_list` factored out + tested. - -### Phase 7 (part 1) — Help Overlay + Challenge Toast ✅ COMPLETE - -- `HelpPlugin`: **H** or `?` toggles a full-window cheat sheet listing all keybindings (gameplay, mode hotkeys, overlays). 3 unit tests. -- `AnimationPlugin` now surfaces `ChallengeAdvancedEvent` as a 3-second toast ("Challenge N cleared!"). - -### Phase 7 (part 2) — Synthesized SFX + AudioPlugin ✅ COMPLETE - -- New workspace crate `solitaire_assetgen` with bin `gen_sfx`. Synthesizes five 44.1kHz mono 16-bit PCM WAVs from a deterministic LCG noise source + sine/square synths into `assets/audio/`. Run with `cargo run -p solitaire_assetgen --bin gen_sfx`. Output is committed; end users never run the generator. -- `AudioPlugin` (`solitaire_engine`): embeds the WAVs via `include_bytes!()`, decodes once via `kira::StaticSoundData::from_cursor`, plays on `DrawRequestEvent` (flip), `MoveRequestEvent` (place), `NewGameRequestEvent` (deal), `GameWonEvent` (fanfare). -- Backend handle stored as `NonSend` (cpal stream is `!Send` on some platforms). Plugin degrades gracefully if no audio device is available — logs a warning, gameplay continues silently. -- Single decode unit test (`embedded_wavs_decode_successfully`) keeps the loader and generator in sync. - -### Phase 7 (part 3) — MoveRejectedEvent + Pause Menu ✅ COMPLETE - -- New `MoveRejectedEvent { from, to, count }`. `end_drag` fires it when the cursor is over a real pile but `can_place_*` rejects the placement. `AudioPlugin` plays `card_invalid.wav` on it. -- New `PausePlugin` + `PausedResource(bool)`. **Esc** toggles a full-window pause overlay (ZIndex 220) and flips the resource. `tick_elapsed_time` and `advance_time_attack` skip work while paused. Input is deliberately not blocked — pause is a "stop the clock" screen, nothing more. -- `HelpPlugin` cheat sheet updated to reflect the new Esc behaviour. - -### Phase 7 (part 4) — Settings + SFX Volume Control ✅ COMPLETE - -- New `solitaire_data::Settings { sfx_volume, first_run_complete }` with atomic JSON persistence (`save_settings_to` / `load_settings_from`). `sanitized()` clamps out-of-range volumes after deserialization. Default `sfx_volume = 0.8`. -- New `SettingsPlugin` (engine) with `SettingsResource`, `headless()` ctor, and `SettingsChangedEvent`. **\[** / **\]** adjust SFX volume by `SFX_STEP` (0.1), clamped; persists on change. No-op + no event when already at the rail. -- `AudioPlugin` applies `sfx_volume` to kira's main track at startup and on every `SettingsChangedEvent` (so changes take effect mid-game without restart). -- `AnimationPlugin` shows a brief "SFX: 70%" toast on every change so players see the new value. -- Help cheat sheet lists the **\[** / **\]** keys. -- 4 plugin tests + 6 data tests added — defaults, clamping, round-trip persistence. - -### Phase 7 (part 5) — First-Run Onboarding ✅ COMPLETE - -- New `OnboardingPlugin`. At `PostStartup`, if `Settings.first_run_complete == false`, spawns a centered welcome banner pointing at the **H**/`?` cheat sheet (ZIndex 230). Any key or mouse-button press dismisses it, sets the flag, and persists `settings.json` — returning players never see it again. -- 4 unit tests cover spawn-only-on-first-run, key dismiss, and click dismiss. - -## What Is Next - -Phase 7 polish slate is done. Phase 8 (sync) is next. - -### Phase 8 — Sync - -| Phase | Scope | -|---|---| -| Phase 8A | Local storage scaffolding + `SyncProvider` plumbing in `solitaire_data` | -| Phase 8B | Self-hosted Axum server (auth, sync endpoints, SQLite schema) | -| Phase 8C | `SolitaireServerClient` (`SyncProvider` impl) + `SyncPlugin` lifecycle | -| Phase 8D | GPGS stub fully wired into the settings UI (Android-only `cfg`-gated) | - -### Tiny optional polish (anytime) - -- **Ambient loop**: optional sixth WAV — needs taste, deferred until artwork phase. -- **Block input while paused**: drag/hotkeys still work mid-pause; tightening this would make pause behave more like a true modal. - ---- - -## Important Implementation Notes - -### Versions (Cargo.toml workspace deps) - -- `bevy = "0.15"` (resolved to 0.15.3) — UI via built-in `bevy::ui`, no bevy_egui -- `kira = "0.9"` — audio via `kira` crate directly, no bevy_kira_audio or AssetServer -- `rand = "0.8"` — note: `small_rng` feature is NOT enabled; use `StdRng`, not `SmallRng` - -### Asset strategy - -- No `AssetServer` — assets embedded at compile time using `include_bytes!()` -- Fonts: `Font::try_from_bytes(include_bytes!("../assets/fonts/main.ttf"))` -- Audio: load from `&[u8]` via `kira` `StaticSoundData::from_cursor()` -- Card rendering: procedural (`bevy::prelude::Sprite` + `Text2d`) — no sprite sheets required - -### Hard rules (from CLAUDE.md) -- `solitaire_core` and `solitaire_sync` must NEVER gain Bevy or network dependencies -- No `unwrap()` or `panic!()` in game logic — use `Result<_, MoveError>` everywhere -- All state transitions return `Result` — `debug_assert!` is acceptable for structural invariants -- `SyncPlugin` must NEVER match on `SyncBackend` enum inside a Bevy system — always call through the `SyncProvider` trait -- Atomic file writes only: write to `.tmp` then `rename()` -- `cargo clippy --workspace -- -D warnings` must pass clean -- `cargo test --workspace` must pass clean - -### Lessons from this session -- `rand = "0.8"` without `features = ["small_rng"]` means `SmallRng` is unavailable — use `StdRng` -- `tower-governor` uses underscores in the crate name (not hyphens in Cargo.toml) -- When implementing `draw()` in `GameState`: recycle is unlimited, stop condition is BOTH piles empty simultaneously -- Recycle must push a snapshot (so it can be undone) even though it doesn't count as a "move" - ---- - -## Implementation Plan Document - -The detailed task-by-task plan for Phases 1 and 2 is at: -`docs/superpowers/plans/2026-04-20-phase1-2-workspace-core.md` - -For Phase 3 onwards, write a new plan using the `superpowers:writing-plans` skill before starting implementation. - ---- - -## Running the Project - -```bash -# Check everything compiles -cargo check --workspace - -# Run all tests (214 tests, all should pass) -cargo test --workspace - -# Lint (must be zero warnings) -cargo clippy --workspace -- -D warnings - -# Run the game -cargo run -p solitaire_app --features bevy/dynamic_linking -``` diff --git a/docs/android/PLAYABILITY_TODO.md b/docs/android/PLAYABILITY_TODO.md deleted file mode 100644 index ed09ba5..0000000 --- a/docs/android/PLAYABILITY_TODO.md +++ /dev/null @@ -1,270 +0,0 @@ -# Android Playability TODO - -**Started:** 2026-05-10 — first hardware screenshot of v0.22.3 APK -running on a real device showed the desktop HUD projected onto a -360 dp portrait viewport with no mobile adaptation. This list -tracks the work needed to make the APK genuinely playable, not -just "boots without crashing." - -**Context:** v0.22.3 (signed release APK) builds and launches. -JNI bridges (clipboard, keystore) compile but are untested on -hardware. The work below is UI/UX port work — no architectural -rewrites required. - ---- - -## Reading from the v0.22.3 screenshot - -| Region | Observation | -|--------|-------------| -| Top ~5 % | System bar (clock, signal, battery) overlapped by game HUD — no safe-area inset | -| HUD text row | `Score:0 Pause Esc Help A Modes [] New_Game N Moves:0 0:08` all overlapping — desktop layout crammed into 360 dp | -| Keyboard hints | `Esc`, `A`, `[]`, `N` shown next to buttons — meaningless on touch | -| Foundations row | Leftmost foundation (♥) clipped left; rightmost tableau column (♠ 4) clipped right | -| Card backs | Face-down cards render as solid red squares, not back-art texture | -| Vertical use | Cards occupy top ~30 % only; bottom 70 % empty black — no portrait-aware layout | -| Bottom edge | No accommodation for Android gesture / home-indicator area | - ---- - -## P0 — Blocking playability - -- [x] **Safe-area insets (top + bottom).** *Closed 2026-05-10 by - `b9aa262`.* `SafeAreaInsets` resource + `SafeAreaInsetsPlugin` - query `WindowInsets.getInsets(systemBars())` via JNI on Android; - HUD anchors carry `SafeAreaAnchoredTop { base_top }` and the - change-detection fix-up system re-applies `base_top + insets.top` - whenever the resource updates. Bottom inset is captured but not - yet consumed (waits for bottom-anchored UI). -- [x] **Mobile HUD layout.** *Closed 2026-05-10.* Both the left HUD - column and the right action button row are now capped at - `max_width: 50 %` and the button row + tier-row child Nodes carry - `flex_wrap: Wrap`. On a 360 dp viewport the 6-button row breaks - to multiple lines (right-justified) and the tier rows wrap - individually instead of overflowing into the action column. On - desktop (≥ 1280 px) the 50 % cap is wider than any natural row - width so the existing single-line layout is unchanged. -- [x] **Card-back asset not rendering.** *Closed 2026-05-10 by - `fcc7337`.* `AssetPlugin::file_path = "../assets"` was set - unconditionally to fix the desktop `cargo run -p solitaire_app` - CWD relativity, but on Android cargo-apk packages the same - directory into the APK at `assets/` and Bevy's - AndroidAssetReader is already rooted there — prepending `../` - walked the reader out of the APK assets root and every load - failed silently. The face-down branch then fell through to the - `card_back_colour(0)` solid-red brick fallback. Gated the - override behind `#[cfg(not(target_os = "android"))]`. -- [x] **Viewport overflow.** *Closed 2026-05-10.* `compute_layout` - was clamping the input window up to `MIN_WINDOW = 800 × 600`, - so a 360 dp phone got laid out as if it were 800-wide and the - outer piles fell outside the actual viewport. Lowered the floor - to 320 × 400 (below the smallest reasonable phone) so real - Android resolutions flow through without clamping, while keeping - a sentinel to guard against degenerate / startup-zero windows. - New regression test `phone_portrait_layout_fits_horizontally` - asserts all 13 piles fit a 360 × 800 viewport. - -## P1 — Touch UX - -- [x] **Suppress keyboard-hint labels on Android.** *Closed - 2026-05-10.* `spawn_action_button` now nulls the `hotkey` - argument on Android via a `#[cfg(target_os = "android")]` rebind, - so the U / Esc / F1 / N chips next to the action row labels - disappear on touch builds. Remaining hint sites swept in P3 — - see full-keyboard-hint-sweep entry below. -- [x] **Thumb-sized hit targets.** *Closed 2026-05-10.* Action - button Node carries `min_width: Val::Px(48.0), min_height: - Val::Px(48.0)` — meets Material's 48 dp baseline on touch and is - a no-op for buttons whose content already exceeds 48 px in - either axis. Applied universally rather than cfg-gated since - Material's guideline applies to all input modes. Cards, pile - markers, modal close buttons not yet audited — track as P3 if - they fall below threshold on hardware. -- [x] **Portrait-first card spacing.** *Closed 2026-05-11.* - `compute_layout` now derives an adaptive `tableau_fan_frac` from the - available vertical space below the tableau row. On height-limited - (desktop) windows the formula returns ≈ 0.25 and the clamp keeps the - existing behaviour. On width-limited (portrait phone) windows — where - card size is constrained by the 9-column horizontal packing — the fan - fraction expands to fill the viewport (≈ 0.84 at 360 × 800 dp). - `tableau_facedown_fan_frac` scales proportionally. Both values live in - the `Layout` struct; `card_plugin::card_positions` and - `input_plugin::card_position` / `pile_drop_rect` read from the struct - so rendering and hit-testing stay in sync across viewport sizes. -- [x] **Double-tap auto-move visible feedback.** *Closed 2026-05-11.* - On a recognised double-tap (priority 1 single-card or priority 2 - stack move), the moved card(s) receive a 0.35 s lime flash - (`STATE_SUCCESS` tint + `HintHighlight { remaining: 0.35 }`) before - the move request is written. The flash persists through the card - animation and is cleaned up by the existing `tick_hint_highlight` - system. Hardware trigger-verification remains a manual step — connect - AVD or device and confirm two rapid `TouchPhase::Ended` events within - 0.5 s produce the lime flash. - -## P2 — Polish - -- [x] **Drag responsiveness on touch.** *Closed 2026-05-11.* - Two code-side improvements shipped; final feel confirmation still needs - hardware: - 1. `start_drag` (mouse path) now bails out when a touch is just-pressed - (`Touches::iter_just_pressed()`), ensuring `touch_start_drag` always - owns the drag state on touch-screen devices — including Bevy/Winit - versions that simulate `MouseButton::Left` from the primary touch. - 2. Mobile drag commit threshold lowered 10 px → 8 px, matching Android's - `ViewConfiguration.getScaledTouchSlop()` spec. Smaller threshold → - smaller snap-on-commit and faster perceived response. - **Remaining:** connect AVD or device and verify drag feels responsive - with no stutter; tune threshold further if needed. -- [x] **Long-press menu.** *Closed 2026-05-11.* New system - `radial_open_on_long_press` in `radial_menu.rs` counts up while a - touch is held (`drag.active_touch_id.is_some() && !drag.committed`) - and opens `RightClickRadialState::Active` after 0.5 s — the same - state the right-click path uses. Existing radial infrastructure - then handles everything: - - `radial_track_cursor` extended to fall back to the first active - touch when no cursor position is available, so sliding the held - finger moves the hover ring. - - `radial_handle_release_or_cancel` extended to confirm/cancel on - `Touches::iter_just_released()` in addition to right-mouse release. - - `handle_double_tap` skips when the radial is active (guards a - narrow edge case where the finger lifts at exactly the same frame - the 0.5 s threshold fires). - Hardware verification needed: confirm the 0.5 s hold feel, verify - sliding to a destination and lifting confirms the move. -- [x] **HUD typography.** *Closed 2026-05-11.* New system - `update_hud_typography` fires on `WindowResized` and adjusts Tier-1 - font sizes based on viewport width. Below 480 logical px: Score - `TYPE_HEADLINE` (26) → `TYPE_BODY_LG` (18), Moves/Timer - `TYPE_BODY_LG` (18) → `TYPE_CAPTION` (11), so all three items fit - in the 180 dp HUD column on a 360 dp phone. At ≥ 480 px the - original sizes are restored — desktop/tablet layout unchanged. - `add_message::()` added defensively to `HudPlugin` - so the system works under `MinimalPlugins` in tests. -- [x] **Orientation lock.** *Closed 2026-05-11.* Added - `[package.metadata.android.application.activity]` section to - `solitaire_app/Cargo.toml` with `orientation = "portrait"`. - cargo-apk/ndk-build maps this to `android:screenOrientation="portrait"` - in the generated `AndroidManifest.xml`. Remove (or add a landscape - layout) before enabling auto-rotate. - -## P3 — Asset density - -- [x] **Density-aware card scaling.** *Closed 2026-05-11 — no code change - required.* `WindowResized` fires with **logical** pixels; sprites are - sized in world units (1 world unit = 1 logical pixel); Bevy's renderer - maps logical → physical via `scale_factor` internally. On a 360 dp - 3×-DPI phone, cards are 40 logical dp = 120 physical px. The 256 × 384 px - card textures are **downscaled** to fit (256 → 120 px) — quality is fine. - Upscaling only occurs if `card_width × scale_factor > 256`, i.e. a - tablet with a logical width > 765 dp at 3× DPI — no current target - device falls in that range. Revisit if the game ships on large-screen - high-DPI tablets. -- [x] **App-icon density buckets.** *Closed 2026-05-11.* Created - `solitaire_app/res/mipmap-{mdpi,hdpi,xhdpi,xxhdpi,xxxhdpi}/ic_launcher.png` - from the existing `assets/icon/` PNGs (48→mdpi, 64→hdpi, 128→xhdpi, - 256→xxhdpi+xxxhdpi). Added `resources = "res"` to - `[package.metadata.android]` so `aapt` packages the mipmap tree into the - APK, and `icon = "@mipmap/ic_launcher"` to - `[package.metadata.android.application]` so the launcher references it. -- [x] **Full keyboard-hint sweep.** *Closed 2026-05-11.* Extended the - P1 suppression to cover all remaining hint sites: - - `ui_modal.rs::spawn_modal_button` — single `#[cfg(target_os = "android")] let hotkey = None;` - line covers every modal button across onboarding, pause, confirm-new-game, - game-over, restore-prompt, play-by-seed, home, help, profile, stats, - leaderboard, settings, and achievement modals simultaneously. - - `home_plugin.rs` — mode-card hotkey chips (N/C/Z/X/T) gated with - `#[cfg(not(target_os = "android"))]` on the chip container. - - `replay_overlay.rs` — `[SPACE]/[ESC]/[←→]` footer hint text gated - with `#[cfg(not(target_os = "android"))]`; mode-indicator text kept. - - `help_plugin.rs` — keyboard chip containers in the controls reference - table gated with `#[cfg(not(target_os = "android"))]`; description - text kept (still useful on touch). - -## P4 — Stability / runtime - -- [x] **B0004 ECS hierarchy warnings.** *Investigated 2026-05-11 — no - fix required.* B0004 fires via Bevy's `validate_parent_has_component` - hook when a child entity has UI component `C` (e.g. `Node`, - `InheritedVisibility`) but its parent doesn't yet. In Bevy 0.18, - `.despawn()` is recursive (docs: "When a parent is despawned, all - children will also be despawned"), so all `.despawn()` calls in the - engine are safe. The warnings seen on the Pixel 7 AVD during startup - are a component-propagation timing artifact — UI children reach the - hook before the parent's inherited components finish initialising — - not a gameplay defect. `despawn_related::()` in - `card_plugin.rs` is explicit child-only teardown (parent kept alive) - and is correct. No gameplay bugs attributed to these warnings over 2+ - min AVD runtime. -- [x] **AVD functional tests for JNI bridges.** *Closed 2026-05-11.* - Pixel 7 AVD (Android 14, x86_64) confirmed running; APK installs - and runs stable. Key findings: - - **Keystore JNI — verified working.** Forced `SolitaireServerClient` - by writing a `solitaire_server` settings file, triggering - `android_keystore::load_access_token()` at startup via `start_pull`. - Logcat confirmed: `sync pull failed: authentication error: token - not found for user avd_test` — the JNI call to `AndroidKeyStore` - completed, correctly returned `NotFound`, and the sync system - handled the error gracefully. No panic, no crash from the JNI layer. - - **Clipboard JNI — verified working.** Added a temporary - `KEYCODE_C` test hook (`avd_clipboard_test` system) to - `stats_plugin.rs`, rebuilt the APK, pressed C on the AVD. - Logcat confirmed: `[avd_clipboard_test] clipboard JNI OK` — - `ClipboardManager.setPrimaryClip()` succeeded on Android 14. - Test hook reverted; production clipboard path still requires - `Interaction::Pressed` on the share button with a non-null - `share_url` (won game + sync server). - - **Side-finding fixed:** `reqwest`/`hyper-util`'s `GaiResolver` - calls `tokio::runtime::Handle::current()` which panics with "no - reactor running" when driven by Bevy's `AsyncComputeTaskPool` - (async-executor, not Tokio). Fixed in `sync_plugin.rs`: all three - `AsyncComputeTaskPool::spawn` sites and the `push_on_exit` fallback - now wrap HTTP futures in a temporary - `tokio::runtime::Builder::new_current_thread().enable_all()` runtime. - - **Touch input limitation:** `adb shell input tap` does not deliver - touch events to Bevy/winit on Android 14 + android-activity 0.6.1 - in headless AVD mode. Keyboard events (`KEYCODE_*`) work normally. - ---- - -## P5 — UX polish (2026-05-12) - -- [x] **UX-1 — Modal Done button unreachable in gesture zone.** *Closed - 2026-05-12.* New `apply_safe_area_to_modal_scrims` system in - `safe_area.rs` pads every `ModalScrim` bottom by `insets.bottom / - window.scale_factor()` (logical pixels). Fires when `SafeAreaInsets` - changes AND when a new `ModalScrim` is spawned (`Added` - filter). Verified on device: Settings Done button reachable at physical - y ≈ 1800–2000 (was y ≈ 2232+, inside gesture zone). -- [x] **UX-5b — Home mode selector glyph corruption.** *Closed - 2026-05-12.* `home_plugin.rs` mode glyphs changed from Geometric Shapes - block (U+25xx — absent from FiraMono, renders as rectangles) to card - suits U+2660 ♠ / U+2665 ♥ / U+2666 ♦. Affects Zen, Challenge, and - Daily mode selector buttons shown at level 5+. -- [x] **UX-7 — Help screen HUD button entry wraps to two lines.** *Closed - 2026-05-12.* Android `CONTROL_SECTIONS` entry for ≡ button shortened - from `"Menu: Stats, Settings, Profile, Achievements"` to - `"Open menu (Stats, Settings, Profile...)"` in `help_plugin.rs`. - Fits on one line at 360 dp. -- [x] **BUG-3 — Multi-modal stacking (Stats + Profile simultaneously).** *Closed - 2026-05-12.* `handle_menu_button` in `hud_plugin.rs` now checks - `scrims: Query<(), With>` and only calls - `spawn_menu_popover` when `scrims.is_empty()`. Tapping ≡ while any - modal is open is a no-op. Verified on device. - -## Notes / decisions - -* This list is screenshot-driven; expect more items to surface once - P0 unblocks actually moving cards on hardware. -* The pattern across all the bugs is "no one ran the relevant code - path on Android yet." The hard work — Bevy 0.18 on Android, - JNI bridges, signed CI builds — is done. What's left is a - coordinated pass of `#[cfg(target_os = "android")]` gates plus - making `LayoutResource` query the real surface size. -* Where possible, prefer responsive layout (query window size) over - branching `#[cfg]` blocks. Branches are fine for input methods - (touch vs. mouse) but not for screen geometry — a foldable or - desktop window of equivalent size should look the same. diff --git a/docs/android_investigation.md b/docs/android_investigation.md deleted file mode 100644 index 4f8db27..0000000 --- a/docs/android_investigation.md +++ /dev/null @@ -1,247 +0,0 @@ -# Android Port Investigation - -> **Date:** 2026-04-28 -> **Author:** Claude Code -> **Scope:** Feasibility analysis for porting Ferrous Solitaire to Android using cargo-mobile2 - ---- - -## Summary - -A working Android port is feasible but not trivial. The core game logic (`solitaire_core`, `solitaire_sync`) compiles to Android without changes. Every other crate requires at least minor surgery. The biggest blockers are the `keyring` crate (no Android backend), the `kira`/`AudioManager` audio stack (`DefaultBackend` uses CPAL which targets desktop), and the `dirs` crate returning `None` on Android in its current usage. Touch input already has a solid foundation in `input_plugin.rs`. Estimated effort from a clean Android toolchain is **12–18 developer-days** to reach a playable-but-rough state. - ---- - -## 1. Bevy on Android — Current Status - -Bevy's Android support is community-maintained via the `winit` backend and is usable but carries known rough edges as of the 0.15/0.16 generation. - -**What works:** -- Basic rendering via Vulkan (through `wgpu`). OpenGL ES fallback is available for older devices. -- Touch input events: Bevy's `TouchInput` events and the `Touches` resource are populated from Android `MotionEvent`s via `winit`. The existing `touch_start_drag`, `touch_follow_drag`, `touch_end_drag`, and `handle_touch_stock_tap` systems in `input_plugin.rs` will function correctly — this was already written with multi-touch in mind and uses `TouchPhase::Started/Moved/Ended/Canceled` cleanly. -- Bevy UI (the `bevy::ui` module used for all overlays). -- `WindowResized` events fire correctly, so the layout system will recompute for any screen size. - -**What does not work / needs attention:** -- **`bevy/dynamic_linking`**: The dynamic linking feature must be stripped from any Android build profile. Dynamic linking is a desktop-only development shortcut; Android requires static linking. -- **Fixed window size**: `main.rs` sets `resolution: (1280u32, 800u32)`. On Android the window is always the full display. This value is harmlessly overridden by the OS, but `min_width`/`min_height` constraints should be removed or set to 0 for Android to avoid Winit warnings. -- **`F11` fullscreen toggle** (`handle_fullscreen` in `input_plugin.rs`): `WindowMode::BorderlessFullscreen` is desktop-only. On Android it should be a no-op. -- **Keyboard shortcuts**: The entire `handle_keyboard_core`, `handle_keyboard_hint`, `handle_keyboard_forfeit` systems are desktop-only workflows. They will not crash, but they are dead code on Android. No touchscreen replacement for Undo (U), New Game (N), Draw (D/Space), Hint (H), Forfeit (G) exists yet — these need an on-screen UI. -- **`CursorPlugin`**: The custom cursor sprite plugin is irrelevant on Android (no cursor). Harmless to leave registered, but it uses `PrimaryWindow` cursor APIs that may panic or warn on Android. - -**cargo-mobile2 integration for Bevy:** -The standard path is: -1. Install `cargo-mobile2`: `cargo install --locked cargo-mobile2` -2. Run `cargo mobile init` in the workspace root. This generates an `android/` directory with the Gradle project, `AndroidManifest.xml`, and JNI glue. -3. cargo-mobile2 targets the `solitaire_app` binary crate (the thin entry point). The generated `lib.rs` shim calls `android_main` via `bevy::winit`'s Android entry point. -4. The `solitaire_app` crate needs a `[lib]` target added alongside the existing `[[bin]]`, with `crate-type = ["cdylib"]`, used only when building for Android. - -**Required `Cargo.toml` changes (workspace level):** -```toml -[target.'cfg(target_os = "android")'.dependencies] -# android_logger and ndk-glue wiring are handled by cargo-mobile2's generated shim. -# No direct ndk-glue dependency is needed in app code when using Bevy + cargo-mobile2. -``` - -**NDK version:** Android NDK r25c or r26 LTS is the tested range for `wgpu`/Vulkan on Android. NDK r27+ may work but has had compatibility reports with CPAL. Set `ANDROID_NDK_ROOT` to the NDK root; the minimum API level should be 26 (Android 8.0) for Vulkan stability. - ---- - -## 2. Audio — `kira` + `DefaultBackend` - -**The problem:** -`solitaire_engine/src/audio_plugin.rs` creates an `AudioManager`. `kira`'s `DefaultBackend` is an alias for `CpalBackend`, which wraps CPAL. CPAL's Android backend uses OpenSL ES and is functional but historically fragile. As of kira 0.9+, `kira` no longer bundles its own CPAL backend by default in the same way — the `DefaultBackend` feature must be enabled explicitly and requires `cpal` with the Android feature. - -**Current code behavior:** -The `AudioPlugin::build` already handles the "no audio device" case gracefully: -```rust -let mut manager = AudioManager::::new(AudioManagerSettings::default()).ok(); -if manager.is_none() { - warn!("audio device unavailable; SFX disabled"); -} -``` -This means if the audio manager fails to initialise on Android, the game continues silently. This is acceptable as a first-pass fallback. - -**What is needed for working audio on Android:** -- Add `kira` dependency with `cpal` backend enabled for Android: The `kira` workspace dependency currently specifies `version = "0.12"`. Verify that `kira/Cargo.toml` exposes a `cpal` feature (or that `DefaultBackend` compiles on Android targets with NDK). If not, a `CpalBackend` with `cpal = { features = ["oboe"] }` may be needed. -- The `NonSend` resource `AudioState` should compile fine — `NonSend` is legal in Bevy Android builds. -- `include_bytes!` for the WAV assets is compile-time and unaffected by platform. - -**Recommendation:** Defer full audio verification to a device test. The graceful fallback means a silent-but-working first build is achievable without resolving this. - ---- - -## 3. `keyring` Crate — No Android Backend - -**The problem:** -`keyring = "2"` is used in `solitaire_data/src/auth_tokens.rs` to store JWT access and refresh tokens in the OS keychain. The `keyring` crate's Android backend does not exist — as of v2.x, supported backends are: macOS Keychain, Windows Credential Manager, Linux Secret Service (D-Bus), and iOS Keychain. There is no Android KeyStore backend. - -On Android, `Entry::new(...)` will return `keyring::Error::NoStorageAccess`, which the existing code already maps to `TokenError::KeychainUnavailable`. So the code will not crash — it will simply fail every token store/load operation. - -**Current failure mode:** -Every call to `store_tokens`, `load_access_token`, `load_refresh_token`, or `delete_tokens` will return `Err(TokenError::KeychainUnavailable(...))`. The sync client in `sync_client.rs` needs to be verified to handle this gracefully rather than propagating an error that disables sync entirely. - -**Options for Android credential storage:** - -| Option | Security | Effort | Notes | -|---|---|---|---| -| **In-memory only (prompt re-login each session)** | N/A | 1 day | Simplest. On `TokenError::KeychainUnavailable`, the `SyncProvider` returns `SyncError::Auth`, user is prompted to log in. Already architecturally supported. | -| **Encrypted `SharedPreferences` equivalent via JNI** | Good | 4–6 days | Call Android's `EncryptedSharedPreferences` (Jetpack Security) via JNI. Significant JNI boilerplate. | -| **AES-256 file encryption using Android Keystore via JNI** | Excellent | 5–8 days | Proper Android keychain equivalent. Complex JNI. | -| **Store in app-private file, unencrypted** | Poor | 0.5 days | Only acceptable during development. Never ship. | - -**Recommended approach (first pass):** Use the in-memory / re-login-each-session path. The existing `TokenError::KeychainUnavailable` variant already exists for exactly this reason (Linux without a running secret service). The `SyncPlugin` should detect this on startup and present a "Sync unavailable — please log in" message rather than a hard error. This requires: -1. Conditional compilation: when `cfg(target_os = "android")`, replace the `keyring` calls with a no-op in-memory store (a simple `Mutex>`). -2. A `#[cfg(not(target_os = "android"))]` guard on the `keyring` import/dependency in `solitaire_data/Cargo.toml`. - -**Required `solitaire_data/Cargo.toml` change:** -```toml -[target.'cfg(not(target_os = "android"))'.dependencies] -keyring = { workspace = true } - -[target.'cfg(target_os = "android")'.dependencies] -# keyring is replaced by in-memory storage; no dependency needed -``` - ---- - -## 4. `dirs` Crate — Data Directory on Android - -**The problem:** -`storage.rs` and other persistence modules use `dirs::data_dir()` to locate `~/.local/share/solitaire_quest/` (or platform equivalent). On Android, `dirs::data_dir()` returns `None` because there is no `XDG_DATA_HOME` and the `dirs` crate does not implement an Android-specific path. - -**Current code behavior:** -All persistence functions already handle `None` gracefully (returning default values or `Err`), consistent with the CLAUDE.md lesson about `dirs::data_dir()`. Stats and progress will silently not persist across sessions if `data_dir()` returns `None`. - -**Fix required:** -Android apps should store private data in the app's internal storage directory, obtained via JNI: `context.getFilesDir()`. This requires either: -- A thin JNI helper (via `jni` crate) called once on startup to obtain the path and store it as a global. -- Or passing the path in via the `android_main` entry point using `cargo-mobile2`'s `AndroidApp` handle, which exposes `internal_data_path()`. - -The `cargo-mobile2` + Bevy path exposes an `AndroidApp` via `bevy::winit`'s Android entry point. Bevy 0.13+ passes `AndroidApp` through `WinitPlugin`, and it is accessible via a Bevy resource. A startup system can extract `app.internal_data_path()` and insert a `PlatformDataDirResource` that the storage functions read instead of calling `dirs::data_dir()`. - -**Effort:** 1–2 days to implement the override and thread it through all `storage.rs` / `progress.rs` / `settings.rs` / `achievements.rs` call sites. - ---- - -## 5. Touch Input — Current State and Gaps - -**What already exists (strong foundation):** - -The `InputPlugin` in `input_plugin.rs` has a complete parallel touch pipeline: - -| System | Purpose | Status | -|---|---|---| -| `handle_touch_stock_tap` | Tap the stock pile to draw | Complete | -| `touch_start_drag` | Begin a touch drag on a face-up card | Complete | -| `touch_follow_drag` | Move card(s) with the active finger | Complete | -| `touch_end_drag` | Resolve the drag (move or reject) | Complete | - -The touch systems use `TouchInput` events and the `Touches` resource, map touch IDs to `DragState.active_touch_id` to prevent multi-finger conflicts, and share the same `DragState`, `MoveRequestEvent`, `MoveRejectedEvent`, and `StateChangedEvent` infrastructure as the mouse pipeline. The drag threshold (`tuning.drag_threshold_px`) applies identically. - -**Gaps for a production Android experience:** - -1. **No double-tap equivalent for auto-move**: `handle_double_click` is mouse-only. Android users need a double-tap to trigger the same "move to best destination" logic. The `handle_double_click` system checks `buttons.just_pressed(MouseButton::Left)` and will be inert on Android. Estimated: 1 day. - -2. **No touch equivalent for keyboard actions**: Undo, New Game, Draw (when stock is visible but tapping it is awkward), Hint, and Forfeit have no on-screen buttons. These need an Android-specific UI bar or gesture (e.g. two-finger tap for undo). Estimated: 2–3 days for a minimal floating action button strip. - -3. **Drag threshold tuning**: The threshold is in `AnimationTuning` (`tuning.drag_threshold_px`). Touch screens typically need a larger threshold than mouse (physical screens have more accidental movement during a tap). The current value should be evaluated on a real device and likely increased for touch. - -4. **No long-press for right-click equivalent**: The right-click highlight/hint glow (`HintHighlightTimer`) is triggered via right mouse button. Long-press detection is not yet implemented. This is a missing feature but not a blocker for basic play. - -5. **`handle_double_click` uses `LocalDateTime`-based timing via `Time`**: This will work on Android, but `DOUBLE_CLICK_WINDOW = 0.35s` may feel too tight on touch. Should be configurable. - ---- - -## 6. Additional Issues Not in Scope of the Four Research Areas - -**`CursorPlugin`:** Uses Bevy's cursor APIs which are desktop-only. Should be conditionally compiled out on Android with `#[cfg(not(target_os = "android"))]`. - -**`reqwest` with `rustls-native-certs`:** The `reqwest` dependency uses `rustls` with native root certificates. On Android, `rustls-native-certs` reads system certificates differently (via the `android_system_properties` crate internally). This generally works but should be tested; Android's certificate store is in a non-standard location vs Linux. - -**App lifecycle (suspend/resume):** Android can suspend the process at any time. Bevy handles `WindowEvent::Suspended` and `WindowEvent::Resumed` via `winit`, pausing the render loop. The `SyncPlugin`'s "push on exit" path (`AppExit` event) should also trigger on `WindowEvent::Suspended` to avoid data loss when the user backgrounds the app. This is a separate feature (1 day). - -**No `sqlx` on Android:** `solitaire_server` is a server binary and is never built for Android. The `sqlx` dependency only exists in `solitaire_server/Cargo.toml` and will not affect Android builds of the client crates. - -**`solitaire_assetgen`:** The asset generation tool is desktop-only and not part of the client build. Unaffected. - ---- - -## 7. Required Changes Per Crate - -### `solitaire_core` and `solitaire_sync` -No changes required. Both are pure Rust with no platform dependencies. - -### `solitaire_data` -| Change | Effort | -|---|---| -| Gate `keyring` dependency on `#[cfg(not(target_os = "android"))]` | 0.5 days | -| Implement `auth_tokens.rs` in-memory fallback for Android | 1 day | -| Add `internal_data_path()` override for `dirs::data_dir()` on Android | 1.5 days | -| Audit all `dirs::data_dir()` / `settings_file_path()` call sites to accept injected path | 0.5 days | - -### `solitaire_engine` -| Change | Effort | -|---|---| -| Conditionally disable `CursorPlugin` on Android | 0.5 days | -| Disable `handle_fullscreen` on Android (or make it a no-op) | 0.25 days | -| Implement double-tap for auto-move (touch equivalent of `handle_double_click`) | 1 day | -| On-screen action bar for Undo, New Game, Hint (minimal floating buttons) | 2.5 days | -| Tune drag threshold for touch; expose as a platform-specific tuning constant | 0.5 days | -| Trigger sync push on `WindowEvent::Suspended` in `SyncPlugin` | 1 day | -| Verify `kira` audio on Android (test `DefaultBackend` / CPAL; implement fallback if needed) | 1–2 days | - -### `solitaire_app` -| Change | Effort | -|---|---| -| Add `[lib]` target with `crate-type = ["cdylib"]` for Android builds | 0.25 days | -| Create `src/lib.rs` (or `src/android.rs`) Android entry point calling `android_main` | 0.5 days | -| Remove or guard fixed `resolution` / `resize_constraints` for Android | 0.25 days | -| Pass `AndroidApp::internal_data_path()` to a startup resource | 0.5 days | - -### Build / Toolchain -| Change | Effort | -|---|---| -| Install cargo-mobile2, Android NDK r25c/r26, `aarch64-linux-android` target | 1 day | -| Run `cargo mobile init`, configure `android/` Gradle project | 0.5 days | -| Get a first build compiling (resolve linker / NDK issues) | 1–2 days | - ---- - -## 8. Estimated Effort - -| Phase | Description | Days | -|---|---|---| -| Toolchain setup | NDK, cargo-mobile2, first compile | 2–3 | -| `solitaire_data` Android adaptations | keyring fallback, data dir | 3 | -| `solitaire_app` Android entry point | cdylib, AndroidApp wiring | 1 | -| `solitaire_engine` guards and fixes | cursor, fullscreen, audio verify | 2–3 | -| Touch UX improvements | double-tap, action bar, threshold tuning | 4–5 | -| Testing on real device / emulator | iteration, lifecycle edge cases | 2–3 | -| **Total** | | **14–17 days** | - -This produces a playable, functionally complete Android build. It does not include Play Store preparation (signing keys, metadata, icon set, permissions manifest tuning) which would add 1–2 more days. - ---- - -## 9. Recommended First Step - -**Get the workspace to compile for `aarch64-linux-android` without running.** - -This surfaces all the real linker and dependency errors before writing any gameplay code: - -```bash -# Install toolchain -rustup target add aarch64-linux-android -cargo install --locked cargo-mobile2 - -# In the workspace root: -cargo mobile init # generates android/ directory - -# Attempt a library build targeting Android -cargo build -p solitaire_app --target aarch64-linux-android 2>&1 | head -60 -``` - -The first build will fail on `keyring` (no Android backend) and likely on `dirs`. Fixing those two in `solitaire_data` — gate `keyring` behind `cfg(not(target_os = "android"))` and stub the data directory — will probably get the workspace to a clean compile. From there, the path to a running APK is incremental. - -Do not attempt to resolve audio or touch UX until the build compiles cleanly. Compile errors are the only true blockers; the rest are feature gaps. diff --git a/docs/superpowers/plans/2026-04-20-phase1-2-workspace-core.md b/docs/superpowers/plans/2026-04-20-phase1-2-workspace-core.md deleted file mode 100644 index 7e6f5e5..0000000 --- a/docs/superpowers/plans/2026-04-20-phase1-2-workspace-core.md +++ /dev/null @@ -1,2170 +0,0 @@ -# Ferrous Solitaire — Phase 1 + 2: Workspace & Core Game Engine - -> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. - -**Goal:** Bootstrap the Cargo workspace with all seven crates compiling cleanly, a blank Bevy window opening, and the complete Klondike game logic in `solitaire_core` fully tested. - -**Architecture:** All seven crates are created with the correct dependency graph. `solitaire_core` contains zero Bevy/network code — pure Rust game rules, scoring, and undo. The GPGS crate is a compile-time stub enforcing the trait contract. Bevy `0.15` is used for the blank window; version may need bumping to match current stable at implementation time. - -**Tech Stack:** Rust 2021 edition, Cargo workspace, Bevy 0.15, bevy_egui, bevy_kira_audio, rand 0.8, serde 1, chrono 0.4, thiserror 1, async-trait 0.1 - ---- - -## Scope - -This plan covers **Phase 1** (workspace + blank Bevy window + GPGS stub) and **Phase 2** (complete `solitaire_core` game logic with tests). Phases 3–8 are out of scope and should be planned separately after these phases pass all gates. - ---- - -## File Map - -### Created in Phase 1 - -| File | Purpose | -|---|---| -| `Cargo.toml` | Workspace manifest with profile settings and shared deps | -| `solitaire_core/Cargo.toml` | Core crate manifest (rand, serde, chrono, thiserror) | -| `solitaire_core/src/lib.rs` | Re-exports all public modules | -| `solitaire_sync/Cargo.toml` | Sync types manifest (serde, uuid, chrono) | -| `solitaire_sync/src/lib.rs` | Minimal stub: SyncPayload, SyncResponse | -| `solitaire_data/Cargo.toml` | Data crate manifest (solitaire_core, solitaire_sync, async-trait, thiserror) | -| `solitaire_data/src/lib.rs` | Minimal stub: SyncError, SyncProvider trait | -| `solitaire_engine/Cargo.toml` | Engine manifest (bevy, bevy_egui, bevy_kira_audio, solitaire_core, solitaire_data) | -| `solitaire_engine/src/lib.rs` | Empty stub | -| `solitaire_server/Cargo.toml` | Server manifest (solitaire_sync, axum, sqlx, etc.) | -| `solitaire_server/src/main.rs` | Stub `fn main() {}` | -| `solitaire_gpgs/Cargo.toml` | GPGS manifest (solitaire_data, async-trait) | -| `solitaire_gpgs/src/lib.rs` | cfg-gated re-exports | -| `solitaire_gpgs/src/stub.rs` | Desktop stub implementing SyncProvider | -| `solitaire_gpgs/src/android.rs` | Android phase TODO placeholder | -| `solitaire_app/Cargo.toml` | App manifest (bevy, solitaire_engine) | -| `solitaire_app/src/main.rs` | Bevy App::new() opening blank window | -| `assets/cards/faces/.gitkeep` | Placeholder | -| `assets/cards/backs/.gitkeep` | Placeholder | -| `assets/backgrounds/.gitkeep` | Placeholder | -| `assets/fonts/.gitkeep` | Placeholder | -| `assets/audio/.gitkeep` | Placeholder | -| `.env.example` | Server environment variable template | - -### Created/expanded in Phase 2 - -| File | Purpose | -|---|---| -| `solitaire_core/src/card.rs` | Suit, Rank, Card types | -| `solitaire_core/src/pile.rs` | PileType, Pile types | -| `solitaire_core/src/error.rs` | MoveError enum | -| `solitaire_core/src/deck.rs` | Deck::new(), Deck::shuffle(), deal_klondike() | -| `solitaire_core/src/rules.rs` | can_place_on_foundation(), can_place_on_tableau() | -| `solitaire_core/src/scoring.rs` | score_move(), score_undo(), compute_time_bonus() | -| `solitaire_core/src/game_state.rs` | GameState, DrawMode, StateSnapshot | - ---- - -## Task 1: Workspace Cargo.toml - -**Files:** -- Create: `Cargo.toml` - -- [ ] **Step 1: Create the workspace Cargo.toml** - -```toml -[workspace] -members = [ - "solitaire_core", - "solitaire_sync", - "solitaire_data", - "solitaire_engine", - "solitaire_server", - "solitaire_gpgs", - "solitaire_app", -] -resolver = "2" - -[workspace.package] -edition = "2021" -version = "0.1.0" - -[workspace.dependencies] -# Core utilities -serde = { version = "1", features = ["derive"] } -serde_json = "1" -uuid = { version = "1", features = ["v4", "serde"] } -chrono = { version = "0.4", features = ["serde"] } -thiserror = "1" -rand = "0.8" -async-trait = "0.1" -tokio = { version = "1", features = ["full"] } -dirs = "5" -keyring = "2" -reqwest = { version = "0.12", features = ["json", "rustls-tls"], default-features = false } - -# Workspace crates -solitaire_core = { path = "solitaire_core" } -solitaire_sync = { path = "solitaire_sync" } -solitaire_data = { path = "solitaire_data" } -solitaire_engine = { path = "solitaire_engine" } - -# Bevy — check https://crates.io/crates/bevy for latest stable if 0.15 is outdated -bevy = "0.15" -bevy_egui = "0.30" -bevy_kira_audio = "0.21" - -# Server -axum = "0.7" -sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "sqlite", "macros", "migrate"] } -jsonwebtoken = "9" -bcrypt = "0.15" -tower-governor = "0.4" -tracing = "0.1" -tracing-subscriber = { version = "0.3", features = ["env-filter"] } -dotenvy = "0.15" - -[profile.dev] -opt-level = 1 - -[profile.dev.package."*"] -opt-level = 3 - -[profile.release] -opt-level = 3 -lto = "thin" -``` - -> **Note on Bevy versions:** `bevy = "0.15"`, `bevy_egui = "0.30"`, and `bevy_kira_audio = "0.21"` were compatible as of early 2025. Run `cargo search bevy` to check if a newer stable version is current and update accordingly. bevy_egui and bevy_kira_audio versions must match the Bevy major version. - -- [ ] **Step 2: Verify workspace file parses** - -```bash -cargo metadata --no-deps --format-version 1 | grep '"workspace_root"' -``` -Expected: prints the workspace root path without error. - ---- - -## Task 2: solitaire_core Crate Skeleton - -**Files:** -- Create: `solitaire_core/Cargo.toml` -- Create: `solitaire_core/src/lib.rs` - -- [ ] **Step 1: Create solitaire_core/Cargo.toml** - -```toml -[package] -name = "solitaire_core" -version.workspace = true -edition.workspace = true - -[dependencies] -serde = { workspace = true } -chrono = { workspace = true } -thiserror = { workspace = true } -rand = { workspace = true } -``` - -- [ ] **Step 2: Create solitaire_core/src/lib.rs (empty stub)** - -```rust -// Modules are added in Phase 2. This file re-exports them. -``` - -- [ ] **Step 3: Verify it compiles** - -```bash -cargo check -p solitaire_core -``` -Expected: `Finished` with no errors. - ---- - -## Task 3: solitaire_sync Stub - -**Files:** -- Create: `solitaire_sync/Cargo.toml` -- Create: `solitaire_sync/src/lib.rs` - -- [ ] **Step 1: Create solitaire_sync/Cargo.toml** - -```toml -[package] -name = "solitaire_sync" -version.workspace = true -edition.workspace = true - -[dependencies] -serde = { workspace = true } -serde_json = { workspace = true } -uuid = { workspace = true } -chrono = { workspace = true } -thiserror = { workspace = true } -``` - -- [ ] **Step 2: Create solitaire_sync/src/lib.rs** - -```rust -use chrono::{DateTime, Utc}; -use serde::{Deserialize, Serialize}; -use uuid::Uuid; - -/// Payload sent from client to server (and returned after server merge). -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct SyncPayload { - pub user_id: Uuid, - pub last_modified: DateTime, -} - -/// Response returned by the sync server after merging. -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct SyncResponse { - pub server_time: DateTime, -} -``` - -> These are minimal stubs. Full fields are added in Phase 8 (Sync System). - -- [ ] **Step 3: Verify** - -```bash -cargo check -p solitaire_sync -``` -Expected: `Finished` with no errors. - ---- - -## Task 4: solitaire_data Stub - -**Files:** -- Create: `solitaire_data/Cargo.toml` -- Create: `solitaire_data/src/lib.rs` - -- [ ] **Step 1: Create solitaire_data/Cargo.toml** - -```toml -[package] -name = "solitaire_data" -version.workspace = true -edition.workspace = true - -[dependencies] -solitaire_core = { workspace = true } -solitaire_sync = { workspace = true } -serde = { workspace = true } -serde_json = { workspace = true } -chrono = { workspace = true } -thiserror = { workspace = true } -async-trait = { workspace = true } -dirs = { workspace = true } -keyring = { workspace = true } -reqwest = { workspace = true } -tokio = { workspace = true } -``` - -- [ ] **Step 2: Create solitaire_data/src/lib.rs** - -```rust -use async_trait::async_trait; -use solitaire_sync::{SyncPayload, SyncResponse}; -use thiserror::Error; - -/// All errors that can arise during sync operations. -#[derive(Debug, Error)] -pub enum SyncError { - #[error("unsupported platform for this sync backend")] - UnsupportedPlatform, - #[error("network error: {0}")] - Network(String), - #[error("authentication error: {0}")] - Auth(String), - #[error("serialization error: {0}")] - Serialization(String), -} - -/// Every sync backend implements this trait. The SyncPlugin only calls these -/// methods — it never matches on a backend enum variant. -#[async_trait] -pub trait SyncProvider: Send + Sync { - async fn pull(&self) -> Result; - async fn push(&self, payload: &SyncPayload) -> Result; - fn backend_name(&self) -> &'static str; - fn is_authenticated(&self) -> bool; - /// Mirror an achievement unlock to this backend (no-op for most backends). - async fn mirror_achievement(&self, _id: &str) -> Result<(), SyncError> { - Ok(()) - } -} -``` - -- [ ] **Step 3: Verify** - -```bash -cargo check -p solitaire_data -``` -Expected: `Finished` with no errors. - ---- - -## Task 5: solitaire_engine Stub - -**Files:** -- Create: `solitaire_engine/Cargo.toml` -- Create: `solitaire_engine/src/lib.rs` - -- [ ] **Step 1: Create solitaire_engine/Cargo.toml** - -```toml -[package] -name = "solitaire_engine" -version.workspace = true -edition.workspace = true - -[dependencies] -bevy = { workspace = true } -bevy_egui = { workspace = true } -bevy_kira_audio = { workspace = true } -solitaire_core = { workspace = true } -solitaire_data = { workspace = true } -``` - -- [ ] **Step 2: Create solitaire_engine/src/lib.rs** - -```rust -// Bevy plugins are added in Phase 3. -// This crate will expose: CardPlugin, TablePlugin, AnimationPlugin, -// AudioPlugin, UIPlugin, AchievementPlugin, SyncPlugin, GamePlugin. -``` - -- [ ] **Step 3: Verify** - -```bash -cargo check -p solitaire_engine -``` -Expected: `Finished` with no errors. - ---- - -## Task 6: solitaire_server Stub - -**Files:** -- Create: `solitaire_server/Cargo.toml` -- Create: `solitaire_server/src/main.rs` - -- [ ] **Step 1: Create solitaire_server/Cargo.toml** - -```toml -[package] -name = "solitaire_server" -version.workspace = true -edition.workspace = true - -[[bin]] -name = "solitaire_server" -path = "src/main.rs" - -[dependencies] -solitaire_sync = { workspace = true } -serde = { workspace = true } -serde_json = { workspace = true } -uuid = { workspace = true } -chrono = { workspace = true } -thiserror = { workspace = true } -tokio = { workspace = true } -axum = { workspace = true } -sqlx = { workspace = true } -jsonwebtoken = { workspace = true } -bcrypt = { workspace = true } -tower-governor = { workspace = true } -tracing = { workspace = true } -tracing-subscriber = { workspace = true } -dotenvy = { workspace = true } -``` - -- [ ] **Step 2: Create solitaire_server/src/main.rs** - -```rust -// Full server implementation added in Phase 8C. -fn main() {} -``` - -- [ ] **Step 3: Verify** - -```bash -cargo check -p solitaire_server -``` -Expected: `Finished` with no errors. - ---- - -## Task 7: solitaire_gpgs Stub (GPGS Compile-Time Stub) - -**Files:** -- Create: `solitaire_gpgs/Cargo.toml` -- Create: `solitaire_gpgs/src/lib.rs` -- Create: `solitaire_gpgs/src/stub.rs` -- Create: `solitaire_gpgs/src/android.rs` - -- [ ] **Step 1: Create solitaire_gpgs/Cargo.toml** - -```toml -[package] -name = "solitaire_gpgs" -version.workspace = true -edition.workspace = true - -[dependencies] -solitaire_data = { workspace = true } -solitaire_sync = { workspace = true } -async-trait = { workspace = true } -``` - -- [ ] **Step 2: Create solitaire_gpgs/src/lib.rs** - -```rust -#[cfg(target_os = "android")] -mod android; - -#[cfg(not(target_os = "android"))] -mod stub; - -// Android placeholder (TODO block only — no JNI yet) -mod android_placeholder; - -#[cfg(not(target_os = "android"))] -pub use stub::GpgsClient; - -#[cfg(target_os = "android")] -pub use android::GpgsClient; -``` - -Wait — the android module must not be compiled on non-android, but we still want the TODO file to exist. Remove the android_placeholder re-export above and instead keep android.rs only compiled on android via cfg. The lib.rs should be: - -```rust -#[cfg(target_os = "android")] -mod android; - -#[cfg(not(target_os = "android"))] -mod stub; - -#[cfg(not(target_os = "android"))] -pub use stub::GpgsClient; - -#[cfg(target_os = "android")] -pub use android::GpgsClient; -``` - -- [ ] **Step 3: Create solitaire_gpgs/src/stub.rs** - -```rust -use async_trait::async_trait; -use solitaire_data::{SyncError, SyncProvider}; -use solitaire_sync::{SyncPayload, SyncResponse}; - -/// Desktop/iOS stub — always returns UnsupportedPlatform. -/// Real implementation lives in android.rs (Phase: Android). -pub struct GpgsClient; - -impl GpgsClient { - pub fn new() -> Self { - Self - } -} - -impl Default for GpgsClient { - fn default() -> Self { - Self::new() - } -} - -#[async_trait] -impl SyncProvider for GpgsClient { - async fn pull(&self) -> Result { - Err(SyncError::UnsupportedPlatform) - } - - async fn push(&self, _payload: &SyncPayload) -> Result { - Err(SyncError::UnsupportedPlatform) - } - - fn backend_name(&self) -> &'static str { - "Google Play Games (unavailable on this platform)" - } - - fn is_authenticated(&self) -> bool { - false - } -} -``` - -- [ ] **Step 4: Create solitaire_gpgs/src/android.rs** - -```rust -// TODO (Phase: Android) — implement JNI bindings here. -// -// Steps: -// 1. Add `jni` dependency under [target.'cfg(target_os = "android")'.dependencies] -// 2. Implement GpgsClient using cargo-mobile2 JNI bridge -// 3. pull(): call PlayGames.getSnapshotsClient().open("solitaire_quest_sync") -// → deserialize JSON blob into SyncPayload -// 4. push(): serialize SyncPayload to JSON → write to Saved Game slot -// 5. mirror_achievement(id): call PlayGames.getAchievementsClient().unlock(map_id(id)) -// 6. Maintain a static ID mapping: our &str IDs → GPGS achievement IDs (from Play Console) -// 7. On GameWonEvent, submit score to GPGS leaderboard -// 8. Add Google Sign-In button to Settings screen (Android build only, #[cfg] gated) -``` - -> This file is only compiled on Android (`#[cfg(target_os = "android")]`), so it can contain a bare TODO comment without a `GpgsClient` struct definition until the Android phase. - -- [ ] **Step 5: Verify** - -```bash -cargo check -p solitaire_gpgs -``` -Expected: `Finished` with no errors. - ---- - -## Task 8: solitaire_app — Blank Bevy Window - -**Files:** -- Create: `solitaire_app/Cargo.toml` -- Create: `solitaire_app/src/main.rs` - -- [ ] **Step 1: Create solitaire_app/Cargo.toml** - -```toml -[package] -name = "solitaire_app" -version.workspace = true -edition.workspace = true - -[[bin]] -name = "solitaire_app" -path = "src/main.rs" - -[dependencies] -bevy = { workspace = true } -solitaire_engine = { workspace = true } -``` - -- [ ] **Step 2: Create solitaire_app/src/main.rs** - -```rust -use bevy::prelude::*; - -fn main() { - App::new() - .add_plugins( - DefaultPlugins.set(WindowPlugin { - primary_window: Some(Window { - title: "Ferrous Solitaire".into(), - resolution: (1280.0, 800.0).into(), - ..default() - }), - ..default() - }), - ) - .run(); -} -``` - -- [ ] **Step 3: Run the app to verify the window opens** - -```bash -cargo run -p solitaire_app --features bevy/dynamic_linking -``` -Expected: A blank Bevy window titled "Ferrous Solitaire" opens. Press Escape or close the window to exit. No panics or errors in the terminal. - ---- - -## Task 9: Assets Directory + .env.example - -**Files:** -- Create: `assets/cards/faces/.gitkeep` -- Create: `assets/cards/backs/.gitkeep` -- Create: `assets/backgrounds/.gitkeep` -- Create: `assets/fonts/.gitkeep` -- Create: `assets/audio/.gitkeep` -- Create: `.env.example` - -- [ ] **Step 1: Create asset directory placeholders** - -```bash -mkdir -p assets/cards/faces assets/cards/backs assets/backgrounds assets/fonts assets/audio -touch assets/cards/faces/.gitkeep -touch assets/cards/backs/.gitkeep -touch assets/backgrounds/.gitkeep -touch assets/fonts/.gitkeep -touch assets/audio/.gitkeep -``` - -- [ ] **Step 2: Create .env.example** - -``` -DATABASE_URL=sqlite://solitaire.db -JWT_SECRET=replace_with_64_char_hex_from_openssl_rand_hex_32 -SERVER_PORT=8080 -ADMIN_USERNAME=admin -``` - -- [ ] **Step 3: Verify full workspace compiles and tests pass** - -```bash -cargo test --workspace -cargo clippy --workspace -- -D warnings -``` -Expected: all tests pass (zero tests exist yet, so 0 passed), clippy reports zero warnings. - -- [ ] **Step 4: Commit Phase 1** - -```bash -git init -git add Cargo.toml solitaire_core solitaire_sync solitaire_data solitaire_engine solitaire_server solitaire_gpgs solitaire_app assets .env.example -git commit -m "feat(workspace): initialize all seven crates with stubs and blank Bevy window" -``` - ---- - -## Task 10: solitaire_core — Card Types (TDD) - -**Files:** -- Create: `solitaire_core/src/card.rs` -- Modify: `solitaire_core/src/lib.rs` - -- [ ] **Step 1: Write failing tests for card types** - -Create `solitaire_core/src/card.rs` with the tests block first, before any implementation: - -```rust -use serde::{Deserialize, Serialize}; - -// --- types added in Step 2 --- - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn rank_value_ace_is_one() { - assert_eq!(Rank::Ace.value(), 1); - } - - #[test] - fn rank_value_king_is_thirteen() { - assert_eq!(Rank::King.value(), 13); - } - - #[test] - fn rank_values_are_sequential() { - let ranks = [ - Rank::Ace, Rank::Two, Rank::Three, Rank::Four, Rank::Five, - Rank::Six, Rank::Seven, Rank::Eight, Rank::Nine, Rank::Ten, - Rank::Jack, Rank::Queen, Rank::King, - ]; - for (i, r) in ranks.iter().enumerate() { - assert_eq!(r.value(), (i + 1) as u8); - } - } - - #[test] - fn suit_red_is_diamonds_and_hearts() { - assert!(Suit::Diamonds.is_red()); - assert!(Suit::Hearts.is_red()); - assert!(!Suit::Clubs.is_red()); - assert!(!Suit::Spades.is_red()); - } - - #[test] - fn suit_black_is_clubs_and_spades() { - assert!(Suit::Clubs.is_black()); - assert!(Suit::Spades.is_black()); - assert!(!Suit::Diamonds.is_black()); - assert!(!Suit::Hearts.is_black()); - } - - #[test] - fn card_starts_face_down() { - let card = Card { id: 0, suit: Suit::Hearts, rank: Rank::Ace, face_up: false }; - assert!(!card.face_up); - } -} -``` - -- [ ] **Step 2: Run tests — expect compile failure** - -```bash -cargo test -p solitaire_core 2>&1 | head -20 -``` -Expected: compile error `cannot find type 'Rank' in this scope` (or similar). - -- [ ] **Step 3: Implement card types** - -Replace the `// --- types added in Step 2 ---` comment with: - -```rust -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)] -pub enum Suit { - Clubs, - Diamonds, - Hearts, - Spades, -} - -impl Suit { - /// Returns true for red suits (Diamonds, Hearts). - pub fn is_red(self) -> bool { - matches!(self, Suit::Diamonds | Suit::Hearts) - } - - /// Returns true for black suits (Clubs, Spades). - pub fn is_black(self) -> bool { - !self.is_red() - } -} - -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)] -pub enum Rank { - Ace, - Two, - Three, - Four, - Five, - Six, - Seven, - Eight, - Nine, - Ten, - Jack, - Queen, - King, -} - -impl Rank { - /// Numeric value: Ace = 1, King = 13. - pub fn value(self) -> u8 { - match self { - Rank::Ace => 1, - Rank::Two => 2, - Rank::Three => 3, - Rank::Four => 4, - Rank::Five => 5, - Rank::Six => 6, - Rank::Seven => 7, - Rank::Eight => 8, - Rank::Nine => 9, - Rank::Ten => 10, - Rank::Jack => 11, - Rank::Queen => 12, - Rank::King => 13, - } - } -} - -#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] -pub struct Card { - pub id: u32, - pub suit: Suit, - pub rank: Rank, - pub face_up: bool, -} -``` - -- [ ] **Step 4: Update lib.rs to expose the module** - -Replace the content of `solitaire_core/src/lib.rs` with: - -```rust -pub mod card; -``` - -- [ ] **Step 5: Run tests — expect pass** - -```bash -cargo test -p solitaire_core -``` -Expected: `test card::tests::rank_value_ace_is_one ... ok` and all other card tests pass. - -- [ ] **Step 6: Run clippy** - -```bash -cargo clippy -p solitaire_core -- -D warnings -``` -Expected: no warnings. - ---- - -## Task 11: solitaire_core — Pile Types (TDD) - -**Files:** -- Create: `solitaire_core/src/pile.rs` -- Modify: `solitaire_core/src/lib.rs` - -- [ ] **Step 1: Write tests first in pile.rs** - -```rust -use serde::{Deserialize, Serialize}; -use crate::card::{Card, Suit}; - -// --- types added in Step 2 --- - -#[cfg(test)] -mod tests { - use super::*; - use crate::card::{Card, Rank, Suit}; - - #[test] - fn new_pile_is_empty() { - let pile = Pile::new(PileType::Stock); - assert!(pile.cards.is_empty()); - } - - #[test] - fn pile_top_returns_last_card() { - let mut pile = Pile::new(PileType::Waste); - pile.cards.push(Card { id: 0, suit: Suit::Hearts, rank: Rank::Ace, face_up: true }); - pile.cards.push(Card { id: 1, suit: Suit::Clubs, rank: Rank::Two, face_up: true }); - assert_eq!(pile.top().unwrap().id, 1); - } - - #[test] - fn pile_top_on_empty_is_none() { - let pile = Pile::new(PileType::Waste); - assert!(pile.top().is_none()); - } - - #[test] - fn pile_type_foundation_uses_suit() { - let p1 = PileType::Foundation(Suit::Hearts); - let p2 = PileType::Foundation(Suit::Spades); - assert_ne!(p1, p2); - } - - #[test] - fn pile_type_tableau_uses_index() { - let p0 = PileType::Tableau(0); - let p6 = PileType::Tableau(6); - assert_ne!(p0, p6); - } -} -``` - -- [ ] **Step 2: Run tests — expect compile failure** - -```bash -cargo test -p solitaire_core 2>&1 | head -10 -``` -Expected: compile error referencing missing `Pile` or `PileType`. - -- [ ] **Step 3: Implement pile types** - -Replace `// --- types added in Step 2 ---` with: - -```rust -#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)] -pub enum PileType { - Stock, - Waste, - Foundation(Suit), - Tableau(usize), -} - -#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] -pub struct Pile { - pub pile_type: PileType, - pub cards: Vec, -} - -impl Pile { - pub fn new(pile_type: PileType) -> Self { - Self { pile_type, cards: Vec::new() } - } - - /// Returns a reference to the top (last) card, or None if empty. - pub fn top(&self) -> Option<&Card> { - self.cards.last() - } -} -``` - -- [ ] **Step 4: Add pile module to lib.rs** - -```rust -pub mod card; -pub mod pile; -``` - -- [ ] **Step 5: Run tests and clippy** - -```bash -cargo test -p solitaire_core && cargo clippy -p solitaire_core -- -D warnings -``` -Expected: all tests pass, no warnings. - ---- - -## Task 12: solitaire_core — MoveError (TDD) - -**Files:** -- Create: `solitaire_core/src/error.rs` -- Modify: `solitaire_core/src/lib.rs` - -- [ ] **Step 1: Write tests first** - -```rust -use thiserror::Error; - -// --- type added in Step 2 --- - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn move_error_displays_message() { - let e = MoveError::RuleViolation("king only on empty".into()); - assert!(e.to_string().contains("king only on empty")); - } - - #[test] - fn move_error_undo_stack_empty_message() { - let e = MoveError::UndoStackEmpty; - assert!(!e.to_string().is_empty()); - } -} -``` - -- [ ] **Step 2: Run tests — expect compile failure** - -```bash -cargo test -p solitaire_core 2>&1 | head -10 -``` - -- [ ] **Step 3: Implement MoveError** - -```rust -#[derive(Debug, Clone, PartialEq, Eq, Error)] -pub enum MoveError { - #[error("invalid source pile")] - InvalidSource, - #[error("invalid destination pile")] - InvalidDestination, - #[error("source pile is empty")] - EmptySource, - #[error("move violates rules: {0}")] - RuleViolation(String), - #[error("undo stack is empty")] - UndoStackEmpty, - #[error("game is already won")] - GameAlreadyWon, - #[error("stock and waste are both empty")] - StockEmpty, -} -``` - -- [ ] **Step 4: Add to lib.rs** - -```rust -pub mod card; -pub mod error; -pub mod pile; -``` - -- [ ] **Step 5: Run tests and clippy** - -```bash -cargo test -p solitaire_core && cargo clippy -p solitaire_core -- -D warnings -``` -Expected: all tests pass, no warnings. - ---- - -## Task 13: solitaire_core — Deck and Deal (TDD) - -**Files:** -- Create: `solitaire_core/src/deck.rs` -- Modify: `solitaire_core/src/lib.rs` - -- [ ] **Step 1: Write tests first** - -```rust -use rand::{seq::SliceRandom, SeedableRng}; -use rand::rngs::SmallRng; -use crate::card::{Card, Rank, Suit}; -use crate::pile::{Pile, PileType}; - -// --- implementations added in Step 2 --- - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn deck_new_has_52_cards() { - let deck = Deck::new(); - assert_eq!(deck.cards.len(), 52); - } - - #[test] - fn deck_new_has_all_unique_ids() { - let deck = Deck::new(); - let mut ids: Vec = deck.cards.iter().map(|c| c.id).collect(); - ids.dedup(); - assert_eq!(ids.len(), 52); - } - - #[test] - fn deck_new_has_all_suits_and_ranks() { - let deck = Deck::new(); - for suit in [Suit::Clubs, Suit::Diamonds, Suit::Hearts, Suit::Spades] { - for rank in [ - Rank::Ace, Rank::Two, Rank::Three, Rank::Four, Rank::Five, - Rank::Six, Rank::Seven, Rank::Eight, Rank::Nine, Rank::Ten, - Rank::Jack, Rank::Queen, Rank::King, - ] { - assert!( - deck.cards.iter().any(|c| c.suit == suit && c.rank == rank), - "missing {:?} {:?}", - rank, - suit - ); - } - } - } - - #[test] - fn shuffle_same_seed_produces_same_order() { - let mut d1 = Deck::new(); - d1.shuffle(42); - let mut d2 = Deck::new(); - d2.shuffle(42); - assert_eq!(d1.cards, d2.cards); - } - - #[test] - fn shuffle_different_seeds_produce_different_orders() { - let mut d1 = Deck::new(); - d1.shuffle(1); - let mut d2 = Deck::new(); - d2.shuffle(2); - assert_ne!(d1.cards, d2.cards); - } - - #[test] - fn deal_klondike_produces_correct_pile_sizes() { - let mut deck = Deck::new(); - deck.shuffle(0); - let (tableau, stock) = deal_klondike(deck); - - // Tableau column i has i+1 cards - for (i, pile) in tableau.iter().enumerate() { - assert_eq!(pile.cards.len(), i + 1, "tableau col {} wrong size", i); - } - - // Stock has 52 - (1+2+3+4+5+6+7) = 52 - 28 = 24 cards - assert_eq!(stock.cards.len(), 24); - } - - #[test] - fn deal_klondike_top_card_of_each_tableau_column_is_face_up() { - let mut deck = Deck::new(); - deck.shuffle(0); - let (tableau, _) = deal_klondike(deck); - for pile in &tableau { - assert!(pile.cards.last().unwrap().face_up, "top card not face up"); - } - } - - #[test] - fn deal_klondike_non_top_cards_are_face_down() { - let mut deck = Deck::new(); - deck.shuffle(0); - let (tableau, _) = deal_klondike(deck); - for pile in &tableau { - let non_top = &pile.cards[..pile.cards.len().saturating_sub(1)]; - for card in non_top { - assert!(!card.face_up, "non-top card should be face down"); - } - } - } - - #[test] - fn deal_klondike_stock_cards_are_face_down() { - let mut deck = Deck::new(); - deck.shuffle(0); - let (_, stock) = deal_klondike(deck); - for card in &stock.cards { - assert!(!card.face_up); - } - } - - #[test] - fn deal_klondike_all_52_cards_present() { - let mut deck = Deck::new(); - deck.shuffle(99); - let (tableau, stock) = deal_klondike(deck); - let mut all_ids: Vec = stock.cards.iter().map(|c| c.id).collect(); - for pile in &tableau { - all_ids.extend(pile.cards.iter().map(|c| c.id)); - } - all_ids.sort_unstable(); - assert_eq!(all_ids, (0u32..52).collect::>()); - } -} -``` - -- [ ] **Step 2: Run tests — expect compile failure** - -```bash -cargo test -p solitaire_core 2>&1 | head -10 -``` - -- [ ] **Step 3: Implement Deck and deal_klondike** - -```rust -pub struct Deck { - pub cards: Vec, -} - -const ALL_SUITS: [Suit; 4] = [Suit::Clubs, Suit::Diamonds, Suit::Hearts, Suit::Spades]; -const ALL_RANKS: [Rank; 13] = [ - Rank::Ace, Rank::Two, Rank::Three, Rank::Four, Rank::Five, - Rank::Six, Rank::Seven, Rank::Eight, Rank::Nine, Rank::Ten, - Rank::Jack, Rank::Queen, Rank::King, -]; - -impl Deck { - pub fn new() -> Self { - let mut cards = Vec::with_capacity(52); - let mut id = 0u32; - for &suit in &ALL_SUITS { - for &rank in &ALL_RANKS { - cards.push(Card { id, suit, rank, face_up: false }); - id += 1; - } - } - Self { cards } - } - - /// Shuffle using Fisher-Yates with a seeded SmallRng for cross-platform determinism. - pub fn shuffle(&mut self, seed: u64) { - let mut rng = SmallRng::seed_from_u64(seed); - self.cards.shuffle(&mut rng); - } -} - -impl Default for Deck { - fn default() -> Self { - Self::new() - } -} - -/// Deal a standard Klondike layout from a (pre-shuffled) deck. -/// Returns 7 tableau piles and the remaining stock pile. -/// Tableau column `i` contains `i+1` cards; only the top card is face-up. -pub fn deal_klondike(deck: Deck) -> ([Pile; 7], Pile) { - let mut tableau: [Pile; 7] = core::array::from_fn(|i| Pile::new(PileType::Tableau(i))); - let mut cards = deck.cards.into_iter(); - - for col in 0..7usize { - for row in 0..=col { - let mut card = cards.next().expect("deck has 52 cards"); - card.face_up = row == col; - tableau[col].cards.push(card); - } - } - - let mut stock = Pile::new(PileType::Stock); - stock.cards.extend(cards); - (tableau, stock) -} -``` - -- [ ] **Step 4: Add to lib.rs** - -```rust -pub mod card; -pub mod deck; -pub mod error; -pub mod pile; -``` - -- [ ] **Step 5: Run tests and clippy** - -```bash -cargo test -p solitaire_core && cargo clippy -p solitaire_core -- -D warnings -``` -Expected: all deck tests pass, no warnings. - ---- - -## Task 14: solitaire_core — Move Validation Rules (TDD) - -**Files:** -- Create: `solitaire_core/src/rules.rs` -- Modify: `solitaire_core/src/lib.rs` - -- [ ] **Step 1: Write failing tests** - -```rust -use crate::card::{Card, Rank, Suit}; -use crate::pile::{Pile, PileType}; - -// --- functions added in Step 2 --- - -#[cfg(test)] -mod tests { - use super::*; - - fn make_card(suit: Suit, rank: Rank) -> Card { - Card { id: 0, suit, rank, face_up: true } - } - - fn pile_with(pile_type: PileType, cards: Vec) -> Pile { - Pile { pile_type, cards } - } - - // --- Foundation rules --- - - #[test] - fn foundation_ace_on_empty_pile_is_valid() { - let card = make_card(Suit::Hearts, Rank::Ace); - let pile = Pile::new(PileType::Foundation(Suit::Hearts)); - assert!(can_place_on_foundation(&card, &pile, Suit::Hearts)); - } - - #[test] - fn foundation_non_ace_on_empty_pile_is_invalid() { - let card = make_card(Suit::Hearts, Rank::Two); - let pile = Pile::new(PileType::Foundation(Suit::Hearts)); - assert!(!can_place_on_foundation(&card, &pile, Suit::Hearts)); - } - - #[test] - fn foundation_two_on_ace_same_suit_is_valid() { - let card = make_card(Suit::Clubs, Rank::Two); - let pile = pile_with( - PileType::Foundation(Suit::Clubs), - vec![make_card(Suit::Clubs, Rank::Ace)], - ); - assert!(can_place_on_foundation(&card, &pile, Suit::Clubs)); - } - - #[test] - fn foundation_wrong_suit_is_invalid() { - let card = make_card(Suit::Hearts, Rank::Ace); - let pile = Pile::new(PileType::Foundation(Suit::Spades)); - assert!(!can_place_on_foundation(&card, &pile, Suit::Spades)); - } - - #[test] - fn foundation_skipping_rank_is_invalid() { - let card = make_card(Suit::Diamonds, Rank::Three); - let pile = pile_with( - PileType::Foundation(Suit::Diamonds), - vec![make_card(Suit::Diamonds, Rank::Ace)], - ); - assert!(!can_place_on_foundation(&card, &pile, Suit::Diamonds)); - } - - // --- Tableau rules --- - - #[test] - fn tableau_king_on_empty_pile_is_valid() { - let card = make_card(Suit::Hearts, Rank::King); - let pile = Pile::new(PileType::Tableau(0)); - assert!(can_place_on_tableau(&card, &pile)); - } - - #[test] - fn tableau_non_king_on_empty_pile_is_invalid() { - let card = make_card(Suit::Hearts, Rank::Queen); - let pile = Pile::new(PileType::Tableau(0)); - assert!(!can_place_on_tableau(&card, &pile)); - } - - #[test] - fn tableau_red_on_black_one_lower_is_valid() { - let card = make_card(Suit::Hearts, Rank::Nine); // red 9 - let pile = pile_with( - PileType::Tableau(0), - vec![make_card(Suit::Spades, Rank::Ten)], // black 10 - ); - assert!(can_place_on_tableau(&card, &pile)); - } - - #[test] - fn tableau_same_color_is_invalid() { - let card = make_card(Suit::Clubs, Rank::Nine); // black 9 - let pile = pile_with( - PileType::Tableau(0), - vec![make_card(Suit::Spades, Rank::Ten)], // black 10 - ); - assert!(!can_place_on_tableau(&card, &pile)); - } - - #[test] - fn tableau_wrong_rank_difference_is_invalid() { - let card = make_card(Suit::Hearts, Rank::Eight); // red 8 - let pile = pile_with( - PileType::Tableau(0), - vec![make_card(Suit::Spades, Rank::Ten)], // black 10 - ); - assert!(!can_place_on_tableau(&card, &pile)); - } - - #[test] - fn tableau_black_on_red_one_lower_is_valid() { - let card = make_card(Suit::Clubs, Rank::Six); // black 6 - let pile = pile_with( - PileType::Tableau(0), - vec![make_card(Suit::Hearts, Rank::Seven)], // red 7 - ); - assert!(can_place_on_tableau(&card, &pile)); - } -} -``` - -- [ ] **Step 2: Run tests — expect compile failure** - -```bash -cargo test -p solitaire_core 2>&1 | head -10 -``` - -- [ ] **Step 3: Implement rules** - -```rust -use crate::card::{Card, Suit}; -use crate::pile::Pile; - -/// Can `card` be placed on the foundation pile for `suit`? -pub fn can_place_on_foundation(card: &Card, pile: &Pile, suit: Suit) -> bool { - if card.suit != suit { - return false; - } - match pile.cards.last() { - None => card.rank.value() == 1, // Only Ace starts a foundation - Some(top) => card.rank.value() == top.rank.value() + 1, - } -} - -/// Can `card` (or the bottom card of a sequence) be placed on `pile` in the tableau? -pub fn can_place_on_tableau(card: &Card, pile: &Pile) -> bool { - match pile.cards.last() { - None => card.rank.value() == 13, // Only King goes on empty tableau - Some(top) => { - card.rank.value() + 1 == top.rank.value() - && card.suit.is_red() != top.suit.is_red() - } - } -} -``` - -- [ ] **Step 4: Add to lib.rs** - -```rust -pub mod card; -pub mod deck; -pub mod error; -pub mod pile; -pub mod rules; -``` - -- [ ] **Step 5: Run tests and clippy** - -```bash -cargo test -p solitaire_core && cargo clippy -p solitaire_core -- -D warnings -``` -Expected: all rule tests pass, no warnings. - ---- - -## Task 15: solitaire_core — Scoring (TDD) - -**Files:** -- Create: `solitaire_core/src/scoring.rs` -- Modify: `solitaire_core/src/lib.rs` - -- [ ] **Step 1: Write failing tests** - -```rust -use crate::pile::PileType; -use crate::card::Suit; - -// --- functions added in Step 2 --- - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn move_to_foundation_scores_ten() { - assert_eq!(score_move(&PileType::Waste, &PileType::Foundation(Suit::Hearts)), 10); - assert_eq!(score_move(&PileType::Tableau(0), &PileType::Foundation(Suit::Clubs)), 10); - } - - #[test] - fn waste_to_tableau_scores_five() { - assert_eq!(score_move(&PileType::Waste, &PileType::Tableau(3)), 5); - } - - #[test] - fn tableau_to_tableau_scores_zero() { - assert_eq!(score_move(&PileType::Tableau(0), &PileType::Tableau(1)), 0); - } - - #[test] - fn undo_penalty_is_negative_fifteen() { - assert_eq!(score_undo(), -15); - } - - #[test] - fn time_bonus_at_100_seconds_is_7000() { - assert_eq!(compute_time_bonus(100), 7000); - } - - #[test] - fn time_bonus_at_zero_seconds_is_zero() { - assert_eq!(compute_time_bonus(0), 0); - } - - #[test] - fn time_bonus_at_one_second_is_capped_at_i32_max() { - // 700_000 / 1 = 700_000 which fits in i32 fine - assert_eq!(compute_time_bonus(1), 700_000); - } -} -``` - -- [ ] **Step 2: Run tests — expect compile failure** - -```bash -cargo test -p solitaire_core 2>&1 | head -10 -``` - -- [ ] **Step 3: Implement scoring functions** - -```rust -use crate::pile::PileType; - -/// Returns the score delta for moving cards from `from` to `to`. -/// Windows XP Standard scoring: -/// +10 for any card reaching the foundation -/// +5 for waste → tableau -/// 0 for all other moves -pub fn score_move(from: &PileType, to: &PileType) -> i32 { - match to { - PileType::Foundation(_) => 10, - PileType::Tableau(_) => { - if matches!(from, PileType::Waste) { 5 } else { 0 } - } - _ => 0, - } -} - -/// Score penalty applied when the player uses undo. -pub fn score_undo() -> i32 { - -15 -} - -/// Time bonus added to score on win: 700_000 / elapsed_seconds. -/// Returns 0 if elapsed_seconds is 0 (avoids division by zero). -pub fn compute_time_bonus(elapsed_seconds: u64) -> i32 { - if elapsed_seconds == 0 { - return 0; - } - (700_000u64 / elapsed_seconds).min(i32::MAX as u64) as i32 -} -``` - -- [ ] **Step 4: Add to lib.rs** - -```rust -pub mod card; -pub mod deck; -pub mod error; -pub mod pile; -pub mod rules; -pub mod scoring; -``` - -- [ ] **Step 5: Run tests and clippy** - -```bash -cargo test -p solitaire_core && cargo clippy -p solitaire_core -- -D warnings -``` -Expected: all scoring tests pass, no warnings. - ---- - -## Task 16: solitaire_core — GameState (TDD) - -**Files:** -- Create: `solitaire_core/src/game_state.rs` -- Modify: `solitaire_core/src/lib.rs` - -- [ ] **Step 1: Write failing tests** - -```rust -use std::collections::HashMap; -use serde::{Deserialize, Serialize}; -use crate::card::{Card, Rank, Suit}; -use crate::deck::{deal_klondike, Deck}; -use crate::error::MoveError; -use crate::pile::{Pile, PileType}; -use crate::rules::{can_place_on_foundation, can_place_on_tableau}; -use crate::scoring::{compute_time_bonus, score_move, score_undo}; - -// --- types and implementations added in Steps 2-4 --- - -#[cfg(test)] -mod tests { - use super::*; - - fn new_game() -> GameState { - GameState::new(42, DrawMode::DrawOne) - } - - // --- Initial state --- - - #[test] - fn new_game_has_28_tableau_cards() { - let g = new_game(); - let total: usize = (0..7).map(|i| g.piles[&PileType::Tableau(i)].cards.len()).sum(); - assert_eq!(total, 28); - } - - #[test] - fn new_game_stock_has_24_cards() { - let g = new_game(); - assert_eq!(g.piles[&PileType::Stock].cards.len(), 24); - } - - #[test] - fn new_game_waste_is_empty() { - let g = new_game(); - assert!(g.piles[&PileType::Waste].cards.is_empty()); - } - - #[test] - fn new_game_foundations_are_empty() { - let g = new_game(); - for suit in [Suit::Clubs, Suit::Diamonds, Suit::Hearts, Suit::Spades] { - assert!(g.piles[&PileType::Foundation(suit)].cards.is_empty()); - } - } - - #[test] - fn new_game_is_not_won() { - let g = new_game(); - assert!(!g.is_won); - } - - // --- Seeded reproducibility --- - - #[test] - fn same_seed_produces_identical_layout() { - let g1 = GameState::new(12345, DrawMode::DrawOne); - let g2 = GameState::new(12345, DrawMode::DrawOne); - for i in 0..7 { - assert_eq!( - g1.piles[&PileType::Tableau(i)].cards, - g2.piles[&PileType::Tableau(i)].cards - ); - } - assert_eq!( - g1.piles[&PileType::Stock].cards, - g2.piles[&PileType::Stock].cards - ); - } - - #[test] - fn different_seeds_produce_different_layouts() { - let g1 = GameState::new(1, DrawMode::DrawOne); - let g2 = GameState::new(2, DrawMode::DrawOne); - // Almost certainly different (statistically) - let t1: Vec = g1.piles[&PileType::Tableau(0)].cards.iter().map(|c| c.id).collect(); - let t2: Vec = g2.piles[&PileType::Tableau(0)].cards.iter().map(|c| c.id).collect(); - assert_ne!(t1, t2); - } - - // --- Draw --- - - #[test] - fn draw_one_moves_one_card_to_waste() { - let mut g = new_game(); - let stock_before = g.piles[&PileType::Stock].cards.len(); - g.draw().unwrap(); - assert_eq!(g.piles[&PileType::Stock].cards.len(), stock_before - 1); - assert_eq!(g.piles[&PileType::Waste].cards.len(), 1); - } - - #[test] - fn drawn_card_is_face_up() { - let mut g = new_game(); - g.draw().unwrap(); - assert!(g.piles[&PileType::Waste].cards.last().unwrap().face_up); - } - - #[test] - fn draw_three_moves_up_to_three_cards() { - let mut g = GameState::new(42, DrawMode::DrawThree); - g.draw().unwrap(); - assert_eq!(g.piles[&PileType::Waste].cards.len(), 3); - assert_eq!(g.piles[&PileType::Stock].cards.len(), 21); - } - - #[test] - fn draw_from_empty_stock_recycles_waste() { - let mut g = new_game(); - // Exhaust stock - while !g.piles[&PileType::Stock].cards.is_empty() { - g.draw().unwrap(); - } - let waste_count = g.piles[&PileType::Waste].cards.len(); - assert!(waste_count > 0); - // Drawing again should recycle - g.draw().unwrap(); - assert_eq!(g.piles[&PileType::Stock].cards.len(), waste_count); - assert!(g.piles[&PileType::Waste].cards.is_empty()); - } - - #[test] - fn draw_from_empty_stock_and_waste_returns_error() { - let mut g = new_game(); - while !g.piles[&PileType::Stock].cards.is_empty() { - g.draw().unwrap(); - } - g.draw().unwrap(); // recycle - while !g.piles[&PileType::Stock].cards.is_empty() { - g.draw().unwrap(); - } - // Now both are empty - let result = g.draw(); - assert_eq!(result, Err(MoveError::StockEmpty)); - } - - // --- Move validation --- - - #[test] - fn move_face_down_card_returns_rule_violation() { - let mut g = new_game(); - // Tableau(0) has 1 card (face up). Tableau(1) has 2 cards, bottom is face down. - // Try to move the face-down card (index 0 of Tableau(1)) - let result = g.move_cards(PileType::Tableau(1), PileType::Tableau(0), 2); - // Bottom card of Tableau(1) is face-down; this should be a rule violation - // (unless by coincidence the move is valid, which is fine too — test intent is no panic) - // We just verify it either succeeds or returns a rule violation, never panics. - let _ = result; - } - - #[test] - fn move_zero_cards_returns_rule_violation() { - let mut g = new_game(); - let result = g.move_cards(PileType::Tableau(0), PileType::Tableau(1), 0); - assert!(matches!(result, Err(MoveError::RuleViolation(_)))); - } - - #[test] - fn move_to_stock_returns_invalid_destination() { - let mut g = new_game(); - let result = g.move_cards(PileType::Tableau(0), PileType::Stock, 1); - assert_eq!(result, Err(MoveError::InvalidDestination)); - } - - #[test] - fn move_to_waste_returns_invalid_destination() { - let mut g = new_game(); - let result = g.move_cards(PileType::Tableau(0), PileType::Waste, 1); - assert_eq!(result, Err(MoveError::InvalidDestination)); - } - - // --- Win detection --- - - #[test] - fn win_detection_all_foundations_complete() { - let mut g = new_game(); - // Fill all foundations manually - for suit in [Suit::Clubs, Suit::Diamonds, Suit::Hearts, Suit::Spades] { - g.piles.get_mut(&PileType::Foundation(suit)).unwrap().cards.clear(); - for rank in [ - Rank::Ace, Rank::Two, Rank::Three, Rank::Four, Rank::Five, - Rank::Six, Rank::Seven, Rank::Eight, Rank::Nine, Rank::Ten, - Rank::Jack, Rank::Queen, Rank::King, - ] { - g.piles.get_mut(&PileType::Foundation(suit)).unwrap().cards.push( - Card { id: 0, suit, rank, face_up: true } - ); - } - } - assert!(g.check_win()); - } - - #[test] - fn win_detection_incomplete_foundations_is_false() { - let g = new_game(); - assert!(!g.check_win()); - } - - // --- Undo --- - - #[test] - fn undo_empty_stack_returns_error() { - let mut g = new_game(); - assert_eq!(g.undo(), Err(MoveError::UndoStackEmpty)); - } - - #[test] - fn undo_after_draw_restores_pile_sizes() { - let mut g = new_game(); - let stock_before = g.piles[&PileType::Stock].cards.len(); - let waste_before = g.piles[&PileType::Waste].cards.len(); - g.draw().unwrap(); - g.undo().unwrap(); - assert_eq!(g.piles[&PileType::Stock].cards.len(), stock_before); - assert_eq!(g.piles[&PileType::Waste].cards.len(), waste_before); - } - - #[test] - fn undo_applies_score_penalty() { - let mut g = new_game(); - let score_before = g.score; - g.draw().unwrap(); - g.undo().unwrap(); - // Score = score_before + score_undo() = score_before - 15, floored at 0 - let expected = (score_before + score_undo()).max(0); - assert_eq!(g.score, expected); - } - - #[test] - fn undo_stack_capped_at_64() { - let mut g = new_game(); - // Perform 70 draws (stock will recycle as needed) - for _ in 0..70 { - let _ = g.draw(); - } - // Undo stack should not exceed 64 entries - assert!(g.undo_stack_len() <= 64); - } - - // --- Scoring --- - - #[test] - fn score_does_not_go_below_zero() { - let mut g = new_game(); - // Apply undo penalty repeatedly; score should floor at 0 - for _ in 0..5 { - g.draw().unwrap(); - g.undo().unwrap(); - } - assert!(g.score >= 0); - } - - // --- Auto-complete --- - - #[test] - fn auto_complete_false_when_stock_not_empty() { - let g = new_game(); - assert!(!g.check_auto_complete()); - } - - #[test] - fn auto_complete_false_when_face_down_cards_remain() { - let mut g = new_game(); - // Empty stock and waste but leave face-down cards in tableau - g.piles.get_mut(&PileType::Stock).unwrap().cards.clear(); - g.piles.get_mut(&PileType::Waste).unwrap().cards.clear(); - // Tableau(1) has a face-down card at index 0 - assert!(!g.check_auto_complete()); - } - - // --- Time bonus --- - - #[test] - fn time_bonus_is_zero_when_elapsed_is_zero() { - let mut g = new_game(); - g.elapsed_seconds = 0; - assert_eq!(g.compute_time_bonus(), 0); - } - - #[test] - fn time_bonus_at_100_seconds() { - let mut g = new_game(); - g.elapsed_seconds = 100; - assert_eq!(g.compute_time_bonus(), 7000); - } -} -``` - -- [ ] **Step 2: Run tests — expect compile failure** - -```bash -cargo test -p solitaire_core 2>&1 | head -10 -``` - -- [ ] **Step 3: Implement GameState types** - -Create `solitaire_core/src/game_state.rs` with full content: - -```rust -use std::collections::HashMap; -use serde::{Deserialize, Serialize}; -use crate::card::{Card, Suit}; -use crate::deck::{deal_klondike, Deck}; -use crate::error::MoveError; -use crate::pile::{Pile, PileType}; -use crate::rules::{can_place_on_foundation, can_place_on_tableau}; -use crate::scoring::{compute_time_bonus as scoring_time_bonus, score_move, score_undo as scoring_undo}; - -const MAX_UNDO_STACK: usize = 64; - -#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] -pub enum DrawMode { - DrawOne, - DrawThree, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct StateSnapshot { - piles: HashMap, - score: i32, - move_count: u32, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct GameState { - pub piles: HashMap, - pub draw_mode: DrawMode, - pub score: i32, - pub move_count: u32, - pub elapsed_seconds: u64, - pub seed: u64, - pub is_won: bool, - pub is_auto_completable: bool, - pub(crate) undo_stack: Vec, -} - -impl GameState { - pub fn new(seed: u64, draw_mode: DrawMode) -> Self { - let mut deck = Deck::new(); - deck.shuffle(seed); - let (tableau, stock) = deal_klondike(deck); - - let mut piles: HashMap = HashMap::new(); - piles.insert(PileType::Stock, stock); - piles.insert(PileType::Waste, Pile::new(PileType::Waste)); - for suit in [Suit::Clubs, Suit::Diamonds, Suit::Hearts, Suit::Spades] { - piles.insert(PileType::Foundation(suit), Pile::new(PileType::Foundation(suit))); - } - for (i, pile) in tableau.into_iter().enumerate() { - piles.insert(PileType::Tableau(i), pile); - } - - Self { - piles, - draw_mode, - score: 0, - move_count: 0, - elapsed_seconds: 0, - seed, - is_won: false, - is_auto_completable: false, - undo_stack: Vec::new(), - } - } - - /// Returns the number of snapshots on the undo stack (for testing). - pub fn undo_stack_len(&self) -> usize { - self.undo_stack.len() - } - - fn take_snapshot(&self) -> StateSnapshot { - StateSnapshot { - piles: self.piles.clone(), - score: self.score, - move_count: self.move_count, - } - } - - fn push_snapshot(&mut self) { - if self.undo_stack.len() >= MAX_UNDO_STACK { - self.undo_stack.remove(0); - } - self.undo_stack.push(self.take_snapshot()); - } - - /// Draw from stock to waste. Recycles waste to stock when stock is empty. - pub fn draw(&mut self) -> Result<(), MoveError> { - if self.is_won { - return Err(MoveError::GameAlreadyWon); - } - - let stock_len = self.piles[&PileType::Stock].cards.len(); - - if stock_len == 0 { - let waste_len = self.piles[&PileType::Waste].cards.len(); - if waste_len == 0 { - return Err(MoveError::StockEmpty); - } - // Recycle: reverse waste back onto stock, face-down - let waste_cards: Vec = self.piles - .get_mut(&PileType::Waste) - .unwrap() - .cards - .drain(..) - .collect(); - let stock = self.piles.get_mut(&PileType::Stock).unwrap(); - for mut card in waste_cards.into_iter().rev() { - card.face_up = false; - stock.cards.push(card); - } - return Ok(()); - } - - self.push_snapshot(); - - let draw_count = match self.draw_mode { - DrawMode::DrawOne => 1, - DrawMode::DrawThree => 3, - }; - let available = stock_len.min(draw_count); - let drain_start = stock_len - available; - - let drawn: Vec = self.piles - .get_mut(&PileType::Stock) - .unwrap() - .cards - .drain(drain_start..) - .collect(); - - let waste = self.piles.get_mut(&PileType::Waste).unwrap(); - for mut card in drawn { - card.face_up = true; - waste.cards.push(card); - } - - self.move_count += 1; - Ok(()) - } - - /// Move `count` cards from pile `from` to pile `to`. - pub fn move_cards(&mut self, from: PileType, to: PileType, count: usize) -> Result<(), MoveError> { - if self.is_won { - return Err(MoveError::GameAlreadyWon); - } - if from == to { - return Err(MoveError::RuleViolation("source and destination must differ".into())); - } - - // Validate (immutable borrows scoped here) - let move_start = { - let from_pile = self.piles.get(&from).ok_or(MoveError::InvalidSource)?; - if from_pile.cards.is_empty() { - return Err(MoveError::EmptySource); - } - if count == 0 || count > from_pile.cards.len() { - return Err(MoveError::RuleViolation("invalid card count".into())); - } - let start = from_pile.cards.len() - count; - for card in &from_pile.cards[start..] { - if !card.face_up { - return Err(MoveError::RuleViolation("cannot move face-down card".into())); - } - } - let bottom_card = from_pile.cards[start].clone(); - - match &to { - PileType::Foundation(suit) => { - if count != 1 { - return Err(MoveError::RuleViolation( - "only one card can move to foundation at a time".into(), - )); - } - let dest = self.piles.get(&to).ok_or(MoveError::InvalidDestination)?; - if !can_place_on_foundation(&bottom_card, dest, *suit) { - return Err(MoveError::RuleViolation("invalid foundation placement".into())); - } - } - PileType::Tableau(_) => { - let dest = self.piles.get(&to).ok_or(MoveError::InvalidDestination)?; - if !can_place_on_tableau(&bottom_card, dest) { - return Err(MoveError::RuleViolation("invalid tableau placement".into())); - } - } - _ => return Err(MoveError::InvalidDestination), - } - start - }; - - let score_delta = score_move(&from, &to); - self.push_snapshot(); - - // Execute move - let mut moved: Vec = self.piles - .get_mut(&from) - .unwrap() - .cards - .split_off(move_start); - - // Flip the newly exposed top card of the source pile - if let Some(top) = self.piles.get_mut(&from).unwrap().cards.last_mut() { - if !top.face_up { - top.face_up = true; - } - } - - self.piles.get_mut(&to).unwrap().cards.append(&mut moved); - - self.score = (self.score + score_delta).max(0); - self.move_count += 1; - - self.is_won = self.check_win(); - if !self.is_won { - self.is_auto_completable = self.check_auto_complete(); - } - - Ok(()) - } - - /// Restore the most recent snapshot and apply the undo score penalty. - pub fn undo(&mut self) -> Result<(), MoveError> { - if self.is_won { - return Err(MoveError::GameAlreadyWon); - } - let snapshot = self.undo_stack.pop().ok_or(MoveError::UndoStackEmpty)?; - self.piles = snapshot.piles; - self.score = (snapshot.score + scoring_undo()).max(0); - self.move_count = snapshot.move_count; - self.is_won = false; - self.is_auto_completable = false; - Ok(()) - } - - /// Returns true when all four foundations have 13 cards. - pub fn check_win(&self) -> bool { - [Suit::Clubs, Suit::Diamonds, Suit::Hearts, Suit::Spades] - .iter() - .all(|&suit| { - self.piles - .get(&PileType::Foundation(suit)) - .map_or(false, |p| p.cards.len() == 13) - }) - } - - /// Returns true when stock and waste are empty AND all tableau cards are face-up. - /// At that point the player can auto-complete without any input. - pub fn check_auto_complete(&self) -> bool { - if !self.piles[&PileType::Stock].cards.is_empty() { - return false; - } - if !self.piles[&PileType::Waste].cards.is_empty() { - return false; - } - (0..7).all(|i| { - self.piles[&PileType::Tableau(i)] - .cards - .iter() - .all(|c| c.face_up) - }) - } - - /// Time bonus added to score on win: 700_000 / elapsed_seconds (0 if elapsed is 0). - pub fn compute_time_bonus(&self) -> i32 { - scoring_time_bonus(self.elapsed_seconds) - } -} -``` - -- [ ] **Step 4: Add to lib.rs** - -```rust -pub mod card; -pub mod deck; -pub mod error; -pub mod game_state; -pub mod pile; -pub mod rules; -pub mod scoring; -``` - -- [ ] **Step 5: Run all tests** - -```bash -cargo test -p solitaire_core -``` -Expected: all tests in `card`, `pile`, `error`, `deck`, `rules`, `scoring`, and `game_state` modules pass. - -- [ ] **Step 6: Run clippy** - -```bash -cargo clippy -p solitaire_core -- -D warnings -``` -Expected: zero warnings. - ---- - -## Task 17: Phase 2 Full Workspace Gate - -- [ ] **Step 1: Run full workspace test suite** - -```bash -cargo test --workspace -``` -Expected: all tests pass. The non-core crates have no tests yet so the count is small — that is fine. - -- [ ] **Step 2: Run full workspace clippy** - -```bash -cargo clippy --workspace -- -D warnings -``` -Expected: zero warnings across all seven crates. - -- [ ] **Step 3: Verify blank Bevy window still opens** - -```bash -cargo run -p solitaire_app --features bevy/dynamic_linking -``` -Expected: window opens, no panics. - -- [ ] **Step 4: Commit Phase 2** - -```bash -git add solitaire_core/src/ -git commit -m "feat(core): complete Klondike game logic with full test coverage" -``` - ---- - -## Self-Review Checklist - -### Spec coverage - -| Spec requirement | Covered by task | -|---|---| -| 7-crate workspace | Tasks 1–8 | -| Fast compile settings in Cargo.toml | Task 1 | -| assets/ directory structure | Task 9 | -| Blank Bevy window | Task 8 | -| cargo run opens window | Task 8 step 3 | -| GPGS compile-time stub | Task 7 | -| GpgsClient implements SyncProvider | Task 7 step 3 | -| .env.example | Task 9 step 2 | -| Suit, Rank, Card types | Task 10 | -| PileType, Pile types | Task 11 | -| MoveError enum | Task 12 | -| Deck::new(), Deck::shuffle(seed) | Task 13 | -| deal_klondike() Klondike layout | Task 13 | -| Move validation (legal + illegal) | Tasks 14, 16 | -| Scoring per move type | Task 15 | -| Time bonus formula | Task 15 | -| Undo (restore state, -15 penalty) | Task 16 | -| Undo stack capped at 64 | Task 16 | -| Win detection | Task 16 | -| Auto-complete detection | Task 16 | -| Seeded deal reproducibility | Tasks 13, 16 | -| cargo test --workspace passes | Task 17 | -| cargo clippy --workspace -D warnings passes | Task 17 | - -### Gaps / Notes - -- `apply_auto_complete()` (iterates foundations to completion) is not implemented — it is used by Phase 3 (Bevy rendering). Adding it now would require borrow complexity with no test driver. It belongs in the Phase 3 plan. -- `solitaire_sync` types are minimal stubs. Full fields (`StatsSnapshot`, `PlayerProgress`, etc.) are added in Phase 8. -- `solitaire_data` has `SyncProvider` trait only. `StatsSnapshot`, `PlayerProgress`, persistence code are added in Phase 4. -- Bevy version numbers in `Cargo.toml` may need updating to current stable — check `crates.io/crates/bevy` at implementation time. diff --git a/docs/superpowers/plans/2026-04-23-phase3-bevy-rendering.md b/docs/superpowers/plans/2026-04-23-phase3-bevy-rendering.md deleted file mode 100644 index 534b837..0000000 --- a/docs/superpowers/plans/2026-04-23-phase3-bevy-rendering.md +++ /dev/null @@ -1,172 +0,0 @@ -# Phase 3 — Bevy Rendering & Interaction - -> Status: In progress (started 2026-04-23) -> Crate: `solitaire_engine` -> Depends on: `solitaire_core` (complete), `bevy = 0.15` (includes `bevy::ui`), `kira = 0.9` (audio — Phase 3F+) - ---- - -## Scope - -Make the game playable with a graphical interface. This phase takes `solitaire_engine` from an empty stub to a full Bevy rendering + input layer wired to `solitaire_core::GameState`. - -Out of scope (later phases): - -- Persistence (`StatsSnapshot`, file I/O) — Phase 4 -- Achievements toast content — Phase 5 -- Audio — Phase 7 -- Sync — Phase 8 - ---- - -## Sub-phases - -### 3A — Plumbing & event wiring - -**Modules under `solitaire_engine/src/`:** - -- `lib.rs` — re-exports plugins, types -- `resources.rs` - - `GameStateResource(pub GameState)` — wraps `solitaire_core::GameState` directly (no `solitaire_data` layer yet) - - `DragState { cards: Vec, origin_pile: PileType, cursor_offset: Vec2, origin_z: f32 }` (starts empty) - - `SyncStatusResource(pub SyncStatus)` where `SyncStatus` is `Idle|Syncing|LastSynced(DateTime)|Error(String)` -- `events.rs` - - `MoveRequestEvent { from: PileType, to: PileType, count: usize }` - - `DrawRequestEvent` - - `UndoRequestEvent` - - `NewGameRequestEvent { seed: Option }` - - `StateChangedEvent` - - `GameWonEvent { score: i32, time_seconds: u64 }` - - `CardFlippedEvent(pub u32)` - - `AchievementUnlockedEvent(pub AchievementRecord)` — placeholder, unused until Phase 5 -- `game_plugin.rs` — `GamePlugin`: - - On `Startup`: init `GameStateResource::new(system_time_seed, DrawMode::DrawOne)` - - Systems: `handle_draw`, `handle_move`, `handle_undo`, `handle_new_game` - - Each fires `StateChangedEvent` on success; `GameWonEvent` when `check_win()` flips to true - - Errors: log via `tracing`, do not panic -- Register in [solitaire_app/src/main.rs](../../../solitaire_app/src/main.rs) - -**Tests:** event-routing unit tests that drive `GamePlugin` in a headless `App::new()` and verify resource mutations. - -**Exit:** `cargo test --workspace` green, `cargo clippy --workspace -- -D warnings` clean. Running the app still shows a blank window (no rendering yet), but pressing nothing crashes anything. - -Commit: `feat(engine): add resources, events, and GamePlugin event routing` - ---- - -### 3B — Layout + TablePlugin - -**Modules:** - -- `layout.rs` — pure function `compute_layout(window: Vec2) -> Layout` - - `Layout { card_size: Vec2, pile_positions: HashMap }` - - card_width = window.x / 9.0 - - card_height = card_width * 1.4 - - Row 1: stock, waste, [gap], 4 foundations - - Row 2: 7 tableau columns below -- `LayoutResource(pub Layout)` — a Bevy resource -- `table_plugin.rs` — `TablePlugin`: - - Spawns background rectangle (dark green `#0f5132`) - - Spawns 13 `PileMarker` sprite entities for empty-pile placeholders - - System `on_window_resized`: recompute `LayoutResource`, reposition pile markers - -**Tests:** `compute_layout` at 800×600, 1280×800, 1920×1080 — all 13 piles within bounds, non-overlapping. - -**Exit:** Window shows a green table with 13 translucent pile outlines that resize with the window. - -Commit: `feat(engine): add layout, LayoutResource, and TablePlugin` - ---- - -### 3C — CardPlugin rendering (procedural) - -**Decision:** Phase 3 uses procedural cards (rounded white rectangle + rank/suit text). Real PNG assets can be slotted in later by replacing the sprite setup; API shape stays stable. - -**Modules:** - -- `card_plugin.rs` — `CardPlugin`: - - Component `CardEntity { card_id: u32 }` - - `StateChangedEvent` handler: sync entities with `GameStateResource` — spawn missing, despawn removed, reposition all - - Position: `LayoutResource.pile_positions[pile] + Vec3::Z * stack_index` - - Face-up: white rect + text of rank+suit glyph (red for hearts/diamonds, black for clubs/spades) - - Face-down: blue rect with a subtle pattern overlay - - No assets loaded — text uses Bevy's default font (or shipped system font if needed) - -**Exit:** A freshly dealt game renders — stock (24 cards face-down), 7 tableau columns in standard 1/2/3/.../7 face-down + 1 face-up, empty foundations. - -Commit: `feat(engine): add CardPlugin with procedural card rendering` - ---- - -### 3D — Keyboard input & click-to-draw - -**Modules:** - -- `input_plugin.rs` — `InputPlugin`: - - Keyboard system: `KeyCode::KeyU` → `UndoRequestEvent`, `KeyN` → `NewGameRequestEvent{seed: None}`, `KeyD` → `DrawRequestEvent`, `Escape` → pause-stub event - - Mouse system: on left-click, if cursor over stock pile → `DrawRequestEvent` - -**Exit:** Pressing D cycles stock↔waste on-screen; N deals a new game; U undoes. - -Commit: `feat(engine): add InputPlugin with keyboard and stock-click` - ---- - -### 3E — Drag & drop - -**Modules:** - -- Extend `input_plugin.rs` with drag systems: - - `start_drag`: on left mouse-down, ray-hit the top card (or run of face-up cards) of a pile; populate `DragState`; elevate z - - `follow_cursor`: while `DragState.cards` non-empty, move those entities to cursor position + per-card stack offset - - `end_drag`: on mouse-up, determine target pile; early-validate with `can_place_on_tableau` / `can_place_on_foundation`; fire `MoveRequestEvent` (backend also validates) - - On `MoveError` via `StateChangedEvent` non-emission: snap cards back with a short lerp (uses `CardAnim` from 3F) -- Multi-card tableau drag: grabbing card N pulls N..=top if all face-up - -**Exit:** Full game playable with mouse. `GameWonEvent` fires on a win. No animations yet on invalid drop (just snap back instantly in 3E, smooth in 3F). - -Commit: `feat(engine): add drag-and-drop input with multi-card tableau support` - ---- - -### 3F — AnimationPlugin (polish) - -**Modules:** - -- `animation_plugin.rs` — `AnimationPlugin`: - - Component `CardAnim { start: Vec3, target: Vec3, elapsed: f32, duration: f32 }` — linear lerp 0.15s for moves - - Flip: `CardFlip { elapsed: f32, duration: f32, flips_to_face_up: bool }` — scale-X 1→0→1 over 0.2s, toggle `face_up` at midpoint, fire `CardFlippedEvent` - - Win cascade: on `GameWonEvent`, iterate foundation cards and schedule `CardAnim` to random off-screen targets with staggered 0.05s starts - - Toast component scaffold: bevy_ui `Node`/`Text` overlay, wired to `AchievementUnlockedEvent` (no content yet) - -**Exit:** Valid moves animate smoothly; flipping a tableau card shows a flip; winning plays a cascade. - -Commit: `feat(engine): add AnimationPlugin with slide, flip, and win cascade` - ---- - -## Cross-cutting rules - -- `solitaire_core` and `solitaire_sync` gain NO new dependencies. -- No `unwrap()` / `panic!()` in new Bevy systems — log errors via `tracing::warn!` and continue. -- `cargo test --workspace` and `cargo clippy --workspace -- -D warnings` green after EVERY sub-phase. -- Every commit follows `type(scope): description` convention. -- One `Plugin` per responsibility; cross-system communication is Events only. - ---- - -## Open questions resolved - -- **Procedural vs. sourced card art**: procedural for Phase 3. -- **`GameStateResource` layer**: wraps `solitaire_core::GameState` directly. -- **Phases 4–8 plugins** (Audio/UI/Achievement/Sync): not in Phase 3. -- **New-game seed**: system time when `None`, explicit when `Some(u64)`. -- **Commit cadence**: one per sub-phase. - ---- - -## Risks - -- Bevy 0.15 API drift from older tutorials — verify each API call as written. -- Procedural card text depends on Bevy's default font; if rendering is unreadable, embed a `.ttf` via `include_bytes!()` as a follow-up (still Phase 3, not 3F). -- `kira` audio API is async-friendly but requires careful thread management — initialise the `AudioManager` once at startup and store it in a Bevy `NonSend` resource. diff --git a/docs/superpowers/plans/2026-04-23-phase4-statistics.md b/docs/superpowers/plans/2026-04-23-phase4-statistics.md deleted file mode 100644 index 210b50d..0000000 --- a/docs/superpowers/plans/2026-04-23-phase4-statistics.md +++ /dev/null @@ -1,1304 +0,0 @@ -# Phase 4 — Statistics Persistence & Stats Screen - -> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. - -**Goal:** Persist game statistics to disk and display them in a toggleable bevy_ui overlay. - -**Architecture:** `StatsSnapshot` is defined and serialized in `solitaire_data`; `StatsPlugin` in `solitaire_engine` loads it on startup, updates it on game events, and saves it atomically. A lightweight bevy_ui overlay (toggled with `S`) shows the player's stats. - -**Tech Stack:** `solitaire_data` (stats type + file I/O), `solitaire_engine` (Bevy plugin + UI), `serde_json` (serialization), `dirs` (platform data dir), `chrono` (timestamps), `bevy::ui` (overlay screen). - ---- - -## File Map - -| File | Action | Responsibility | -|---|---|---| -| `solitaire_data/src/stats.rs` | **Create** | `StatsSnapshot` struct + `update_on_win` + `record_abandoned` | -| `solitaire_data/src/storage.rs` | **Create** | `stats_file_path`, `load_stats_from`, `save_stats_to`, public wrappers | -| `solitaire_data/src/lib.rs` | **Modify** | Re-export `stats` and `storage` modules | -| `solitaire_engine/src/stats_plugin.rs` | **Create** | `StatsResource`, `StatsPlugin` (load/update/save + UI toggle) | -| `solitaire_engine/src/lib.rs` | **Modify** | Export `StatsPlugin`, `StatsResource` | -| `solitaire_app/src/main.rs` | **Modify** | Register `StatsPlugin` | - ---- - -## Task 1 — `StatsSnapshot` in `solitaire_data` - -**Files:** -- Create: `solitaire_data/src/stats.rs` -- Modify: `solitaire_data/src/lib.rs` - -### Step 1: Write failing tests - -Add to a new file `solitaire_data/src/stats.rs`: - -```rust -#[cfg(test)] -mod tests { - use super::*; - use solitaire_core::game_state::DrawMode; - - #[test] - fn default_stats_are_all_zero() { - let s = StatsSnapshot::default(); - assert_eq!(s.games_played, 0); - assert_eq!(s.games_won, 0); - assert_eq!(s.win_streak_current, 0); - assert_eq!(s.win_streak_best, 0); - assert_eq!(s.lifetime_score, 0); - assert_eq!(s.best_single_score, 0); - assert_eq!(s.fastest_win_seconds, u64::MAX); - } - - #[test] - fn first_win_sets_all_fields() { - let mut s = StatsSnapshot::default(); - s.update_on_win(1500, 120, &DrawMode::DrawOne); - assert_eq!(s.games_played, 1); - assert_eq!(s.games_won, 1); - assert_eq!(s.win_streak_current, 1); - assert_eq!(s.win_streak_best, 1); - assert_eq!(s.lifetime_score, 1500); - assert_eq!(s.best_single_score, 1500); - assert_eq!(s.fastest_win_seconds, 120); - assert_eq!(s.avg_time_seconds, 120); - assert_eq!(s.draw_one_wins, 1); - assert_eq!(s.draw_three_wins, 0); - } - - #[test] - fn streak_tracks_across_wins() { - let mut s = StatsSnapshot::default(); - s.update_on_win(100, 60, &DrawMode::DrawOne); - s.update_on_win(100, 60, &DrawMode::DrawOne); - s.update_on_win(100, 60, &DrawMode::DrawOne); - assert_eq!(s.win_streak_current, 3); - assert_eq!(s.win_streak_best, 3); - } - - #[test] - fn record_abandoned_resets_streak_and_increments_played() { - let mut s = StatsSnapshot::default(); - s.update_on_win(100, 60, &DrawMode::DrawOne); - s.update_on_win(100, 60, &DrawMode::DrawOne); - assert_eq!(s.win_streak_current, 2); - s.record_abandoned(); - assert_eq!(s.games_played, 3); - assert_eq!(s.games_lost, 1); - assert_eq!(s.win_streak_current, 0); - assert_eq!(s.win_streak_best, 2, "best streak must not drop"); - } - - #[test] - fn fastest_win_takes_minimum() { - let mut s = StatsSnapshot::default(); - s.update_on_win(100, 300, &DrawMode::DrawOne); - s.update_on_win(100, 120, &DrawMode::DrawOne); - s.update_on_win(100, 500, &DrawMode::DrawOne); - assert_eq!(s.fastest_win_seconds, 120); - } - - #[test] - fn avg_time_is_correct_rolling_average() { - let mut s = StatsSnapshot::default(); - s.update_on_win(100, 100, &DrawMode::DrawOne); - s.update_on_win(100, 200, &DrawMode::DrawOne); - s.update_on_win(100, 300, &DrawMode::DrawOne); - // (100 + 200 + 300) / 3 = 200 - assert_eq!(s.avg_time_seconds, 200); - } - - #[test] - fn best_score_updates_only_on_higher_score() { - let mut s = StatsSnapshot::default(); - s.update_on_win(500, 60, &DrawMode::DrawOne); - s.update_on_win(300, 60, &DrawMode::DrawOne); - assert_eq!(s.best_single_score, 500); - s.update_on_win(800, 60, &DrawMode::DrawOne); - assert_eq!(s.best_single_score, 800); - } - - #[test] - fn negative_score_treated_as_zero() { - let mut s = StatsSnapshot::default(); - s.update_on_win(-50, 60, &DrawMode::DrawOne); - assert_eq!(s.best_single_score, 0); - assert_eq!(s.lifetime_score, 0); - } - - #[test] - fn draw_three_wins_tracked_separately() { - let mut s = StatsSnapshot::default(); - s.update_on_win(100, 60, &DrawMode::DrawOne); - s.update_on_win(100, 60, &DrawMode::DrawThree); - assert_eq!(s.draw_one_wins, 1); - assert_eq!(s.draw_three_wins, 1); - } -} -``` - -- [ ] **Step 2: Verify tests fail** - -```bash -cargo test -p solitaire_data 2>&1 | tail -5 -``` - -Expected: compile error — `stats.rs` does not exist. - -- [ ] **Step 3: Implement `StatsSnapshot`** - -Create `solitaire_data/src/stats.rs` with the full struct and methods: - -```rust -//! Player statistics — persisted to `stats.json` between sessions. - -use chrono::{DateTime, Utc}; -use serde::{Deserialize, Serialize}; -use solitaire_core::game_state::DrawMode; - -/// Cumulative game statistics. Stored as `stats.json` in the platform data dir. -#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] -pub struct StatsSnapshot { - pub games_played: u32, - pub games_won: u32, - pub games_lost: u32, - pub win_streak_current: u32, - pub win_streak_best: u32, - /// Rolling average of win times in seconds. - pub avg_time_seconds: u64, - /// Fastest win time. `u64::MAX` means no wins yet. - pub fastest_win_seconds: u64, - /// Sum of all winning scores. - pub lifetime_score: u64, - pub best_single_score: u32, - pub draw_one_wins: u32, - pub draw_three_wins: u32, - pub last_modified: DateTime, -} - -impl Default for StatsSnapshot { - fn default() -> Self { - Self { - games_played: 0, - games_won: 0, - games_lost: 0, - win_streak_current: 0, - win_streak_best: 0, - avg_time_seconds: 0, - fastest_win_seconds: u64::MAX, - lifetime_score: 0, - best_single_score: 0, - draw_one_wins: 0, - draw_three_wins: 0, - last_modified: DateTime::UNIX_EPOCH, - } - } -} - -impl StatsSnapshot { - /// Record a completed win. Updates all relevant counters and rolling averages. - pub fn update_on_win(&mut self, score: i32, time_seconds: u64, draw_mode: &DrawMode) { - let prev_wins = self.games_won; // capture BEFORE increment - self.games_played += 1; - self.games_won += 1; - self.win_streak_current += 1; - if self.win_streak_current > self.win_streak_best { - self.win_streak_best = self.win_streak_current; - } - - let score_u32 = score.max(0) as u32; - self.lifetime_score = self.lifetime_score.saturating_add(score_u32 as u64); - if score_u32 > self.best_single_score { - self.best_single_score = score_u32; - } - - if time_seconds < self.fastest_win_seconds { - self.fastest_win_seconds = time_seconds; - } - - // Rolling average using u128 to avoid overflow on the intermediate product. - self.avg_time_seconds = if prev_wins == 0 { - time_seconds - } else { - ((self.avg_time_seconds as u128 * prev_wins as u128 + time_seconds as u128) - / self.games_won as u128) as u64 - }; - - match draw_mode { - DrawMode::DrawOne => self.draw_one_wins += 1, - DrawMode::DrawThree => self.draw_three_wins += 1, - } - - self.last_modified = Utc::now(); - } - - /// Record an abandoned game (player started a new game without winning). - /// Increments `games_played` and `games_lost`, resets `win_streak_current`. - pub fn record_abandoned(&mut self) { - self.games_played += 1; - self.games_lost += 1; - self.win_streak_current = 0; - self.last_modified = Utc::now(); - } - - /// Win percentage as 0–100, or `None` if no games played. - pub fn win_rate(&self) -> Option { - if self.games_played == 0 { - None - } else { - Some(self.games_won as f32 / self.games_played as f32 * 100.0) - } - } -} - -#[cfg(test)] -mod tests { - // (test code from Step 1 goes here) - use super::*; - use solitaire_core::game_state::DrawMode; - - #[test] - fn default_stats_are_all_zero() { - let s = StatsSnapshot::default(); - assert_eq!(s.games_played, 0); - assert_eq!(s.games_won, 0); - assert_eq!(s.win_streak_current, 0); - assert_eq!(s.win_streak_best, 0); - assert_eq!(s.lifetime_score, 0); - assert_eq!(s.best_single_score, 0); - assert_eq!(s.fastest_win_seconds, u64::MAX); - } - - #[test] - fn first_win_sets_all_fields() { - let mut s = StatsSnapshot::default(); - s.update_on_win(1500, 120, &DrawMode::DrawOne); - assert_eq!(s.games_played, 1); - assert_eq!(s.games_won, 1); - assert_eq!(s.win_streak_current, 1); - assert_eq!(s.win_streak_best, 1); - assert_eq!(s.lifetime_score, 1500); - assert_eq!(s.best_single_score, 1500); - assert_eq!(s.fastest_win_seconds, 120); - assert_eq!(s.avg_time_seconds, 120); - assert_eq!(s.draw_one_wins, 1); - assert_eq!(s.draw_three_wins, 0); - } - - #[test] - fn streak_tracks_across_wins() { - let mut s = StatsSnapshot::default(); - s.update_on_win(100, 60, &DrawMode::DrawOne); - s.update_on_win(100, 60, &DrawMode::DrawOne); - s.update_on_win(100, 60, &DrawMode::DrawOne); - assert_eq!(s.win_streak_current, 3); - assert_eq!(s.win_streak_best, 3); - } - - #[test] - fn record_abandoned_resets_streak_and_increments_played() { - let mut s = StatsSnapshot::default(); - s.update_on_win(100, 60, &DrawMode::DrawOne); - s.update_on_win(100, 60, &DrawMode::DrawOne); - assert_eq!(s.win_streak_current, 2); - s.record_abandoned(); - assert_eq!(s.games_played, 3); - assert_eq!(s.games_lost, 1); - assert_eq!(s.win_streak_current, 0); - assert_eq!(s.win_streak_best, 2, "best streak must not drop"); - } - - #[test] - fn fastest_win_takes_minimum() { - let mut s = StatsSnapshot::default(); - s.update_on_win(100, 300, &DrawMode::DrawOne); - s.update_on_win(100, 120, &DrawMode::DrawOne); - s.update_on_win(100, 500, &DrawMode::DrawOne); - assert_eq!(s.fastest_win_seconds, 120); - } - - #[test] - fn avg_time_is_correct_rolling_average() { - let mut s = StatsSnapshot::default(); - s.update_on_win(100, 100, &DrawMode::DrawOne); - s.update_on_win(100, 200, &DrawMode::DrawOne); - s.update_on_win(100, 300, &DrawMode::DrawOne); - assert_eq!(s.avg_time_seconds, 200); - } - - #[test] - fn best_score_updates_only_on_higher_score() { - let mut s = StatsSnapshot::default(); - s.update_on_win(500, 60, &DrawMode::DrawOne); - s.update_on_win(300, 60, &DrawMode::DrawOne); - assert_eq!(s.best_single_score, 500); - s.update_on_win(800, 60, &DrawMode::DrawOne); - assert_eq!(s.best_single_score, 800); - } - - #[test] - fn negative_score_treated_as_zero() { - let mut s = StatsSnapshot::default(); - s.update_on_win(-50, 60, &DrawMode::DrawOne); - assert_eq!(s.best_single_score, 0); - assert_eq!(s.lifetime_score, 0); - } - - #[test] - fn draw_three_wins_tracked_separately() { - let mut s = StatsSnapshot::default(); - s.update_on_win(100, 60, &DrawMode::DrawOne); - s.update_on_win(100, 60, &DrawMode::DrawThree); - assert_eq!(s.draw_one_wins, 1); - assert_eq!(s.draw_three_wins, 1); - } -} -``` - -- [ ] **Step 4: Expose the module from `solitaire_data/src/lib.rs`** - -Append to the existing `lib.rs` (after the `SyncProvider` trait): - -```rust -pub mod stats; -pub use stats::StatsSnapshot; -``` - -- [ ] **Step 5: Run tests and verify they pass** - -```bash -cargo test -p solitaire_data 2>&1 | tail -10 -``` - -Expected output: -``` -test stats::tests::avg_time_is_correct_rolling_average ... ok -test stats::tests::best_score_updates_only_on_higher_score ... ok -test stats::tests::default_stats_are_all_zero ... ok -test stats::tests::draw_three_wins_tracked_separately ... ok -test stats::tests::fastest_win_takes_minimum ... ok -test stats::tests::first_win_sets_all_fields ... ok -test stats::tests::negative_score_treated_as_zero ... ok -test stats::tests::record_abandoned_resets_streak_and_increments_played ... ok -test stats::tests::streak_tracks_across_wins ... ok -test result: ok. 9 passed; 0 failed; ... -``` - -- [ ] **Step 6: Clippy** - -```bash -cargo clippy -p solitaire_data -- -D warnings 2>&1 | tail -5 -``` - -Expected: `Finished ... 0 warnings` - -- [ ] **Step 7: Commit** - -```bash -git add solitaire_data/src/stats.rs solitaire_data/src/lib.rs -git commit -m "feat(data): add StatsSnapshot with update_on_win and record_abandoned" -``` - ---- - -## Task 2 — File Persistence in `solitaire_data` - -**Files:** -- Create: `solitaire_data/src/storage.rs` -- Modify: `solitaire_data/src/lib.rs` - -- [ ] **Step 1: Write failing tests** - -Add to bottom of `solitaire_data/src/storage.rs` (new file, just the test module first): - -```rust -#[cfg(test)] -mod tests { - use super::*; - use crate::stats::StatsSnapshot; - use solitaire_core::game_state::DrawMode; - use std::env; - - fn tmp_path(name: &str) -> std::path::PathBuf { - env::temp_dir().join(format!("solitaire_test_{name}.json")) - } - - #[test] - fn round_trip_save_and_load() { - let path = tmp_path("round_trip"); - let _ = std::fs::remove_file(&path); // clean up from prior runs - - let mut stats = StatsSnapshot::default(); - stats.update_on_win(1000, 180, &DrawMode::DrawOne); - save_stats_to(&path, &stats).expect("save"); - - let loaded = load_stats_from(&path); - assert_eq!(loaded.games_won, 1); - assert_eq!(loaded.best_single_score, 1000); - assert_eq!(loaded.fastest_win_seconds, 180); - } - - #[test] - fn load_from_missing_file_returns_default() { - let path = tmp_path("missing_file_abc123"); - let _ = std::fs::remove_file(&path); - let stats = load_stats_from(&path); - assert_eq!(stats, StatsSnapshot::default()); - } - - #[test] - fn save_is_atomic_no_half_written_file() { - let path = tmp_path("atomic_write"); - let stats = StatsSnapshot::default(); - save_stats_to(&path, &stats).expect("save"); - - // Verify the .tmp file was cleaned up after the rename. - let tmp_path = path.with_extension("json.tmp"); - assert!( - !tmp_path.exists(), - ".tmp file should not exist after successful save" - ); - } - - #[test] - fn load_from_corrupt_file_returns_default() { - let path = tmp_path("corrupt"); - std::fs::write(&path, b"not valid json!!!").expect("write corrupt"); - let stats = load_stats_from(&path); - assert_eq!(stats, StatsSnapshot::default()); - } -} -``` - -- [ ] **Step 2: Verify tests fail** - -```bash -cargo test -p solitaire_data storage 2>&1 | tail -5 -``` - -Expected: compile error — `storage.rs` not found. - -- [ ] **Step 3: Implement `storage.rs`** - -Create `solitaire_data/src/storage.rs`: - -```rust -//! Atomic file I/O for `StatsSnapshot` persistence. -//! -//! All saves go through `filename.json.tmp` → `rename()` so a crash or power -//! loss during a write never corrupts the saved data. - -use std::fs; -use std::io; -use std::path::{Path, PathBuf}; - -use crate::stats::StatsSnapshot; - -const APP_DIR_NAME: &str = "solitaire_quest"; -const STATS_FILE_NAME: &str = "stats.json"; - -/// Returns the platform-specific path to `stats.json`, or `None` if -/// `dirs::data_dir()` is unavailable (e.g. minimal Linux containers). -pub fn stats_file_path() -> Option { - dirs::data_dir().map(|d| d.join(APP_DIR_NAME).join(STATS_FILE_NAME)) -} - -/// Load stats from an explicit path. Returns `StatsSnapshot::default()` if -/// the file is missing or cannot be deserialized (corrupt/truncated). -pub fn load_stats_from(path: &Path) -> StatsSnapshot { - let data = match fs::read(path) { - Ok(d) => d, - Err(_) => return StatsSnapshot::default(), - }; - serde_json::from_slice(&data).unwrap_or_default() -} - -/// Save stats to an explicit path using an atomic write (`.tmp` → rename). -pub fn save_stats_to(path: &Path, stats: &StatsSnapshot) -> io::Result<()> { - // Ensure the parent directory exists. - if let Some(parent) = path.parent() { - fs::create_dir_all(parent)?; - } - - let json = serde_json::to_string_pretty(stats) - .map_err(|e| io::Error::new(io::ErrorKind::Other, e))?; - - // Write to a temporary file alongside the target. - let tmp = path.with_extension("json.tmp"); - fs::write(&tmp, json.as_bytes())?; - - // Atomic rename — on POSIX this is guaranteed atomic. - fs::rename(&tmp, path)?; - Ok(()) -} - -/// Load stats from the platform default path. Returns default if the path -/// is unavailable or the file is missing/corrupt. -pub fn load_stats() -> StatsSnapshot { - stats_file_path() - .map(|p| load_stats_from(&p)) - .unwrap_or_default() -} - -/// Save stats to the platform default path. Logs a warning if the path is -/// unavailable or the write fails — never panics. -pub fn save_stats(stats: &StatsSnapshot) -> io::Result<()> { - let path = stats_file_path().ok_or_else(|| { - io::Error::new(io::ErrorKind::NotFound, "platform data dir unavailable") - })?; - save_stats_to(&path, stats) -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::stats::StatsSnapshot; - use solitaire_core::game_state::DrawMode; - use std::env; - - fn tmp_path(name: &str) -> PathBuf { - env::temp_dir().join(format!("solitaire_test_{name}.json")) - } - - #[test] - fn round_trip_save_and_load() { - let path = tmp_path("round_trip"); - let _ = fs::remove_file(&path); - - let mut stats = StatsSnapshot::default(); - stats.update_on_win(1000, 180, &DrawMode::DrawOne); - save_stats_to(&path, &stats).expect("save"); - - let loaded = load_stats_from(&path); - assert_eq!(loaded.games_won, 1); - assert_eq!(loaded.best_single_score, 1000); - assert_eq!(loaded.fastest_win_seconds, 180); - } - - #[test] - fn load_from_missing_file_returns_default() { - let path = tmp_path("missing_file_abc123"); - let _ = fs::remove_file(&path); - let stats = load_stats_from(&path); - assert_eq!(stats, StatsSnapshot::default()); - } - - #[test] - fn save_is_atomic_no_half_written_file() { - let path = tmp_path("atomic_write"); - let stats = StatsSnapshot::default(); - save_stats_to(&path, &stats).expect("save"); - - let tmp = path.with_extension("json.tmp"); - assert!(!tmp.exists(), ".tmp file must be cleaned up after rename"); - } - - #[test] - fn load_from_corrupt_file_returns_default() { - let path = tmp_path("corrupt"); - fs::write(&path, b"not valid json!!!").expect("write corrupt"); - let stats = load_stats_from(&path); - assert_eq!(stats, StatsSnapshot::default()); - } -} -``` - -- [ ] **Step 4: Update `solitaire_data/src/lib.rs`** - -Add storage module and re-exports after the stats module lines: - -```rust -pub mod storage; -pub use storage::{load_stats, save_stats, stats_file_path}; -``` - -The full `solitaire_data/src/lib.rs` should now be: - -```rust -use async_trait::async_trait; -use solitaire_sync::{SyncPayload, SyncResponse}; -use thiserror::Error; - -/// All errors that can arise during sync operations. -#[derive(Debug, Error)] -pub enum SyncError { - #[error("unsupported platform for this sync backend")] - UnsupportedPlatform, - #[error("network error: {0}")] - Network(String), - #[error("authentication error: {0}")] - Auth(String), - #[error("serialization error: {0}")] - Serialization(String), -} - -/// Every sync backend implements this trait. The SyncPlugin only calls these -/// methods — it never matches on a backend enum variant. -#[async_trait] -pub trait SyncProvider: Send + Sync { - /// Fetch the remote sync payload. Returns the latest server state for merging. - async fn pull(&self) -> Result; - /// Push the local payload to the backend. Returns the merged server response. - async fn push(&self, payload: &SyncPayload) -> Result; - /// Human-readable name of this backend, used in settings UI and logs. - fn backend_name(&self) -> &'static str; - /// Returns true if the user is currently authenticated with this backend. - fn is_authenticated(&self) -> bool; - /// Mirror an achievement unlock to this backend (no-op for most backends). - async fn mirror_achievement(&self, _id: &str) -> Result<(), SyncError> { - Ok(()) - } -} - -pub mod stats; -pub use stats::StatsSnapshot; - -pub mod storage; -pub use storage::{load_stats, save_stats, stats_file_path}; -``` - -- [ ] **Step 5: Run tests and verify they pass** - -```bash -cargo test -p solitaire_data 2>&1 | tail -10 -``` - -Expected: 13 tests all passing (9 stats + 4 storage). - -- [ ] **Step 6: Clippy** - -```bash -cargo clippy -p solitaire_data -- -D warnings 2>&1 | tail -5 -``` - -Expected: 0 warnings. - -- [ ] **Step 7: Commit** - -```bash -git add solitaire_data/src/storage.rs solitaire_data/src/lib.rs -git commit -m "feat(data): add atomic stats persistence (load_stats_from, save_stats_to)" -``` - ---- - -## Task 3 — `StatsPlugin` in `solitaire_engine` - -**Files:** -- Create: `solitaire_engine/src/stats_plugin.rs` -- Modify: `solitaire_engine/src/lib.rs` - -- [ ] **Step 1: Write failing tests** - -Write the test module at the bottom of the (not-yet-existing) `solitaire_engine/src/stats_plugin.rs`: - -```rust -#[cfg(test)] -mod tests { - use super::*; - use crate::game_plugin::GamePlugin; - use crate::table_plugin::TablePlugin; - use solitaire_data::StatsSnapshot; - - fn headless_app() -> App { - let mut app = App::new(); - app.add_plugins(MinimalPlugins) - .add_plugins(GamePlugin) - .add_plugins(TablePlugin) - .add_plugins(StatsPlugin); - app.update(); - app - } - - #[test] - fn stats_resource_exists_after_startup() { - let app = headless_app(); - assert!(app.world().get_resource::().is_some()); - } - - #[test] - fn win_event_increments_games_won() { - let mut app = headless_app(); - assert_eq!( - app.world().resource::().0.games_won, - 0 - ); - app.world_mut().send_event(GameWonEvent { - score: 1000, - time_seconds: 120, - }); - // Override draw_mode so handle_move picks DrawOne (default is DrawOne). - app.update(); - assert_eq!( - app.world().resource::().0.games_won, - 1 - ); - assert_eq!( - app.world().resource::().0.games_played, - 1 - ); - } - - #[test] - fn new_game_after_moves_records_abandoned() { - let mut app = headless_app(); - - // Simulate move_count > 0 by directly mutating the resource. - app.world_mut() - .resource_mut::() - .0 - .move_count = 3; - - app.world_mut() - .send_event(NewGameRequestEvent { seed: Some(999) }); - app.update(); - - let stats = &app.world().resource::().0; - assert_eq!(stats.games_played, 1, "abandoned game counted as played"); - assert_eq!(stats.games_lost, 1); - assert_eq!(stats.win_streak_current, 0); - } - - #[test] - fn new_game_without_moves_does_not_record_abandoned() { - let mut app = headless_app(); - // move_count is 0 by default after new game - app.world_mut() - .send_event(NewGameRequestEvent { seed: Some(42) }); - app.update(); - - let stats = &app.world().resource::().0; - assert_eq!(stats.games_played, 0, "no moves = no abandoned game"); - } -} -``` - -- [ ] **Step 2: Verify tests fail** - -```bash -cargo test -p solitaire_engine stats_plugin 2>&1 | tail -5 -``` - -Expected: compile error — `stats_plugin` module not found. - -- [ ] **Step 3: Implement `stats_plugin.rs`** - -Create `solitaire_engine/src/stats_plugin.rs`: - -```rust -//! Loads, updates, and persists `StatsSnapshot` in response to game events. -//! -//! Stats are loaded from disk in `Startup` and saved after every event that -//! modifies them. File I/O is synchronous (stats.json is tiny, <1 KB). - -use bevy::prelude::*; -use solitaire_data::{load_stats, save_stats, StatsSnapshot}; - -use crate::events::{GameWonEvent, NewGameRequestEvent}; -use crate::game_plugin::GameMutation; -use crate::resources::GameStateResource; - -/// Bevy resource wrapping the current stats. -#[derive(Resource, Debug, Clone)] -pub struct StatsResource(pub StatsSnapshot); - -/// Registers stats resources and the systems that keep them in sync. -pub struct StatsPlugin; - -impl Plugin for StatsPlugin { - fn build(&self, app: &mut App) { - app.insert_resource(StatsResource(load_stats())) - .add_event::() - .add_event::() - .add_systems( - Update, - (update_stats_on_win, update_stats_on_new_game).after(GameMutation), - ); - } -} - -fn update_stats_on_win( - mut events: EventReader, - game: Res, - mut stats: ResMut, -) { - for ev in events.read() { - stats.0.update_on_win(ev.score, ev.time_seconds, &game.0.draw_mode); - if let Err(e) = save_stats(&stats.0) { - warn!("failed to save stats after win: {e}"); - } - } -} - -fn update_stats_on_new_game( - mut events: EventReader, - game: Res, - mut stats: ResMut, -) { - for _ in events.read() { - // Only count as abandoned if the player made at least one move and did - // not win — a re-deal from a brand-new untouched game is not a loss. - if game.0.move_count > 0 && !game.0.is_won { - stats.0.record_abandoned(); - if let Err(e) = save_stats(&stats.0) { - warn!("failed to save stats after abandoned game: {e}"); - } - } - } -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::events::GameWonEvent; - use crate::game_plugin::GamePlugin; - use crate::table_plugin::TablePlugin; - - fn headless_app() -> App { - let mut app = App::new(); - app.add_plugins(MinimalPlugins) - .add_plugins(GamePlugin) - .add_plugins(TablePlugin) - .add_plugins(StatsPlugin); - app.update(); - app - } - - #[test] - fn stats_resource_exists_after_startup() { - let app = headless_app(); - assert!(app.world().get_resource::().is_some()); - } - - #[test] - fn win_event_increments_games_won() { - let mut app = headless_app(); - assert_eq!(app.world().resource::().0.games_won, 0); - - app.world_mut() - .send_event(GameWonEvent { score: 1000, time_seconds: 120 }); - app.update(); - - assert_eq!(app.world().resource::().0.games_won, 1); - assert_eq!(app.world().resource::().0.games_played, 1); - } - - #[test] - fn new_game_after_moves_records_abandoned() { - let mut app = headless_app(); - - app.world_mut() - .resource_mut::() - .0 - .move_count = 3; - - app.world_mut() - .send_event(NewGameRequestEvent { seed: Some(999) }); - app.update(); - - let stats = &app.world().resource::().0; - assert_eq!(stats.games_played, 1); - assert_eq!(stats.games_lost, 1); - assert_eq!(stats.win_streak_current, 0); - } - - #[test] - fn new_game_without_moves_does_not_record_abandoned() { - let mut app = headless_app(); - app.world_mut() - .send_event(NewGameRequestEvent { seed: Some(42) }); - app.update(); - - let stats = &app.world().resource::().0; - assert_eq!(stats.games_played, 0); - } -} -``` - -- [ ] **Step 4: Run tests** - -```bash -cargo test -p solitaire_engine stats_plugin 2>&1 | tail -10 -``` - -Expected: 4 tests passing. - -- [ ] **Step 5: Clippy** - -```bash -cargo clippy -p solitaire_engine -- -D warnings 2>&1 | tail -5 -``` - -Expected: 0 warnings. - -- [ ] **Step 6: Commit** - -```bash -git add solitaire_engine/src/stats_plugin.rs -git commit -m "feat(engine): add StatsPlugin with persistent StatsResource" -``` - ---- - -## Task 4 — Stats Screen (bevy_ui overlay) - -**Files:** -- Modify: `solitaire_engine/src/stats_plugin.rs` — add UI toggle systems -- Modify: `solitaire_engine/src/lib.rs` — export `StatsPlugin`, `StatsResource` -- Modify: `solitaire_app/src/main.rs` — register `StatsPlugin` - -The stats screen is a full-window overlay spawned on demand. It reuses `StatsPlugin` — no separate plugin needed. - -- [ ] **Step 1: Write failing tests** - -Add these tests to `stats_plugin.rs` (inside the existing `tests` module): - -```rust - #[test] - fn pressing_s_spawns_stats_screen() { - let mut app = headless_app(); - assert_eq!( - app.world_mut().query::<&StatsScreen>().iter(app.world()).count(), - 0, - "screen must not exist before toggle" - ); - - // Simulate pressing S. - app.world_mut() - .resource_mut::>() - .press(KeyCode::KeyS); - app.update(); - - assert_eq!( - app.world_mut().query::<&StatsScreen>().iter(app.world()).count(), - 1, - "screen must appear after first S press" - ); - } - - #[test] - fn pressing_s_twice_closes_stats_screen() { - let mut app = headless_app(); - - app.world_mut() - .resource_mut::>() - .press(KeyCode::KeyS); - app.update(); - - // Release and re-press so just_pressed fires again. - app.world_mut() - .resource_mut::>() - .release(KeyCode::KeyS); - app.update(); - - app.world_mut() - .resource_mut::>() - .press(KeyCode::KeyS); - app.update(); - - assert_eq!( - app.world_mut().query::<&StatsScreen>().iter(app.world()).count(), - 0, - "screen must close after second S press" - ); - } -``` - -- [ ] **Step 2: Verify tests fail** - -```bash -cargo test -p solitaire_engine pressing_s 2>&1 | tail -5 -``` - -Expected: compile error — `StatsScreen` not found. - -- [ ] **Step 3: Implement stats screen toggle** - -Add the following to `solitaire_engine/src/stats_plugin.rs` — insert after the `update_stats_on_new_game` function and before the `tests` module: - -First add imports at the top of the file: -```rust -use bevy::input::ButtonInput; -use solitaire_data::{load_stats, save_stats, StatsSnapshot}; -``` -(replace the existing `use solitaire_data::{load_stats, save_stats, StatsSnapshot};` import) - -Add the full import block at the top: -```rust -use bevy::input::ButtonInput; -use bevy::prelude::*; -use solitaire_data::{load_stats, save_stats, StatsSnapshot}; - -use crate::events::{GameWonEvent, NewGameRequestEvent}; -use crate::game_plugin::GameMutation; -use crate::resources::GameStateResource; -``` - -Add the `StatsScreen` marker and `StatsPlugin::build` update: - -```rust -/// Marker component on the stats overlay root node. -#[derive(Component, Debug)] -pub struct StatsScreen; -``` - -Update `StatsPlugin::build` to also register the UI system: - -```rust -impl Plugin for StatsPlugin { - fn build(&self, app: &mut App) { - app.insert_resource(StatsResource(load_stats())) - .add_event::() - .add_event::() - .add_systems( - Update, - ( - update_stats_on_win, - update_stats_on_new_game, - toggle_stats_screen, - ) - .after(GameMutation), - ); - } -} -``` - -Add the toggle and spawn/despawn functions after `update_stats_on_new_game`: - -```rust -fn toggle_stats_screen( - mut commands: Commands, - keys: Res>, - stats: Res, - screens: Query>, -) { - if !keys.just_pressed(KeyCode::KeyS) { - return; - } - if let Ok(entity) = screens.get_single() { - commands.entity(entity).despawn_recursive(); - } else { - spawn_stats_screen(&mut commands, &stats.0); - } -} - -fn spawn_stats_screen(commands: &mut Commands, stats: &StatsSnapshot) { - let win_rate = stats - .win_rate() - .map_or("N/A".to_string(), |r| format!("{r:.1}%")); - let fastest = if stats.fastest_win_seconds == u64::MAX { - "N/A".to_string() - } else { - format_duration(stats.fastest_win_seconds) - }; - let avg = if stats.games_won == 0 { - "N/A".to_string() - } else { - format_duration(stats.avg_time_seconds) - }; - - let lines = vec![ - "=== Statistics ===".to_string(), - format!("Games Played: {}", stats.games_played), - format!("Games Won: {}", stats.games_won), - format!("Win Rate: {win_rate}"), - format!("Win Streak: {} (Best: {})", stats.win_streak_current, stats.win_streak_best), - format!("Best Score: {}", stats.best_single_score), - format!("Fastest Win: {fastest}"), - format!("Avg Win Time: {avg}"), - String::new(), - "Press S to close".to_string(), - ]; - - commands - .spawn(( - StatsScreen, - Node { - position_type: PositionType::Absolute, - left: Val::Percent(0.0), - top: Val::Percent(0.0), - width: Val::Percent(100.0), - height: Val::Percent(100.0), - flex_direction: FlexDirection::Column, - justify_content: JustifyContent::Center, - align_items: AlignItems::Center, - row_gap: Val::Px(6.0), - ..default() - }, - BackgroundColor(Color::srgba(0.0, 0.0, 0.0, 0.88)), - ZIndex(200), - )) - .with_children(|b| { - for line in lines { - b.spawn(( - Text::new(line), - TextFont { font_size: 24.0, ..default() }, - TextColor(Color::srgb(0.95, 0.95, 0.90)), - )); - } - }); -} - -fn format_duration(secs: u64) -> String { - let m = secs / 60; - let s = secs % 60; - format!("{m}m {s:02}s") -} -``` - -The headless app needs `ButtonInput` registered. Add to `headless_app()` in tests: - -```rust -fn headless_app() -> App { - let mut app = App::new(); - app.add_plugins(MinimalPlugins) - .add_plugins(GamePlugin) - .add_plugins(TablePlugin) - .add_plugins(StatsPlugin); - app.init_resource::>(); - app.update(); - app -} -``` - -- [ ] **Step 4: Run tests** - -```bash -cargo test -p solitaire_engine stats_plugin 2>&1 | tail -10 -``` - -Expected: all 6 stats_plugin tests passing. - -- [ ] **Step 5: Update `solitaire_engine/src/lib.rs`** - -Add `stats_plugin` module and exports. The full updated section: - -```rust -pub mod animation_plugin; -pub mod card_plugin; -pub mod events; -pub mod game_plugin; -pub mod input_plugin; -pub mod layout; -pub mod resources; -pub mod stats_plugin; -pub mod table_plugin; - -pub use animation_plugin::{AnimationPlugin, CardAnim}; -pub use card_plugin::{CardEntity, CardLabel, CardPlugin}; -pub use events::{ - AchievementUnlockedEvent, CardFlippedEvent, DrawRequestEvent, GameWonEvent, MoveRequestEvent, - NewGameRequestEvent, StateChangedEvent, UndoRequestEvent, -}; -pub use game_plugin::{GameMutation, GamePlugin}; -pub use input_plugin::InputPlugin; -pub use layout::{compute_layout, Layout, LayoutResource}; -pub use resources::{DragState, GameStateResource, SyncStatus, SyncStatusResource}; -pub use stats_plugin::{StatsPlugin, StatsResource, StatsScreen}; -pub use table_plugin::{PileMarker, TableBackground, TablePlugin}; -``` - -- [ ] **Step 6: Update `solitaire_app/src/main.rs`** - -```rust -use bevy::prelude::*; -use solitaire_engine::{AnimationPlugin, CardPlugin, GamePlugin, InputPlugin, StatsPlugin, TablePlugin}; - -fn main() { - App::new() - .add_plugins( - DefaultPlugins.set(WindowPlugin { - primary_window: Some(Window { - title: "Ferrous Solitaire".into(), - resolution: (1280.0, 800.0).into(), - ..default() - }), - ..default() - }), - ) - .add_plugins(GamePlugin) - .add_plugins(TablePlugin) - .add_plugins(CardPlugin) - .add_plugins(InputPlugin) - .add_plugins(AnimationPlugin) - .add_plugins(StatsPlugin) - .run(); -} -``` - -- [ ] **Step 7: Full workspace test + clippy** - -```bash -cargo test --workspace 2>&1 | grep -E "FAILED|test result" -cargo clippy --workspace -- -D warnings 2>&1 | tail -5 -``` - -Expected: all tests passing, 0 clippy warnings. - -- [ ] **Step 8: Commit** - -```bash -git add solitaire_engine/src/stats_plugin.rs solitaire_engine/src/lib.rs solitaire_app/src/main.rs -git commit -m "feat(engine): add stats screen overlay toggled with S key (Phase 4)" -``` - ---- - -## Task 5 — Final Gate - -**Files:** none new — just verification. - -- [ ] **Step 1: Full workspace test** - -```bash -cargo test --workspace 2>&1 | grep -E "test result|FAILED" -``` - -Expected: all test results show `ok`, no `FAILED` lines. Total passing count should be ≥ 120 (110 existing + ~13 new). - -- [ ] **Step 2: Clippy (zero warnings)** - -```bash -cargo clippy --workspace -- -D warnings 2>&1 | tail -3 -``` - -Expected: `Finished ... 0 warnings` - -- [ ] **Step 3: Smoke-test the running game** - -```bash -cargo run -p solitaire_app --features bevy/dynamic_linking -``` - -Verify manually: -- Game window opens and cards render -- Press `S` → stats overlay appears showing zeros (or loaded stats) -- Press `S` again → overlay closes -- Play a game to completion (drag cards, press D to draw, U to undo) -- Win detection triggers cascade animation -- Press `S` → games_played = 1, games_won = 1 displayed - -- [ ] **Step 4: Update SESSION_HANDOFF.md** - -Update `docs/SESSION_HANDOFF.md`: -- Mark Phase 4 complete in the commit history table -- Update "What Is Next" to point to Phase 5 (Achievements) -- Update the running test count - -- [ ] **Step 5: Final commit (if anything changed during smoke test)** - -```bash -git add -p # review any fixes made during smoke test -git commit -m "chore: update session handoff for Phase 4 completion" -``` - ---- - -## Cross-Cutting Rules (reminder) - -- `solitaire_core` and `solitaire_sync` must NOT gain new dependencies. -- `save_stats` / `load_stats` handle `dirs::data_dir() = None` without panicking. -- No `unwrap()` in new code — use `if let`, `unwrap_or_default()`, or `?`. -- `cargo clippy --workspace -- -D warnings` must pass after every task. -- `cargo test --workspace` must pass after every task. diff --git a/docs/ui-mockups/achievements-mobile.html b/docs/ui-mockups/achievements-mobile.html deleted file mode 100644 index 02b01a4..0000000 --- a/docs/ui-mockups/achievements-mobile.html +++ /dev/null @@ -1,293 +0,0 @@ - - - - - -Rusty Solitaire - Achievements - - - - - - - - - -
-
-achievements.json -
-
- 8/19 UNLOCKED -
-
- - -
- -
-
-PROGRESS -
-8/19 -(42%) -
-
-
-
-
-
- -
- - - - -
- -
- -
-
-emoji_events -
-
-

FIRST WIN

-

Win your first game

-
-
- -
-
-
-speed -
-
-

SPEED DEMON

-

Win in under 3:00

-
-
- -
-
-bolt -
-
-

STREAK 10

-

10 wins in a row

-
-
- -
-
-calendar_today -
-
-

DAILY DEFENDER

-

Complete 7 daily seeds

-
-
- -
-
-undo -
-
-

PERFECTIONIST

-

Win without using undo

-
-
- -
-
-military_tech -
-
-

CHALLENGE BEATEN

-

Complete CHALLENGE mode

-
-
- -
-
-help_outline -
-
-

????

-

SECRET · Hidden until unlocked

-
-
- -
-
-golf_course -
-
-

PAR HUNTER

-

Beat par on 50 games

-
-
-
-
- -
-
- -NORMAL - -achievements -
-
-
[F] filter
-
[/] search
-
-
- - - -
- \ No newline at end of file diff --git a/docs/ui-mockups/achievements-mobile.png b/docs/ui-mockups/achievements-mobile.png deleted file mode 100644 index b5776ad2ac9c90b59a23fe97d5217cddfb93dd89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42222 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 diff --git a/docs/ui-mockups/card-face-migration.md b/docs/ui-mockups/card-face-migration.md deleted file mode 100644 index e3d175e..0000000 --- a/docs/ui-mockups/card-face-migration.md +++ /dev/null @@ -1,251 +0,0 @@ -# Card-face artwork migration plan - -**Status:** planning artifact (no code changed by this document). -**Tracks:** the "Card-face / suit / card-back artwork regeneration" -item in `SESSION_HANDOFF.md` → "Visual-identity follow-ups" -(SESSION_HANDOFF Resume prompt option D). -**Companion to:** `docs/ui-mockups/design-system.md` (Game Cards -spec, lines 214–233) and `docs/ui-mockups/desktop-adaptation.md` -(rules-based companion to the mockups). - -## Why this is a multi-session arc - -Every post-v0.20.0 visual-identity port to date (modal scaffold, -toasts, table chrome, splash boot screen, replay overlay) was a -**single rendering path** — change tokens, change comments, ship. -Cards have **two** rendering paths that are visually identical -today and would visually disagree the moment one moves: - -1. **PNG path (production).** `assets/cards/faces/.png` - loaded into `CardImageSet.faces[suit][rank]` at startup; card - sprites blit the texture. 52 face PNGs + 5 back PNGs already - in `assets/`, all the legacy white-card aesthetic from the - pre-Terminal design system. -2. **Constant fallback (tests + asset-missing edge).** When - `CardImageSet` isn't a registered resource (the case under - `MinimalPlugins` test fixtures, and the bare-bones path the - first-frame of production hits before assets resolve), the - renderer falls back to solid-colour sprites driven by the - `card_plugin` constants: - - `CARD_FACE_COLOUR` — `(0.98, 0.98, 0.95)` cream-ish white. - - `RED_SUIT_COLOUR` — `(0.78, 0.12, 0.15)` warm red. - - `BLACK_SUIT_COLOUR` — `(0.08, 0.08, 0.08)` near-black. - - `CARD_FACE_COLOUR_RED_CBM` — `(0.85, 0.92, 1.0, 1.0)` light - blue (the legacy color-blind tint). - - `card_back_colour(idx)` — five legacy back themes. - -A single-path migration leaves a known-broken state where tests -pass against Terminal constants while a human sees legacy artwork -on screen — the exact bisection-hostile drift the handoff's -"in lockstep" warning preempts. - -## Target state — Terminal aesthetic - -Per `design-system.md` § Game Cards (lines 214–233): - -### Card face - -| Element | Spec | -|---|---| -| Background | `#1a1a1a` | -| Border | 1 px solid in **suit colour** (pink for ♥/♦, foreground gray for ♠/♣) | -| Corner radius | 8 px | -| Top-left | rank in JetBrains Mono **Bold 18 px** + small suit glyph (10 px) | -| Bottom-right | large suit glyph (32 px), rotated 180° | -| Glyph fill rule | ♥ ♠ filled; ♦ ♣ outlined (1.5 px stroke). Always on, not a toggle. | - -### Suit colours (always-on glyph differentiation is the *primary* -distinguishing mechanism; colour is supplementary): - -| Suit | Default | Color-blind mode | -|---|---|---| -| Hearts | `#fb9fb1` (pink) | `#6fc2ef` (cyan) | -| Diamonds | `#fb9fb1` (pink) | `#6fc2ef` (cyan) | -| Spades | `#d0d0d0` (gray) | `#d0d0d0` (unchanged) | -| Clubs | `#d0d0d0` (gray) | `#d0d0d0` (unchanged) | - -### Card back ("Terminal" theme) - -| Element | Spec | -|---|---| -| Background | `#151515` | -| Pattern | horizontal scanlines at 2 px pitch in `#1a1a1a` (1 px line, 1 px gap), full bleed | -| Border | 1 px solid `#353535` | -| Top-left badge | 12×16 px solid `#6fc2ef` block, 6 px from corner | -| Bottom-right monogram | `▌RS` in JetBrains Mono 12 px `#505050`, 6 px from corner | -| Corner radius | 8 px | -| Theme name / author | `"Terminal"` / `"Rusty Solitaire"` | - -## Generation pipeline — programmatic SVG via the existing -`resvg` stack - -### Why this path (vs. external tooling or direct `tiny_skia`) - -The codebase already ships an SVG-to-PNG rasteriser at -`solitaire_engine/src/assets/svg_loader.rs`: - -- Public `rasterize_svg(svg_bytes: &[u8], target: UVec2) -> Result` -- Backed by `usvg` (parser) + `resvg` (renderer) + `tiny_skia` - (CPU pixmap) -- Bundled font db includes JetBrains-style mono (FiraMono — same - face the splash uses; close enough to JetBrains Mono for - rasterisation purposes, and identical to what the Bevy UI - consumes in the rest of the app) -- `RenderAssetUsages::default()` is the call-site convention here - -This means: **generating new card PNGs is one new file -(`solitaire_engine/examples/card_face_generator.rs`) calling an -existing public function.** No new dependencies, no asset-pipeline -changes, no build-script machinery. Anyone who runs the example -gets bit-identical artwork. - -The two alternatives are weaker: - -- **External tool (Inkscape / Figma / hand-design)** — produces - one-off PNGs that can't be re-generated reproducibly without - re-opening the source files in a specific tool. Iteration cost - is high; design tweaks (e.g. "make the suit glyph 2 px larger") - require a designer-in-the-loop. -- **Direct `tiny_skia` painting calls** — bypasses SVG entirely, - but loses the readability of "open the SVG to see exactly what - the card looks like." Also reinvents primitives (rounded - rectangles, text layout) that `usvg` already handles. - -### Output format - -PNG, RGBA8 sRGB, **dimensions 256 × 384** (2:3 aspect, half the -default `SvgLoaderSettings` of 512 × 768). - -Rationale: cards never exceed ~250 px wide on desktop windows -today, and 256 × 384 PNGs are ~6 KB each at this content density -(13.4 KB total for a full deck of 52 + 5 backs). The default 512 × -768 is 2× what's needed and quadruples the on-disk asset weight. -The existing legacy PNGs are 512 × 768 — reducing the new ones -halves the runtime asset size. - -## Lockstep migration — recommended order - -Each step is a separate commit; the constraint is that **steps 4 -and 5 must land in the same commit** (or at most adjacent commits -on the same branch) so the rendered output never diverges between -the two paths. - -1. **(Done — this commit)** Land the migration plan doc. -2. **Land the SVG generator example.** New - `solitaire_engine/examples/card_face_generator.rs`. Output - goes to `assets/cards/faces/` and `assets/cards/backs/`. Run - once locally to seed the new artwork. The example file stays - in-tree as a regenerator for future tweaks. -3. **(Optional — can land separately)** Add a one-shot regression - test that re-runs the generator into a `tempdir` and compares - the resulting bytes against the on-disk artwork; pinning the - generator output prevents silent drift if `usvg`/`resvg` ever - tweak rendering. Skip if the test runtime cost is unacceptable. -4. **Land the new artwork** (PNG bytes from step 2 committed to - `assets/cards/`) **and** the constant migration in the *same - commit*: - - `CARD_FACE_COLOUR` → `Color::srgb(0.102, 0.102, 0.102)` (`#1a1a1a`) - - `RED_SUIT_COLOUR` → `Color::srgb(0.984, 0.624, 0.694)` (`#fb9fb1`) - - `BLACK_SUIT_COLOUR` → `Color::srgb(0.816, 0.816, 0.816)` (`#d0d0d0`) - - `CARD_FACE_COLOUR_RED_CBM` → `Color::srgb(0.435, 0.761, 0.937)` (`#6fc2ef`) — note this is now the colour-blind *suit* colour, not a face tint; semantics shift slightly. - - `card_back_colour(idx)` — re-author for the Terminal palette; - index 0 stays the canonical "Terminal" back from `design-system.md`. -5. **Test updates land in step 4's commit.** The pinning tests at - `card_plugin.rs` lines 1749, 1750, 1767, 1768, 2057, 2063, - 2071, 2081 all assert against the old constants. New - assertions update in lockstep with the constant changes. - -## CBM (color-blind mode) semantics shift — flag - -The **legacy** `CARD_FACE_COLOUR_RED_CBM` was a *face tint* — red -suits got a light-blue background wash. The **Terminal** spec -moves CBM into the *suit colour* itself (red glyphs swap to cyan). -Step 4 will rename / repurpose this constant; it's not a 1:1 -replacement. - -Two options: - -- **Rename + repurpose:** `CARD_FACE_COLOUR_RED_CBM` → - `RED_SUIT_COLOUR_CBM`. Communicates the semantic shift in the - symbol name. Requires touching every callsite. -- **Keep the name, change the meaning:** less code churn but - worse for greppability — a future reader hitting the legacy - name will assume face-tint behaviour. - -Recommendation: **rename**. The CBM swap is a one-frame operation -even if it touches every existing callsite (currently lines 642, -2071, 2081 per `grep -n CARD_FACE_COLOUR_RED_CBM`). - -## Theme system — out of scope here - -The card-theme system (`docs/CARD_PLAN.md`, `theme/plugin.rs`) -already supports user-supplied themes via `assets/themes//` -SVG files rasterised by `svg_loader.rs`. The new Terminal artwork -is the **default theme**, not a new entry in the theme picker — -the theme system continues to overlay user themes on top of the -default at runtime. - -If the next session wants to also ship Terminal as a *named theme -slot* (so a user can switch back to the legacy artwork via the -theme picker), that's an additive change after step 4 and lives -in `theme::plugin::apply_theme_to_card_image_set`. - -## Test impact summary - -`grep -n CARD_FACE_COLOUR\\b\|RED_SUIT_COLOUR\\b\|BLACK_SUIT_COLOUR\\b` in -`card_plugin.rs`: - -- Line 1749–1750: red-suit text colour assertions (♥ + ♦). -- Line 1767–1768: black-suit text colour assertions (♠ + ♣). -- Line 2057, 2063: face-colour assertion in default mode. -- Line 2071, 2081: face-colour assertion in CBM. - -The four suit-colour and two face-colour tests are **invariant -guards** — they exist precisely so a constant tweak surfaces here -rather than in a visual review. Step 4 updates each in lockstep -with the constant value change. No new test infrastructure -needed. - -## Open questions to resolve before step 4 - -1. **Border colour conflict.** The spec (line 218) says "Border: - 1 px solid in suit colour." The fallback path doesn't draw a - border today — it draws solid-colour sprites. Step 4 either: - (a) leaves the fallback as solid-colour squares (the test - environment doesn't visually validate borders anyway), or - (b) extends the fallback renderer to paint a 1 px outline. - Recommend (a) — fallback fidelity isn't load-bearing. -2. **Glyph rendering in the constant fallback.** The fallback - today doesn't render suit glyphs at all — it's a coloured - square. The spec's filled-vs-outlined glyph differentiation - only matters in the PNG path. No change to the constant - fallback for glyphs. -3. **High-contrast mode.** `design-system.md` line 274 mentions - a high-contrast accessibility mode (boosts foreground from - `#d0d0d0` to `#f5f5f5`, suit-red from `#fb9fb1` to `#ff8aa0`). - Not currently implemented anywhere; out of scope for this - migration but worth flagging for a future accessibility pass. - -## Post-migration — what's still open - -- **High-contrast mode** (above). -- **Reduced-motion mode** for card lift / drop transitions - (also a `design-system.md` accessibility item, separate from - artwork). -- **The 9 missing-plugin screens** (splash, challenge, - time-attack, weekly-goals, leaderboard, sync, level-up, - replay, radial-menu) per `project_ui_overhaul` memory still - need their plugin ports — separate from the cards arc. - -## Sign-off criteria for "D closed" - -D from the SESSION_HANDOFF Resume prompt is closed when **all of -the following hold simultaneously**: - -- The 52 face PNGs + 5 back PNGs in `assets/cards/` are the - Terminal-aesthetic artwork (regeneratable via the example). -- The five `card_plugin` constants reflect the Terminal palette. -- All pinning tests pass against the new values. -- A human boots the game and sees Terminal cards (not white - cards). This sign-off needs a real `cargo run`, not just - `cargo test`. diff --git a/docs/ui-mockups/challenge-mode-mobile.html b/docs/ui-mockups/challenge-mode-mobile.html deleted file mode 100644 index def5a11..0000000 --- a/docs/ui-mockups/challenge-mode-mobile.html +++ /dev/null @@ -1,219 +0,0 @@ - - - - - -Challenge Mode Menu - - - - - - - - - - -

- -
-▌challenge.tsx -LV 12 · UNLOCKED -
- -
-

CHALLENGE MODE

-

Curated puzzles · Beat par for bonus XP

-
- -
-
-DONE 8/24 -(33%) -
- -
BEST AVG 03:42
- -
+1240 XP
-
- -
- -
-
-
-
-DEEP STACK -Win with 0 stock · ★★★☆☆ -
-
- ✓ DONE -
-
-
- -
-
-
-
-SPEED RUN -Win under 2:30 · ★★☆☆☆ -
-
- ▶ ACTIVE -
-
-
- -
-
-
-
-NO UNDO -Win without undo · ★★★★☆ -
-
- ▶ ACTIVE -
-
-
- -
-
-
-
-FOUR SUITS -1 card per suit · ★☆☆☆☆ -
-
- ✓ DONE -
-
-
- -
-
-
-
-PERFECT RUN -Below par moves · ★★★★★ -
-
- 🔒 LOCKED -
-
-
- -
-
-END OF LIST -
-
-
- -
-
-▌ NORMAL - -challenge -
-
-[ENTER] select -[F] filter -[ESC] back -
-
- -
-
- \ No newline at end of file diff --git a/docs/ui-mockups/challenge-mode-mobile.png b/docs/ui-mockups/challenge-mode-mobile.png deleted file mode 100644 index b8ed516b89437530c6f34e843ecfcfcdb22668fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68234 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

)BIGcxnD&%MN9qp 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 - - - - -Rusty Solitaire - Daily Challenge - - - - - - - - - -

-▌daily/2024-127.json -
-EXPIRES 11:42:30 -
-
- -
- -
-
-MAY 07 · 2026 -#2024-127 -
-DRAW-3 · DIFFICULTY ★★★☆☆ · PAR 04:30 -
- - - -
-YOUR ATTEMPTS -
-
-BEST 04:12 -
-WIN -RANK 17/2843 -
-
-LAST: FAILED at move 47 -
-
- -
-TOP TODAY · 2,843 PLAYERS -
- -
-
-01 -swift_jaguar -
-02:47 -
- -
-
-02 -base16_fan -
-03:12 -
- -
-
-03 -cli_player -
-03:54 -
- -
-
-04 -tablejockey -
-04:01 -
- -
-
-05 -vim_motions -
-04:05 -
- -
-
-17 -(YOU) anonymous -
-04:12 -
-
-
-terminal -END OF VISIBLE LOG -
-
-
- -
-
-▌ NORMAL │ daily -
-
-[ENTER] attempt -[L] full leaderboard -[ESC] back -
-
- - - - \ No newline at end of file diff --git a/docs/ui-mockups/daily-challenge-mobile.png b/docs/ui-mockups/daily-challenge-mobile.png deleted file mode 100644 index 3c65fc0dbaaadcb01eaf6b9ee9dc8d95a12473f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42465 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 diff --git a/docs/ui-mockups/design-system.md b/docs/ui-mockups/design-system.md deleted file mode 100644 index 8f20fa2..0000000 --- a/docs/ui-mockups/design-system.md +++ /dev/null @@ -1,285 +0,0 @@ ---- -name: Terminal -colors: - surface: '#151515' - surface-dim: '#0d0d0d' - surface-bright: '#2a2a2a' - surface-container-lowest: '#0a0a0a' - surface-container-low: '#1a1a1a' - surface-container: '#202020' - surface-container-high: '#2a2a2a' - surface-container-highest: '#353535' - on-surface: '#d0d0d0' - on-surface-variant: '#a0a0a0' - inverse-surface: '#d0d0d0' - inverse-on-surface: '#151515' - outline: '#505050' - outline-variant: '#353535' - surface-tint: '#a54242' - primary: '#a54242' - on-primary: '#151515' - primary-container: '#3a1f1f' - on-primary-container: '#d5a8a8' - inverse-primary: '#993e3e' - secondary: '#acc267' - on-secondary: '#151515' - secondary-container: '#2a3320' - on-secondary-container: '#c5d585' - tertiary: '#e1a3ee' - on-tertiary: '#151515' - tertiary-container: '#3a2a40' - on-tertiary-container: '#eec3f5' - error: '#fb9fb1' - on-error: '#151515' - error-container: '#4a2530' - on-error-container: '#fdc3ce' - background: '#151515' - on-background: '#d0d0d0' - surface-variant: '#353535' - suit-red: '#fb9fb1' - suit-black: '#d0d0d0' - suit-red-cb: '#acc267' - highlight-valid: '#acc267' - highlight-celebration: '#e1a3ee' - highlight-warning: '#ddb26f' - highlight-info: '#12cfc0' -typography: - hud-score: - fontFamily: JetBrains Mono - fontSize: 24px - fontWeight: '700' - lineHeight: 32px - letterSpacing: '-0.02em' - hud-timer: - fontFamily: JetBrains Mono - fontSize: 16px - fontWeight: '400' - lineHeight: 24px - card-rank: - fontFamily: JetBrains Mono - fontSize: 18px - fontWeight: '700' - lineHeight: 18px - body-md: - fontFamily: Inter - fontSize: 16px - fontWeight: '400' - lineHeight: 24px - label-caps: - fontFamily: JetBrains Mono - fontSize: 12px - fontWeight: '500' - lineHeight: 16px - letterSpacing: '0.08em' - headline: - fontFamily: JetBrains Mono - fontSize: 28px - fontWeight: '700' - lineHeight: 32px - letterSpacing: '-0.01em' -rounded: - sm: 0.125rem - DEFAULT: 0.25rem - md: 0.5rem - lg: 0.75rem - xl: 1rem - full: 9999px -spacing: - margin-edge: 1rem - gutter-card: 0.375rem - stack-overlap: 2rem - touch-target-min: 48dp ---- - -## Brand & Style - -The "Terminal" design system replaces the previous "Premium Solitaire" calm-indie aesthetic with a **retro-terminal / synthwave** identity. The intent is the visual confidence of a well-tuned terminal emulator (think Berkeley Mono dotfiles, base16-eighties, CRT phosphor): monospaced, dense, legible, snappy. It is *not* casino-glitz, *not* skeuomorphic felt, and *not* whimsical. - -The personality is **technical, deliberate, slightly playful**. Cards are flat with thin colored strokes; the HUD reads like a status bar; modals look like terminal panes. Motion is short and snap-easing — no bouncy springs. Long-session calm is preserved by keeping the chroma low and reserving saturated accents for *meaning* (CTAs, feedback, celebrations) rather than decoration. - -Influences: base16-eighties (Chris Kempson), Berkeley Mono, Vim/Neovim status lines, the iA Writer aesthetic, classic CRT phosphor with no chromatic aberration. - -## Palette - -The palette is base16-eighties — a 16-slot terminal palette where indices 00–07 form a monochrome ramp and 08–0F provide saturated accents. We map base16 slots to Material Design 3 token roles below. - -### Source palette (base16-eighties) - -| Slot | Hex | Role | -|---|---|---| -| base00 | `#151515` | background | -| base01 | `#202020` | surface-container | -| base02 | `#303030` | line-highlight (subtle) | -| base03 | `#505050` | outline / muted text | -| base04 | `#b0b0b0` | secondary text | -| base05 | `#d0d0d0` | foreground / on-surface | -| base06 | `#e0e0e0` | bright text | -| base07 | `#f5f5f5` | brightest highlight | -| base08 | `#fb9fb1` | red — used for `error`, `suit-red` | -| base09 | `#ddb26f` | orange — used for warning chips | -| base0A | `#acc267` | yellow/lime — used for `highlight-valid` (drag targets, valid moves) | -| base0B | `#12cfc0` | green/teal — used for `highlight-info` (toasts, neutral status) | -| base0C | `#6fc2ef` | cyan/sky — historically the primary CTA; now reserved for ad-hoc accents only | -| base0D | `#6fc2ef` | (alias) | -| base08 (project) | `#a54242` | brick red — primary CTA, focus ring, `selection` (project-specific extension; the base16-eighties `base08` slot is `#fb9fb1` pink which we keep as `error`/`suit-red`) | -| `suit-red-cb` slot | `#acc267` | lime — color-blind-mode swap for red suits (was `#6fc2ef` cyan before the 2026-05-08 primary-accent swap; lime is the next-best non-red base16-eighties accent) | -| base0E | `#e1a3ee` | violet — used for celebration (level-up, achievement unlock) | -| base0F | `#fb9fb1` | (alias) | - -### Semantic assignments - -- **CTA / Primary action**: brick red `#a54242`. Reserved for "Play," "New Game," "Save," "Resume," and the focus ring on selected cards. Never used decoratively. (Was cyan `#6fc2ef` before the 2026-05-08 swap.) -- **Valid-move / drag-target highlight**: lime `#acc267`. Reserved for in-game feedback only. Never appears in chrome. -- **Celebration**: lavender `#e1a3ee`. Used for level-up flashes, achievement unlock cards, and the daily-streak chip when the streak is active. Quiet otherwise. -- **Warning / soft alert**: gold `#ddb26f`. Used for "challenge expires in N minutes" chips, sync-pending status, and the daily-seed countdown. -- **Info**: teal `#12cfc0`. Used for neutral system toasts and the sync-connected indicator. -- **Error**: pink `#fb9fb1`. Used for sync conflict, server unreachable, invalid move shake. - -## Suit Colors - -**Two-color traditional pairing**, with mandatory color-blind -support. Saturated red for hearts + diamonds, near-white for clubs -+ spades — the "Microsoft Solitaire on dark mode" feel of a real -playing-card deck. (A brief 4-color-deck experiment shipped between -v0.21.0 and the next post-cut commit; reverted to traditional -2-color at the player's request.) - -| Suit | Default | Color-blind mode | Glyph differentiation | -|---|---|---|---| -| Hearts | `#e35353` (saturated red) | `#acc267` (lime) | Solid filled glyph | -| Diamonds | `#e35353` (saturated red) | `#acc267` (lime) | **Outlined glyph (1.5px stroke)** | -| Spades | `#e8e8e8` (near-white) | `#e8e8e8` (unchanged) | Solid filled glyph | -| Clubs | `#e8e8e8` (near-white) | `#e8e8e8` (unchanged) | **Outlined glyph (1.5px stroke)** | - -The outlined-glyph treatment is the **primary** differentiation mechanism. Color is supplementary. This means a player viewing the game on a monochrome display, or with severe red-green deficiency, can still distinguish all four suits without context. This is a hard requirement, not an optional setting. - -The "color-blind mode" toggle in Settings swaps both red suits (hearts + diamonds) from `#e35353` to `#acc267` (lime); clubs + spades stay at the near-white. The toggle does not turn the outlined glyphs on or off, because outlined glyphs are always on. (Was red→cyan before the 2026-05-08 primary-accent swap; CBM moved to lime to stay hue-distinct from the new red-family primary.) - -## Typography - -**Monospace-forward, dual-font system.** - -- **JetBrains Mono** is used for: HUD (score, timer, moves), card rank/value text, all labels, all headlines, all numerals anywhere in the app, and any chip-style component. This is the dominant face. -- **Inter** is used only for: long-form body copy (Help screen, Settings descriptions, achievement tooltips, onboarding copy). It is the *exception*, not the default. - -Weights: 400 regular, 500 medium for labels, 700 bold for HUD numbers and headlines. No 600 / no italics anywhere — the terminal aesthetic doesn't have them. - -Letter spacing: tight (`-0.02em`) on HUD score for visual mass; wide (`+0.08em`) on uppercase labels for readability at 12px. Body uses default (0). - -HUD numbers must use **tabular figures** (`font-feature-settings: 'tnum'`) so the timer and score don't reflow as digits change. - -## Layout & Spacing - -Optimized for **Android portrait, 390×844 (Pixel 6 baseline), API 34**. - -- **Margins**: 16px (1rem) edge safety margin. *Tighter than the previous system's 24px.* Eighties palettes are dense by nature; over-padding fights the aesthetic. -- **Tableau**: 7-column layout, 32px (2rem) vertical card overlap. Tighter than before to fit a longer cascade on phone screens. -- **HUD position**: top of screen, in the system safe area. Bottom 64px holds the action bar (Undo / Hint / New Game / Auto-complete). Action bar is **always visible** in-game — no hover-fade — because there is no hover on touch. -- **Touch target minimum**: 48dp on all interactive elements. Cards in the tableau may be smaller visually but use a 48dp invisible hit area centered on the visible glyph. - -## Elevation & Depth - -Depth is created through **tonal layering and 1px outlines**, not blur shadows. (Synthwave-flat, not Material-soft.) - -- **Level 0 (Background)**: the `#151515` base canvas. -- **Level 1 (Tableau slots, empty piles)**: 1px dashed outline in `#353535`. Empty foundations show a faint suit glyph at 12% opacity inside the outline. -- **Level 2 (Cards at rest)**: solid `#1a1a1a` fill, 1px solid border in the suit color (so the suit is detectable at a glance even if the card is partially obscured). -- **Level 3 (Active / dragged card)**: same border, but glow effect: 0 0 12px of `#a54242` at 40% opacity. **No scale transform** — flatness preserved. Z-index lifts above siblings. -- **Modals**: full-screen with backdrop `#151515` at 95% opacity (just enough to dim the table without blurring it). Modal panel is `#202020` with a 1px `#505050` border — like a terminal pane. -- **Toasts**: bottom of screen, `#202020` fill, 1px border in the toast's accent color (info=teal, warning=gold, error=pink, celebration=lavender). 16px monospaced caption. - -No `box-shadow` is used anywhere. **All depth is achieved with borders and tonal value.** This is a hard constraint. - -## Shapes - -The shape language is **soft-rounded but tight**: - -- **Cards**: `rounded-md` (8px) — slightly less rounded than the previous system's 16px to read more "technical." -- **Buttons / chips / inputs**: `rounded` (4px) default, `rounded-sm` (2px) for the smallest chips. -- **Modals / sheets**: `rounded-lg` (12px). -- **Avatars / circular indicators**: `rounded-full`. -- **Card-back pattern corners**: matches the card's `rounded-md`. - -Selection highlights use a **2px inset stroke** in `#a54242` following the host shape's corner radius. Never an outer stroke — the outer stroke is reserved for the suit-color hairline. - -## Motion - -**Snappy, no spring.** All transitions use `ease-out` with a 120ms duration unless specified. - -- Card lift (start drag): 80ms. -- Card place (drop): 120ms with a 16ms holdframe (no bounce). -- Modal enter: 200ms ease-out, fade + 8px translate-up. -- Modal exit: 120ms ease-in, fade only. -- Selection ring appear: 80ms. -- Win-summary stat reveal: 60ms each, staggered 40ms. -- HUD number tick: instant (no transition) — terminal counters don't ease. - -**Optional CRT effect**: a 1-frame scanline sweep across the screen on game-state transitions (start, win, restart). User-toggleable in Settings. Off by default. - -## Components - -### Game Cards - -Flat face design. -- Background: `#1a1a1a` -- Border: none. The card shape is defined by the body fill alone against the play surface. The earlier 1px suit-coloured border was removed because it produced visible anti-aliasing artifacts at the rounded corners (a "gray sliver" where the colored stroke faded through gray pixels into the dark play surface). The 5-unit brightness gap between `#1a1a1a` body and `#151515` surface is enough to read as a card edge without an explicit stroke. -- Top-left: rank in JetBrains Mono Bold 18px + small suit glyph (10px) -- Bottom-right: large suit glyph (32px), upright (same orientation as the top-left small glyph — single-orientation digital play does not benefit from the traditional 180° inverted-corner indicator) -- Corner radius: 8px -- Suit differentiation: hearts and spades have **filled** glyphs; diamonds and clubs have **outlined** glyphs (1.5px stroke) - -### Card Back ("Terminal" theme) - -- Theme name: `"Terminal"` -- Author: `"Rusty Solitaire"` -- Background: `#151515` -- Pattern: horizontal scanlines at 2px pitch in `#1a1a1a` (1px line, 1px gap), full bleed -- Border: 1px solid `#353535` -- Top-left badge: a 12×16px solid `#a54242` block (the "terminal cursor"), 6px from the corner -- Bottom-right monogram: the characters `▌RS` in JetBrains Mono 12px, color `#505050`, 6px from the corner -- Corner radius: 8px (matches face) - -### Primary Buttons - -Solid `#a54242` fill, `#151515` text, JetBrains Mono Medium 14px uppercase with `+0.08em` tracking. 4px corner radius. Pressed state: darken to `#7a3030`. Disabled: `#353535` fill, `#505050` text. - -### Secondary Buttons - -Transparent fill, 1px `#505050` border, `#d0d0d0` text. Hover/press: border becomes `#a54242`, text becomes `#a54242`. - -### HUD Chips - -`#202020` fill, no border, 4px radius. Monospaced 16px text. Score chip pulses to `#acc267` for 200ms when score increases. - -### Drag Targets - -When a card is being dragged over a valid pile, the pile's empty-slot dashed outline becomes: -- Solid 1px in `#acc267` -- Plus a 0 0 8px outer glow in `#acc267` at 30% opacity - -This is the *only* place glow effects appear in the system. - -### Modals - -Full-screen backdrop at 95% opacity. Centered panel: `#202020` fill, 1px `#505050` border, 12px corner radius. Title bar shows the screen name in monospaced 14px, color `#a0a0a0`, with a single `▌` cursor character prefix to reinforce the terminal pane motif. - -### Navigation Bar - -Fixed at the bottom of in-game screens. Height: 64px. `#202020` fill, 1px top border in `#353535`. Four icon buttons: Undo / Hint / New / Auto-complete. Icons: 24px, 1.5px stroke weight, color `#d0d0d0`. Active/pressed: icon color `#a54242`. - -### Status / Sync Indicator - -Top-right corner of the HUD: a 6px circular dot. -- Connected & synced: `#12cfc0` -- Pending: `#ddb26f` (pulsing 1.5s) -- Error: `#fb9fb1` (steady) -- Offline: `#505050` - -## Accessibility - -1. **Color-blind mode** (Settings → Gameplay): swaps the red suits' default `#e35353` for `#acc267` (lime). Outlined-glyph differentiation remains active in *all* modes. -2. **High-contrast mode** (Settings → Gameplay): boosts on-surface from `#d0d0d0` to `#f5f5f5`, outline from `#505050` to `#a0a0a0`, suit-red from `#fb9fb1` to `#ff8aa0`. -3. **Reduce-motion mode** (Settings → Gameplay): disables card-lift transition (instant z-lift), disables CRT scanline effect, disables the warning-chip pulse animation. -4. **Tabular figures** are mandatory for any number that updates live (timer, score, moves) so they don't reflow. -5. **Touch targets** are 48dp minimum even when the visual element is smaller. -6. **Text contrast**: all body text on background passes WCAG AA at minimum (`#d0d0d0` on `#151515` = 9.5:1; `#a0a0a0` on `#151515` = 5.7:1). diff --git a/docs/ui-mockups/desktop-adaptation.md b/docs/ui-mockups/desktop-adaptation.md deleted file mode 100644 index 9fd2625..0000000 --- a/docs/ui-mockups/desktop-adaptation.md +++ /dev/null @@ -1,283 +0,0 @@ -# Terminal — Desktop Adaptation Spec - -> **Why this exists.** The 24 mockups in this directory are mobile -> (390 × 844 logical, iPhone 14 Pro frame) with one exception -> (`home-menu-desktop.html`). The Stitch project that produced them -> is named "Ferrous Solitaire *Mobile* Redesign" — the mobile-first -> framing was deliberate when the new Android target opened, but -> desktop is still the primary delivery surface. Porting the mobile -> mockups 1:1 would land a 390-px-wide column floating in the middle -> of an 1800 × 1100 window. This file is the rules-based desktop -> companion — apply these adaptations whenever you port a Bevy -> plugin against a mobile mockup in this directory. - -## Status - -* **Token system.** All tokens (palette, type scale, spacing, - radii, motion) in `design-system.md` are layout-agnostic and - apply unchanged on both targets. Do **not** introduce desktop- - specific token variants — adapt geometry, not tokens. -* **Already adapted in code.** v0.20.0's port is layout-agnostic - (modal scaffold, toasts, table chrome, card chrome, gameplay- - feedback, splash cursor). Those surfaces already adapt - correctly because their Bevy UI nodes use flex / percent / - stretch sizing rather than fixed pixel widths from the - mockups. -* **Not yet adapted in code.** Any future plugin port that - copies layout from a mobile mockup must apply the rules below. - -## Viewport assumptions - -| Range | Width × height | Source | -|---|---|---| -| Mobile target | 390 × 844 | iPhone 14 Pro logical, Stitch mockup canvas | -| Desktop minimum | 1024 × 600 | Smaller windows degrade to mobile rules | -| Desktop default | ~70 % of monitor | `apply_smart_default_window_size` (since v0.19.0) | -| Desktop typical | 1600 × 900 to 2560 × 1440 | The range we tune for | -| Desktop max | 3840 × 2160 | 4K, with HiDPI scaling already applied | - -The "smart default" sizer means a 1080p monitor opens a ~1344 × 756 -window, a 1440p monitor opens ~1792 × 1008, a 4K monitor opens -~2688 × 1512. Tune for the 1600–2400 width band as the centre of -the distribution; below 1024 width, fall back to the mobile rules -verbatim. - -## Universal adaptation rules - -Apply these to every screen unless the per-screen section -overrides them. - -### 1. Edge margins - -| Mobile | Desktop | -|---|---| -| `margin-edge: 16px` (`SPACE_4`) | `SPACE_5` (24 px) for windows < 1440 wide; `SPACE_6` (32 px) for 1440–2400; `SPACE_7` (48 px) for ≥ 2400 | - -Engine: drive from `LayoutResource` based on `Window` size, not a -constant. - -### 2. Modal max-width - -| Mobile | Desktop | -|---|---| -| `100% - 2 × edge-margin` | `min(720 px, 50 % of viewport)` | - -The 720 px cap is already in `ui_modal::spawn_modal`. No code -change needed; this rule documents *why* it's there. - -### 3. Vertical content stacks - -A mobile screen often stacks `Header → Body → Footer` vertically -to fit a tall narrow column. On desktop, prefer horizontal -distribution where the content allows: - -* **Header rows that stack vertically on mobile** (title above - count above timer) → keep them in one horizontal row on - desktop. -* **Two-column flex layouts** (e.g. Settings rows: label left, - control right) — already work on both targets; no change. -* **Cards stacking with `mt-48`-style fixed gaps** — replace with - flex / percent gaps so the layout breathes. - -### 4. Touch-target minimums - -Mobile spec mandates 48 dp minimum touch targets. Desktop has no -such floor (mouse precision is finer), but **don't shrink below -mobile's 48 px** for primary actions — keyboard / gamepad focus -rings still need a visible target. - -Secondary controls (chip-style toggles, hotkey hints, etc.) can -shrink to `TYPE_BODY` (14 px) text + `SPACE_3` (12 px) padding on -desktop where they were larger on mobile. - -### 5. Bottom-anchored elements - -Mobile mockups often anchor key controls (action bar, primary CTA, -toast position) to the bottom of the viewport for thumb reach. -Desktop has no thumb-reach concern: - -* **Toasts** — keep bottom-anchored (already done in `a137607`), - the design language is consistent across targets and the - bottom is still the least-disruptive overlay zone. -* **Action bars** — top of viewport on desktop unless the - per-screen section says otherwise. The HUD already sits on - top. -* **Single primary CTA** — modals already right-align in the - actions row; no change. - -### 6. Typography rungs unchanged - -Do **not** shift `TYPE_*` tokens up a rung for desktop. The -spec's 14 / 18 / 26 / 40 progression is already calibrated for -the desktop reading distance (60–90 cm). Mobile uses the same -rungs at a closer reading distance (30–40 cm); same physical -angular size on the eye. - -### 7. Hotkey hints become full strings - -Mobile cells like `▌Esc` — the cursor block plus key letter — can -expand to `[Esc] cancel` style on desktop where horizontal -real-estate is cheap. Drives discoverability of keyboard-only -flows. Optional; only apply where horizontal space exists. - -## Per-screen adaptation rules - -### Game Table - -Mockup: `game-table-mobile.html` (390 × 844). - -| Element | Mobile | Desktop | -|---|---|---| -| HUD band | full width, 56 px tall | full width, 48 px tall | -| Foundation row | 4 piles centred, fan-tight | 4 piles centred, **gutter doubled** so the row fills ~50 % of viewport width | -| Stock + waste | left of foundations, stacked | left of foundations, **horizontal pair**: stock on the left, waste to its immediate right (the mobile vertical pair feels cramped on a wide canvas) | -| Tableau row | 7 columns, 4 % gutter | 7 columns, **6 % gutter**, total tableau block ≤ 70 % viewport width | -| Card aspect | 2 : 3 (already in `Layout::card_size`) | unchanged — card aspect is domain | -| Tableau fan | `TABLEAU_FAN_FRAC = 0.25` | unchanged — fan is in card-height units, not viewport units | -| Drag-shadow offset | small | unchanged — pinned to 0 alpha under Terminal anyway | - -**Engine impact:** `solitaire_engine/src/layout.rs::compute_layout` -already drives most of this from `Window::size()`. The mobile vs. -desktop difference is the gutter percentages — bake desktop -gutters when window width ≥ 1024. - -### Win Summary - -Mockup: `win-summary-mobile.html` (390 × 858). - -| Element | Mobile | Desktop | -|---|---|---| -| Modal width | 100 % − 2 × edge | **`min(720 px, 50 % viewport)`** (already done by `ui_modal`) | -| Score row | stacked vertically (line per metric) | **3-column grid**: Score / Time / Moves in one row, breakdown rows below in single-line per row | -| Action buttons | full-width stacked (Play Again, Continue, Stats) | **right-aligned action row** — the existing `spawn_modal_actions` already does this on both targets | - -**Engine impact:** `solitaire_engine/src/win_summary_plugin.rs`. The -score-breakdown-stagger animation (`MOTION_SCORE_BREAKDOWN_*`) is -unchanged across targets. - -### Settings - -Mockup: `settings-mobile.html` (390 × 4330 — long scroll). - -| Element | Mobile | Desktop | -|---|---|---| -| Modal width | 100 % − 2 × edge | `min(720 px, 50 % viewport)` | -| Sections | full-width labels above stacked controls | **section labels left, control widget right** — already the engine's pattern; no change | -| Long page | scroll the whole modal | **two-column layout**: nav (sections list) on left ~30 %, current section on right ~70 %. Reduces scroll distance on desktop | -| Sliders | full-width on mobile | cap at 320 px on desktop | - -**Engine impact:** if a desktop port wants the two-column nav, it's -a `settings_plugin` rewrite. Keep the existing single-column -stacked-modal layout for now — it works on both targets and the -two-column variant is a polish item, not a blocker. - -### Help & Controls - -Mockup: `help-mobile.html` (390 × 2544). - -| Element | Mobile | Desktop | -|---|---|---| -| Modal width | 100 % − 2 × edge | `min(720 px, 50 % viewport)` | -| Section list | one column of `Heading → 2-col rows` | **two columns of section blocks** for windows ≥ 1280 wide; halves vertical scroll distance | -| Hotkey rows | `key | description` 2-col flex | unchanged; 2-col already adapts | - -**Engine impact:** `help_plugin`. Single-column on mobile, 2-col -on desktop windows ≥ 1280 wide is a flex-wrap option. - -### Pause Menu - -Mockup: `pause-menu-mobile.html` (390 × 1768). - -Already a small modal; no significant geometry change. Modal -already uses `ui_modal::spawn_modal` which caps width and centres. -No desktop-specific rule. - -### Home Menu - -Mockup: `home-menu-mobile.html` and `home-menu-desktop.html` -(both already in this directory — desktop variant is the -authoritative reference). - -The desktop mockup already specifies the layout. Cross-check it -against the mobile version when porting; differences are -deliberate (more horizontal real-estate, larger primary CTA, the -secondary actions row). - -### Splash - -Mockup: `splash-mobile.html` (390 × 844). - -| Element | Mobile | Desktop | -|---|---|---| -| Full-screen overlay | `inset-0` | unchanged — splash always covers the viewport | -| Cursor block (`▌`) | 96 px JetBrains Mono | unchanged — already done in `cdcadda`. The 96 px size scales fine on desktop because the splash is a brand beat, not a layout-driven element | -| Title `RUSTY SOLITAIRE` | 32 px | scale to 40 px (`TYPE_DISPLAY`) on desktop | -| Subtitle `TERMINAL EDITION` | 12 px | unchanged | -| Boot log lines | 70 % width column | cap at 480 px so the column doesn't stretch on a wide window | -| Progress bar | 100 % − 2 × edge | cap at 720 px | -| Palette swatch row + version footer | bottom-anchored | unchanged; bottom-anchor still reads correctly on desktop | - -**Engine impact:** `splash_plugin` already has the cursor block -(`cdcadda`). The boot log / progress bar / palette swatch rows -are the next polish increment when option D is picked up. - -### Stats - -Mockup: `stats-mobile.html` (390 × 2624). - -| Element | Mobile | Desktop | -|---|---|---| -| Modal width | 100 % − 2 × edge | `min(720 px, 50 % viewport)` | -| Big-number cards | 2 × 2 grid | **4 × 1 row** for windows ≥ 1024 wide (the four headline metrics fit in a single horizontal row at desktop scale) | -| Latest-win caption | full-width line | unchanged | -| Replay clip / share row | full-width row | unchanged | - -### Profile / Achievements / Theme Picker / Daily Challenge - -These follow the **standard modal pattern** (`spawn_modal` with -header / body / actions). They already work on desktop because -`ui_modal` handles modal-width capping. Per-screen tweaks are -small and listed below; no structural changes: - -* **Profile** — avatar + level / streak chips can flow into a - single horizontal row on desktop instead of stacking. -* **Achievements** — 3 × N grid on mobile becomes 4 × N or 5 × N - on desktop where windows ≥ 1280 wide. -* **Theme Picker** — 2-col grid of theme cards on mobile becomes - 3- or 4-col on desktop. -* **Daily Challenge** — single-column scroll on both; no change. - -## Mockup parity gap - -The 9 missing-plugin screens (`splash`, `challenge`, `time-attack`, -`weekly-goals`, `leaderboard`, `sync`, `level-up`, `replay-overlay`, -`radial-menu`) have only mobile mockups. When porting any of these -plugins: - -1. Read the mobile mockup for content + visual hierarchy. -2. Apply the universal adaptation rules above. -3. Apply the closest matching per-screen rule (e.g. an info modal - uses the same shape as Win Summary or Stats). -4. **No new layout pattern without explicit user approval.** - Adapting an existing pattern is in scope; inventing a desktop- - specific component is design work and should be flagged as such. - -## Process notes - -* **Smart-default sizer is the layout's source of truth.** Before - reading the mockup, always re-read `Window::size()` — - `apply_smart_default_window_size` runs at startup and the - player can resize freely. Hardcoded breakpoints in plugin code - should reference the *current* `Window` width via a - `LayoutResource` lookup, not the launch size. -* **`WindowResized` already drives layout recomputes** (CLAUDE.md - §3.4). Any per-window-width adaptation in this file should hook - into the existing recompute path, not a new system. -* **Mobile rules win at narrow desktop windows.** A user dragging - their desktop window down to 600 px width is closer to the - mobile use-case than the desktop one. Below 1024 px width, - apply the mobile rules verbatim. -* **Run on a 4K monitor before declaring a port done.** HiDPI - scaling routes through Bevy's logical sizing, but visual - polish (border thickness, motion budgets at high refresh rate) - is worth eyeballing. diff --git a/docs/ui-mockups/game-table-mobile.html b/docs/ui-mockups/game-table-mobile.html deleted file mode 100644 index 9d8d1a3..0000000 --- a/docs/ui-mockups/game-table-mobile.html +++ /dev/null @@ -1,253 +0,0 @@ - - - - - - - - - - - - - - -
-
-terminal -

solitaire.sh

-
-
-
-settings -
-
- -
-
-SCORE -247 -
-
-TIME -12:34 -
-
-MOVES -87 -
-
- -
- -
- -
-
-
▌RS
-
STOCK · 18
-
- -
-
10
-
-
- -
- -
- -
- -
-
2
-
-
- -
- -
- -
- -
-
- -
- -
-
-
K
-
-
- -
-
-
-
Q
-
-
- -
-
-
-
-
10
-
-
- -
-
-
- -
-
9
-
-
- -
-
- -
- -
- -
-
4
-
-
-
-
-
- - - -
- \ No newline at end of file diff --git a/docs/ui-mockups/game-table-mobile.png b/docs/ui-mockups/game-table-mobile.png deleted file mode 100644 index 1e3238d19d33a92bfd0e806482cc4a1251d5e88b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26384 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%0D(-xUU z7A>T@mE`TZU@HFez9-O0@cSo2t6HuinfM(`!dp&`2Y2}IUn)$^^xv`!^s!lZm zq3KsVHBh>%Km;R*)y;)|_o=b&FBK&OtkyrVwLK1F84s!|YMqpW%s~>OEE$aVnK~fa zqB*0wmD78dd7MHy{i;Oj+jL?IB%mf;5OqZUh|SS_Ne!^ z9)Z00bV{Q2*o5V85HM`Os%6DlX&=pSe6Fnm5(1s7o_?SdF^pk9@OS)xq5NaPw(9J} zBRB0a7s#qsrUDndPM}ZQ?^M*@yy*ITwD=PPSjp9{=07YWjlinSz}HDuL=IWg-xITh z#)hHB>UG;^rKJBoB`w4&l`E8utI-S2Q37e}R%}9lRfGsz-b!|kkgFd{ws9%v0?8eh zOkxzQSU|@KD=rEk-k4d7rqHHLjOlZl!h{L2H2FWu)o^<}lPPqY!Aj|=7t)&C+h`+Y z!+eG5aDz+QXJC~?Vo;e}iA*&-`J38vqFTv=r(h^8QcRaVWzp!5?B2`&hyLe?qv<;@S)fCaxO6zfY-X><_ly^6YYk;Q7=bW%N` z`d{~+ciT{KBpReXr%*7>@!NyIAI(DuC!COr%8+;9eBy-SK`o>y7r9?WEr}jWFu6R) zQR|4QRhN^tK{Wwl$%xkJVMBPlm1Q)_#j56kXc1E1XcvEygE7Lv4f$&ZERqH2qG-4w z(c|IUUxzaH(5Q+4TNsLc#yjabms33e#ymXqOMv>A{ zP1U>wC&So)aoutG=wPCR;=lF>BGT3the1et#`x$*BfV~u?7jlS4m{1D0$uP_|F1!E zPJEJ~M3c(*phNYnt^uFswZm^#^*UAYsTyjChXh0rws#>lqq(lSy zaMEJM7~<9p>FOSdS5Ygej)%G63KXy_xwfoX=CDYEFytqWuoZ&_RM^up_MF_8sZ@)}rD@%rw%=M?oB)=B?)Ot2PV_ zG`|Gg3zggRU?GJ9w;UoM+0bc4brKR$i*W(1DNl9ofnuoZGYZzjag|aTOZDnwi0SgS zUMH;RrI!Fycg+=U!q#s=Z7v58w)FYidk`B|Ko4#xbYQNYJqxa&-Pasx69?=6);DI$ zcgb!`0ythVq0mVN8DlM|J{o+ai2S&jbaJo}Bv=zac&)jzuRV{bjmFVJ%xKI|b5dD% zy6v9F7#*|3!bqC|j6l|_MPj7%0PulO=tHQh$EAMQh7o3w(E2{NJ@xCWcq#p9h>sn= z)I(SqPRgs5Xp+v;=fq}`{_~0|Au7*y6%w_wMH1$NM@~Yny`1ho&*}XOyhRFVxf&Ed zXuor#7dBR>*@>ZMJPrK8-BDSYCCr@uTbU@Quit!8Qx5ZsGZ_Qp%Um%%jf!$s+ZWdm zm9kHfG|4nJlJ|&o%=ET$3I1kZoiJtYF~Wb7!iS5W5GnbQvHpH6)gF>n%5eV1Mw#D& z1q|b*o-$}2Ve=BjebJe(j%Ykemi_lxhu3O+{@c);nt5frC~beeXRzSRJh$xEWx0|9 z$c!y;5XX)+0{AxgtdA?5gm~@}cD#uPZo(5^zWnyx#wuwM%;K>W z1(Gur%4b{9g5%V%vSTpOfmfj=I^;+{wemE$o&EM7Qk3vx&9v&4mGC#{!3qosw3>DQ z;a)K39*rg=7X7=-A}f4rQN882ST{n6BzflB$upza8n$}{EE zknr-ifGTa~r(ahpsx=ueQK}`>Nl5uTl~Osu>T7Xs%ETbNkh(o=G|}QTcM?Ccte{ww)H#QJ&&1(l~6Ty7eOkN>#rgYxY^GZH+qjhj z3r&jN;noTGa58sSup}H!E((-6@zE7s)K!Po=Q1xGZ$&JLY26iXf*{jhnZIvqFSU=a zR3;bgp=fic&J*%xH}=f_31x?JC!&^`5cU^NI5%d9>E2447~L<5OP@$Pq-3ACBsN_8 z3L57$2CC>31&E-CV*99Tz$sIQl7+<#7`W1=WDdv#lBwH9n~ap94&T}$IkwVW56r0T z%7jlOInQ!ms6Pu3mi*%xNV!g6&q;6ZGKp<$*xe|PXczMN*5cQG_$9Y%c5!U(sK9~- z?b2=im7JI9;{-=PGU>Wha)2CA4kHx+g~JI-xaacj&E(RU7vBi%QJsh zca>FU`6WQ$PSaKlkXFX^$66nH3pBfA@QmXsw)0dc#o$e>|IK$fy$wgy4ZoYm1{ABi z*BasGgFRQ1Ga*_#am0}hRBiT=+QjdCgkOf>n1%fAXfeI^cYPcE=5b=3pPF5TUmKn( zjYIr8J=gX3+LdiI0^(>8=J$%6=DD$9yX1Y_5c{2yO<(rPOA;7(_n>5L(aDf130Zwb zf3%xh@--rtj8A2}?0gMy@beP_(rj*dIIi1^{8_k2|LX-omFN;=ebg&{Mqmd9e8Wea z@mr{#Er*V}J^6nHlF`$7oPi6C6WR@C%hX;?LhHr&N?XGgG^FZBR|Zuzd0k~{_EE5} z^{1;D3=kw+TBc(dLN(e|7%0KROOG_7Qc{hr0G#LRjFSe#G_jqUK*xni6cXuc-%5mn zVCZD~KaMr!{14q~LPcl?HO$%C=|)Ae-y|Jso9%LeVHPaf<)|j<*$`?0Wa2EXs{Y?$ z&XargbvE1}~gGS%3%&jUO#pF&}|9c1irC0Cd60pg|z(Zh=e-*nxxa z4{LFjOcvDOQhJ8IZ>~5_MkwB(dbc7oWj z+GJBgiU_0jRHj@k!^(xDG98HtD8z7Z61ObE^dWl{oNW_ifo;V_NRrE$7xkKym6pau zOr6|@NK>4am#feuCu3vFmCUAOpaPPV%08dWmP}FS_^?^cmC`B~`#c|&Amlml5L)Mn z9ZSQo|8QOIN}~Uv6{s?|W>DAkz~>uy@L<16W3T8;yIyF=XptW7`5zyGXnl+tlI{N# z?ZERob#JRxb^k}P;A6S#>@Ijp=z4VZ%EM;4MW4jIPa6D}QvHYgh|}?omh2!-@9z@b94#EkpxPrf;?;H0IEL;>ZI4eo)ar?`DnD1j^(rUBX))i{khpz z{}u*ba^(ItI{M?245alJWS-gs5>GcYLk)FPIJ2d}<{wHK#Z!6n#~VJTTbn0~P$HXt zZwFJI?!&b^6%}-;jBj2L`IW2JTPD99TmW;hi#SI_Ty%Q`-bvYMr};Zh~Ebnq6TyyHax>N0I4=xG#E_KwNrlN^xX z8tIm%fAfNsLiT8iqC?+i>MS?SV8al8YV`^<7`zXp>ibUIaf|u#z#1P>fAYG_Wax)H zG{*M%qut_QGONLS$`3LL2jjn#2_kg;XRDe5NzqY5@O|T1Xq4vWEr@zG#xW5cop?58 z1MwihXTO>uwW73j!9b;yBT4CBQnDY3d>Dg0zI>@t?>y`)01zOqxYTW&sB_~8D{bE_ zP3eLwS7&|_vM-a85;4z+D+d2Trov6mnO-G=XoXCgRR2jqH-jZ&D1X5BS-$+ z0;B+>nvbIq*J~XeS0y=nl{D~RrtaevbDXaGfv@^@n_X3vg}cZ8n^-9D*Tz8&T1bVFuTsGPwVrz z#u>o7{R`py(GeKl?U=b8LG#PYy;bg?dN6mY(x!M&i;OLs-R*g$p0Ne+WFaF85pD00 zcg2;WoJC(?$-pdgAC)xgV-BNj)kV|7k`=O@6DWN&ga{hf?Yv|61X0Cbb2M{jOJREB zDn{{;=cqga4+%Yr7Yj$du71zlC_~MozB&A+1mn*y zw>4!nm=fq@g^HHl@7D7jH%#jexh@BRZ6j5>$tmyA`C$Fm&9?qr)q zI!;<R#k z+Zv75Cy?{k;%>`;v2Q#t0aedt-5xD@kQ3oJss5b=!lWN=wCmf-Vh?H{c@o;mq5~l+ zDBl}|5|sn&`^(mfV2>oF^soUeI&8q7d~_l7MS_VWrJRZtgJw2l`UvQ;`fza_Mg6Y; zvciSqXtnm1;*|^Dv{NFiN1vwiAZs%lzS@uI`EE&!I^@YPEEJerK!Nvt=Po#L@odxg zWqXlLCpan$+P;487`eC{=A{UM2wj3!OIiY*9l7d-v@;*pShD=r@}+3m0)hbKuHTua zBXTgQV|VAS>_lc`W8KV~dYT(E3M_C|3&-|^f@D(`LU(n`W*Ny<7u1O8cq#NW=ej!# z@_)#2*}-86l;6a~5x8~WpwT4igtAnU>S@Ah>N9`tVOdpi?bcvpT!jR36eVFOExlOe zwDS>O$}o+68c|yI2No%lLdt>JXh4>J0BM;aC^>zPM<_l_qL22WKZS`oF&!j}4!5yS zGj|+a6-J>5GLCnE)RF;$+Mk6aR{eB!*}11KUSU{SRd4C#P@#vU z@^0V#V(Y;ZQj8u+-*F-ilj@Hy*6*$%Ro@-jqh)8^HBOMa8; zq!hL&X%7o|%<4`uXj!StJ(ZVQzF;=>Y$JZPN;*#oLY=Aoy`c#)g}8BzHGeb(n&rB( zgPuGe0mV9dbHz<#pX%e>sc6<&i+U-jI8en7PcS8QP4RYsQWck$4L0QqGF9Y)Mfp<8 zSh{-df`!b(YvN{SC@^oW+u8bIm@S$BdtQRkcsu7VhnN++G+-R0f ze^!{Z(Q=C9MYizF!JaixX}6f~Ru%_Z4$B85u`y612>^^V)UZ6jXl5Gm@}%PiQ4)bt zX`;B8fl|mpXyoL*$caoz7dx21s_r|+*|O7Pj&@7X-VfTm{NY+cGB8G;0|UAQo$dfx zDh%>ixIipRA2L0XfLR){6-Dw4X?}oa42T3b20D-2kQa^&3=J`Fm|6y@Fa!iv1}Sm$ zdAOOPIw%hOIE5prhB*$IlznFh@rVSfo9{d0Z8<2)WzRoF%0A;k0g9F7)F3HsH6%;!ELUy0VW2AR_PLM$L3de`;B%25ssvU_-t<1%3`sr^|t-K`W<*N64Ronj#TdEkd_Yz zaSTbJOimSsb#M?<{yZe{cx4xh?Y>F=c)gwaVjPoY>DKdK<9Cbws`W0M63FkCMuxKS zxs1*>EBsel`?oAK=P#-|6PU)(rF6Nz_xqIk;lLp@hG3qx%D>$fadLA%5lnjgIkL-l z(EaaopF!D2iw}O>WyCX%2+1N?ms_j`*H=Ec$K2FmcQ;i0UvZJnOutTw7=Yrgzb{z}L>++R{f zp9UFWwx0<&@N=F;2?ENvq$7gIpT}|iC$%g5vYlR~L#HcET0NczSTsXbaGpd${Yo#c zx6opbd+q$KC5|M9aww3$sbvLDX#~|^|p#76E18{DM5SW-{ zS5$|#9DexSqaQhsB-WI%s})<2Gp_78>3Z%Z8xKO_mRfS7pqH}Y(}JbY?Xm)_^pHl9ra!m@IeN4=Sdz+R(8*zN5lv_KV*#c?yRv zUMux?^dbm|aAI9ro5{0G^A>YjXTA6VOsO(eN?mUo@Svj6T<%7rBW)Jks3D_N9iJ}J zxa#aUrlUjSSmwvq26_7oN2!PH?HqqC;^;xDEWxMFhYi~E>6<_C)Pk-5t`N<$*AEW; z*v;46`qvvu@UJ5#`FgWcQ+1+~sKv*e6cu}pl;zmV${_03+i9tJtGn@E?5j?K4Q3O^ z%MAyvi@J-s|80%fcp(wEUn2XO$z8;lV4uP2{0g3>&hl&#Hru`K%GG3ud9CKwLW!TI zjBos3?x-6ER;+llVoWTa??_lK^5AEQjK}FO)m5S6AQD5m*f4^NO!lq!qg*Z`HI7tj z@BmF#4Db`@-II@bj_>{B)sB6~m1G%`T}92%k;`PZV208&BNo;}j@J*#S% z%rs#8h3{TDF?8mp?|jxR6@|uicdu)fb zU;OetpL2%XW5U~|+jd&XE)NgLsJgqGTesr|Fle^f%={`TA^hx$sKd0_A3Ofxe3nkR z>0{fndIJ6Iy8MW17{wCA5~PV^jMG49w1m-QH=E2I)BP|yXthFNsVa^JM#Q8NxSLaU zYu9Z{&Zhz4M8>rpV@(Kz_HTKd)(vg=+{hmJ!vyxsP6>R>$V{EwwYjK5r+*g}?X|Ay z61a+DFH-aD+<+(cd4%jYfdV9!$+o9|#lou8Y~Uk~g=m9^RFyHmz*Ecfw&dpnpOpzH z)m2nf__EA%*q>gCHq*zmnu!i}82?ub@Zv>4OGoGRuZvd}RaaqVY9V1HL9=Q>(EDCm z6B>+`GiA<|feutvRfVWe!v>5P>tP|=iMAly{jX;1Q?r`4!Rp=auz zGy1Myp{2&QtVdc<+?H6)?sw#$`$I0`J4s&$WLU&M07DEc6^g;KLkx#XxEz8vO z92E^s3rbU_E34a3b7+kA?9O81lv+4%Gklb@5GKy`bim z+%@Od*86PZCcd=0P@m3cf(b+@g+%36 z;<&Vdkg|~qf4wD*ej2|&fl3IPHgIuro^5zQ-#nfm>HdqQqoDHQi7v-g*CN}MwyWx^ zrgwfFpCSme}n-qxYb7A}PlqIJLdp_c>LBjoIaPsbb}L^Z@m<`c#VPqmAC% z)3>*`Xb}E}E%EAPv)MwAnlLgxUOC+IOLK6;Ah2~BP(gK*W)~q!UzIWoLp9Cy3+lf7 z{{4HWp;{A+1H<>qX86zh)q^gO=3q{xiHoU)g^b_+vLz%ivd`w*szB%EzyI9!Zkd{z zdXrSndAh*nU0ij^K3(FM>`^u5>vOCyDw1+*E>YC?sm;8gPN)ZHo5?FB;qK-fa{13I zY0ci1haY=rbfPO{BNqowX!ge*D4@n0k-J<8Nne6bi{U8KKN&=Tkx#zuu#_p+YuYuM zrVCgE&gv-dEz~QQ>o>ulK9woT-w$A?im5_0C(}fvEj}jHb{n;jxf%BBG-G?x_It@d z@8n$SpmG)+_qhL4@94+NzU0>Ahq$v|A3;(EvzZJRCk}~BbZRdb4`$6(j=+9;MB0Dq z5jvO}JU>`6GTDx(&S{%C>5Y77+bUyD_Z!>JD)Ce;`2cV8L4qId&=aBEaUxFw;a?p0 z^|N$>l?QlhE>({Iew9XOyU-^&$(WX{_n3~9UbM~W&Q$2*rX#fVV2K0C7rY(W)IbJU z2JAs)AvbOd9j%&m-C7w!M-y@|&0Oj7xFqJ>hx{W-O=Ml`>hsvePn{w0`@g)zU;-QK z>-?4-m$`lj3?Qbz$i=Msd-Xsw)S&e;-fB^_+rT*hi|%3fHR9`P2i_=kQ5dr8u!IJ^ zOD#?-sBWV<35^ara>JIopKbPYy|frOu(}~$`&a9*REsuPv+-D2p7eJu(0u6!YO^C(keEOJ0Qw0DM|3bnQv?qQ&a2_5u6F96$Ub0)&W8798`1h&+l% z)vvFw&vxk9E{R5~&08@^1Y|&zyhhbRv_$UdGba9!PEy(H(|_Pxr0|ZN6z6^vr8FRf zk0qb;<-IC6_s+Pw=k#xWm)z-|ZB$hx0j%}~FMdNPFA?{KKy($7x(Y*wiou%#g92Me zU|3qv`)s(g)x8pG`erk#OvYf2fhp9Zy?*yENbc&gO$wH>YiUx89BN{Jv^@!55bAYl zwY`p#{LU`L6SF4JR?vV^IVX8^T5ITv2gQ`K(!l8cK4*EpkiBy3;guG*^?tT4WXY_w zG)jSsAgY%q^_EUozZ0FU-%mL9m$nkT+RssOyan%{l17EUuJQ?Q4t=vws{Dm~-bHLL z5fr^PD&ao$4W|68jwm#1II*x4kWTc~Pwp8&uW&~#N@)r2DuVSg!%NV00j5>+<;k2r z>SYI~lJWRr{j?0m<2VItEnE{=n(cPp_3|G|^F$5H+)xC7zjWTZ+`VMzaydG7C6zl) z3hKDQ*VdyB?h3dQY({j!0}3W>gM!!nd>yh?3juq|E6MPRiji~KNRh38%jMB~v0(4b z%JRN{E%#OF0!#s@{}l4^3u0L%cs01!vf4ycH4|_cotIaGdbVk*&s!g&Y>^H2 z+4kpKJz)NPW-r=LbHRNso0?)QGN_L zz8<2Cms*omgGD3_6#Fov&KW>(gY1`zj+NzHr@#IP_tDQ~d40|SzWR5TLmTnQf91IK z2PAp$Dd3;obe-=@$wog1uUuYaW>yWC?g_A>`Mw3G0&f$TzN=oO6fFnbQjt@gzQH*| zSB}?e|4!4>(tLy6-*-at2=bPETanCISKK|>ZR9+2^Xg8RH6qPCi8z}x7+KR1%wYqU zUI;Fo*!7N$j)|f9?a~3+anKr|H83_b3`>EFeYG^X501TTC95Uh4&V0wDTPhfuSccN+*Pif{YmVw>lG-K_|O( zHwJ3qn{p<j7A&kbfLqKv8OqTi&c^ zjdqnWp{jpX{2pP$83>!IYtJ;Y+7g)~V51eQxewY)k@eHCx(elID2Z+S+SGY@%Rmag z@2PPNtvouB7PddlYpr4I^uKKKiubp+7K(sKJMJAj9C*N+N(LsR3&10zUa-7cMgTWA z=y$H%U)Wa5m^XY;EsjF>@l)>h1w=pZAf3?>$TMK#T`Ost4S1b>j98xXVWW-V?%3Co~bvYSp z_dU3EI7kG6jUk)q`KP$<4XG(F?xe@Hc@fb+*l=ToaNp!s=~{=kX_Dv{#&XBbTNf8v z?jrEQF5m9NH_ebIm7<~yd7eM@yGzSwQP(>v-&&uk&F3lkP!N6eMr_gl{P#BGCXNa0 z7ETvNSg_Q-V_nNzb1Nw{kg>E^y{{U%;3nX^xp#Aw07wG#B=SyzFw}6pOCEhW737yxi1vi2r=1 z46J&_=|E<|1>KX;ts2?~y_%0!nK_q!`LI4kNh)BR?i;o7D9zG_7iH}@9Zk)0u^+47}k5D0zb1IoZ4qJ0Xm;74@5#o%(dyCyAw<#f-c z>f$U{D%8W5HM(eG z6AP$;EeY)>oAEzOcD`jE%u=TwcX&#je(AuV-OXk52C|w9uzayizTF*^GfSL2KVSRf zU#wKgBzhDGp=1hlIz!4$GY}hTG!uo1t*K+M$UYnQXg0bfaq#{drh{eblTfa^dLq|g zy4Q7oRzoN94(+Ix7*rbWz-mYbtOIm)b?fZ6rS$HP%XT1kudj$wbqK@dxk}I~Z{!i! zlas4>;*3jLUs>=m$qKvIai>oDFOX)veFC``1=TCht%+szB2(cDUv=rNsem_Z(#^gc z!0qwBrHEP2xnFM2ky7_K^(p4Hy0pKggZi?NY!zNkEQM!vf^wnXOID9qT-oy-r>< zgX$GE1*~H=wk2o*3R^xYw=z4IKmu3v7^bF+Xf%~3VBsQ4AJA3M+Q#=79Wn4TKX}~t zvv)WsR!3XnoDQc#NYN%*fjUw*QYTY4lN)2G`2sbUy-~vZ5g@*tBQ4qO!r-}K_)z-t z$|UA9@?y#L;0E*K1*dF-+w2`6w0bgIh8r(?avf#0yY&9Hmkwgww^NPI>lVk$1|F{s z$1zCE-(FHs8 zl>fE=raO0pQ}gUM7f@7XIu*#2oyAe?U-iE$gl$n4ColHgjOU|;ol8$|~ zZg$;ckq~KL>wk80Yb+{>uWKx^kxPZ*jOl;wWc}bOa5^WZ&qA%rk4#m?XN@T5{ShIA z**#LRHCs*z{2Hyf6GRSFxfLFKXk~c|8&8)r!&*H)Q}I=-Z^I2HGL>;6LM5=?r*6ff9Lcy_AvX(1{7=mmlm^R8;uE9A~;?*6Wtw zKYQm{Prxo*bpps4zsNdW!Rnl}{11UT0Y4j9kix!W86^iD>FMrWY%?*;Fgde+`{yO4 zrJ7lyD-KQB2w-47!E_DV5Go7M2gB(Jt|=hKxFU(_FGC{2DgTQSd=D{rt+Alyd}VhO&z zJOXuIy_>5rU=VjRMn|#Em`qyl?{2iRM7Nh)y($f>T!eVN(4(F2E|5wehOywI)1q@N z?^o$1Jc9Kg4AE^RQ|RxqbpmoY(u)IF*Ba0I0F`rD>FIcYu&^-7LekqbcjBOZ<78PP z^xve7-$TIhZ_ngmYaz>;%MtOypN2bVUAm#}O)NG=#D?ji z@_qh}p3rnkBW-JA8D$jiHY~XB0G4OZN-uI{0QnjiJabv&&dLycpLspJ1cDTXQjn9E zTk2VUt+>c`5zYEcW5S;a-I$%7-JU5Ur4?F9){X%$E(T;&+Xr((I4;M zwH427kLSxhtb8J^utJQ*A!sw4iMPEaf1Z49{VJ|W-X)~>8)J;>Js_g^q+6XF@4qyi zxH1vuG-GgYg=A+>twcjD)!*6-zb5UobTW{C=hF}@xf;92HzaG0J07JoG9dB7%bBd+ z&gHHX=+p(x+S=@K=7&23Q`I7UqbZ7y!u1+K_T&ChPdTR{w#QtWQq#{2c+5gz=e80qFqak#=9C z+29wf4DNrxyXY5TnQSE1rT@RC{Oi$_1ZzZjS_-n1hNZ=?#d=-qixJ~3DZObahh@Bc z1PXz7vxq;W&+XkFM)4{^n#qU^G{A=cdyktMTSe!OhVN#5mXmQNy=c(*-F%mU)Pf0F zgkv(R?BXpV?ExR-6)znr6WnLXy&31PGX}8Iv}DR8U8lxNcPG34uKl$YvFHzVew)OY zdq}lf{RRtp`>4rkK*iV(xJUj=fBo7)Vn7kcQYUG=>>&CJ;SM^K1@|yIfa+qU=(fWV zJL3rQL?yFtZ(QEqAHMq0lFMl5Y)B#ea*2jFN zvqsjn*4SRob#B;JNHuif?stRYQq#U^XRt|}^5x~K$j#~Y)p?MXtJq(r=3rF9>*7Am z%E`&+IDm5ZU{3$TWtR!R?J8R}*eiC&CU(7D^*mQb#u2Vs-_J(YOZ%3>d9Icm;OCPS zwi#0+AW*Tv)oW}HrEOW}*rscmLypCKb;6R@WE@X+Fqfz@#Tugm?3ErdUNr_1@*A^N zt>0;ncn8)hGSssZFo6=~(6t0v%X1nO8m1a4J!Bj=sYtDjn~rD}>+c4x8JY7qN^~V; z`BY4F4wFteIzNY#Om&>PwPFZm&L5S81K13ANbAzM;-Od`butwwf?6I@(!oNZ(<@(z z0V3CtDbjE6#qO4O1)7EbugUY@=FGg`8WaCS7?G9IIl z=PdygMEt*dQnGzzXYJ&F5GJui7cyZf7E1*7C>}f4Kj;|rl+J(CG~JcC*|c?4r5VJ zQsS@tjyN z&p!k2?{G;_bAs!j3E6;EH3OgYVO^nb?2MgauN3X-8g z0Z{N`=q2dyzfM0m#Os7~z*CP5?2+r3Wo0btGr*@<=vk$%sI%A@GFr+k{@I1xP|2{H zH{I<QlPy5-YGObV^jR;_wtv2fDt^I-!Z3=ujt&c~wI^+)Wi`met(ic`ps5 z2r8|v(u3~ryNU-8u42l5+I@_oSUaIb|aHlRV79U#pF90r)Llj65YPKa{OoX;)? zr0~FQjb4#W+=T{S%;%pDXnVBPT|OIdv=X?pFW=%4`qswmaX=KSQ`vv=CuRD=O5%)> z0Gic9oa1b;_M!DOFr@#0tL_P--TBR3z}5KgUtbbp2?3@6+iE^MBBkQ*Q_}Y^$B*50 z5|8JmCMr(UWiV((PdzHQU^zo?&~&|^!D~Sy2{poPrpHyE*JvV<7jK6bNg?HGM5IvL zBaMjqZ5swoD#pbM>EnVHl$ABfD>7jn@|#e^OP_({y~Rd3-(9Dx3r_WWwQC#({fvHu zKUNeGXM_{`R}3Ns;l<694>``dy3+*+ctxHAcg$MonYdbD;KtMUadxkt^UVFa9|jVx zC&Vn{H*2FF%**5|$3+?!+-f>nV|4?eU}~JB*{^oUs)y&&Y<1Pjx?&0ukeksiTL4i~ zqy6bsAej2MQlyJEl!CHs8GLZ72vQo%pmUJ#-aIRTy!z646jqty^%Dtoo*7 zdhft^_miO(*G+Hw1^S{~>Gdtf%s=XtbXM=p zMDkZa*cPo<%#vw&<)vwr$IUzxJ>F{(CWTqXQkRsP&KD9acq3idz(;Jb%$gG4=^zQC z_Apih=JHA|7*+}+Z1P?;LQ0nXB4ptJZpGepJf+{XqCAO*GOTkU-UVG((lPS;Tq zii~u@dLR_f-s@CJW`5YIAN=+t>w5DmG)t^Kv0bf(c6h98gPmR6&ZugLAl&nO40ON` zmfF&>DP89BeN6QtrjW_){l?{nboLnndeNlK$Y zG~qG33U72#<@Z0EXItKqCTTM>Ga99b(e>EzmHNeVf#xOQT#soaJDAc9YcAU0NlKK5 zH*`V(8y;pj3$|m-D;*YoVr=3sY}ob%R9sl`q;=1GXnhwf%XB52#I#Ykz#-ma*{1;`Fo3#yEQTyTspB2WCF=$Zn4FmrNSXHI6 zSpVoIm?(n_zj1-K%Dt3E!2I$wriRUElc8xm}yz-|9%Z^ie zvd{~rA$KQaJvmus<-h&s@2Bc%iZj?riz*&bYtZI-)zd+^nYp<%Dv!XTjdMvvr0r}s z)Xk`?!AB0MY?fplmbHr#|G0y#r^s3GM=T&xjg$ZY;C}zlKLVVazx5U-CuFk9 ziARb#^XpF(51{0Xtcb6Orpo=c>p=m$&r;Q_Y~>ec7&@|K(9%*K*!+jIOxt za!77FXS;=f-W&U!bH=`2jsAYc*lGH7`iRKT_wT1FwB$UdDlE`blJTYY%JQ~e{CF0` zYiT1C3-65XMT%O z7|$ddxOSK!r`b|$^nkwHXXm|Ry;;`9e)=?5Q!U$QBNMls4X#G@>ze^7)dQyE1dI== zpa6Nny<^fwI$t6BQJOonjAfqaw=krLbI$UK@5QVfcSw?R)I1_cd1@eTd6WkGo!m1& zr`24c&%Pki`$Z;Y2clS;((vHHML}8DnL<6-zRaQ@YP#ID88lxt3>}_l5Fj4QOU-@m z@Bgvhe*KBv4GZ>fuCw`y?>x>@I@HBE9Gh2mC|F;&KVVz{f+tM z_bDe_5~lewuqwK@Kk};4L=9h|6ovio;_7FdtsX8h@gvgaTq&vd$0_`B?xJRBdB%-@ zk%I15_fi0h5o7+)@c91hy05Zj9^a@+v*^K`9{}XY1(mv9*e@_^qq)jOT!baBOet-( z#b4i%EJitDhE2&=Hm|Py(EDx9y1i|wW{<3w?jwJKIB{-60jKvnRqj&0 z<%fR=DvPfNZ}~w6UiJXXS9yFP;3M$pUpFoAmVUcgj}!e)*i~S%@>@Lo0Y3MSWbqLae;0Dwr`6`u^+|XAu;#{&VbFc)^zIkAU6HM=CZiNv^sATEqZyi` z6j{+`zBnH4`v=pOiyg`R{UVTR+aE;oCpT9~57kpl(u5KCFI$U{q=XLi8pEWnKJ6E3 zQWt^B%N!DQU*z^MLp%lIb-=Gon=ZAfDu6Jq=(Xc*d6FT33?I7a2R?YqCvr;Be z3Xd|$gNrlOBcP5=uLApsHud_VgwTL$Ve_n_%+Xw!4j)LF#<~e@8W8twhx?uHcir}Z z8=Pm9$oeSZ%P9kq<6D?5vu+3MvnfDab%MJZtMO{=mIJZV-fTN}_0t&69^{Tuji%u(1- zHvtcbrR{!#@$Cr^R{E7?-dEQ#wpC3nFY{vLV@Ob^#YHBU^Ba}b_o+n861B<`hy%f( zzJrVOE?e3-|Ow>${KqRkjiP%Qfb`p%VViA#zT_JlFh$`~6!rw!=n z=nTEoEkj@Ni#+Pp;mU^257~D9qo|68ZT-j(lF8f6$!TkmY@+9iY!DSv{M6cey2pp% zD9bJiId;(<;8}WJb!%0r0 - - - - - - - - - - - - - -
- -
-▌rusty-solitaire(1) · MAN PAGE - -
- -
-

GESTURES & SHORTCUTS

-

Touch gestures and keyboard equivalents.

-
- -
- -
-

TOUCH GESTURES

-
- -
-
-square -TAP card -
-
Select / unselect for move
-
- -
-
-east -DRAG stack -
-
Move with translucent ghost preview
-
- -
-
-double_arrow -DOUBLE-TAP -
-
Auto-send to best foundation
-
- -
-
-touch_app -LONG-PRESS -
-
Highlight all legal moves for card
-
- -
-
-south -SWIPE DOWN -
-
Reveal hidden action bar
-
-
-
- -
-

KEYBOARD SHORTCUTS

-
- -
-
[U]
-
Undo last move
-
- -
-
[H]
-
Show hint
-
- -
-
[N]
-
New game
-
- -
-
[A]
-
Auto-complete (when possible)
-
- -
-
[ESC]
-
Pause / back
-
-
-
-
- -
-
-▌ NORMAL │ help -
-
-PRESS -[ESC] -OR TAP -× -TO RETURN -
-
-
- \ No newline at end of file diff --git a/docs/ui-mockups/help-mobile.png b/docs/ui-mockups/help-mobile.png deleted file mode 100644 index f7068881af9c9ba4ddd9b6b7844d0baa35beee1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42597 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 - - - - -RS_TERMINAL_OS - Rusty Solitaire - - - - - - - - -
-
- -

RS_TERMINAL_OS

-
- -
-
-LV 12 -| -
-XP 320/500 -
-
-
-
-
-| -
- -Synced -
-| -v0.20.0 -
-
- -
- -
-
-

▌play.tsx

-

Ready to play?

-

RESUME · 12:34 ELAPSED · DRAW-3

-
- -
- - -
-
-

Game Modes

-
- -
-spa -Zen -
- -
-timer -Time
Attack
-
- -
-lock -Challenge -
LV 5
-
-
-
- -
-
- -
-
-
- -
-
-

▌daily.json

-
-

MAY 07 · 2026

-EXPIRES 11:42:30 -
-
-
-
-

Current Seed

-

#2024-127

-
- -
-
-

Global Standings

-
-
-01 │ swift_jaguar -02:47 -
-
-02 │ pixel_drifter -03:12 -
-
-03 │ null_ptr -03:15 -
-
-04 │ core_dump_88 -03:44 -
-
-12 │ YOU (anon) ---:-- -
-
-
-
- -
-
-

▌stats.log

-
-
-
-

Games

-

247

-
-
-

Win Rate

-

61%

-
-
-

Best Time

-

01:54

-
-
-

Streak

-

7

-
-
-
-

Achievements (8/19)

-
- -
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
RS
-
-

anonymous@local

-

Session: Active

-
-
-arrow_forward -
-
-
- -
-
-▌ NORMAL - -~/rusty-solitaire/home -
-
-
[SPACE] play
-
[D] daily
-
[S] settings
-
[?] help
-
-
- 2026-05-07 17:42 EDT -
-
- -
-
-
- \ No newline at end of file diff --git a/docs/ui-mockups/home-menu-desktop.png b/docs/ui-mockups/home-menu-desktop.png deleted file mode 100644 index a0fa836b964c2ff121e27424102df40568faebea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47895 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 diff --git a/docs/ui-mockups/home-menu-mobile.html b/docs/ui-mockups/home-menu-mobile.html deleted file mode 100644 index a14520c..0000000 --- a/docs/ui-mockups/home-menu-mobile.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - - -Rusty Solitaire - Main Menu - - - - - - - - - - -
- -
-
-
- -
-
-▌RUSTY SOLITAIRE -
-
-
-LV 12 -
-
-
- -
- -
-
-
-
-
- 320 / 500 XP -
-
- -
- -
- RESUME LAST GAME · 12:34 ELAPSED -
-
- -
-
-
-DAILY CHALLENGE -DRAW-3 · SEED #2024-127 -
-EXPIRES 11:42:30 -
-
-chevron_right -
-
- -
-

SPECIAL MODES

-
- - - - - - -
-
- -
- - - - -
- -
-
-SETTINGS -· -HELP -
-
- v0.20.0 — TERMINAL THEME · BUILD 2026.05 -
-
-
- \ No newline at end of file diff --git a/docs/ui-mockups/home-menu-mobile.png b/docs/ui-mockups/home-menu-mobile.png deleted file mode 100644 index 9b4d61cb3550b032cbd8221631b9b56da36fbe30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28883 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

=4KIq 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%0D2qGjYK?@FO*VboU*DCv)WIJ1HHK&)O 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 n|D8|&KRfyVA0Dy1N7H8=ZT - - - - -Rusty Solitaire - Leaderboard - - - - - - - - -

- -
-
-terminal -

Rusty Solitaire

-
-
-sync -
-
-
- -
-
▌leaderboard.tsx
-
- - -SYNCED - -v0.20.0 -
-
- - -
- -
-
TOP 3 · TODAY
-
- -
-02 -base16_fan -03:12 -
- -
-star -01 -swift_jaguar -02:47 -
- -
-03 -cli_player -03:54 -
-
-
- -
-
-[ ALL TIMES ] -
-
-/ search players -
-
- -
- -
-Rank & User -Time -
- -
-
-004 -tablejockey -
-04:01 -
- -
-
-005 -vim_motions -
-04:05 -
- -
-
-006 -tmux_lover -
-04:18 -
- -
-
-007 -nvim_dotfiles -
-04:23 -
- -
-
-008 -dark_theme -
-04:31 -
- -
...
- -
-
-▶ 017 -anonymous (YOU) -
-04:12 -
- -
-
-018 -bash_brawler -
-05:01 -
- -
-
-019 -curl_master -
-05:14 -
-
-
- -
-
- NORMAL │ leaderboard -
-
-[1-4] tab -[/] search -[ESC] back -
-
- - -
- \ No newline at end of file diff --git a/docs/ui-mockups/leaderboard-mobile.png b/docs/ui-mockups/leaderboard-mobile.png deleted file mode 100644 index 05c73b0ac78a4194bd5b1c4f0b55f588fdda81b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44477 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 F{vVN^{L26U diff --git a/docs/ui-mockups/level-up-mobile.html b/docs/ui-mockups/level-up-mobile.html deleted file mode 100644 index 2e8d4ef..0000000 --- a/docs/ui-mockups/level-up-mobile.html +++ /dev/null @@ -1,259 +0,0 @@ - - - - - -ROOT@SOLITAIRE:~ | LEVEL UP - - - - - - - - - -
-
ROOT@SOLITAIRE:~
-
-memory -settings_ethernet -wifi_tethering -
-
- -
- -
-
-SCORE -04,820 -
-
-TIMER -04:12 -
-
- -
-
-
-
-
-
-
▌RS
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
- -
- -
- -
- -level-up.tsx -
- -
- -
-
▲ LEVEL UP
-
-13 -
-FROM 12 -
-
-
█ NEW PERKS UNLOCKED
-
- -
- -
-▢ +1 daily challenge slot -NEW -
- -
-▢ Background: Forest -UNLOCKED -
- -
-▢ Card-back: Stripes -UNLOCKED -
-
- -
-XP -+200 XP THIS LEVEL -
-
-
-
-
- - - -
-
- -
-Tap anywhere to dismiss -
-
- - - -
- \ No newline at end of file diff --git a/docs/ui-mockups/level-up-mobile.png b/docs/ui-mockups/level-up-mobile.png deleted file mode 100644 index 69493ad2c3586178c66d31568370a2002859c0f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49739 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 diff --git a/docs/ui-mockups/onboarding-draw-mobile.html b/docs/ui-mockups/onboarding-draw-mobile.html deleted file mode 100644 index f686052..0000000 --- a/docs/ui-mockups/onboarding-draw-mobile.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - - - - - - - - - -
- -
-
▌onboard/01-draw.tsx
-
STEP 1 OF 3
-
- -
- -
-
-

- WELCOME ▌_ -

-
- -
-

CHOOSE A DRAW MODE

-

You can change this any time in Settings.

-
- -
- -
-
-RECOMMENDED -
-
-filter_3 -
-
-

DRAW-3 (CLASSIC)

-

- Cycle 3 cards at a time. Standard solitaire rules for a tactical challenge. -

-
-
- -
-
-filter_1 -
-
-

DRAW-1 (EASY)

-

- Cycle one card at a time. More winnable, faster pace, perfect for quick sessions. -

-
-
-
- -
-
-
-
-
-
-
-[1] -[2] -[3] -
-
-
- -
- - - - -
- -
-
- \ No newline at end of file diff --git a/docs/ui-mockups/onboarding-draw-mobile.png b/docs/ui-mockups/onboarding-draw-mobile.png deleted file mode 100644 index bb716695ba79adcb5af00396c6aceefad682e13e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35321 zcmd3NRajKv*Y5^ti4g`t8Xcs&K~fs&6cD7lyAcUN>5`ThI+U&r>mzllSdf&Bv>$hS@s4C0i;gI0~0DvbiC#4R)uL1xnfQ1Tvf*8}& zfNzgnCFM1-u(0MFM>hbbZeD7RI8ciUw7~4f+(! zKqE&epPNf6Ar8Z4B1DrwN0Sd`V0har7fa#e`ZdE+XyPKz*x&=@qO{n2S1UVv#$H89 zMTPgZ+eC4i(ANnY^k=Dkc=wJv;xe0?zqyi%QU70GVxiJ^bMCQmjo2`yu?G)IGc$+a z+tHL_)L-$8l327ybz0Ig1+RV|E7OEz2ntFBt*@g6YcC85_5L<^-8jiZPj9(e=lXc) zdoiB=5v`GTZ>$&dW}O`yd#9YN)Q8Vmvbj!cU*yol>z%sv2hWTopwenk0HB3M1~cHu zL20j_(E?j1cx?`DooiUM5)dHA>S~If`QVcGm(P}l0&#gR&;x18v4Rjvi|*c)=Bv(} z@UuLP2!M3OKomXtJeUUH$XdgW|04A~mxf7;EFLz4#eCS(?uy%)IQUsA z&e%l~<$+iIHP*)ZI_Z~}FX?3=A*vkWYB*`yiApacb0u@~t)yWTk>%qqM%Og{rGNWU z`q2&8(!(+3RU(JWZo`L+)k8Ej>(mZnf;L|K8n=KyMyar18hXd=!f$u{<_@@VJ{Y2ZbhjpDQ?fAM~v((NiF{TJjhP1_xahKCn(rx zs=Z6r>_nstVF~Klw4U7PMU;~8?=DvUT}>sp@#NGaIt5CXs8?!J7yzKXi$ggKo0!uc z%rhfYDu?Zo-W4ng7kLE}P+uK?#_Pr0({Ywjl*)?tADTWz{|!D~Cg zmM+3uJvpUFa^t^Pg^4avl$nGM`1^>aCB~xyhLy<1#RW{!F>W?a=}`v2%*^ZywaCx+ zT!Wc{gJyraip*G2aZuS0gQP~7+uvP?HJyEai^*T!a+6c&6fA&nys040=HLB;2Uy^F z=UyJqgxT+x&NZ!-^;Em6P}?qA{*Ks7k4!yjYCr?pIqVjE9|h{SwHW3#I|rwUerG1Z z)&K&4+C{JTI~V|soJ;#Ux*d!KmBUiy1#A^i4trMPb@Io2?&p)=Hr`9JF?_5IPGt00 z@dYXm=O^_EGHD58D!bE~ep_EA%}{_3$Z5F-hxDP8n0uL?R8-uLD`>-E$+%77g5H;% z_wP;t1K93`K;S!GG5q%j+g2>^8Zu|fQ z&3S{k&jmX|KF=s~x^?Yij_P;qJt3p=#qS$8cs^0;eV>hW{~XL!S$||OxasTW%s>hN z%YsxuBF;vxIkQ;Wg}0&MA}=Fq#(A)abpAg~3(3QLLh#@b=2gA^>6fh-?$h5H#IA0W%ry4GT3husSIB~=h6jT{r&`=No1rH7nGf8j6yD_+57 zTGzH_SwJG5r(Bhoa{8n*Uho|TqRHwf4I3c_0N2y^TZuVs^4z=f;I#B~Prvn^9(pfO zEMHtX`3z|Pn&x8FpSJh8Q0!z8RapGam#PM76kzsu=ZT6jdh4|C#~F1GJyEBk)2xbdqDTj zf>CxTn(p_M*z6%d0bxCekeFS zO(1W@_L;9_eK4Pkf2$XSy|jz=h4gAmkH7OPH}@JBH&HxcYc}_fo{*T=qA`Uv-+2yl z^EhNv-$&Cg?{+M_K$f$$x=jMHp66250m_Rr2~2=t$at9y11_mDH1oO>SrudWos+-q zoAwxA41&vl>4Le$ya2PM!qc}-xpMC7*}dmNr%#@D|HY18oz2`~MYE++x*gYFoRbr_ zcLFge&`qQ6}WxcDd2rpbH@2x(&lWoLZzWm@Ekp^Rv3D-wC|3Ry20Nk0#pCB4n;y>f;!gzoVNx zy%c=p%Y|7Nr%=wyPL289%n-DBM^V&NRpsR@s z=+PDPzeTY58kqF)ddD$ru5T)2SB|L5OE`QYVtx5h+i{?`w=rkbAX+_!y+|8!ByY`W zqg(L?fjee8OLE;1k}aCP%hnQ-@NhdWM&hJKHYR3RHjpXX$b}BDcZQ&>swX^%@i4tO zX(Q@)EEygcU#g4z{W~$HMN**vM?7+4AglkkCe`nT^)G?V_*`84A6Qr$Jha7S3aTW+ zUVr#MYhNlJ#l{ua{C?q|$`r(+@jvE8ybN(+-uD{nCA!=i`X#^n6Ol{04ryaA(-(%r z>yVoKG=gLjCB!R^42Gt|@OqevwvBY$TBH3yC+nt`GjV1_>iVlh<-9 zNu|NYO$k^1uSH`yh*vc66^>9oB*H9woRzk}X4Sx1ZiLuVF0ShJ_GBz57%V)oU8lwo zhekNx;mO;Adf+DqZm08`vSl;IXj4)Q8vQYx7yYM>H0fP)p)6ziz-ug8HK_CtlNpXD zw6M~fr~j@2`RSBF!#wYXCT}9ZMv&ux0?Lh?q*Tw{jcwxnue}15*DLz=I+Dg5l;b%l z$9qyj=?^KC>h%QRP207?q4D5nP~pHwZyoC&|63ythe{H=%F(KM$Spkox3iL@(MvyL zzB)_(XCVwE*CO}6gp;DF(v4rBYF2UcNXMO5)3i2t_)P8l#cvQDO! z9qi}?a1k9`B$X^a5>hxG&V({IghQi=3}vx%#&5;6cJVQ)^~%BYp@a&R9LMLjK32{C z4`IzVb>%Q+jGdArda(9ZS-qk?R^#ru)dlJ!j`S!2iG_kv9enVj4iKE#y_o1!DRms{ z$;X|CBFv(Xz3mY-_wA<8TeC!aXq47_~FVQSf zWpML<8cZ`_QJpBG5a>^qJxqcho)@_7CInY!^!I39py-iSc@`xD64q$f<^}V|EcyYb zC%nI$8b9SSLzN>BA|bz)XI}MP8R5Gj@37d=%Uk zZ%j;{OBQ|qepowYSUqFs?Ci{!UT!~E$KHBrVqica`N{Yz?dz~*fvlt?Uf*-OV46Dc zpJu&;fY$-yf{UB`9ov*5JA%h~^;a6NZSq|sb@ZBSG({?}t#+e=G}fOakx>Z7LkDpP zC_BnG?Q%UHrAOimP44M@_Duc`)8CD&Ee6@%HH{aky(pbffJnJr$i%}4D232~TH7gy z$+EZ3&PTlH*M6-pmC{&rzth-=j*X4++fDz;la0B(y`3!AAI=m`$z=$EM6YdaZOzp? zwjH$IjN7=66(~uom4-?%VV3Q}0N_RxXq1P|zgMK6a2^gc6}C zL$Fr9nkjSMw!It|Rw#hO;k~`RKx}GiYI=I9Dgz*1ICgb+KRP-p2m9$fk4f$4bhs?B z1(kq|GJiFnaS|A)+T}$L>s-ls9ZrY_?nFdkmQSC_4;HJEwVoJiPLp5XBt8Pm zzvEu`-<%Kj^`&uJDw~+BmR7c2@6|8KJbw~qJUTXpvOFS74QGfnCQVX62h@4_9OeZA z@BI>b(Ex$yo4Wuoe_atwUYq_KmXyozoBfXI3k?=%X(m5(%O_V?S3&)NppN&kO))s3 zlEs>!M6Sr8;t3nZ&oIi!Tqq8@^g=sPYFu27CR4rL3@U&hzIJoa7I@rCPbZw2l|?1u ze!e?n+7oSVW~N!H%}Rk^s>xJ1_O{+(LDc`c#%ko}&RK~j6C;Vzm;#)THZeQ<05suJ z1}IL|t&!#!4qf>-y2p{mL2JJP2h$eS)Xs5maL^>=l$9rU&Tu>B7E~#E{6(pO?=0jI zQu!T9hfJgCDQgYjo~Bd>@KE3@O1~|i41G-Eu|My9xZD8*K_atIgH#!y5mFGzSHrT; zpWt@7xVY%m+Grts&cIzYC4KqUwwP>G|31wo5tAI-^+|G+)U;ekl#^UtffndyvTB+( zHa32Kw--x+OSQH-c_UU_srmfE^6>)EZC9J=L@(a}07cKq$;r*>){9Kg*=RoP^tWtk zx+R)c&*W>Ug-UCfkjlj8D;Em8ZoUCc>dfb^%Di8%#)?*uI^X8i?O|u8kb8WKVvg$H zoN%ftU6zfAqwbC(Xa>Pb%AFhuY2=CE<-^<0TVQGe%>H^c&f$Q6|QbwKZha? zmCiyATDbcC`)ir7snx9rc|s(u1_>c|sC!`uZ_!Y*^>Oc{QWKIMI|WU>T)UJZl3Ba# zo3$P!#EREV=v@t2{Hfa2X+dF|4PX3qosP)X36 zx;a>cqF>6pTpq48d+bGSMy~vBq0MEeVj;hw!~?KsLnVKBpKL0ou*u74Zhu7$GP7;F z-Y#X-D3BUUAKWCLJr=v_Cn$U{eU3;lE19qXoit>vq01zWC1Ds@YSbnw0imO#1A^8B zBp~ryP2H~o#O0Cb$7vTxtSx8r4qOi5)RAv|F> z)H-Ub0w31Uepa-eu81K85w2zm@%e)mkI_&;XB_=n+|VEZvM=OSa4;&c?47kH(6&Ti zUJwe?k}u3JF0lPl+P}e-K4?+>44}a8$(K){^4jJ2STDq3CbK2nS{DqnD3g z6R;L9&}706j?GYw@00*H+mJcT%sYBb@LXXD+Vh0)!S?)gD6ZJ7^m&|It<41N9q33k zH9Tnr@DUNEF_`@M&QzsNrD44Mb9tA&*;)`?DW%n5@^v;7HWMXUqm02c_*AbhJ20s; zM11QE5kAAOPTuJ0k;%t{$VrD~vefDiIIa8)Eh{SvxVwfI7LwzJfxtMzgK%6D%^Q&$ zb30{a&rxN7S+ar^Ea_Ui8JCewkA4>X{c`vHWVw=Bt=rrp1~x_E8Ii$E&?AQ4ia&DEQ9MQ#qJ8*y(xm*?`4I@Sfj z!OX%!W>|rkjew7^TMkD`P0!mU%6G}Sdf~8#ZL*<3coX^IAKU{yM~$vXo7&l*KP7`{ z0xnlDQ~K$!B-PZOM6aD}4kp}gkDQ`OP>2Ok^c*?1URm6n?@bLOUnR@$9rs@-%`;Ye1tQ@!GOU?gzs5bySsaw05GV1aKgPI&UaS z+B6b<3h$owZMoqDe^W26(PJGx8RcopXA19hMi|NKjjdnYR2qrFN33!av~pDCw#Sp- zQPDlYLW8LUgP?18n#&+Wfp5)050}82+4I=?&AU@x(Wd=2mSLK5NF}BLN=7O7_{wQF z4=IGCybql;dh5%3@og}XRL3Ka2KUj2aLZCt=ckW7xC^C{mZPf*0GcRwm|Q%|4MaxT zRYVVT{)uh|ZMeGpSjiNKWEGqt0?|e%ho;lnn_z(2a%&=;YC<6mGbTl4yoY&2y|#Ji zb{zL1x-M0YV^AMCOwh^}Rx0p>#dANV#jU9L9Nl_auDw&`Y1CxQ*67IOs=p$5t`ZIn zL-|%!c`RHu=ka>KrgbYbyd5KokvGq^SU}k;k`$MIpH%Uxji$c_r#<{GC|8;Oi{|#d z1{wMl+=z}Q=|`C71NuIiW9R^7%zs0c0X#7cFQ1EHh;*nICdD1)VcjDNgWzC%gi1^E z&%cmYzh11cC!z z{aq-!L~NR7j%uR4da}897P~%P781Tj_-Z)CvvE#^?mDxzW@);UK^9-G=Q$s8~mGJ>+43Pd*>RQ&w;^SG5fB(`VGdcNUD&l)2mW242* zXq8-gu_AVUrYf9##HLnWUS1&jb8bW6LjXgyam3QWa9`i502@2IN}q12b~zYV$9OW6 zlH7NvIpbkF6Q!Qlr(0FSSs^r7LYZv5yzUS8cRq;4gA0&GwtV~6zHLEFQ7InVpsE0Fb)aa#-op*+&AFt{2LJ^%@@ z>DDM*%~kY$dk}caytb2epx9I~;WStwe}0BOMh<5a0Mr4O#wl#?@)uY+aUX|wg2AU0 zc3i~buaP~>@4PBiIW-5e6F&Rd3}H`))4wAC&9fmn*mJtiQqR?2#invw9=}@3mHzzi z3nIQAAP+{?2mBTGxm7z)9vcg-H7 z#L{ZuA+hS$4Gaxs3Ax+EP>Be6?Edv=2D69n#+{^LYNZoUY3yKC0|ORbX^;#lD=Yuo zA|5Lz|FS*?tQ;`Mskfhd3RG2BgM6RfK29*;)+?nS47Z@k>JdME8ci)`SklN4Im#M% zGRXfr3^#6Hk4efVYIk?nV{f+0Dr)YHc^o5h}!53f66O*@$}~o4rj(mLn`0Gz`vMMH>lc_XVC=tB|<9-^|006Is6$_x99E>gR+^7S3i^{;m z0#g8Rx2c6aSUNdAKV^+y-Tlr224pa^V#oVuCnS`m?>=fOOG^F(RVD|MO3>uMQ|M|< zDQX14a#YkDyr`N|hO#Aig5x%4pxMdAuX~G%i1>pB{%UxtR7a&x3rsDksVm2}qNzmE zl9R)Xb-%QWQ}kH#q@5s#htqg>z$6z;9qf>!JmGw+HzN|_JdnT9 zl){@snK!%D!&%@y9&hx6XeSnU{|YS9kAUCxG+HG&>1Sit}K z6y!1aQ?|H$-850!NiA~QDjyW5t!1SH>(1#qIU z!{NDw2L^9cjH z&?HA@s&ejKiyDqMs^8#GGoVw+nN6x2Ncg1OpHMWm6rpp_(3$XJgD}V z2_CnLsWkTZDN6$~%NInfC%72@2#~!oTjXku^%&?l;Ge0LX0H3rBsw~JjOcYy=Su8i z7C$b+a}eIItp!1=oD%jrT;{eM;=l##3LK>qWLRiaUdt%ygCGy&2h*uBH_+Pv8g}+! zJH8ho9tVqf=D}J^kSrv+#N}~6J0>pacdsK8iXJ$#;h4gxr5Y68+Ire9tN#Yt1wxuU z`VVzcvFDi?&x; zipUc*8~KEndgbTqy$N7)?*PJHo(>Nw*!Yq*`?7~uu2Y$%S5C$8Uc4uok`vc=zY$4+ zFY6s4AO9u!=|ZVd2@(YAqkkA%@vd3F-XZ=tjmJ88?XvyDqnnEZ>IkWSIs)Hk?6ga@ z)Z^8Qc~aki8GD<>+yg`W4gdt)?D224=9e0QDoGT}uWXxw$phV0Jd80_e@DxtrrW-N zuy@>|8mt`7&jts$y1D{&|EGEWFAx*&muZv!GYg z!r1DnNx3#NaWI676c+?{CP%iHdQ~;0fjkW{3l1tuN=c(&EP5RogRX#Y-;*w_RMC-%-jbbuO+v&26Cv0{Siul9{{~0`=ueb)xuJimJ1lkyO*9fp~!h z0x(K~ImFxKvnxMP>O{SA!xk^j#MICd&?-T-*bQ46+;_Bld)7Ug1*3iMuaJz9AiqnR z+pE(nXG_@uGs-XB^c~JEV6_fpJ5#bO#&7wUnfvYd9zgHI`1k?o{kdxtOnpIoNW{w^ z?AmZ~-x`&UlyC=W3>dGvy1I^DWhWVfoq*{<=Sr_1R zepk*EDu36^M;HNeh&2!;LBVa7S`i@HRhcXD9Gblqi2fILU0jYqV8Fxp*t50;LYA@d zO4nx+(7a)UTVsU;5)kl~bn>I`Ibvbn!y*^U0#sl^S!u-1`wm9f+t(KDwDAGsax?@w_c30oY!$k{wrS-z*_x7?IMLdYi^`vKLHb2yDQB zO~>uqBS5dbuBAwbr5_~1Rv%ss`@YH|H8QR-Ll{!~6U!|w6;s<~6f1fy-UequQw=gX60?g<0W9aTNjc!bEWJTI3XN5sXO z&e;A;ddPgN#l-aa%@aaiJ;Z{8ES8`hA6(&Xn2DJ7UoG4@P_~$b9IVIYGPvv}c{^pT zl}wf0dA9nd4|cy}3_)109;@R7zptJtnd+;W+mn1olCBv5qgb8(G-z>iQ+rom#KMJl zedkWjlTq(fyx?#!x_6|r=-0F2rl8@0MQgpP9FGOa$-<;0J_S7O^Gl8d$=LOnL%pYe z+0EgP%9%a<^ud={EpGG1)y@?9d^)GD0#GL34D%Ngw&PSnE?+uVzKS~LbgqB^=}>?3 zp(3VX!GSTg-+7~npGCE##O>E!jUu&S`elVC7CH9ZJ&q&;^iVN-MvfGicewaS;Ca#@ zV%|@J-m&J!cIhHrX__n$;qM5*HI~r&-EvB-lCV~ zG09_5Z1hLUg*zW(EXcnUh$&NK^V?nzs61UJtvi?!NuR2`ayl<$s%_#B^E?)I)MI%X z-pOgY?*~_}J(yZpQDqPmJga7J74rGp-dCACaPRg+(rUP3k3K-`cy=zqU2kEdpF}L< zbV&a|MM+NK*yq&}i_vVO;#6W{P5f#u!J}`J+3XMKb+Gmps=;o+mypFT3-dquIU}lY|?tYwmxm~ovI#;u|aN$kSxjC3- zs2Ph1Fu`$9`~;91p^_^uLQ6jOWx>yz&it5`FJh>9TioY7o=wdy1O+{B%S9_4M{d1M4XKMp ztfC(R+_rMBlKOHC-?NqHqtI{) zrnWm5j!gs}s4)L_)hQz|2Gi;}db;o^ z56gH(b9~Oycx@&Fy#Kb_@Y?V>j^I3+M%<-5Mh@-IG`=oYkD@%vRVXjk&hxSH2^;yQ z(qF`9@#`~Pmo!e2db#@UrT0#ayyJxJA1t6`qUfrxzf(6E(dL>WVEYQ-ah$Q4ivdfG zWBmOoPl=zhycH0u_Q3<>TyVN~3BY@FMRAudO)Vx}+w z>(mK=hK}wG-f^cfHi{x%%3pEkA?>Wz@zb2S+0A$N@5*bH3-ZH>QR%k*MM3Y)7VrSd z-XTnehxSN@vgca&3Quh&c=gIVtSCm?9PebJ4)*@Y=S|>~PqT9h&RB6x43%($ig-7E z(Q{ve>pnb9k}E)yKn5l-#r+(+{ zoiTW%ugV-ghQ&FN0=J@Kz$HQyJ?atIQ+VZh4F&ufy-=c8P}-;g)PTU@MSo2EXKDxw z*5s)7KtLM-fGX-}BU3QufC+>z6!4Q-r%~Np{{j=&Di+0M@sXPGT09J}bbI1cqlaie zafrE?t4tY8ZEJYlgNfSlotG276x1Q&dl4n|bL5v{rEIwxwb1v24d=?xj~%1&gj)e| zpMW56G$uCL!F%2T_!RO2P5uv#P_uiw-dpz=Dj|m2_(XNRy^RZRA|fJzWcyK;n}iu^ z{M|W4Xow{y?sNI7cj3yq*DyGgmRBch<&qem*owkIozuh%Dg5ohnKy)$uzUIC->~&F6Z2I+M#F zx5L61`BFaE^hIxPu>u^29*dErT(v?U!9~mH4Spk{ml3I)je~ZJCINP2ggs8b%M`Zx z9r^jl)bj1^MfYe?%*g2$jtv_%xr~Na zmrNDadM~7bUah-Ev|4rql_pt7p6xDpUPPB~JxjHpTas0SO2k8zP=X|jb$|F-gJSiL zS@!hMn*b_j{zGdXt`ry7a|zd{)SBLjdX1Z>=pS@!-8zD(0WdiPefPHNO!lJ$H8wgq zZ}0uur5aozYRyXks#!9AM#eMScxMR|Eqw>oWGdYvnSi!g$w~Ska zOL+=hC#AQu0gG-;993y^AB^BgFra(;JYFP@PGhbZIKM>Fu7myo=q zZwzA;3;D18siKA;_~?}QvSXX9URmH7ewwf$MguEG-Xd&>j`g#K8Xr>ua8T>#j&t$E zY;(FfwO~y)QXr7#>q3FI?pcEs-(if@Xo4)wau0qfTJW5%kcUfhR8T4xg5v-;6k@VQaYz5VT(B42DA- zIFp{picKh7IDV22!SCL^_)fU)q2{e)OVzwQ6fFeuUL2C2c$}vHeg-Sd7%H7&pIyb6 z2ijqXHbdolq!h=k0^8QpT;3jM)QIQGkl=RV%!-w~ZV={NZ!hv5i>2Fgk$Gq7FoFG0 z69Gec9-JiAf(Icr&w&To{%Jctbfs;)4YuCqyW6(K1F_J51Wp`I4w5;8|Bv-)@v@~Y zouBsTX8Z3=%KotH6!4|nAAZ?LULOdwS)xl-2xT~YMSfLp>kLkhAfn@kdqnlK)J@-x zeev-O?ef%uuGyXxl<$H(>*pR5NwtFcgBh> zNbEB>YXUQsmWrX%P=l5#kmwiW(x^eZ{_gL7{ar0lsR-x(qu}1YwmQubO?2IG88jDR z{8hnGD)=uGD-S(9^pR+AKH7&K=itYf6ByM?d#Xh|5|!k%YNj<(sG_wU6h}8s@whh# zA;nj~rsoWLR$h`#2J8h&wkR7)1lBt(CMxa>KFut9FLMX(qJak|)L{|Nje{<~Do1>OD{qi``)o2#iQZoH zN5Hv00pfD|$6h+u_QJbr>-3eua_R&2tE>K)F>)Tp!A7s6-<9ld9*(P@hzJo-SjrDI z_#LbMMk1WNh98fmtiTwxmMxw6)u`|9At=FnNzpmy5jd3bb=z}BsrMP#$C<=LpQ~Rv9wL|w z<7wZ9O+P8dHlYYauXvSp7!1%thm-h22+?V25#3@frsQG7+(qw`VN-TgXo&{u;|@X!^A zif$vy6_JM&r7@rR=?YxHHtI|JlOc+{B&H8Y^sF`SXrykWb{e6EeB@KFWTar$npgBj zBXf=p2LMDwHqsZ^UD_Ac8C9(>v2o5HzK09{Ob^`-{DI%$CzJX$ zxQD`NKCu*^(SQaDcAkTbRqM?$Khov!(5INbp!a+*`~K3xy#B#><@6o1*a4@9g3UsA zn_q2B2ZA8tm7{{(=5u3;&KXr2PHw@!9uVkRPgZtI^yn^|$c*Z@dl3SPn~j^xFKKhh z0e1a}KTUIEDKWdEtvlhTLY^ZEgOhaC6juXx!?+Q8g1DHG(HpT$p0c7~nSZ}~X(=Gz z`Fdh`!u$z3ttg_qn5ZXrB=O-TMbD(YlaBSibc>&gA!jERpa5vta4C;ICt+k_Kn2i) z80q4^B?3WctuS^mHqK~G8)-H|28PiBxX{Tl>$7Kz85I697zP&@-#NdW((C}I{7rAM z!;G^igp1c#w-j#zep@xs<ZILEuXs;@C_-~JT zm%~LuNw7mVpX!qb(a6XDBl&cFDh=s2t<<%E9KXQR2njkKOk)_>tjks ziu5`yVB&)>%Rk>uiQ;y9josrJ-3dHAiqEx%Z->Ru?XYgmTYeJcJS*=>51;o?kr?@- zGHLZ?)4cM`ar7zz|54Ah)NiXl0~zrhm=x+yLw*6`dz*XUVZ~C4e?lv*-I;Hldb||C zQ4k_{@soZD`4s9-c^6PCGt<9FT2%k*A`|g^;OC4{J>}B9zssP{TW7 zoNjU?n%U-30{t!?Eqnw*ed{7njS$wpF?spM%|mtqXu$K~A6cjXjpj=Q`)}i6nWayo z^lBRau5Jx?pZB-KF`fy$juIAezW-hM63EDZ1z@MvdQ@KCuC`_})5pZWqLPE;e}xhH z{hmAiA!=w@tY=xICERc1qGqY|6n&+=E(){G-Y#)r7VBI6ON>_)rfvHIC${}*N>x$T z#nSYiPjKjlfB5oM49KZq0!hkkD^VR3L4EI)ZJczbcOr)eZUZ__!^2xqfFRXfoj-$f zO)g*19ejvDOYy?JIUio6xu#aQ9kcuZL8rk99)j{)&5}%znIkhr!yf&cNG|pNQ~0`H z_GTMJ0R=0#s$hzt)vMt8-AtS+1Yk*ZFX5*Qks7gO7ri@SQm|J=W#FByX^P7By-0{6 z3g52KV8Rq9UNGoc=DXtCbzw!KHB@QbO`PK-HjytZu^x;c6y(=zE*MP< z+3zm$D$bt&eb{<3)%d#E5`Q~6E3Im!_QP7eQO1e>NL;yX${UKb)KvLDdcpZ{|9egY zpEHx~L|A)->5eG8=4g5X0zS3@4Rr5APLgGOW6(o+WyrV-jeh-w6Z=?Qm}XjiXHwu=UcZ`z+T7o7NdMdshlat8I>3w?ReF2Y<6-W88$kP z%n5wy!rZ*R9?1<2;$%cfXe(thIS z<}H9hgVn-t7-XD7h-shi1XzE93?eb)inYWZ=H+p}&AwxuNBxzal;BgZsKRrRRkvNv zdqeN;Xbh108bvkFEk2CvXSZ;;AEh1LO++|jMfjzD%R?PTA>^Pj82YaD!bC^dI=KC@ z(@ue8I;p40&4rDuh!1r1uzLcVxp(`xk}(gBa4 z>l(@RX}BX^^G<6;3|{(o@5TK6O68Mg3O(11YKBUQn+h@3heXR4$?K=ACyQHuJTG&o zTX}(urP`JDdLtl+4AWd)-DGlM_|02BxT7ra%?cggDN{iLWx1L-Jz?|_Fw4A1p;yce zZG8T*fXxHSVY}I)I8wua)fJ$6^-LoJ9~h9gP6=3|cd|nWc{&4wS$;F`mGsURe-{sX z7K8AZlIw;V`S4 zok!Y<4XE1U;R6eUdS$QV;C#sCI#+U?dA;*M3UcwWA(dZp5XAxta>ll29MI}veKihT z2R#~P$lB9~Sk1hBYTtT!VxlLgLD?xoTjPPJP2LGrdh@>T$0D_;m8>RLatfEO(SUh) zsQkoEhG@XA_ew6%bybXD&8@Ojodp>z%3Jf3u>-&J?c;1#`7M&brNSU`w?sGjBVQeV z(Z6dGv_YTh1=JqhOtLpW%*26SrsFt&e3IgW3iMPBHlLS_Z3hJB;s-n^nTGbMeQjQz zKmj;xRTdX6+?w31raotveI71*mTh=)vA6U{{Ai;(Cd#K$EnJpshkv2**cGqcpS?|^ zQi(oPkN>{E9K`q9ns0wkTaCK!y!z~!tMbk6k8W}X2Hu1j%M9F|j~;z2X`5QkS68&K zc`$tTK#Cu>(xA(nj}^7qtsM29W4d@raV|N~gomtB>@#GPY|W0Y>tQ@tS^~04lz>WQ z=`EudC2I%A_q1O5kv$c7F%mLr* zITqkD95a;LlFQx3taW-`NpkpVrF&_XB zO4IHph*mGE>roGfw}eQ3UJ(FRgQ*nkp^cw@%gQBXojpyV3{FIkko=VtuEC_24ao}= z4I6|>pb{7gQnq&z}4V`_-1;?JS=Mi0`bS1Zi&N(bF+5 zC!!WY!G(wTi^>g%f}+K);-eroZX)cKd^LaunpU-VW_!=_xVYump$kjhSee~7@>^1f zVBSDBQ?N4Pr7)Zm#Q@t=Mm2KuaSt~aH`8bOEoxZ7v`H_t^Si#Q9QrPur`Wjda-y_C z`Q~u8imA>^)^q>1?XfsSh1&MRYV7q?2h#_X7e%_ROIlF3YWcyh{kfs~&T@@=bikkO zk-|=ihmx3=x*FVCdLpO{jeb-pB@1QtdFKR%**gW*s$8BN0znLioP@vJ^CxnbrhdyH=1 z^7H!DScQtW{A{&k+C;7k48$jLA?Y)tx+^e`ob z1`3vE*4&#-QcT$y&AqnF1n%$ zj`jaEkhvb)@wjJid>-fY%~hOq&1zu$NTf%+jxPQ-Isqa=Sgpjr3n^U3)~8@|vqx{bN;}oU`bfv*7;TxcPO4 z3iZK+tUA-MGaY&(#YKww%6a@xV^hP2_t(3O+@f_P$cK$+sS(2r>O=2;1JU|wtxMoj zoP31%mo3rplHeo=8Bc^l zaDb6~zz{DE{w3n=89AS$y9$1%+!Xkv8)fJEr`*5p!XE>&`_*v3nU^H!y32-R2LwNK z-(k_DyJgtO+qSA)AlvwBmVcHdX&6!v7Fn0;m)(O0tf+D+$5}uS_v}zp|-neSXKH zslWRkuZ^yq$GQ>1fltwLq)Yjf>t)MFy6NGs9##*t`5Xs^jf+YNN@vmumM@GYc><-2V>Y7st!#{_8SAIuu=zWa!}7iC-~;my^-^ z8uI|9{gQu)R-Q1TXxxJOWHwzOjPB@YJA=yda z;)1Xiv|_{x>~_o>*V7l~4_sO4t-Vyrrher&mpmw#!v2TfN0>Mz@zvy7amTQT$W~|S zpk96D(syUDW?V9n)`=M)?0S6pNoSFTk?r23qcG-T7e2OyCo|T=T_9gCvy7&^4ClM~ z{i71KeRoSkuiic-IZG|iV=`C8A}MiJ_DcXA1^z^_{?gtV`JnTZ(e+btz-yp5ayl=|N# zMm?Ack)Qu^abpWMHc}5<&2PEQ`vxK>FFf{-POI_L%iZVB30|E#&7D))Och)5r1l{0 zCw(<60ZELHaU0WWl`Rfjsoq%!i_J#u2T6U#FIIf1y#xg5h=Ijyp}d-!uTfIBqS;Hx z7oV7!1Etk?QrFV>9OL>8vIMR==jWN5{Z>e+aL_+?yceK2_L^s^opoTgU&=B4M3kU0 zwliKH7>L9yohWkm9J6>K6Y~(Tw@qS1rlqT^nbqI5;Wm(QaaB^8vUj^-S=rO&TsF6H z>hnrPOziiDTbkjV6e*^hC@=_1c1`~46CqJ%hf%bBOyvNl(cjSDBU1P3rI_McQ@Sa``&xM zyzl*R*Sa6C%jFuJ1DrW$pS}0vhBS zz24m)a|y045&Ul2mytfUJ5}L$I&U|wFw@~G6AjyN6!>=k^M<8mI>!wK#PzzN(tJ+@ zzyt{Hy~4`64>9Y%YN)9RG-bfbDsbIlh3vndUXsQGmSNwPz0jn6-H%!oUOB2y@5XO| zqpL5;yqU++s@_wu!qRu{Z}h9zuR|=8axJtAR9RFfg$3OLB{HOGyr0l>ex~a_4*Ol2 z;Ozj)0+FH@&PGPjsxnFr$Z_fPbJMLzL7$02MHVzj+xLpF-?3qvgVL?092;Xd-I@f-j`7TYfb$cMKa$DMXgzuEOxwxMgU)TM#enLO`iMO~IA@QT^e7}3d zlu!Ia==^bUFYl8;l~kdKN0MUqw(;&E#BIL%AD6M3qSz*2$+LMgdyyYpg8EoZNk2`W zO$0xK#RziqHP^1BI1SAF@Gg=q&Lxv79?Qo$U$`3eNiRk89_duu4&+mIBH0-{^yE90GM@dAsoC3iU|v0rXe{M5U$r`Bo`hyy=kX;K;qU5+ zm}HVgzL?B1ae^T$-o8bk&w7l4GUICV?e?D^%bV68ORf*OOQ(LA^wK6A@1EVF5VuL2 z)Bc$Y412TZQydXJhckjz)pp~zo7Sag9@A>XD{gaqvwAA!PE&IfI}0mcAHM1|KKSvN z=GNt=E>(xu(k0m5plDQ8O?BF%Q_m;;?1nM)Sm36ZVYkqs_H<{W{m2VZ%QkHnr#e{OnFL0kzP} z^Gix6$0HxTvqpJ)2qav-*=Z_Xzwyeo;cNZQpA0>nyVyC9P0=nt4c@yt-kPhtLNtHV zJ31dOm-yMTa)Y(|eCBbeRHJ@meTSBkos;U+9=YJ`mW%zJXAJDKH6(=`-TVZX;-tWS%J*>wJX zf~`$@tR{swe&+nDv^s*U{irnqa5dAJmKv8$o2rTw!5v#Y;nx%RxzEi6K^)xf*1)e!EUGWtP= zwGCCGzzOjyFBEG1?C$O^MCw#Gy{h`E@WLSUMOO6pwhdXn6PyQ6lVl&Y}ztoBdL#Y~9=2i$*6ZT54y~a-?f&8Yhpi zbQZ{B*1HW6&yyeceUXRG*lkvBN$zj<<@mQRqkt5SRFP z2B(tc$!lM75c{N5(9`=|xgw06F)q`xzEL|b^Z28xR1OJ3+$Zf3>YIA9cwVl>WNiEk z?2FG}?q{u%v{FTFa6hk>qg8dxeDKxO-0}$#W-66NpsJp~4+ml3Pfdl_kw^g>)~k^o zTZM-#{E0ZsD42pVn)4HS76x-G!P_Ogg5ZFU@7Za>11sxdC&g)c%Nz;(2vL&JnOn7; zxbc1cy)l$sF;Afn>5yF6xir2b4<(q0@X@|%_l|UDyt8(B^uFnoM(-3ifVtRp--$H? z)Z24XK0h-M;0YMn$jRttkXSd^3Y3gqTcj3rqjc@ek1w9;sj`bVHSpe|Hjl$Y63GqM z-a}OKzEgs}-3p8|P4{t-2SMw-G-({pDVp>)B~FGW+_4X@TGwfb zjjFRdfjz;wh6+g(sbv;Oc<8Q+fo;IIUT3tR__gZI1%ncFtJvRUXBLM(B=Zn=tCpu$ zdwE<}NPoH^XB*o=b@J&O?=p?_+aDH^O%2+6VX)6An8U$emo__E=bP^ydK2bUrU9|e zm+{+ZOk1ib$)Zth&5_;z81*J9A)w-W1Z>I!TTQ##;2Y?mq8tmzGMoCm87Q$En~HoSE$x5cA>=z zRD?mp0F)&BVAOpv9l@g3|f@Xm#PSX6W<-u<4&q?+(gJnCsA-v%&L9Bpxpkj+k`QnkiE$?Z^)b9It+cTjW zUaM#B_DeNLg6RY+t_0^@e@IGP)m@)gj>*~sk*o8zQ1+(fkIDA0tKaq~RvQletv7IA zvb~>iK%h`-^4CQr?R}x=!0Xv0!L@q(W*^UP$MkWPk?jW3v_#jl8v@J9N$jVl&0JgL z&A}o}UQ@ zg9gxF&9{FIOAE<3t-{8)*sIIzf2SFB_hb7hwz!Q8pPg)ozM%N*yzcxngdo1@u3JN- zv{P>>NyO!_)4*55&a_k5fyydiC3rfwBFydP4d_q zuTJlFr%FkiPA-=_^Z4usd){*O`FhJIyHX3dHqo^k>Rz8VFz)?sULVqj7Yn!!8mlm% z{RzP!YsX=3&t8@L{#K!YhnSI>CR9oyBO%Sx>JQKO#PjD*!^q=|UjViUA^Ly{MC$?( zsgR~=S&r87!P}Fh&v$A5*86eiY_Yro8;LO0HT~M%th#I(2QM9H2BYK`6lI`6uddDpk`CTZMr(P63|6e~@ZC+GPfhX^(WVPI9Di}Bud;8v z+Z8N#I)t<++4`>Edb-(7p{)K;7ZCbq&XF6V_O0d@amC5WnNOG@5YxcRyLTnN6pX zhWoH8k0zZ8=bZ2Mw7ktOGEibiz!hb`wlAEnF9QiW$5f0jSR{EA-VD*MZAtN8OjNkr z>)g}m^I8cPqx(9%0Yr79=ny1|rBWL+D(lU1Z7kC#tSlwh>vd)25(>we3g(z63*QHA z&>&Lnzf3qGU&(V3z45-b=PUL08nQTY$pRar6Wn)~OKvldJXz2U$>OB4q8ner5IIS| zwTtEP2~`S4_05SPitwAQfi3+M&YL!Zc+BhB&u0<)9>Vsly2{o{=ny-Pbo+p*#3dvl| zRQPCqvRPPu_>8Hh1O8rDj_c%YFC05rs&#B9UEpLYoeD_;H$S?uPxrvd9Pa!rq6Slg zJO>dxDp~JdWYwOAW*&_&+NQ?*eNuOcE7Y&VXC&1V&=Nf9D;e(7=K_M0&C#ua!AwpNJ&qYcT z3Whrd;pIzvqWAPQYn+4HR!-|?2AW}5L;|VoE+U7EEi6bASP`xQiTT{z`Rqu)K4i+z?ohC#XH7h*Ryfcc(cghUCQ@kj-G!PUXi=WaBU*{%a5)Y23AC2CZ}?e0cI_1? z74Vcvt2TwfV+IZ3TDDatTUxGYijXH_2hA$_V?HzECg@#zk1^>78V`?-SXfwA zI4Djiq;lfz%Ym`elw%Du3NrLYDvP;q&EW#wh~n#P(7YUWZ&}%2`HqIW?P|eWH??5N z2VW^Qa)ml8H~w^6svJrf-4aF!+Y%5rEHRz1B3Cnvdg~V%3$S1 zJcl5jk>F=qOs2%oYKG4}O7C%CRzqcL!ZU|yshf#HrBd;O8QU_4^L{OH1~&?@3CmSs z8TOkI`Z>CWeLQ0=CiSPw$`Dg`bzS25AjwK4ThX-Hb+Qk(4OzolT;)@h99m7zO8Vkx z2qpg(X$B({jAKjiyVLlCYWth3WQBx(kKb8Z!tO++$;o(n9$6R)hG-QpmRC@M547JC z2lc@m_1?WARf-7_!u!~2R&tHj2Ap!(_v!ZKzMC_PqkJ@k2mA6q`OC48gp;I>H@wPw zAaY^okbKHG zsGBXHPs zb9EZOJL_Ph5^gCV-$$2YG5buWZ19dK^))mI#J`?f?5j3mhjf-CX8uoPEb5)(HeNP4PqH#k6$?*>VwW(rO5TOi3JQF#rX;X9ByLrsb zUA{}s_jBQ!`}ugKm|RyONk&S+}=g>K4Z+z2(%8S$oTp*=r=i@~8Dj=c8{8KtsDy-yEtMQGCRcCk&bPNf*4dmJetf4>Dc8JvW}a0dF) zoD6-nLOx#XCYQGUoJSF-yR46_oEiAKs%voQ-)^V{lxo$Roov}RPi16tLo_E|K@{zT zW38%$ZvMUv__=;|8CH<15byiK?G}6pJXikh4~i8aR0mOMoOj=s;Q*BTU9DO@O?{bO zqkcZO|F%lEjKZ*mi%+^>A4<*C)Cu>&*898=Yl7b1K2y~~+<0P$V_Er2_TAI-5$G}$ zI@LRo;%{so*JmiZ=W}3+fsIEm<9NyN_`d(UmwJkwK{1I&Kb;DOA^-CkFI^uN#TfB6 z9AediMCqt{ja*6JRF7@sjagW0WP=}vA!cSr53#vjs*X$deS!uhCLw}p>3%D%rg{@I z^i|;whNpZ-P8L@;+phm*xSN?gJ9bHq^GnBK?4n#;*4cl&$~+sO34pFP_xb*!3*zro z(xoc?@{%aPl2xABA^Yo>kEGzG3`Cq0uk;WloRhsu_Qr&sTFW942LuAGB#+46WQn8i zPb2Lgi7$;oodlvF%PD7{E$DRMyfQ}e7{3bMhISbC6UDxjH3Yw4vy=fb!*BpwS>?-mx}m-v7myOQonx)Emw( z<(NXloiH@b+%GUlFEj?zFwqzVVO4oUkv4-2+3d6*W;cU78Rr-7 zPm9n(B{#-)!&pVA4#q)lxHlWwn;WK3Ic973rQNLHpGh|Xk2gvTd$J)vnZ%;9 zC7MgWGg~t39fbYoySMs38s9Yh6vi6vVhY(=w#`H_!A~zA2ijJA@lc9KwEpmi;kvU; z9y*i^28M{`C~3s*w8{!=C~?U!TS_=sOG(UM6er&)7V$ju)Vg~@6X~)!wq&DE!?cG7 zP*6FeR+Kqn5le-Ig;v!_(N3jVY*q1GJhE&;36@GJ{#T>-#ULn({ih@B?NyqrfJ1Qb ze%h|OcP|^Dm2_ebgbcK_62SxkFbmXxZ=j*7+I7|6s}oD5W@F2b>nYKtGsU6#-4GZ( zt;b7TUQ$)kl81LxR8&m%7P0*@EAK8a9kp_im&fld!wR4m7SaSC{Bi23pr6!5H`>+V ziw=RhsbWJK^+hfIeEnzbrWF+-3Eeokw15kM{{iTNo2IMXqxV8Ik!!#c7%7zntc>7a z_JrpQ3|YXY%@T(TdGqu!glaTNT|;Bw3+GZWtxuF_F==EcH()I!B_#n*c~`iphsPzb zcVpvGIIqNM0CY>RqxEEoo?u9(tgP(&v;>$X0FWi(oXIKk1-hgh9q zbPft&-Lb_e~gnaQWDlL~whI+~~4L3hy_-AxrD_|Mr_YJcfv;pM9 zs1*;S3*Gzf<_zF19zcL4k`X5p*oH;YOMUNdg$6LhglNpQ;!U+`mjD-Rf>=Y>VZH?| z$c~TfAs|Lw05`8oX<#N3q^qk-u|PGGi3AG$1Gg;)nf0wT*ZLJ}N}>1f5Qui*Aq@!$ z`Db4RShlO3YH-C)fQP%kukRiN*t&r`8h9F)##ArHMK2=i9k$|LMi5#1zShbW8ZdwR z)(c#TEpR}+Yw>k7FmqSgB+}s^5QsxTl2B6s_5m0Lf*=Wi_Xz^Q;+PKbXeYmP$ZT5> z!_i_TNy?>!%CeG}L`c4Jq#DmtNH1-^^#CvhfYaD;#wX{>ZfLm9OZV9XrczcC?&LlI z?@E1P)C%n0cC{-c=>rJ>!3LbTKTJ9Ws3Q83`Fin$|rx&3e3E_9we2T`! zsAW>P9H4;!aueY{H~a{oBZE`cVU7O>BM9#R@EkNTR+4f}Rsf3I87WXPHD!d1jEwx_ zT>v93FnglR^&IQ-SyjXdnL>!#+q&^AlYrs)Wd3IWHUSM4F#I082NV%~{aL__OHKz| z3cw@*unKTT+P`U){{vz)&y}hdfyZd??5g?t@U{Dsd%#``{NN3rv9TyNkBLQvc2b+Z z<$>QC8w-U1eIu;{``9!%gq%apW2N9-%a#-|CPA- zhvAJ83%Gg_aJS|F3f(MVsJtCUwJqQTNgVEUP07&SL!!!xzp5($1h{nTyMNFzIN)ha z0QYJ{%fao0+ ztX&7L!r>=gl2AY!v0v!{zM)bYe#d3^wNz=sU%-#+3q~RE?E-d!2Vj!1Cs+f|H=t0> z0JAorKheEbfg%E zCDa{?KrT3+qT8;=L3b)5HFb7$Au*9Ww7syXC^R$_U{2Z=nAq9Pw8m_B z^Kx^0##An-AyMJEJ_1<9EG7Vw?{ zv4iNFJT(?IJ3G4>W9#sOvUcDl2M+_d>YcQ{UVt|OZoM2Rb2+Gw_!1$ZWuZE8wsVrt z{?>xE&b-M6`*wOZbt*D3eq-FOwR zUX1Vt;|Nh&aq$L%L@X2D`M2+wk=rU8?cw45BF#Man1 z-dt0v9M!=7Q$N;Xbx#S3pe3@VrN%#ZALyW~f1d4SsgTKBT2X=gJJ0IveHN)80M8=u zr@QYD5%aaLbD3Tjd=vl8S1;S~vpHV4pu;b!XW@IYr=u?+Ute{i3PVDYOY3nVG@hIM zFr;YljYAv9R)<^)d_8IFu@?`ya|r+Al!iB3wrXBH5vJ+I*ISWz{!Gfp3rc2Zp&q$8 zI+99%_j?5@rF85AoQ1HMfAfcCipvfzrgqVkC|Rq9$> zp7VnnWy(N#u@mj`S*jJ>-j{{TL?8wH15h^($a>2nLbBA@aT;_*BxIn0ljDOjHA6jR ztbn)=`^?%~Wof|Wu&Lq_r+wvoAOzOm{Xr9*N;@~3UxsmUrdqrd_s6}t=Z~DXM@;|j zD;;hCPQ#w>est0%E)r_Xs^hTC^(2F?w``WeJaf`S%XPLjr}iRf;J1hS{QQ=%ykKwH z3hM(%hMz&xJtUZZ-fE5Yl$k%l|0ssaezBb#E8Y*R9b1`NCKV1KEl_z}U)%-ytbv$$BdfXsYU}qyyL4lIbL3zrR zn)mLcGqZY4ZE6RjgaW#v^k=XB@-kUgK<~Tfc!WX%8)uHza%N`qyU5oZdwlzaW!^cZ zO)s5>MxG6^k)*BV$t8~D&G`k>BRu+ST3Ny}oP3<3&BirF{m=XBQx|7Z?*U4GsDDs$Ab)FCBF_X3arR zbD5+MGP*y8?+J4>ZpW?Vnga%Uu-e35W(CpoxR|4x!Z=Fb3uMtS281-y;BWbOcs2g` zhDu0MD&NThc3R>IYHlwS_v>(;(8cxZgZHdFqj1y3nvCk{*{n52?9+tCv(xG0Z_}5) zuLC{KcEC^6(bH3#F5JoIJi8J~+lZ8Fayo9j2trKo*K+5HN(~-ADD7XWJ+J5{SRE%7 zovnzH#bRDr77C$#daerKzUYh(;OoU`erg83Cu<#ZXnt$89<=Hb8Iq7dSd!Vx2n@fx z^e@U)Zf<9x>}Y;weL7~QX0gt@TnoF8sAUDv{IrYX2ewWx+4rXQ77k3&$#~aUK%VQ{O3n zzFIV}trk}u*--Bus&3$QXcXSd?=TcQeT^Ps)^xLZG$j>AA?(^(vNMHGJ#BDC15>hb z@R<^>cl9}4DEsmF8Jovd-z)6XyTjqh0a5L==oq)${m_X0jx4hS`y9;NqbSAl z#O4x;BG|uZpnfe7)V6SV7~(fqI-a+F!b~7~3x%9F%+~e4NY$@4JE^u-_k93S$rHAf z-vYVMxVT;7_p>YCZdZ#qnl3g&6XxDuC8UpSsyr;7swllNW~E>jD0NS;BdxL>PXoPI zV6Y&6U{iJ-r#QWr#$h$q;N6Mx_iwG^EX5T6Wvmpj^gfN_`SX~Y#=~tD6ij^n9{5W` z|AH)hpwDM?>tG$P00jfV#B>VPX!A1&GxNv6w%{3VS0SX5cJc0+fzR&ribM>*TvFjt;rOLZHV|n^~)Q0nK&*)1|^B(eLGkN?(*0-)2%uss{-Iv zk#9a2Kj}Em()%j|hHspb)PBSHzd zL;_oZ8ZAX4S`YQ_DS+}Pb_3Q1@Frr zVQC&XTl+Z2UYDH^Zp!F)CVJtxA!xrhed(r`(}Te#mGcDIv*n=RV>5YSJLwG`oRn!H zK;UKFD50osEM%d=C4!NE4zv_7lA7j5SF?wM2^tj}A5DGgxs^J|5O`c*mM|=SGj)$P zG_aJyORnf>O4sQooNwA|iueZWcuQ3Amh#<-T0ueX%4<^cVeW2|4q+6`?5!E205wuM zqA9^jT}$Y*>3AUy1;v1hrfG|9xdco;AX0-8R=Z^w)S40KA$PKp2`iU zDBkTlD4;Dp|JoZg(<^%hj_zI!Z`R{quIux?buheZDhzS-G)2HDc(Ri;imwYtFN%Q< zLQ%c$8P##G8Qv?aP11Cqkw$5SyeyA_l2jjszC!yZc2=vWIISPbl-(<{w2QT_+RhN| z?JSiZN9mN_G^E~dx8;X_?-nP+B+0@$*nDl*XOD(%OmiN#Q3)uTm42%z!!8cS2eNPC z(6uvK=N%5we-#PUhsC3tps4gD#CT_3IZM5rU%p8$Z}`W4@wlMd#%bqXv)9oHDN9`8 zbPp(JIcZOV^O`R4?tI5|esSpg@h}fNP!W{(mkQ;fgM(dOZIgNVX1%t4{A7e7 zj{yVsIvIeUC&a4s~Z#zGITPePZbQU zA2VYii5hwE8-Gd;!qG4ZC2bXU&gw=f*pR3~fzZ}R5aF%2}i6Vt@9sEVT0! z3Oqv$Tcimw<+!C&DIl4kYTS-jV3t0`OrR0A>Wqvfq(jj$C!y1M+2zrX{>~q9RJw#N zDV@*)g@8aK6Alhg?xLkj7mr%PwIf1@U6lX!Bt#p_$Q?h1KQgD2V4?cFA8nZVpimueIXKKK#ND6A?zUV6{!q`r;GfFGH#I9Rq4B1X zqODzP4v9lt5V84-kRI6p`P8&Tr|Y~>1j8u4`A0^%bkvJ=cIZCHqnj7^@)6+*SWi!A zC3f=utqeqOf|>|Fx4HMBG(Z21++ZS`95HFp`fFvl40EzO@@TfhBL zYYN{k#nsm-OKec_6Drw!FO>UkQxiT^+1U=ZBi?^p_<{n^(mRQdJr}wR#dbq`wOsfA z7@ay6*>vLuqobwku!~aMuTOQ|nDdcGLQMugO=&SU(}qgTM6gW6b~rgyXUU#^+!tDN zos9F&{$T-|cLGk%w(6yC@zhKQns6%IKy(qnqVP{RYu*gvw?Ez#q@%#Um@a86!3@0C zul9P_TlUJXroE?3`oaM71DF_nZdYpE!c*6a9i$}0CpgtTt-}`qOFpI*D*LAQH{O-- z{XE57ctTc^RW_3u63SiXNR-MBvTr*M4&l8M;A07R%fczhU9UcYCI2seEJau@ihbtN zz&m_yugF25?reM1ZT{JF+p)!KN_)yj4?mvnJf{?1z1^PHeN|ZCeAb^jRjung zTukd*(`o^iVpvczd4^8Nd-|2-XG?x&nd2fuB%8<9$&he;;m+yc5{=DlVP75Xc;NM| z($Z7c&B>c9wK;rh*Dan`_B~zQJc+}6*SA}LjH+EWW}W)nig0m5W$T=`d`~KKJY7Hg z)6J#ALgIga8`}|hNab~trYGo+W)S(>(}4f2#l~)`c=O(M6?F-vt0$s%RA)(`)O0I@ zk3jT$Y3$PC$?E=R1Ow@5Lxp*%h)2M}pId-V9`}CyGEGpkuBbC7!EJpcNA3zWH+D-H zCizSr%;(DoKs^QIA3zWLH`Z+8bbOCJ(rx6+!CIxw&G00xUA@WjSL=^vrsmepb+XBE z0$i(A6Fp$J^6RqF+DE^>W1+D2^kZ_pzH@idp8CoPsq?1Cf?rYTj7FXG{DlgVGmuc0 zGsivURFeFceABv=d`F(9ab;uO8e>A7?w_5WpX2yc&f!y*Ywow;^`-v;G|S<i1zOjsPlj|aOeeWlr0t47zr0|3B5$5&&r41a8>j!LxW3Or270fW z@4Mmbv>_b?0!08hTr;$x8>4OQK1N9_79=Zs1>HHYqR z22v#US&|w!k|T-8$+a?>JR&w)aYI5uq@-#m48Ki_wjc0hBiuKCYi7YSxxGCt%6Dzn z-StMH+Gg(XY%Sf3Z2xMt>AE!`-Fs-eVfATDZGH{8+%P7@bA3L!wDEd|&%o5&bhK9M zuYvkyM-fN2S(XKSve1PxTxx3TP$a_YO3=R1VceEa|4&X4=je!iiyDfFyn+RZiU{X} zK-|Ku5B#gQ)zqZ$Y`GFa*rP!B2Q*U9gr6Q9=GZq~qUP2TFZVIxR;sXf8@GTa!OYCO z8f;pXIG;LcgGykzf{2LS@uyNzy&sD=IcUv$CmLpVH)|iYldV0>`k$Al3Dz{*>~626 z`+8^tWsA>^<%~a{K4;<^9D1Okv~LtKA00Oso1N@-Lg`4tqecpTILUla4vdw`5 zL%s@fjeKr5jud)-7dcm2^6k63-e}gY@5|=z>wka7OBMBX_oMsKkI%f=`0(RO_AGy7 z^Y^!HJ_B#d@rWHz(|im{{~LcY7$A}+gQ%|Q#bC;4M;#2=Q8nVL(`|G}`0DUEOrgQYp>6q9w--}sse(4Fo`wdNAoyU{EE6Jo$f{c>5&H{F%Me3= zCF_9p&FcMo*-vd}us;8x42Z4joTk(vf3Md%5;+<{$v1r}57qCMFd-HHI zZ~HZNJyGq`G{%_*=bt)fqC%$AzmVMN9#5X}+4sZ@{0PSP5Z*2G_8flGQ6~x$C(MM& zW}Z)8BhtNVw#$k40Gu4mK$CUu!~LKmR%~3qr}@TQ@@++2g8ik_QVJg_kr<}e2Yro) ztgI|0;noH1dq;im7gm7K3DRV>b14 z1Lmj(e}B?6Z?4f;f%(m!975b|G@&3ElzYvSQYW?W4!J1 zoJ$U)VD*sI%A+zuo&Rq}PQM1=1;)H`TT?^loRHCfpHLNREh=~t*{yc1JH&Hvaaw`03AzQ9hj6)~N z5lQ#y9g`tEXOs?Bw;#O<{32^oRO#Kb~$FC(*z2(lcTG$`|T!I|3H?FbkjbKw(sc9q&_U%!5ZK!PxQ zviNV7eNPx{E^Bwvp>Y*l;CU)_9-26N9sZ z&DHYR(~$b21jUwtd{q}77AJ|*rSiu}Xn9D|-rR-TlSG!_G|s7>q26UzDTwdeWR{_CW)@l?ZGiYE5CCN#Ii|#kK1w_cURf!zU^yX!8q*0P>^q%}z>oMFrD>i@j zgnKZcp;CbUSyPB6Ht$Z^i*+LcnXi4>Th=d22_br)W~x;m9w%)AQa|SFeQh`Td=kp{ zdIgGl(CDaeFQ?fld!N9%Bbee%?|O?ilc0zI)x|N@K{^DXT{&$H%#QEz1G{+|X71E0l>M9;JBOvsZA!-3vQ{pq4JTJY?@ZO0Dk>kkcm zw^r=M7yHu{op$6t<{>}7+x9-Kl(Ocimh<#+WrBJDJxFyVnJGNc@#xT8 z_#$6BEBSOf6hw>@C^s*C1rz?YerizPyeIiMYF$^TQ*XN7zKGYB@A}kf;59opnaT>| z6TLbYY`^sJV*X}1!AEp7q4>489g*>DJ5#=NkY7)tBT@x`nDwx;W6s*#Y!tr}WD^Y< z=HHV6C zZ2fORXxoN|$LVyyRqyd-Y<*{h{rHc-%q|NUm)T-0NI;6CmVsv2ZO2E6l|tT`;fo{_ zWj4xWKshaxl!SD=Mpv{{=Q)xH+3oHl=89HoP_4c@Hq2d)Py)&Pa3Dpcf;b)?rYD{p zO80{G`TFs)HCOI+!*1v2NTIZtWCF+rNv{e=Q-8iHmdWNMZBxD3dN|vFJvIJ4-)kSW zbRUeV1m{za>8Wblqna5<+qWyrtoko~$0Ka{Yu%v;+nI)q`CG1-iR%OG*F)S~*m{C+ zG8{rN%o}}Ae$S_cELs;F+gd&Oqrv#w1O44QGi$hzzvo9DF%v?|mz2wu;vis7mMv~N zSe>eQubZQ+=Ywbl<`#6n-VHK=`NR5M>NV%l5p^`$NK?}_)-Pv;@}>3@g=*ow7ww(T zPj_Za1S^{JYbH8-=OWvU|Lxjqw2n$e@BS{8)b3}#zC5OkN{zAR%{ytx2E)v88-u`Q zcc{3q4BhW5`NwR)e_`Jl_T5@-_R(uD>11q7;n}6Mt9R;A88FGA5$(~DWRj9GWekfF z=u?EM)j8?-D3t?=lfL-ETDs5M7Zm^U1hCs$KH4y688Js8A%^Dva6>*4rY1Rq)b)gEkqZn{AL69k#f)K4SU2dyNuz;Z2=Ff z)llwSd3iYnKuhI!uZ1Es{@OUIBpN6ZMk4e|lD=)ThD%Z6o~wivEEtMq4J*0qriXSG z?YIVro68SC5kHl*jAVGomF3U}G&Iz$;BP$COJE_VA-HiNAV4EH7ZUL$g#3P*ML)Xz zjYXq?$LycSLD|{`1-mZ<)I6zbD?%JAP^co5I8@4=-A+cX<}*PqJBrDSxbknalM{ny zMn7E~Yw{T_r-cdr@K@5!xAD;_THmGaV*Y7T80IFpgIcfGEHi~)15wX%vtiV~uL}R; ztL)FGtnG&Kl>Z@`al8Cd9uTv0e7{A7>9^(5$V27#ZjXLjel4i_)M7{xjaBtYQI_mO zXYQBb;Kj6@_qmZsbP7!^md`>oX~szuNE<_isz5GAzbF`Uwfj^@6YOCwjieHcNFk7@ zBN^TAiy^_Yhq;45Xd@dnNEIvS9aL)cBJZ(KQ0xCuv-AB8ClV6R{PcbcSNs2?gDmKR zM|>lrdWnS#IC7I!keBa#@B$SBEF(9Ave)abeuSd?as@?=)K-xW)iMr8^}1ZlM5bss zX23o_J4S?Jxk>K#$}-|`m1;fTz*KR3jQI%v zGC==~KWD`0b*_@1x*o^IkneY}r0b~_x!0890tU&C692W^3nPXua_0$Ht;W+}}5wesn7U~%m~Rx^|j zbF!%Vgw+3cQ(E}PH)tP_zPnh0K&0`88`%>eVrbbsaIXYOH000^{&~}9j}hEG2GTg6 z(G`@T7kh)BfLnw~8SYdf_a!1|XzRrMlA<4`+cJ7sX5IN)YjC0L!qRtWii)5($LW8iSb-s7W&Bs!5&*%%8)(XBr$U=z^&li7BUITsH3TfM_k zsXpbWKuljLMH(KcM;uHj5yUnHt+tyhdqs+b>cx#&yv!c6Am%+1l72aEDhrXxBs?Co z(LTBdfmYYI)R`AOZ5PAXzCALJ%u=3T#EbtR8Le(fNC!ygUU#!07&&I3dGKd2^C6W3 z`sgHZ2%j(|Wm;4@gGM89+dd(=$Pfv?{WNJmQ(OopauALI0mXfeuyqB9I4YJEFUd%z z?&reQLZ2QI<*1<{_3HN9wQ=(}8>s}LWE)G7%j}cvu}viEcUO0Uq|)tj%CP`7UVH&n z{8?l?C`B7Ts?Cxnl6Xc$@#M3Y&k?V#(C!Znst7}YjNB*~5;a+EiqV#j<1cirHvMHW zQ3OH<0WI8HRvd+!7T2apc35i>2Nugy_c(Bc+){!*2}wu2^>7t0oLD>>(L4-o=(kdu zk9ck3IL;nIBxaP1FXAMCYBcrxb05p-MuUG`M+IGMc@beNc(d1LfMz&#Ia);0e|r(* zMsR&|mA^*fO8HV%NF;~XdOR_EUFMI0o>6$`6J0ni4skVmhDF`aQ$qS!l$CsMKQLA_kiDX)j9`crj1NK@@c9 z%Lv@`jz!{ArUjB{rJK-?id`lO=AwHrj`Ik{h+Wa8#CGWSfer_Pj(kFsmUaY~oq@0q z7@(Dv@5I6i9kG9=!s~|+S;BGD`i;{AA>Mm*I4Gs@qf<*fWn?zun-WBbw;gux|Da9$ zuk##msS`mU_dg&d#Z~_sG2?&zhW~%ie<%9<-`DBu(!qIR6V}6Av~?ihN!_pp3z{EL zB8m==`~8GNNfAeWyr18k z+R{ZQMv+P*E<6hTM>Qc-w+x7aX{neVLC79c{b{*I5+R<5yM2rnm$9^wB!ql|pl_*0 zf1H#sO^f{bDRZ=``IA{=bAyPF=9@SSpTH1oKbt8C<6Yhy6YLvP+S)snNjgj^fHPCa9nJr zZYaTZV8=`B{3T+HbI&mmw(^%~5qLC*9 zy)NN|Kwn|3icXq<3E*Uza0Pm8Tl+m zL7MxBS7;D1)Z2=;pM_{2V28!qD9vN=;5)hceC?nQK^G^KK~-Qq&KiW(@%qDLLWu4y z!1E#W$`|AOM;Xs>=(UTLwp3z^m#xC_k)H-F;L;H=8Re|k8ERHyIFLb>O4%Y(cl|8B zD0o0r_K+3QA2g^@ekdc5)rU0*^M%TJzuX$+(D%e8e6yaIHx%W0rzv`|cwIX8Z9MrM8MiaL? zCQ><=a{lR!b^ek_TdIfzFtUzn>;2tRd*}8Df`jxDVmVCd|H9%MW2UOhD$D(lG!z~E z0?;m)SVu`16F5Hm!*~h=*^Ihj2p+voS(Kqn@5_n{QV|*;<3mSf?j~LxnDWig9k#Ul zWg8wY?)iA_h1=`9FP`WreF&y}COUH!?>Xmrc#GWg>F*Rr5hBOz@Aohv&cn+vnsUPPa7py`|mc5fXatv4?<4)>hR$tceIk%=%g_%0)K4 z`>QYrCxkKM`nRH)kAUF14jKRp@yIGTjm@N!eDyO+4FRG1)t*(6Z9GCT(IGVm7mosN zRx`;D&mz>Gh|Bmx9=<}w!gyv{R0}e{VlyMOLXqED`_s^}8sTRAoPnf`Jib>DDkEJ32 z$z%c*$*e)TK&Fq6?%~tJ26UN|p5hR`ry&I3R}%c9$~qaQKhAiC5(o#*l8qDqDToLP zV9^VijrGa5;UL9er(uvmWs_qvk%SM1S+zS62;Ypx$Jq<1RJp5&CliT*tEmh7-HuS2 z2bT~1c=Z_J>3&gbqIz7n^5AIFdGp;w+z*+CjcX_-(!sn`JcJH2EdXa-r4J~uIADkZ zxORxr=S&NXDUhtsjo33s`h0hPdKGhWq~4N5epY$1nCN zn>@rwGELAXO2F|UQW+EZlq`g&_2gM0$lQ>|^{}a{RK9}teae(UVIooJ12Is9G9Uqi z2?mEwCW*-X0}#VLL8M_r{OOQMD1&GIbTXw`hn;5z%^T6AlHwMdTDanMx zrNqdnCpZ$zOX#E;J~Zc=sv_DxV_RcoEuCmMbT~*T?1Shj8ImZ2xic4+inp0h>jDU* z{b2M+lph@!A=$o9776K;2>rlLLn&&0zrD+zWt12FZGS&4@5;Ss(iN<#?p+8(Z1)U` z|MGQ%V&~x7=hWgBDNN| zL4wyR3~B|$EmR!lK5S5|VLEsxvuSdRVLz6IKIblB06%3*s>uIMG - - - - - - - - - - - - - - -
-
-terminal -▌onboard/03-demo.tsx -
-
STEP 3 OF 3
-
-
- -
-

TRY IT OUT

-

Tap a face-up card to auto-move it to the best legal pile.

-
- -
- -
-
- -
-playing_cards -
- -
-
MOVES HERE
-arrow_upward -
- -
- -
-
A
-playing_cards - -
-touch_app -
-
- -
-
K
-favorite -
- -
-
Q
-groups -
-
-
-
- -
- -TAP THE A♠ TO CONTINUE - -
- -
-
-check_circle -TAP TO AUTO-MOVE -
-
-check_circle -DRAG TO TARGET PILE -
-
-check_circle -DOUBLE-TAP TO FOUNDATION -
-
- -
-
-
-
-
-
- -
- - -
- \ No newline at end of file diff --git a/docs/ui-mockups/onboarding-tap-mobile.png b/docs/ui-mockups/onboarding-tap-mobile.png deleted file mode 100644 index 424f4546cc59f6a50cc377343dbf7f211462bf28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31740 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 - - - - - - - - - - - - - - -
-▌onboard/02-theme.tsx -STEP 2 OF 3 -
- -
-
- -
-
-
-
-
-
-

PICK YOUR DECK

-
- -
-

CHOOSE A CARD-BACK

-

- You can swap or import more themes from Settings later. -

-
- -
- -
-
-
-
-
▌RS
-
-
-check -
-
-TERMINAL -
- -
-
-
-
-CLASSIC -
- -
-
-
-
-STRIPES -
-
- -
- -+ MORE IN SETTINGS - -
- -
-
-
-
-
-
-
-[1] -[2] -[3] -
-
- -
- - -
- - - \ No newline at end of file diff --git a/docs/ui-mockups/onboarding-theme-mobile.png b/docs/ui-mockups/onboarding-theme-mobile.png deleted file mode 100644 index a3fe3413db39183bcd440a3709f82827cfe524cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34959 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

j64!IIk&<+2(hPfMa2~v%i zav=McdZYLX`d=RSalSD)phhuN2?y(iw88WWz}-2H{(S`(N{1dqEXSEOR;igRE><$wTE3_1_ETo%fL{ zxH54x6ozLA#PGH^DT5zoU&Q@zqDYb5J#JjIZ&@B%DeyR0zpdPZ`_Vtl!z|53`Nu?YgW z--Rg6EoXvAl48q`g%@Db(v*fz0DWeWM!1zk%D8j+^X<+R_>e*hFcrB<8I!>O0hEfm A&;S4c diff --git a/docs/ui-mockups/pause-menu-mobile.html b/docs/ui-mockups/pause-menu-mobile.html deleted file mode 100644 index 7f50996..0000000 --- a/docs/ui-mockups/pause-menu-mobile.html +++ /dev/null @@ -1,212 +0,0 @@ - - - - - -Rouge Solitaire - Pause - - - - - - - - - - -

-Game Tableau Background - -
- -
-
- -
- -
- -
-
- -pause.tsx -
- -
- -
- -

- GAME PAUSED -

- -

- 12:34 ELAPSED · 87 MOVES · DRAW-3 -

- -
-
-SCORE 247 -
-
-STOCK 18 -
-
-MOVES 87 -
-
- -
- - - - - - -
-
- -
-
- -NORMAL - -pause -
-
-[ESC] -resume -
-
-
-
- - - - - \ No newline at end of file diff --git a/docs/ui-mockups/pause-menu-mobile.png b/docs/ui-mockups/pause-menu-mobile.png deleted file mode 100644 index ff5594c857253f84aff3e2eb5abf7f8fdb5df03f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32319 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 AO8@`> diff --git a/docs/ui-mockups/profile-mobile.html b/docs/ui-mockups/profile-mobile.html deleted file mode 100644 index 482ea4f..0000000 --- a/docs/ui-mockups/profile-mobile.html +++ /dev/null @@ -1,274 +0,0 @@ - - - - - - - - - - - - - -
- -
-
- ▌profile.tsx -
-
- -● SYNCED -
-
- -
- -
-
-RS -
-
-

anonymous@local

-

MEMBER SINCE 2026-04-22

-
-247 GAMES -61% WR -12 STREAK -
-
-
- -
-
-LEVEL 12 -320/500 XP -
-
-
-
-
- -180 XP TO LEVEL 13 -
-
- -
-

▌ unlocked.cards

-
- -
-
-
-
-
▌RS
-
-
-ACTIVE -
- -
-
-
-
-TAP TO USE -
- -
-
-
-
-TAP TO USE -
- -
-
-
-
-TAP TO USE -
-
-
- -
-

▌ unlocked.backgrounds

-
- -
-
-ACTIVE -
- -
-
-FOREST -
- -
-
-SLATE -
- -
-
-MIDNIGHT -
-
-
- -
- -
-
- -
-
-terminal -~/root/usr/settings -
-
- -
-
- - - -
- \ No newline at end of file diff --git a/docs/ui-mockups/profile-mobile.png b/docs/ui-mockups/profile-mobile.png deleted file mode 100644 index 1986d1ba61471531952eb4949bad9cacf2a13c9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83684 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
ngKfnpzVJB{f^KP$s}+YK45Z zKORqIG6U||I~Y!u3PZ7YDw`Q_$275cI-9ZP6(yj8k>*lMAa4bbqOD!{*{&-WfC5<)ZGVam=wzN<!?{q z26NRpY9Lc+X?hQ3BbP#x7D{R|9fTkg8cJwmJT4d*&2@VVlPNu1OB#C+%f}U9a}?JE z(*~Pvu337f@7cZAIT{OPGkGoCDFnqVL0T|XD#eaXcMW&Un1BDJkkQ1No3^dF+5DI8 zGy4{486d72;bgUx6D<%MTon6=g#@4or=Mw@S5Ddm&Rt$~2N_wM@- z`{fa4sk~tEBEO_BzxrmQO*VY%wKq*D$tWvcebtpGPMijzANkkA`ycp=XfXKtTW?P8 znDGAlAI{!$_kZ5`kJ)?e<(J~6S6hThOE11$DCH%DB9g2$B$0Ba zh@eQ+8(A_d5)!K6q4dr|SuU+Nl4NVLRH5G3fD5Hr5-HC^D21fuslgU>EPzj($0 z;dE=RzxSYrzg;rtji=5%q$w6ewv<|b%k~Yo@BHfXh3~%`YH1nu#KbD=_Lg)g7Vqs` zM8ePBlow~N`P-;}pmYAWUnUFL5yS9H(%p;a`+ex|od4}tO=h{c@=W^ri%&937ku^k zCw}Sc>RMVY7kU`$mHLmM$)32D%r_ z`}qBL1{cr!?Bfq6w6whU>WhhpzooUKQZ4l^nkPa*gLScFe);Lg&CRXlYH9vQ@6MaP zQYc`2_Ri}QC!`WhsbabC)jO}ZwY3|hzWw~;P$XcfSdtm)=$ND`#YJ=H1fu~}Hou

BE_ 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

&jP|3Vr70YCs~(vTTIVi({Ax} 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

JN?oxli1aEN@acX%qdvap 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 diff --git a/docs/ui-mockups/radial-menu-mobile.html b/docs/ui-mockups/radial-menu-mobile.html deleted file mode 100644 index 878ce7c..0000000 --- a/docs/ui-mockups/radial-menu-mobile.html +++ /dev/null @@ -1,271 +0,0 @@ - - - - - - - - - - - - - - - -

- -
-terminal -
-
-
-
-favorite -
-
-backspace -
-
-diamond -
-
-spa -
- -
-
-
-K -diamond -
-
-
-
-
-▌RS -
-
-Q -spa -
-
-
-
-
-
-J -favorite -
-
- -
-
- -
-
- -
- - - - - - - - - - - - - - - - - - - - -
- -
- -
-undo -UNDO -
- -
-redo -REDO -
- -
-lightbulb -HINT -
- -
-double_arrow -AUTO -
- -
-add -NEW -
- -
-pause -PAUSE -
- -
-bar_chart -STATS -
- -
-settings -SETTINGS -
-
- -
-
-
RADIAL
-
-
- -
-
- DRAG TO SELECT · RELEASE TO ACTIVATE -
- -
- - NORMAL │ radial · 1/8 selected - -
-
-
- - - \ No newline at end of file diff --git a/docs/ui-mockups/radial-menu-mobile.png b/docs/ui-mockups/radial-menu-mobile.png deleted file mode 100644 index 3a40f5ab36412b8823a864c60eb2f19ee290e6ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23113 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 - - - - -Solitaire Replay Overlay - - - - - - - - - -
-
-▌replay.tsx -
-
- GAME #2024-127 · 87 MOVES -
-
- -
- -
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
- -
-
-4 -diamond -
-
-4 -diamond -
-
- -
-MOVE 47/87 -
-
-
-
-
-
- -
- -
-00:42 -/ 02:18 -
- -
- - - - - -
- -
-1.0x -unfold_more -
-
- -
-
- -
- -
-
-
-0% -
-
-
-25% -
-
-
-50% -
-
-
-75% -
-
-
-100% -
-
- -
-
47/87
- -
-
WIN MOVE
-
-
- -
-

- - MOVE LOG · 47/87 -

-
- -
-44 | -5♥ → tableau col 3 -
-
-45 | -8♣ → tableau col 1 -
-
-46 | -stock cycle -
- -
-▶ 47 | -4♦ → 5♣ on col 7 -
-
-48 | -foundation A♠ → foundation -
-
-49 | -foundation 2♠ → foundation -
-
-
- -
-
- NORMAL │ replay -
-
- [SPACE] play · [← →] scrub · [ESC] -
-
- -
- \ No newline at end of file diff --git a/docs/ui-mockups/replay-overlay-mobile.png b/docs/ui-mockups/replay-overlay-mobile.png deleted file mode 100644 index 5d3cd3544c6f3ac27583cf48c4980cf23ca74c62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27241 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%0DV1Udel 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 diff --git a/docs/ui-mockups/settings-mobile.html b/docs/ui-mockups/settings-mobile.html deleted file mode 100644 index e507b37..0000000 --- a/docs/ui-mockups/settings-mobile.html +++ /dev/null @@ -1,258 +0,0 @@ - - - - - - - - - - - - - - - -
-
- -settings.toml -
-
v0.20.0
-
- - - -
- -
-
-card_theme -Terminal -
-arrow_forward -
- -
-
-background -Solid #151515 -
-arrow_forward -
- -
-
-card_back -Terminal -
-
-
-
-
-arrow_forward -
-
- -
-
-color_blind_mode -false -
- -
-
-
-
- -
-
-high_contrast -false -
- -
-
-
-
- -
-
-reduce_motion -true -
- -
-
-
-
- -
-
-crt_scanline_effect -false -
- -
-
-
-
-
- -
-
- -NORMAL - -settings -
-
-
-[1-4] -tab -
-· -
-[ESC] -back -
-
-
- \ No newline at end of file diff --git a/docs/ui-mockups/settings-mobile.png b/docs/ui-mockups/settings-mobile.png deleted file mode 100644 index a7ec5a9ae69f47fde5e0731d74ab478888abc566..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23970 zcmYhjcRZDU_&#5JCu9$tEj%oODRCl1-8oLN>q4 z`}6yJ9$$Z0XWsYydR^CZT_;LYUGWM5H35PkSCp0HwBhGGf?y+f*zg;PIWrynxZozM ztc!<-H!-I%iy(A}vYd>r*Xy-RZ!ewu^QQwQuGP#A-)bKGU<&)7`J<{%n)Rs6p3lCD zn1!uu+fCP4OKbA0dC&F9wwqcC6r>~-gvI(Sl9E3^u3Q zwIVmk`1pa_4MvG|OOw^j+JHhZifr-2Dsx)rzkX}q`URGd~M zeB1}-$W4&Vu{YnS)GlG4&JbBsWtVfEri|NLQ885-xr^M4ZSLQ;svfr&+#Yj{i4+X7 zd=R%#wl9jQa?V(&-}m${`{#3k+E;KzYe}a-h$&lLVwr&wk_4vo_BME9XwoaaQv$o|T{EMLo5*~H`0sBb+?Z7ri zr>;TYZt|5o8T~PT>M{0$Xq)sU@4~#EjcqKXW6rr0v%KrmM~S)NR2r~%LL3^5Xxkl; zoMm}uEqPB{@Lnej$BbC&7x7u^d*JrYK`>@fd%(1LsqYMvMeAw3^y^ES zSYTTanTLu>DMsMw^uutX8)e!hfv3x8Bd4a5`LOMyf2VC-uWsFqh^OIGXG_Wy@#ht| z?|U@gl$4nG?!8`g?w`O}nNq!{o2l81+N>WhJuQ9G?hy0qOGddSix&+_((iXUvAB(r z#@XD_MnpW7h+o&INiGxR5aEh5wCzyg#=hev49~tLEzV%$rZ{)9O5Pw#xVdc3R~vpk zef`T}vT3T6csOsA3{v|0`gV>^Q0Uvt%ovL*0}lANyJ+UbdUz`-+J%*sl|G^9-Me=> zh3e{s+tIBz2i&R{J+=dMQ!E!H+Ji<&G>7uQ2BWEK2E-RmA2G~mMH8t8NM=s zE?cc8OJc7jj!e-A>!7m%N5Ukpo2N>2&wZn&p9yFj?Dog;QV*84TmS9_njy#QIk$s@ z0=rAj%&uGY)n^bi?nO$`JPVPjHN1ip=oM~?pY<4(R9A_rW#4i8^?tmLvoTM9Lo)1Q z7_s=yW)wMku5NTb8yVzBp_ko7QD_0`SYs|`JnYU2B}Q2--H#QFcpY}NjmBJromAmD zECi#?R{|JvG^t`0BU|3G;SsdWnK3Jg%bnksC_Q87T=cLEdx|pZm zM3cr0T;tQ@hCFl}0qc3W>2Xn$nx``)3OA>TSIisyWWk%!kBiVL^O}-$py773i%LE( zD{FCXE_Npm3ay;@eB(m4rFRyZhvU?TfnTElg}!?An$z+8wv-yRl+!7;QF3W+2k%kJ za)zJ-4q`^dML~dtkVU=d8j z%gP@mhdnE7YGhQR$+AC#j~gl+SIvRh_H%Wu(k}iftWKZsd-pJjS%VCxoriE>d(N4v zlP7D*k~d8uZ_Yc*oGOHFJ{~L9q~<}L5=mG4!+`6e_TR^5*1lIhK57qbHU8*qKJ=^n z_9J|Gva^8oY}p)}?NKM=+S(^lhdg9ae%1bk-H#3&_lPNOPc~c6d_1`P<+bERMA-L( zYWZ0FbrBRYTjr5~jWv7VFwq**{aZuo6b~`uPvfV)qBg`B9N6rEAwDANJHmuqqOCtG zw$2)|^U#pmwea?CDE++RF8n21>Jnm5eOLt``5U+D;c^VU%an6otG= zqkFFfuX6skckkFxXnA_l_b0GVkT(?-JQ5Pkxw*1An!nveW4c2Ygyps96Y!8(XJNdM zPrbcR;3|$AslSi(?Bq?q`$JC2>E&`?xQ*+#EOl(peyF@L0aFsbW6ZOcdWBHg9#ta9 za|H&3uH}jlg1r05SckqGucD%@o+*iKBb@e}zpoUuCsisv7=!*NypI~xxW-;Wx#jy%se>l99 zrkizbK#<)tT$0E`{#!Z-LjLc;lSu^8xnV;QTu=E%^~Mv6ghye$Z*A&s$kLVJt`I7^ zBX3l-!s6=9+YyA37{Tz`aG+cscT^G*BL_y@>};B(LW~@po8p0COuC<}wy|HRV!OO+ zIdQriT>mkerr;;T$5(2@-f+OiDM zA=gcsXs0V}F*mq>@0=;-#RvWk4I;z!_h6@d?)@__lRk=HbIIFsuKvjMOg6c|`ueZ& z>-p?^ddICYX#;`&^UV=UlLw9zt z@$kINHqCF5HLKTjQhxKEb&G`BZ1d5^w&ApBQk+|*djvOPD0XNSUJMWE95$7(zeSXi zbTu@V%fDG7$WCUHxJ3S0_d@F|B8Tm@KgR{>^{X!YcP2 z-wF1e_F2wbI?bM04KVjv?&f1|B)-14zn|qR_%StWEHoB(VpWGhlxl3$>9bqCG-Ca^ z`RF^nZPn`~VFbB5gdp3!4BP>}qGX#c2+qpKDO|$3hoTX4&y?PI*-sG@x3)^mZe4&r zUdS3Gmw}74@u;Sj!QVlwSo>R<`o#YKaBpkaW(-9B-ZXx)CyC2bPxH=qS*gvfwf}K< z5LwXPncz~wovG*^wV~VQ^u>O?zs2J$@l~jZh9#t)e8L1?FI93VlFC~6IBJI=Z55)( z%d|Axi?>lXo^%t3?=!eqrtwx9oDfi5i)8y3P@<}ARB^mMuF?8u6SteU`(c*94oC7B z)@BC{=A*SKvyx10D)U7OB!~i!hmaieGUjZn*S|b4XE+@}aFpk9uGfsIHXh+8b3Hz7 z6|$ko6^&SLxt~4LY~`yEu<>eO{O@3}1SOpFU2T*8@4zod^V7y& zr#}D{zYKG#^n$xNn#a2BW+Y#pZyoqK(`z_5IAAs^T!iC7_sC@h;#Pg(}}FEM|Xtp$C^{M&JZKc4aQqy@d|n30~70>&>&i+>n0qk$Hi$hI`kQL z(wMR*q83{F|HbT|gmt2qQlBH@))I#jtce#89>PloJKxfDihI_$^*Gv(<6;Wqmqk6M z_WyQzebw^(ZGG3V{VDA+-=hYqw|QAQ5qB$JogBNg&Y<0li@xZ1ujq^aBz*SUu;gNA zZf}}N31%St*hBqE_t?e>UrEKrGVRl~gWofMDfa^9=@TUV5Bs1Y*4OVZWe0kSX6{Y< zmK$(Ly8iq$^>jvU$h|e-gb??xqvM~Sy-D}(-3ya74+uDYtDK~A?_R0i6FogWbMv|J zYU_*GGCWkMJCEdSZI}N{H7)g}EqFFzFc_!SlYb8bPp+z;I9{IpS?Bww!MZDw6iz*Z zVw`(}aVnRIVT}!`3<)`t>i(am4aer)(T&!#)8I=qR04Js@>C-1EE_gPEv(GB(-Z z#;p44MON17YI$pPcmI>y+o(d_LP7iGlA0g=<&tl|TFM{Os3cGZn$X=VmfRic_7{80 z%9dcbAsV<7lf9>;quXK8JmLB)#`;e(BZkrEq}O5N-tOVw3lGU>Jto#)Xs6?%!-w83@pC996l-k;_t zV_da{oMcfS9445ORW4t?e3c+H2~MT`c-8HDDfZJJud7Qt3fVn*QmBz#1_;2l!I*2z zt`-S;{+zJE_)FE==VbP5pOxZf-@P*9hQDFgObu%7u7;a8G&ICZ9{#?^-AoZBH`|f; z%d{p(^$zM%(9ZbhJF;KR8dzCV*t=R!WS=P&e8mJzP^wTI&a|+qWDy{A-2_OGW@-7u zHM{_)TUvj0-%S&9KDiRyGv{qust16ks;Uak!w>rp!^64=61M=jiaHh>p$fk);`;N& zt-FE_Kf0>y9UZyi766|dx74IAdDoNmukQX^8+RKkGr4ey2qj=Qe3|wE?&$(TjwD@$-NZ=FV*HVlJelBtixu*& zOZs_fX=&9tPHAgv58DaIkUXl~PtuSS@&3ygw}2yq68GAiaB6M#+M-9Kb2NDftNjjK z>qSG%Uum-F>gvALD;cr#FgL%2%822)GlK`36|c(aJP!@e7!51v)O)$76*AP z?oB2cG%xH}Jq|bzij&)~@)%aEk2ZF8@6-!1{rzF9+0-8=_A8?XH}A!VeQdaUHtEo3 zEJ(H%87_`OYf)Uq!x5*6S1&Yb@jIC7jIi!|g*DdoSDbi^k0tqYO-;?0OtHJY0e^d$ z3Bmx(rl|^Ae0l-@yLR>J`grwHD6!@v;5 zSXf>DTnyRR)b8&NPsH@ZPm?3`p z9F*}?cd$p7PmcCrwfZ0ZyAmcVn^RFyp~;lwEuPhtV#{wYJ0dd0aO!&YHSOt|_t`~h z6|TCp`UKLLZmVkV{mnU|hy^%J!*;bxUotP_U<1wg@Zn!a*k!V)XXaF?n2}N=q0sg= zm)8^PWyQq+Zn^sJq^T}1FY~7LExXf*xV~*{G%Os-6nm=9mds1I;4WHjS?kylDVLk4 z7*Bca+Nyiw?&??)BffsU{{8zh)!|Tek{AzQ9|AHvK0YpQIV3optDWK$2wD(sHVr)7 zu}#I~kJtqsZz-1QO~C%)H2Sdb*Rr-|pRBUGg{E~w37L01Gvj%co=$Kh6KceC)6?>a zbw|fgV!@n>mJ1PjSyJ*Z&LqBDRZBDk%=i+kT2mEtj&H+za~6j6sFF{BgUy@ve4$>6 z5u0{dI4;i?nD=*)T}#e|?(SlG%c}Usyi6E^?rM`r>8@Nhz^%;+9^RD$@mIR+z@= za_7}XB#7NJW>`v)$bO6*XK4L1rj2rf{K4*qb99K~K8FZ}&GCv@ycFg+YwIx{8u+5IKjd1l?@oz|J`hALIMuHd0ux^d$(o+rq*&3xC$rRuqJXD?r; z{!OVB^DReJuehYb-=Bie9><0Lx50!T3zjiP&d$9elW%Mr)trzmG#zQ$U-6B-qZ|jS$#9xn!cOVD+xv}EjvGUT@q;$+ z%XM34vQty9#VP;}3J3^@r;$JrUD9=cMT8qFK2XhZgCGnzQO&1lg}h*CWLNN*`|fW( zHJZYc=s!$U;WEs5hnwQGG2I2KX}Ov#eOA>599hCHkF>SF0a$4ASRIAl>^RkUQ!3!K z<+zb!gM9f|M5lSl2tmJyO*$7B7mcJ}y=nQ9uzKN;rKRQK&z~r%0C5x%@eRTE6&0JC zbDdCiPY!p7>}pl=|H9V3fJ?{%4`XM4!uW-HFb6g@rE+Sg%X_x_V{6}r9qYIaYl=R8 z6zAsVrXbi|9$JEjz&_Mtp)hIkyw5_Rl3xXg;&5kq&e?#4!gZHYn;gfydK^1gT3-I* z4(Tu9ILqx968Ito(9>d+jLV`y@Aa81#B}WfcN_@bmbQI3P$?^7pcJa>G!$1#V)UIL$UWl;E zyqqwoN&C*;-XiDn!llN6-o?Lf-@b(=Y;$L6@91t03EJiBYAtl7|((l#a%_hg9LdzLNX;Dr0ZIr2@t{E8g|F+&BA1aa()k<|G!mjVCTb6e$SybSIqbjAxDzkl2pZKS@h>#a5 z`Tgm!cD07dDwYdr0-)6zlGTNZ@#S8PYP=gh8FC!V@ZeV~FDSZn7oQS(R{F**)9^q-TxnfQhMT=^KsmIJG}1yirNi!t3*j#HxFZ;5)W3=2FNjg+JR-Yg2# z0d`z|e!l;|acj>e|1YmafF&gKT7X1YH|06;44>Sw^~4i}7P9}o*>l4QK|VOmWPMkZ zoy6-3$#M)#Z~DDKn{rZf$&R9vEPLtYrvzJDTb{)WNSn*#aIp@v`s;eD{`5;UUTuzb zHweSex6`|KD{0nQfVUr1Td4`7dU)RZ?)|B@>OWjA%zkr_r(N9Ta;y<}sN>_~1E*2U zV}(EP^f<$*#Tx)Bejrs>?1h1E1Rg8J{$i;EsBf~dA$qpUmvKU_+z=$e(K0n9LW)XC zE+EIN56@ghGim)cv1CYgvqh8=pC#?hl7QPmg7<0BHCAC8cvTh0gjo@5W#qjsj|lCz zH&5qxO`ezvT#tRz-D)<^8!MENJNO%pVtadA@i|ojz>tT9wvAHV= z8YuKhz*!L11%>BSIoiderAB)bnF)+Y+v+aU?c2BVJ>^*B4d3N@s3%9N;)mcxbn-0U z%hB{ZJy^>2|92hjLK}E|M_vn<-|SQT(cxjaJgs;%L$XR}`)uIpHm&gN!CVBb<9OA@ zo}sbfVZd5&aRUw(QeZyPva`r@QXuQ=Js~&^a2OL8@llm z>pIdaxW22)Ad4oGU?jBUqA`oSX{uJ$A`%i)R@L2w z$L*c{tr`!csZTnG^d2AL$+3TXt2&q{@&9+>|7*-aJr;(o@#MiaV(GeutvAj{IBu{6klq4X?#`M1} zUS5u_OsbTeG?@A*@m59zfg;-b!&Nul6w%g5kXq3o^B5c#+ z6!N;eyQyQt&8fo8=gZwtXcv^)&{svWbGIkw^i7k<>ox4V91A5xW|Z=_wyfGKXB_=0 z#hr7XFqj*_=VfGM_^I=4eL9}uU%YrRL8;5CI+jMF5!%nl$jJEkI9sv`Te9c!H(2d< z!$n#WzW-E}l@lgRe>&qY6t{42a4^;M z)cV2b(l*qN5_s`neQ9jT?-b){02$zh<`fl07A%Kdz6PYZ!l=#>HY=Z1A8?hG>E*~7U~D{6fa>1S5@)W8v3t&zhe^|Zf@Y=v3t0?3XQaMY<1wZNOj=Z>D#xA z!Wrz;v9cNDg+m7*Ly+O*4BDWG(E1PkyIoMc3+o1(;^=25rLOPfQ~>N10R0}c;WDl_ zZx0@g zjI{CeOH*ZX6U`JK=zI?3y9(+Ot*HB_)!ozmg?OLl)7kb=Aaen&GYeaQ$c&l5DRb*t zbOnni6$5sRo{3U*Cs9e9?*M|IV&R^*UT|D!xzk`C}S1o1Tj^b z+9>pvxRm3haO+H~|B+{dG0}xvv&A;)zr0OZC_08*QHoj=1KXMj6}b_qp{x}6eh(v8 zahwE=X#AcUm6JZ6`S^4+s$5dpPDV~ntRV{r8!LoP^YlAymcdtY&(ZF)W!%}|I-xyk zfz!;^eyPLm2z?zpquXix*V0r+C9laED?XCZNF^N-+xns}PI zmrraIKlumFm)CDpAEW@4O1-hbN7z}#@qTZPonH-#R9|1;zGQ`Z>qlH`s&K|$FAEUl zqZfqtXUPKf;+U0!XT;915DIx2UzP7!q1HhR=GeiA#PEj;=GG?aGwmnLeHLkFk~ST@ z+H^SiLyl8N*-x*0mizKrDgPn3ID$iMCwi z>IW0yW_RuEL%U*)RsBQBY^T3Jd)=14G`lZ<0|btar!CiI%el*s%*KiRfr4{6q7!Zv z0F@y_t$a+8p47`tuO!+0RnwnFz>cOdl$`H2@N8=hA9~G&f$j$~lq+m|xarSe9vXm* zDRc~I!LtP!j*afi+Kgo5m5t-p5Yb9x3 zYy>VXEpeNEG+;_fPD#N=rv3M(z!)Oz{I@<)XFJ5SGdoDcqFPYD?fBhsl!DM}Gl`b7 zkVrzH;nS0=>RIf|;@FQm3(N{rY`UyfSI`+mT z#90`1FNNbe2vcc%)&?oH1{~))AGFr_ZLIlM{lB0v2uMhrfI{`nh99cBsO!&2^g`5x zGHgYg-o)DolBU|j(+8>+kJGfcmpv4nn@=aP>h7ti^u*mf0wJO;P=P)Hs$YkLMdFVy zJm#&H?j0sh_V2{qc7$R-yb*lzF9A1n4*cR9P!%uH`Z>?GVS#Aq`)>_^izT2DV)0FI zSpIQgA=)}RGu}&?2@Hx>*47sguPj=42#CS!p1z^2YydAt^dH^?HLET7LKD;-IN?y@ zXrzddH}&;iK+&L(Uctd;*Lx2jcB{@^bm~X#lfeDCh|`m!a?@t&VWYF#lrdwaMs-id z%34p>ouIAspE{Co2E}?^@s{XE6HAIz*4^RDyG?x&|C25q2?`<*pz#2d@?T8WM-XQs z04{}QF>H?2#7Ge3ugz@HOd|E?Ay-|FpP|q|p5Qdt)&79@RZvhMSU(T_WAE!-;{I26 zp!L3f{rcz6pZi9lnSVfs$>y{EQr>zh`lu`NQ0G#u;W~TyN8Tr+?+dd78ljMHrBLSj zlQ3By@62rvs4ZLbQ{VZRe{&kT<+wely0`oM2yjE$k_q(sp}mFQ7r|8V=+=GsKzX=% z_gzVe`33RYxARZ&?+~(cb6>;5nW%HJe&7irHay~3vX&Up)YSai^b~-nycY1Xg{>~@ z9WW6&ibo*)YrLC-(1#mRn8_SAkIt zWQx_jf8V$6=`_^{khhcr)AH}f6Hsz!1NP^@ovpJU{|oXMK&*}q@Hp!&F)3Hs^?-DG z!JV&Oy}HG8ZNEA0!^ApV5Kc}`lh%OdK^x<0t5`XD5Y_pp2sOmFx{fwlrM&*E4)^QkW-u-JzRCKp9zY%L@1@ipMc&>y%&=k8yovGgvfEW z;scKvI5|rfA5zYPj2fW}OhIY|x=+&-QH)Tj9y?i-S5}emdN0qNsnc^1aqY`J&!c{tyq7Ip(&iMHFhL+uX^eKP4H~#oxXwcUAvG&QSI>~x} zEU!VdG(UE9r1UZA|G~Qd^p-dHX}SN%b8p&cTgCQLcvdjf@yTUij}ZzvN`8}*11_$R zBtYsw@LFT?TVy0trzS~ciZkcw+cAEF=oSC2-HRi?B8d=qUgJPR!{r5GFz&U;2?jl- zFZ84+$kD~p|DZsjxgX|EI%g|Pck&S0QVbH!3dhmYliZ~FKTv05lqQ?hj9boct3&;C zL57YF|1&>XRNG=Y&tn|NyWZWU^v3~#p!R?J_HACpl8Q-4NQi-ffr_w0-z*DfG7coW z$Flj_9vjn{1-3Qx6j;h~1zf35HfP%v@<<8Je?EBd0CbJKLHG3^wXj8@d#~;i(TEF6 zNj)qdL&x+u3%}0H%*@W7X$=gFN0Spp`0o7HGB#e@^#SomU0q#S8K1vsWwaE0v(+E9 z?Aj~4Aq}GIQu9M=7r%nm+H&*<(ni3h9(=GL2NB&FMJwjH2K5=j2TF-AF^l|a)>c+3 zjES(-{{H=Y7*WlU@$%){K^vt+4sPxZc*cQk?cy3pOEhL^WQvYFs{G2|Y}SsAv~4Y* zbGB)6CCsS`U@_|ZT{c8Rd8l1djkjVCDzJ@``wOH28-Yv!rpm51J-6uRPm8Rjfh<6w zYY(Dxp&vGQZ~sb6OvIHa7mhRHpe!6pOHH+|HFQB0vZ!#S0#UnsjmvLmP!S0NpP`_z z&<(ZsJ1?Goqj2@&z&6m!_h-?@T=CtH&H*cC(X_nI7GyK@*ZpKlPN7sQ{X+_Q&_-Ex z3OF9NOfI_vJcP^8%&&HrTN~JJO!sT`!kGl1QWvIpv*-GMVxI26UPH$fY>psR8*M}33Ol_Q*#@!}Vn z$-rau21^bI_xL#22J`%`;cvQm|5OH^EapG`a(q~_{afbU2?M=X7I7F@Gm&(7aSOAA zfgmTk-JE|)OAuz}u0DB%K+>{`15?FOb1V3W1V@GhhcGOph4rheC}oU{7#o}!9@P)5 zI$s-pa}S(`=3ucR8G6mfiDG%%_Kn$5}qkwRc}BwHffUGLpm6q#Q zOar$g>w2`C-CZB%-Pw-5B&b|%Y53rQH*{7@D=Uzx{!?HYVJ&qy=7DfY*g2mSpO%)k zdqS(mlr**qVia#02W8BbIIYk!puI|i_wU{joVtPj3Zza$P3@+bC&!9Vv#A*s6Im2B zKXE#tusUzre7@!I6LO`b6vw(@y)@eEnW<^!Z523|mNGbXl6t`uBL-&bGYwAZul^*J zd;m`A0#Ee#sr_MpduIi%*N(kZvE-m^TK_O%>c2YzqUy?uU95r|`sUO352_XNwP9Hg zu6t^v@mhX;BO{tw_VMF!f+7to7gqov4amneZM0l&{$}pQI`7lIeZ079k<>zbHpNH% z&3!#^rfK3yN#8w%B}*$RXZkH%7y1?Td-vdNY+k=jMaX6P(F+u(qkrqZAcz3Wo@wz1 zWdoEehIsMB%*dZ*ny64lC;oha~c4yQMkIw>x zK|-_hwo(H8*$tZKyR>0Q!#&ffixYJ`P=xHh=DySe-Mvr5Ux;cO^z zM{9@IM|@1xma@jycjkCBpUZp~AV_QktZuzClj`y3G#V4MSxc z-oCvhJ_Dx(R!tipIFSiT?#KIE+^xsoAcJ~oi<1%q3cHDxmdjG+Q~LZ5d^j?ogB!az z8ZweWv}4`=S<;)m07kOPiFHj0z(1RnhWXmP7FBQ!>fiNQxrtw=2f@g$wrAjtcJZX6 zP@k90CZ)J|)=3b*kBQCOVt39mjs9E)dAUvT_`Y|iLd!~|q)K^_B`z0wAwWfa?!X|4 zthpD0pzDv(o~t^8wwaN5!hEf@8&`t&W7)sB*h&wPk~)7gDVe6i-g>Ahhci!%ZMV!I zim=dQyPVjDMdH;*Htag$2k%R@iMYq6hO2$jWhBeFq$8IhOY+QsgD6Zkb}jV$`LmgB z94UoGu4;hd^xunGME^!=3RJ;1FvjzU9j^QO##WRBuPehBg+B0WDY^N55{dFcA-SQ6 zZ&V*w8W@{9XA~?0SO#7sUN-DygU=sg|AsTg@(S)*)Gw|fh zju%Mra6rO>TWR7W3YGyR%nJv^w%m-o5n+X?`S8ILS}#0$s6egc{riu*qej)$)z)8L zvyw%5u6@Vi^u7?>2Dul=ZAgGglhmtgU?6PO_X;Y`^P6HHPIa(4dBA9fE;?E7aFJF|k}}u}8rj*cfa>xMfDs774@yU`^H~88zBp{O_o>PrZhRvX8cs|r z={Q*r319gb%H`d|3CE_=sw&sh;{$kS^a-GpaT?cavQR*}k(Sz&&JgeQk~e3~M`N20 zs-1Hc+Qohgu|hO~$1WjsiAhQNrH1!SOs+WmyF(bGkQdM@B_MFl2jG}`KYg0@p0*b( ze^A|HFF5v88SU~hH}}!R2M5Da%45k561^=5?g+YPg1Eix4*0H#EQ*nt8NKe=3i+Tb zYnSg3hEAV4&joT&8dY0eIkppygVfF5?2o`O*_@%}+`%H*9O?Uk_kyOG?P^5$(ZWSZW}VK!3fmn3c8jwauyYOiW63 z+0f6g-_@c}8v-8poU$tO+S~oFI}Mq zyTkMJ*c-$^xLiQ3QY?iWC%;3OCOthJs298%tZ*})Pdp%y_I}N|>$|&>oSyEpH7}pF z6ec?d@mB6ZnHOH0>5qa0cW_-s9p6*kC%LO&?g3zmMP%QlcL#hsv3pq}}o z+Ij%C5qLV)9INi4Po6w!HZ8|2t_&3pK-}lTc>)b6pqTex3y2GWiwYDSbldg4qru;X zk9Y`&z_y560HG1;8YqXlK<4wfQe(_t{k|VGev45VqWDzCL$fswS4rpgj=CRJO49{R zd^My!Kb0&LWCUT1%Ch7pU`E~Z^>VAYMXW)TF-_PBY3O}DVN`gM$(x2CX*!Z9IUW{z z$`~z*i$nDIAwf|TvwK*CaSL8q5nmJuJ8?o~(o_{la5{Msl;ps%2!qoW+Wtn4UdG!d zs(sr}TRTxU2ht>K)6Kr(-j_Nn;2Z)=H#RLAiLiVCvjUVc>}+h*EVasFQ8*HB%>;g! z-9R9AF^q!1t=3uA{8gNn`k{4TTTcRh-x^yO5kjO520jX#(hC;3|EHL4tsmBDo#~PG zhgpuleED*yP-AaxoILz{+n9HjK3g)#r-08B?4s%Lnx>{fr@-Ozzq!&f>PpuUP`Fqq zYs|pYpu<5a#ByL3^R8EcOojyFI#}q!t`aGOfl=a+=+?*ry%R0a^aH{uFL^SU#_S8n z-J8u}m$}oP0-*_&$$EgZU8S!@JQqsl~%sRC0NV(*5WshA7F$XXp}cturz zoZGSqJ9)APpv|tP$_dBm>+1_G@AOx_S7IcH=S9JJCM4I2rT2X<0UEcfd_8oG4-T$c<@L_ z-az$-?*<$SB+uH-Y>r`*-X@E}ELKgdN5#tC{{9WB5go}3#$KMjBCR~w;eyaHE?%Y# z^0|x)@MUHro5vg*G28ny1?Bbw{3+-_jhI0L5zXYPyvI<+jUxl{IfyLE(Csz7I2{Pn z3qsrJ;ui3&Z!@##eBZ*cG&C}53OG3gy+e4q)@7kb>g-?uB)5~@v4`yJ>~&5vG(-{H zCXG0VFqn(yP8;w(@E>^z-MY)Jbj1>fgT@?Gu>2(3X}Tk!6{mTx--_?GJi&^k2!gXYvN#fW&6Xkou~8!be={!snOZgc^bo2a{w-4j;USrPfhrAvKOl9h(a6`_M4{Vv zGh){udCKZa0QVTvHpz>`15fV%ky@xpgUzX`W)y2!#Ruy6>18=689-{GhA01xfMW)C z29NC&@4o~LaHwGPLnufo4ZFeWrT8;?*y!B2YAK%n6k85Th^U6*#z6>?g&(l>6CQa}mv28;AcAnFTB3LFs*wv4>| z`EU_C1;NqoYMsNx2Vg>C0s`mH4l?G$Dho)KfkFbB;oS(LFv0uahTBXMQVtq!juF;} zkGRG*$qV^fvVNS7fJO*A??!A7JV}0G;ROUXrh-CGl_lm+!xGK8IVlAir>UtaSXBA< zQfGPBl^D+v6Tkrbi4SV|+9wACfgppv7_nO)E6?tJR9sXf4AwBTHYu>E01&{Y|JfBq zjvLy(=-PbnE93k`sHlWQ>z9lm2t-J*B=AYFjAsF_Ha1bhT+Y+zlsmX)p%T3r=OQbPye0BI5!VwfF!CE^QZwaAcJ7zd@TL;oz1i0?ve(k`kj~lV_9#p%B}Ou^|DA<@u+r0`h#;L}!_P)Rz>uH>yY<5XeS%HT^Xt$I zAvT-CqC!Vf!4b3IHTmkIWU=&sOtCIRhqKCD8&HA==0z9ewRpT`8OdbGU)9GFi>J`x zdD;GcamC|0A?|9^9)sb{{d>hDD>2u&|E-K%#(f5^0jj*TRO0C$yPV=xq_u%ynH!4yStBHzNH&^gCyMC)y)koSuUqEb?4VC`Jt$WMQ1`y@^l)XG5{Y8#3-91&8K5c~bx5wjo+M23@;6l7SYB!Q4SUjhVbqloqYY%(4sw;XU#zws&ueJ$SuMp zCAF(P1Q-vm-m+TO)N;7Ojs(fkA3&%E?0%@_8NMc6vB=u)vkL(*3?gaC#LQfx`>rQG z@mvkw0~2$Mlm5}?m#k3uZVK9eU$2`XTJeY*9UV2Tcb@x|;q+&;bOH>q({bx;kgnS! zBSDR3THq!TVq#Q=fL`GcE5JoE<)nc;6gsTaJf<7lt%>}j&7%m?bFGu3dG5OpB={(P z$K4bI>`(~=4)VdGsJNvpUoabB6JjBNp&)Z$$vfT?dt6WhmaN>M4s zceWz&qH}kA{QYixVK1dc@D=4w0$M>ci0Is9px0%)`k7F%tAU6VUT-*1zf|wM*bvmTmEa{K|rGdVvu&X+qnYG*0e=nqkgEL-kzx>XfOE&RE?!sd z1?CFD4|kiU2(VoQ&L129pK|i`kk`S(E$h&F!TU72>_()NU@6_uAuoiOZ{NNsD)r&B z?JBoQu!4LNlUg);ZE%Q@mweZid-S|8Z~KwK{^j#My8Hrxl ze^TC@lAiwKaE5%I*DGt`dioNzLWlrPr;B#v9OufoDkA{1`tuPR0fGCade#;eu%XTk zM;J^zPjUfD^`si?I#!2yAXt##Ctk`_7qb1vm}2?3@>RQ;F!=0#2Z96Jz*TgMbs>iH z=1tq9%5zT;g0Y}Ifa@Wcu@2_p*s^>1$G@Lp>t8`MOGfzBfPZh_OXa$VKrkLo*gSb;3-)Dqj~jIX`>JO#aC7k-n-07XJ=WtMgpQ z(6R-U6-cWP+ku_Ifgz&ekuKJKL`6vu1{=WD^)En*j=7354{z*& znR5a+LC|^DI{?@T&>3nTGieo-&p?fjc9!|T!#_UugB%CA$Bs{7Nz2iLpo1A05K2?M zA>{b7*8;dQ$MN zFpD4)poqjWp?DynjG#8mY!upxiilkAIrM5a1!O}(AVEWnsiKf)P5um9fglVjsZt^# zF2FVlEB%^|^5A+h)LmxFpVappMK`DP_B%~ti)JP~c51Q$8?Sb{v~5$xq3LsOvZvbU z@V_6hovw=_>0RBJDI+EAzwH=949Lu*xK&*(E}LIw>!m>U&{ zdn_Y<69>KQycsIyL@iLT2Q@hhOZhI83pPym2$`0?u_JTxuuetIWgc-?j*% z*{YwhAjfN&9px4(>7?yQIv~JpNwj>yrQaE0&iE2)`B+Q2>et`gge4L0caoH`(f4iF z8HZqU3oN|vm634-SO$&DyBW`n-D(febwDooPoM|#vakiV zGNeqq?P||M4!ym-p}1GD5oqHu#g@ztD$QpY7dnHcU1eC>-%L3lj?K)vRBV!9Xfz|k z07fPU<>T@YX*Q`3Tg_@3$BP})4)>Xfvwl?0O@%Q~V9O@IHvV8PaLe(-1-EL&99UPt z{7Z9lb0K~B@$B>nLDCCa_vd4v^8&$mnad*Vj-x0C2;GABf%q*l?@dqlqPKlR*=Hp~ zMIyHudM+NfylAa_Et<7}y7Y7t#hl2lc*7dwO=1UoT02 z^(phiv|@2l*r`RC@RO!>2=4+-f}-pR0uE4mIy}NoUOqk{haWXwTl3H|*pokVx9rQ7 zjGTK>P>>mwzhnrNw~UMAF393pKGXbFEWXMmMYP|;@fngooji&3i=qe__ggYl7@Sm4 z!Bq0etV+5g63isehdg2G0Yp+0E{IW%EW1PJlBSk7juk|4ge6P%>6OepTRQ)Y03bb~ zr|{tqLV09cQu2_agU@KWw|~Q(PXG_g&J|w}dyr8{`hWeAbF1P!@48!fm7d;kH-IFP z{VSv{lo&(6*>F%{mpgY@ekK18(cfnXvUB?%q7PwO&1Luujp1jqH8(5pNA@Mv6y->8 zf(dlxCS=ZM891XOg9;cNoSpExoHoU0zD42<_bJv~0CQ#Qe`auOEYm)G4&^|*aA0~g zMmiFByguv~uaxtDr2qZk827D!B|&Ox&8GD)VJ;DoaWft>s-A7}fo%%;D`1k`$?w?Z zyng-q*AwD0c6*C6y#u^RJ!aCh!;^sQflKSRKAJj#j*MBH7yk07vM*f#^Qe-arP3xH zs`S^g2y-fkW2z{x>G3SvHs(#s5#WY??x~lF>X(U zgYDtrfdm1fbrvS9TZI`g=xGz{zr0&O!v_;1EG+E&GXRtmpRr#1Z$5eZ00JcU?_Wje zPDx*AJF%oUQ-0pq(@5v`y(6kO6Oij0b2@E~uwFzXu1T&W!U0 zyY3A^{_3+u6)2TekQQLqFN3jP$GW3fAS{4a%;P=-cD))s^PC?Nu@ZZekUqf=F=+B! zcN>rZxpLRXUl?Wj!Ty1(D=(%hLCFGKR7T~`7Q9rHFVfT5$fB~~UACU?mTxlHf3LWO zBFc-4Q?MC*=z6)e*DAH(KRUh&*xMi8D)43ekne!>K^)H;Tb=RS?uT=D4y4Pp@YIGX z4ItonyfdT$J@Q9u;2F?pAU81f4T*9ds=hB@Aixh^4D`+l?YO;MbE<#e?s2!zr!gv* zk2S&cW~{;m1U}DY&RH08UIA~es|`Wu7{EO&nT0KgOpycf0aTNy#0WU2cHI8_yJ0DC zXds332?zr7n^`a)4YRZ??Ch(wXZsQTR`B-{^@hVK?IlTSEsA_imX~8e1{_vY1-IQ& zL9^{30>kAF2v?wD+!d>V^9yh`I=AR-W_s$9vKEaOY9n>|k9Xksc;>j}({X)^;M-N~ z+`ez@&9JUwMG+=am$209c-kx`{^34YfE@7>V=v5z%#buMs`N7>HK;sGC2+s zGCC9;w^-+wmcEHEgxk|Y+ z*L~mb`~7~sp3legWqo2i?@yIoXZ&6ZgtuFAG@BbEx>X%rnTKK00gS#YiQB^F{* zy$hzUnD70r{97^^PtnXQOr>t%#v|RHQNAboFqHfRvAYw&VHJa#Q;GFM-QC?tia^SR z`j1TK^z3XM_qFiZ?)9O&LH0a@qzA_nN81&5_W?g+DRB`f%KTlFE;jVZPD`r<`s3pR z`O;Eh}tEp}TKY_VRc<E5wWgiT`7F3P4?NidY7f3-~;z< z%l+xW!7DYg!HC*c_MYWZ`2eT*t{Uc(NkJixIiIHeyROaxHLb0&BewuP6~Ar$_+85` z^qnu9-}X-y+vi-;GMHnti18MtN|D>{nm@70sybgXG`uum8Hlci$LqfQlq-t-g}&IW zKjI1=td2|l?L?+^E8XkZ1`>g$O+r4qWK2mbYPqdeKc|H%r zo$}ir98dQudC+wgNFOe7Qzdr5q1QXjNKGRJ^)B)95$A|r)9W>!^%bbpMVR74;9!4x z2rDkzMwzk>rqbink=ar)GhK`4o9JB_n?xoj8wZxAr-v0B(%JLn%a_u!vfCBmcU0 z+=d6if{n+T3r1zcsT3R1y}0c9E%{Hi?lh`cT`v*kiDm^o6(GZath(!r3g>a4Hw>ei z?=TcR6N281cceSSKqmh2mphgu0{r*8=0|?8E|!kXY83B!{8}W@>@3|7yqQe4Qm{Ti zk5{(Xtes@Ju&^MhYVQjoPy~De-`{#mcIo30u$nGJ7wl{B*%iuq=njyscj>tMV(&r6 zteFTg+<&r45-7 z>72PbFHVgUMXX?VjDhMwe8H~JJ;GGZG4}>81mT&x=G^GM*#$)8MVgLiECT8`ey<0x8CGmZ#$=VV`W!ZEC{S5qfhR zbFjaj!b`EcYkuMI;YzC_v0fdjIuXL!0cB-2n;p-mDiP$^E9m}oOE>BtrRKL$DaNo= zKF(C%@!B3KMb{!?O2P!-deO0#X~mv-{`D4=xSmpNb`O^(rj+>yQMjG+|I^E&&4^ze=sBnA!GiEy4KffnPqU>lX9($#L6M z-gt;zINn^qFkWeOl#^rE2XWF?7fayJoz~3hto!$~|NAfg`|ba3=6~L8o@>d;q<;dwD->g#kr;1_0HiuSyR=ywSbb9PDQ~gRJ>y_|XhU+JFFmREbcfby z6f3Z^GvfL3mFlpE_MO}vcQm%_Vt$*O%kP}a7|F$_Hqn zcjjKb%f_(PJ1a6=xhhVxE*uUs)3Q4(&ZwucTmh;oi{{k>mFGkzKlU`)DzkY&Kux-H zq`9E)bM3ISc{?72m z9cJIIC2hTBubRm@P~&Buh9tqK((dgamj_2zWHzj$I{=pii(*aI_~5RCZ4Wq^7IM@3 zBQ;(o3~2%jwn5&=XWTZw4LEXT?|(pLzCA@If3K#No1JZ$ehLtzAELeZ3GZrY4rY4H zIq^-Pywq`v2yO<+JdjhefuE6jh1O+YU?8F9XoQbgD)dkK$}s*pL}BePgYOT_Vf&gr z?E1pOLgVRo)>n({$Yc$ts45L#-p!u#OWT?98$#8Yd0p)+YmG!qz6l!3tGQ#|AG&rU zPA?E&Rl-G_pJP4&c6RI+&c5IPw5`Bs)uYQYG%)C!^bH7D_|%dmir#Gc26899-cGeR za6jqVk>*DW6AiyNCwjN{f4?&IOgyzg?O0P$>fD>2-~f0_R;4+)9e?)ngBh2n2KJxX z9uXk0TU>r<68VTk5*r-cAvBcuBgsaowlt?G*e{5ZsF>Q2#VMtZXn6R|kK2F;d8C9Q zxw_vI?GlyGghleRlIgPB55+(37P(6)26SW{Mcf^p=GI$%S4>ISSy}%UhE~n5T@Y&J zaGY_R^^u-6n&QWkSZHh zGu)|pV=1lYPE|i<5E=&Y+-&SRqEjnSs+0*ObDu7CjhzW9Ov}v`WOg`Rxtj8&zJ`as z-Fz~;CQ1I-H#hgl#31!UCJ|DGcZSE&C@h*)^ZC5LVGIE*WHcO{C5Ww!=WF?z{oG22 z^|U^;W88&O2z`0b3tbUX5w1yZ;cG^XZ4ep~TMMgGxdt;}YMlT(B6S=UuH1bcFFSn}X}M5$04oAz-Z zhgLHA$>YaRax2xWJ@l;+)JQgjKBc8`l||zpIm8--@OCl9Z%D*kD=R~w1}?41uHRJo z?)`g=Z-k!`HBW7ets4yYTQo_XQzDM#W^+of_4Xf&&-_~&%I6DVryzKx`}PrI-<7uy zC4>HHK(cM_#>({%e@({lR>m}u^=Ge)j9ilcNd|`G!TDsx+B<6w&E2*-i8y-rIcN)- zyh4^`Phn(K5yLpuQXxUji3k1%jy&S6j*c?x*R*$Z1Ox=+mPpokmY0`fF4nN{F~?Sk zaF#Xb=SVOU(QD2|GH7yIJ1tu233b|wzL=>&)8D!tB`aP6WS^jz2m%EG^NbY6iQ-*j zuc(y5+}xPgXGjF@3AxBeRp&=WM-79Q85)ULo&^P`x84GsvN+UwNn_tlEJ9f4<36GW zltn|ZUHmp^HDP?}qI_xtUISFx@u3^TUP7J&stgrR9I|%J;*QsBqEy! zV$sg<62|-#WZc?X=v&%7tpgSqw#1}S!MQ}-r%~Wp71T!+3MbnQ4 zal(}6a~Ba+k=6J5>yj4A^ndGISgl*(0PqL2`_EC{LqSntF^mP1zQD4KQxzKxrJ|FP zzQc;(y321nM+6SGc_sRv`~9P*B0?UP&9>M#X+BJ+^)gSZEO+QGL%?JzR(smZ#p!{x z$6kT%%LxV&&?;J;1ozcqyIU@@t;t4yOj;XMfRZkZ+v@D(Qj`Rf-uTpCjJ@4us26B1+rmv-!u#V#~GJuR3Jd}alh=q>VUMi0(sZcnb5xAJ!W z?a7sy+~Dbq<`LWJmRxCu;KoY8P(jt@azDM)`xxB@lH~2%Yx7gIV@yn@01o1=(*Z3` zMPehRj!GOtlUWljji`6XkIs{QRUq|@FoMJLqFfz!p3yz%m4526x54BHkp7H zs+KDiQ*&E&KBr9O9<2l+zr4I32x3+JlfceE+Z|+WCcWNrNffwQt-`elRWqmpgd-xI_-vTbg-jyx&S3io!9T=Nj40Hnkv zXSE_8UD8Ml@77DGi+F??v-;7yh(u!N&bG6AIu@wC-u0hrYbu2dsO-<5V>sOI1qm|} z{JeRFF}uFqT_S3 zk5l3`Uoep2+DpxkA2D8zD?64kATfXR7v03_9MbA_7QN<2Gb)$VBl|Zic#L0ECuoUP cE|_cxlQ;dX&lkz+RjZDfoiNS$$vO0Y0L4fp)c^nh diff --git a/docs/ui-mockups/splash-mobile.html b/docs/ui-mockups/splash-mobile.html deleted file mode 100644 index 463bbc0..0000000 --- a/docs/ui-mockups/splash-mobile.html +++ /dev/null @@ -1,213 +0,0 @@ - - - - - -Rusty Solitaire - Terminal Edition - - - - - - - - -
- -
- -
- -
-
-
-
-
-

RUSTY SOLITAIRE

-
-TERMINAL EDITION -
-
- -
-
- -assets loaded -
-
- -theme: terminal -
-
- -progress restored -
-
-▌ ready_ - -
-
- -
-
-
-
-
-DONE · 247 ASSETS -
-
-
- -
-
-BASE16-EIGHTIES -
-
-
-
-
-
-
-
-
-
-
-
- v0.20.0 -
-
- - - - - \ No newline at end of file diff --git a/docs/ui-mockups/splash-mobile.png b/docs/ui-mockups/splash-mobile.png deleted file mode 100644 index ddc5b28a27795727434d02b49f682de7d4d9322a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17924 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 C*MpG& diff --git a/docs/ui-mockups/stats-mobile.html b/docs/ui-mockups/stats-mobile.html deleted file mode 100644 index 9c9602b..0000000 --- a/docs/ui-mockups/stats-mobile.html +++ /dev/null @@ -1,279 +0,0 @@ - - - - - - - - - - - - - - -
-
-terminal -

STATISTICS.LOG

-
-
- -
-
-
- -
-▌stats.log -247 GAMES TRACKED -
- - - -
- -
-
-61% -
-
-

WIN RATE

-

▲ +3% vs last 30

-
-
- -
-
-

GAMES

-

247

-
-
-

WINS

-

151

-
-
-

BEST TIME

-

01:54

-
-
-

STREAK

-

12

-
-
- -
-

WIN RATE · LAST 30 DAYS

-
- -100% -0% - -
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-30d ago -today -
-
- -
-

DRAW MODE SPLIT

-
-
-
-
-
-DRAW-1 · 60% -DRAW-3 · 40% -
-
-
- -
-
▌ NORMAL │ stats
-
[1-4] view
-
-
- - - \ No newline at end of file diff --git a/docs/ui-mockups/stats-mobile.png b/docs/ui-mockups/stats-mobile.png deleted file mode 100644 index 6f9cf84239d1b449ac82f2c1c33f45b8d6869802..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55488 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 diff --git a/docs/ui-mockups/sync-mobile.html b/docs/ui-mockups/sync-mobile.html deleted file mode 100644 index e2875bd..0000000 --- a/docs/ui-mockups/sync-mobile.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - - -Rusty Solitaire - Sync Progress - - - - - - - - - - - - -
- -
-

SYNC PROGRESS

-

Connect to a server to sync games across devices.

-
- -
-

STATUS

-
-○ NOT SIGNED IN -Local progress only · Last attempt: never -
-
- -
-
- - ▌ AUTH.toml - -
- -
- -
-https://sync.rusty-solitaire.app -
-
- -
- -
-/ user@example.com -
-
- -
- -
-•••••••• (12 chars) -visibility -
-
-
- -
- - -
- -
-

RECENT

-
-
-2026-05-07 17:38 -· -○ no auth -· -skip -
-
-2026-05-07 14:12 -· -○ no auth -· -skip -
-
-2026-05-06 09:01 -· -✓ synced 12 games -
-
-
-
- -
-
-▌ NORMAL - -sync -
-
-[ENTER] sign in -[ESC] cancel -
-
- - - -
- \ No newline at end of file diff --git a/docs/ui-mockups/sync-mobile.png b/docs/ui-mockups/sync-mobile.png deleted file mode 100644 index a069d8f2466339e6b005cca18c47de7c8eb0dc4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37397 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 diff --git a/docs/ui-mockups/theme-picker-mobile.html b/docs/ui-mockups/theme-picker-mobile.html deleted file mode 100644 index 2bc6bdb..0000000 --- a/docs/ui-mockups/theme-picker-mobile.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - - - - - - - - - - -
-
-terminal -▌theme.picker -
-
-× CLOSE -
-
-
- -
-
-

CARD THEMES

-

Choose a card-face theme. Imported themes appear at the bottom.

-
-
-5 INSTALLED -
-
- -
- -
-
- -
-
-
▌RS
-
-
-
-
-Terminal -✓ ACTIVE -
-by Rusty Solitaire -
-
- -
-
-
-
-
-Classic -by Rusty Solitaire -
-
- -
-
-
-
-
-Stripes -by hayeah -
-
- -
-
-
-
-
-Polka -by hayeah -
-
- -
-
-
-
-
-Vintage -by hayeah -
-
- -
-
-add -IMPORT FROM .ZIP -
-
-+ IMPORT THEME -spacer -
-
-
-
- -
-
-▌ NORMAL - -theme -
-
-
-[ENTER] -activate -
-
-[I] -import -
-
-[ESC] -back -
-
-
- \ No newline at end of file diff --git a/docs/ui-mockups/theme-picker-mobile.png b/docs/ui-mockups/theme-picker-mobile.png deleted file mode 100644 index b6805c78672ea7a2bc1ab9357f85923382b7a684..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34602 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 z 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 - - - - -Rusty Solitaire - Time Attack Configuration - - - - - - - - - - -
- -
-▌time-attack.tsx -MODE · TIMED -
- - - -
- -
-

TIME ATTACK

-

Race the clock. The faster you finish, the higher your score.

-
- -
-
-
05:00
-
MINUTES
-
- -
- - - - -
- -
-
RULES
-
- DRAW-3 - NO HINT PENALTY - +50 XP / WIN -
-
- -
-
-
PERSONAL BEST · 5 MIN
-
02:47 WIN
-
-
-
GLOBAL RANK 142
-
TOP 5%
-
-
- -
- -

Game starts after a 3-second countdown.

-
-
- -
-▌ NORMAL │ time-attack -[ENTER] begin · [ESC] back -
- - - -
-
- \ No newline at end of file diff --git a/docs/ui-mockups/time-attack-mobile.png b/docs/ui-mockups/time-attack-mobile.png deleted file mode 100644 index 5ea0b54d6e5afce78e52290f8f6df42100dd6197..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44914 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 - - - - -Weekly Goals - Rusty Solitaire - - - - - - - - - -
-
-weekly-goals.json -
-
-timer -RESETS IN 2D 14H -
-
- -
-

WEEKLY GOALS

-

Complete goals before reset to claim XP and rewards.

-
- -
- -
-
-OVERALL · 3/5 -(60%) -
-
-
-
-
-
-stars - +220 XP CLAIMED -
-
-
- -
- -
-
-

PLAY 10 GAMES

-
+50 XP
-
-
-
-
-
-10/10 GAMES -✓ CLAIMED -
-
- -
-
-

WIN 5 DAILY SEEDS

-
+100 XP
-
-
-
-
-
-5/5 DONE -✓ CLAIMED -
-
- -
-
-

WIN UNDER 4:00 (3 TIMES)

-
+75 XP
-
-
-
-
-
-2/3 -▶ IN PROGRESS -
-
- -
-
-

PERFECT GAME (NO UNDO)

-
+150 XP
-
-
-
-
-
-0/1 -○ NOT STARTED -
-
- -
-
-

STREAK OF 5 WINS

-
+50 XP
-
-
-
-
-
-3/5 -▶ IN PROGRESS -
-
-
-
- - - -
-
- NORMAL │ weekly -
-
-[C] claim all -[ESC] back -
-
- -
- \ No newline at end of file diff --git a/docs/ui-mockups/weekly-goals-mobile.png b/docs/ui-mockups/weekly-goals-mobile.png deleted file mode 100644 index 644eb165cea7ab041316f2b871fdffd92d4b9f6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85871 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μ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÷Q}%YVtnNje6*h&Sc_=FC5mY_|kDOJoxT; zKe$6jzP@hev?G>)5hLhREsS2{i`I@aCr6vXLJVclp5}vx8VnD)4>|tyTR-FLefSx5vwTk^1KigLKjyQL5PR~uHyB4q0;3ZA&M3{ zxPS4wJt6rJUL>KbvzOs|82r}p(g^PA$`qJ*x+1JgfFqHc(MeVNG@7m`qQWP`882_w zC5jo=qg$YM3DSxJsYtW1(+{+-0)`5Y^0BSjLWFG)$+ZQ6^s zHM3PveJ-|Mxg+qK2Dr(oa9pKCXUU7HM40gCZ*j;jwdkM;S>7O3m}N=->eXA?vl8~ZBY-~WE}dIIJBRy?N?BCH)o ze|fUZGa4}c>f8mUGM0pW9akkG75wsJ3d@7k`#4sf9BSHJG&oQ9Vf|CtoHHE*I}$Zo zUdf?acD2NU3T9DRDHumKEzB|voknp^nQ}%>Pd!ma$(jL_nHGgn;Af+xT(3f;Fg^IYu8=I&C4w)k7n!4y z!60e=PKr%Y-Be|+c%l4iZDuDq7ph4PU^>u#@0XSm_ANZGxWphmjz--O4XZScC_B?^%H8oAGWeE7H%3tZGLUKp7}Xb( zI_)ZMQ|V}i9_x}85XS`GqKoL^hz&qlN%&N_WsQ_VALOUb0&_hJg0I^s|KS4@K(d<~ z{y6U`6%p|f^{o_EkBCS? z>}0>>fVe~fpA)GvdY9E$j`|FM;kgh75X|VW8ag6~03+KK`blZjJc8m=4e`ZgjKRf^RaX~2PFp+fV0cQT7>`VecEwmersZ#bnAr@~?19%C2MaPhg0m zF)vihiG$Plm>a(SyKR5ugOkPlb_eO|17|zfn2ol z9@WRM?!&h9V+-D}Hq$%(twlZAwR>owYPhi9zmM35`TP)ox&F7=SY3!w28IcP&RCd3 z5jps}%&HcPZO7ri5BY);afV@n%{XX#DSrPHbU+V!}j?WtbML>>L3#N$*;wQL) zzj&~R0xa{p>f!KtAvI`{Ahj5UqYYlTaA;)^sRP{P({ZuXGh4%O$SW)`EL(NpeGFnk&+7BGw*h@c7yY~Dro690pgKZzlQK&@E}0)RCO z%`2>dDpu27v>w;(8;{FNFk6UrA_PfBqc1=@fEt&H27?kUTniwbBoqzGv&#y1kEEtqwq!HM+ z4!(N_P1|aQ#8v*(XrP^*<4ip=#;}fkaw)}|K<#RtCB0D6JZg}0vj+XQfiIsqtjvD+ zr)uwwGH6ul0lVg53&jaGYNwquEBx=`!P1v3NV*lKEDrHkD@jcMN7GpcwbeXcKS1C? z+hD~CBv=V91qu`h0aCQMySuv;DPAOaf#Oo!ogyvnPOw5L?iGR-c=LT{e*70^Aerpl zy?f7|^ErS}UyNtFiE8jN_5l?!y3SltFAu6HLJk~oP@L4{x2(2X;nZ^4eEg8(Gr7jP zn>~!S`Kp@m3v>c`lANPlfxGyaXA`*d&)|{q>1|>HvWgWHFdQ{XHvIdn;k&__B1QNI>W{C6C(nc9YkN zk`QRZac7@5gI09iYa704N5xG}v%y6r8yY>Z_@UH2UJ+{kLEdXZDP+2flZ207@RK3t zs;^A7Y&lfGJ$x$_+1l;9Zd4WjA0Z2X^nfoy4MYwkPQfDZqHj|JF$0mVS^-~G!&vZN zTMA@{Q%jrCns>P2E69)h186Ux$*)b&h2)5`xj;pRgeXgx^24Sbmq`d}ekrN+iE7BqsH zPo=H3FT;mIh~m7&l3@6Hr3nOZTltFDwMipi z&~hfzb4D&~Qrq_Jdz>MRwT?}mSWq)02pqm0Uh~#Q);NcX4+lT&M^zHAdJX{`2*rYc zfxom==kPu7M~Cb{>_7l(jA%!=`b`+0EFP;Yl0aUa1H4$yO94<$qOX1%Um=T@6<|gJ zs-8hg!01e`OXbUa{dY+{TJ^#^WAk%y8Vha>A#YdKl! ztdX(dtaoz25m_C}Ng;B$T$(mkgIK*uG=!VvTiQ!<4}3gHmfFwQ-x5eg5#XrjDC$?q z{VE-ZfXM&8CJ2jU1}l&~YjVr4&>Z7Xmyqsa_{71Ut)1<(BBA0!>0+*6O=jkrlfh?I{0E+h3XWTN`~r+XUnALmZKS~FmJa1c3dmJH^F zEJfJZV2Hg02~18tj)m{Ni9Z7P>0_2XG($h+C5Q~d4%aAG-g}aD9G6Cl_0XUV{BmPQ?gptXGAk+lG5!5r9*Bt{o=VzttFwUeN3CktU5XNODbt7aB?r( zVtDYi%TI%BN8@=C$%o-G3W^a9Gb^4q3NNBMxY&1I;f2Lu>tUf{;NSs0h*AlNv_U5f z3;@PEQUm277kL-pYIxN*Dz@0u(QuU zTZ1ars7MSeqa|om6Jk7++_(N5{hF%CRc);a(XmE7fjaKy71R7YdXSu5So-p_{pZj0 z^sS!yma29)Ip-j=&hydB?Ww%8Kml9DQcMqOZM^E{3MV-WrOM=FC^i8omH>m(0RKF! z7@g-0@wIlcI_K>*JUGF0lmqz9v`(F!>#mP=FD|&8ogLSH@3f*Z(u-b0&~ZkMt>m5l zwD|r>O_GF3)f7G<5)8v8!@^dB4Mbq$CnN*-Vc6#J2cRW+ET+%#K-qwo(lB=9j0l-D z9@c>;Df@f72_eHhFfdLG)o3)~_7^m>++xJD>-IEQQU4Mxbw1wvd_4#?aQTL)#+poy zrC?S0cvVm}m;9}ug$e$utr}d^o-8bDQ+<~r-HVf-tCrZy)KYzI)pOkRyRF$;7 z$v4%rJJk!EUAvOH$eFKwa6<8aUi$f~9rfs}7qj%`k8^s(s5fuOe7NS+V7d1_>p5AZ zMWLnpOsCmBuC6zu@6f`-*VN75_JEeX@V2wtjm+Z2sd$X}`_re&P%u^>yH^({A8BPg zaa~Uk0#^(yB&n72e7~BQSM{y(y9;KN#e`5+}Fx>aA5|g{b z3~LR3<~dqpA68#Y>ZuLbOY4q8Pj$#w?FzI%C@iqeRtn9g_RnCNciUen<=Suwr){B) zWQv2vqsP(4;<7Xw7>BI`VS)3C`tcqj<_eri!Chd*QcIdv0z-XV>>z!u) z-WEH*b2g~F^YzY*#f4|6hPC73(tpp^>*X!C`C7O#;(om}eP=s;?s6=8l^)qzyV-q5 zX+CYiow}(Og~BbVCa(J&?66dIvPcBeb0Ui@>Uk!^A`pUE)b5)E^IObJuBPApA=jB% zpL_VV#GU)M^WDFu{LAwVblhK4qbi-zGZ|Ug82M4ql#7UTRdbk)BeV6cXDaI0WJ&6P zpKCmf9`!{T8j<|I#YhB?m08rCyNQ3PD{53-%riU3o8;J7raHv`$=Q}NlnJKg@}!7K zNq?nR2AKSg9uN*s#tQ%Q?{M~gE+309W{Gga` z^0K(3vP|*e<$RA5<8S@{4vW@OWE*tqFmxa8O{apALhjBlH~%)R{;KWTKo@NYK6(s( z;O%;p(S5!gaGsTaZQ_i|i+4O2|7G#VP1QDiOFJd~MZY7e5%l955$|%#b}ZGyplQbV zY+?_+Gq*E6{por4FF3MgE#%&i6c`{*wJLu`R73o^DW_b;!}cK3BjrxLSbN;tpyjNL zze5!bS^^;P_sfdq^m#lKqfl~b6AeWh!UTf5o@o4!2)A6vjH>88QR6#_G73d})rYI6 z4FA@~%N%E#o%qeLU=^cZ7paWDxB3mzpn~nkKbt%ab?1_!ZV>3w)M8j`^8EXG!x#wo zu^Id$Za?_!v-rb3<5KsI>uP4*M!-1LhwmS#a^02&ewdJ^4_#iWCK5AT#c{reA6|Xf^s#|;gx_BC*sWViSYRTTHNhtgzorG?=x4x-r?U*mk>y}3BmEWky z+3V|rjQ=G6i0oRA{~MIiQgg6};x#}1IPl+>cpR3xR?s8F055zdKd6yBr{8WkBli!p$}Vo|nl#GC zS$s<;<~BA5x#?A(1%4_L#!#M%_Oh!Z`^bQB<)Y`~&_Wnxwp#%H2TV6Htie-MNJ!PS zw@XZ0|5tS;!@8fiP#ZyfrRMv=)3(NFr5Cl2-F|N@{*wE>b4367!6amP;pYa&h|l^ zc&V_QqHHAQv?bKKK~FY5IKha16~LllK=Q1`raG~0!G7qd542LQf-|{{X}COksFN>< zA)_(L&#_zV1dxy~IWCIvFj>&@6Hz5Nn(exg(sp954Gy7FD60O6^v5m98Yp+Io_V%# z2NXB{b5v=iBEFm!P`|i7RDg{TRI)Y35gUrHWkjm3Fi5HH6g!N!yWCUYP1-!ST_N{=W^*Km}qLsUfRxm<+By`65O$ zz-;%i%mSRs1w?J`;0mfUl-@rXn>d~+X=J^X>MT%K)c;K5m`(kA%Wi0u4RMp*0IgYF z$)Wa-Q6?|eZy(zhibjAT}E1fOV0tC!G#wpl&cgEV2&6*0bRl=7v1Iw zIg?!eL%yAOr+B;LwwXO^EDm6!O1wbv;q#yU+eNb$FaVR7y zBLd7+W~Ahv;Mqx5vmw-|?UB$iy#Sp&Br1JhWV7X^L$e_z&pMGjoIHGfk8d=B%%b@U z{1J);u2mk^=InPQZ&==Id&Rs!gMQK4v$%i)-CC}fIyESKnMEv87gEdbLTKIZtNC6i z6g`z)$<%7J=0Q1SjjMFn#P>M%^>MgQZXb0C^F3lBIBAYFi>WLo4rGwjVbg%gx^T>AYM-RZjmV)fo>AsSUG7} zvZR)nF_mBpF^Wm8f#*Cbh{vX#01mxN$eGorJT|1Vf4pn+(Warf?2cjGX-fs zdt518*DB>@FAJ~_W82auCj5!sH|~6#I!CB$eu`swv04)$icl?Eth%lh6rPD!QJ{Mv zw|ir>2xAb=G_2D;b{q;=FLCMK5He-Byz;=rd^({Cmd~HlllnLI8$?lw?@ywnLu#}g z<$5gf3bnMK&_~qbhC$yb_wmDv9>>EJD{U+dRjK?EcoOJ*yjdLMXDNXH`QuM&vkz7q zS!Xyr$rS(WnC<9LP3Kms{k(2}HL`o?e=f!y0FbCy)s^Zp4OxP%IqOg>JBb@bAb&_F zR#fgOUEK@4$fd$zBFh=!zyTd$hkyZf{sn?Xt?#wHAPbR#J)|S2PYU`V !z_kS`S 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 z
Z)_cDG51n0IZ@uQaiQ(fyh(OA|zI6cb>D%x8;$8RbKQJH!CU;A66U9Z`zww7& z3o`oI#V9ww8H-rgx9+}g{=*ILeCx>2un>Zo0HC?0HJi->Ky1fKGQ^JDYu^3*FHllY zr4^^0_4*rr@7yb{eE5!!u2{R_ifiAerUr!&`Ocn)?)obR{@`t2nH=bkb8Yj6drBk) zfXT_pjc1-cQ=CR2x>s~>f8>F${LSZAcK7IK*Kgc7GBT>AD^D#h(!wMaD1;(Kib#YMG@%Z*@-~Hakrq=!Y_rCn{ftL^Ld*^#Uu<6WK zJi7J4&en#xxMX=M#-%t{Z)Z1Dm#^DeyP z(QOa6NT4X|WNKBoq)7i+oTOuij$ZQi4~C`U8L#;TR;9hqJaP7G-!d{Zqm(MmOaQ=B zTkr2X``l3g%O(3-sQGahFKJh6%a#ZKwRg?hj;>{sQ#Bj4K!fNTG`!FI>_IfYZ)>)xZlsY{)mi<(AL9^rIb@zvre&fXRXV z=Un>gYd(JSrpw<@93KY&DP$tGirgAW+S<`|-#vF-{kFG$<*s`^dei#`hsO5q**$#x zH~_rzlFL8-$xrRx_3ZZ^+t#;sZIyS+;v|(Ia7}NIDbB-EVOgn+Xh~}#=+&`EE@=%A zLtsfrsHp$o!E4|7uCvd%aOv`{(V@|YAO7bZkA1hNcdf*bSaU@M#NxR!zLXZ@sS!&+ z;u7UsTe4DwEF^|uh`V;Z5CE*~TQeu30@qam2^S|R%uX!bbaDHNRqM{V^z=(E|DD%w zy7PyFdw=-d<)^=*tGoN?zP&I0VB3~I`)I@Jo{WIXshuiGiv))c_W#uvzqWS$y4^4C z>L1vj5n}b4(>HE7?Z-cU=J#&7sjsImrGU-+5LG1=xVEo1wT4vnN-|1dz$%QFTT!;$ zN}`fXadPAm#IU;6XE|NMKdc>PU(c+TdZd+Dc7egEsX|LA+$ zI{;c&uU0Y>=laEYPOYSZ3I_%bf9Th5e$}fkZ|!JDMJGl^9^dl7Ki+*;Z(omOSs}HP zl2n1fwQG8bb-5|2&@Aqj7`n3~3c(8|b1M(p;#IovP*f@?fe0`p4j4m`E zRA@aLSlZsy)VhrAug58o)SMOu7DQ~z&NDLsfi6Aof?z!k28LLHdKP|=08BA^VtqZp zWRQW0iA*rTWdPP??rrV;BtqA~H-+(8w_eUQK?X*TYg3DJU1|i;5vFj-=TeeOIzmh* zDXGZjd;5Bkv7>LzQrmT*pA|`YN!QBu4qfZPc5<|}bZR7Jpg;%#AOTr-VI{MkzG{{Y zpzwokWdbAWphUqa{GjRoqPc>q@XxKITl^pdN^=6bB3GXXPDSYH!g_x3Lb)Q9%P}s@ zCpDQ2qFJKObxCU}DWeD!DQ48`yc9ArD+JILXpxvnA(RDCA)+~_9}j|3jEG7v=>i5q zQYL8Dc`0Uv`rLYTE+UfxC_|89CFbU`&y6GI=2l4!*p&4x=b8k8h*e$ET1l#q0x4Wo z3}k)=pB{*4CQ1BwYNuX;^lNGzJEHi8PUR-8A7{ z5)S5ZNjMWMyA)lOOS1`B0JlnN{w3k&$t}MmoJd|0Zf&kM zAta7HmR4QTT1pzkj#aPEL9-ZuZQI@kXbuSNMb81tuJMKbL7VnDO3K6`g$o|n9ws6p zM_m7~VqA#0CQk%Jmk{WKNVLK6)b!CB{WKTj+_KcXWB0jrNoy*pY-?>LMn(bxMnF@9 z%5=u{G*)CHFv~Ll8OTjKMqmQgRawm?P|U9YxgelkeytaF>n^rij$N6nJg(l&a@o|+ zph{eFT#9kMYbTr3Af6gkNKH>VPECy#ky>5Sg-RL-Da?upj8-NHy`Gab*fOUX4S$Cn;Q%7%$O*X(c+0F_fBG6ih|fV71ihlGaet zfRz0xc-Drs7!+%#gNbaAQ5lN?NP%Lg=3*%AP$bO5XHi4#zx$2 g0#mC?S}RHa3pTKN5z*WeLjV8(07*qoM6N<$g3Lk?YXATM diff --git a/docs/ui-mockups/win-summary-mobile.html b/docs/ui-mockups/win-summary-mobile.html deleted file mode 100644 index c8f5700..0000000 --- a/docs/ui-mockups/win-summary-mobile.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - -ROOT@SOLITAIRE:~ | Win Summary - - - - - - - - - - -
- -
-
-▌win.tsx -
-
-
- -Synced -
-v0.20.0 -
-
- -
- -
-

- █ COMPLETE -

-

- GAME #2024-127 · DRAW-3 -

-
- -
-
-Final Score -1,024 -
-
-Time -12:34 -
-
-Moves -87 -
-
-Par Delta -−13 -
-
- -
-
- - ACHIEVEMENT UNLOCKED - -

FIRST DAILY WIN

-
-
-military_tech -
-
- -
- -
- - -
-
-
- -
-
-
-[ S ] -share screenshot -
-
-[ X ] -copy seed -
-
-
- - \ No newline at end of file diff --git a/docs/ui-mockups/win-summary-mobile.png b/docs/ui-mockups/win-summary-mobile.png deleted file mode 100644 index 8bb0f58399ac9ec7990e4cd95df70fa5f5f24497..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34891 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
-
▌RS_TERMINAL_OS
-
-
-account_circle -sync -settings -
-