Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
8125d10
Merge origin/main into dev (post-release sync)
Jul 23, 2026
47509b1
CG-0MR4RP7T60038NOQ: Remove Attempt Shader button and code from Shade…
Jul 23, 2026
b121b21
Sync work items and comments
Jul 23, 2026
48b0cc3
CG-0MRBDPFPH009Y8M0: Game Balance Process & Tooling for CSV-Driven Ca…
Jul 24, 2026
49c8763
Revert "Sync work items and comments"
Jul 24, 2026
55ee3d4
Revert worklog sync that deleted all source files from dev
Jul 24, 2026
d0bf724
CG-0MR4RP87X004DIZV: Add culture business purchase to tutorial and up…
Jul 24, 2026
7ce2383
CG-0MRAGVDL90004RVJ: Improve Lost Cities AI with probabilistic card e…
Jul 24, 2026
60d6605
CG-0MR6UAKB9005I6OT: Golf AI: only take cards from discard if they wi…
Jul 25, 2026
963b6b2
feat(monte-carlo): Phase 1 balance metrics extensions
Jul 25, 2026
90423a8
CG-0MRDJB77F0057FJG: Filter HUD elements from save/load screenshot
Jul 25, 2026
cff0cc7
feat: Add game version to menu screen and Main Street settings panel
Jul 25, 2026
292d6df
feat(gym): Create GymButtonBar component with zones and wrapping
Jul 25, 2026
c6281fb
Sync work items and comments
Jul 25, 2026
5ead91f
Sync work items and comments
Jul 25, 2026
4a59819
Restore source files after worklog sync corruption
Jul 25, 2026
a32302c
feat(gym): Integrate GymButtonBar into GymSceneBase
Jul 25, 2026
939d532
refactor(gym): Migrate 10 Gym scenes to GymButtonBar
Jul 26, 2026
e19ddf7
refactor(gym): Migrate 9 complex Gym scenes to GymButtonBar
Jul 26, 2026
636b8b5
CG-0MR91VWHG005Q2E7: Fix test assertions for new recession event card
Jul 26, 2026
3303b23
CG-0MR91VWHG005Q2E7: Restore recession card + fix test assertions
Jul 26, 2026
fb41613
CG-0MRDKXBAK001GRH0: Fix market refill animation — slot shows empty d…
Jul 26, 2026
3f60c1c
CG-0MRDJRUF2003L6PI: HUD Components Demo polish
Jul 26, 2026
adb5932
CG-0MRDHN5VW0008IIF: Clamp maxRotationDegrees to [0, 359]
Jul 26, 2026
1fa0597
CG-0MRDKXBAK001GRH0: Fix TS lint issues in refill animation tests (un…
Jul 26, 2026
ebef20b
CG-0MRDKXBAK001GRH0: Fix unused variable TS errors in FeudalismRefill…
Jul 26, 2026
c01f580
fix(feudalism): defer patron sound and toast to animation start
Jul 26, 2026
71ebb3e
CG-0MRDGW0DH001AA58: Complete GymButtonBar migration - migrate remain…
Jul 26, 2026
67dce32
CG-0MS16UOBZ007RPBZ: Update documentation for GymButtonBar
Jul 26, 2026
857d12a
CG-0MRDJB77F0057FJG: Fix screenshot HUD exclusion in GymSaveLoadScene
Jul 26, 2026
f4cb37e
CG-0MRDJB77F0057FJG: Exclude HelpPanel maskGraphics and inputBlocker …
Jul 26, 2026
2fc68a5
CG-0MS217X1F0089SAM: Dev mode detection & Debug section framework
Jul 26, 2026
ed3711f
CG-0MS217X1F0089SAM: Dev mode detection & Debug section framework
Jul 26, 2026
f3859c1
CG-0MS1QC3RR004J4Y5: Session export in Debug section
Jul 26, 2026
6d69085
CG-0MS1QC3E1003G5S4: State inspector overlay with filter
Jul 26, 2026
fcd851b
CG-0MS1QC3KR004C7UQ: Game Event Log debug tool
Jul 26, 2026
1d76aa8
CG-0MS1QC4SC006FPFM: AI Decision Viewer debug tool
Jul 26, 2026
ed1ac96
CG-0MS1QBONV0082TIQ: Documentation update for dev mode debug tools
Jul 26, 2026
db2864f
Bug fixes: state inspector expansion, event log, settings panel scrol…
Jul 26, 2026
0e6c6f8
CG-0MQZYFG3C0063DN3: Gate debug tool imports behind import.meta.env.D…
Jul 26, 2026
640d1e0
Fix settings panel mask position: add mask to container for local coords
Jul 27, 2026
8a9a573
Fix settings panel mask: use scene-space invisible mask like HelpPanel
Jul 27, 2026
efd9d2b
Add scrolling to State Inspector tree view
Jul 27, 2026
d156b8c
Fix scroll area and dual-scroll conflict in State Inspector
Jul 27, 2026
35ed07e
Refactor debug overlays to use shared Dialog component
Jul 27, 2026
3ccb85e
Centralize on single overlay system: merge Dialog into Overlay.ts
Jul 27, 2026
f07f928
Rename to OverlayDialog — noun matches utility, not feature
Jul 27, 2026
208770b
Fix OverlayDialog content invisible on first open
Jul 27, 2026
ff9e4f9
CG-0MS35J1FX005QYDV: Simplify dev server lifecycle — remove reference…
Jul 27, 2026
d9ece86
fix(replay-e2e): isolate replay e2e test from parallel unit pool to r…
Jul 27, 2026
8c0a219
feat(lost-cities): implement AI improvements 1-5 for GreedyStrategy
Jul 28, 2026
8ec0da9
feat(main-street): generalize clinic duration reduction to all Durati…
Jul 28, 2026
d01efcf
CG-0MRZ0XO1Y007R2KP: C-1: Implement statistics helpers (median, IQR, …
Jul 25, 2026
e81dde3
CG-0MS0NN5H6008IT56: C-5: Library scaffolding, guardrail thresholds &…
Jul 25, 2026
e3f3db5
CG-0MRZ0XOBE009H2WA: C-2: Implement card metrics engine (M1-M7)
Jul 25, 2026
28adc8f
CG-0MRZ0XOKQ003YG4V: C-3: Implement global metrics engine (G1-G8)
Jul 25, 2026
2c59a9e
CG-0MRZ0XOTW001GGFL: C-4: Implement comparison engine with guardrail …
Jul 25, 2026
1928a08
CG-0MS0NN5H6000O7BV: C-6: Documentation & integration tests
Jul 25, 2026
42ab5c2
Fix Phase 2 tests for Phase 1 field compatibility
Jul 28, 2026
a5fb005
CG-0MRYZTYWH007NOAM: Merge Phase 2 Core Balance Analysis Library to dev
Jul 28, 2026
2d6c8bd
CG-0MRDL8YUE00007KY: Fix multiple patron visits in single turn
Jul 29, 2026
f55c879
CG-0MS5BSKMX002IGW8: Add clickable GitHub link to GameSelectorScene
Jul 29, 2026
8935f4f
CG-0MS5BSKMX002IGW8: Fix clickability, replace text with GitHub Octoc…
Jul 29, 2026
0168158
CG-0MS5BSKMX002IGW8: Move GitHub icon to top-right, use white color
Jul 29, 2026
a6e0252
CG-0MRDL8YUE00007KY: Animate all qualifying patrons sequentially (fix…
Jul 29, 2026
ac3eaa9
Bump version to v0.1.8
Jul 29, 2026
2720875
Update CHANGELOG.md for v0.1.8
Jul 29, 2026
3db426f
Merge origin/dev into main (automated)
Jul 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,59 @@
# Changelog

## v0.1.8 (2026-07-29)
### Features
- E-1: Add per-run card ownership tracking to MonteCarloRunSummary (CG-0MRYZT4ID008PFFT)
- E-2: Add strategy×difficulty batch runner to Monte Carlo harness (CG-0MRYZTD5Z003P4CF)
- E-3: Add per-run market offer tracking to MonteCarloRunSummary (CG-0MRYZTLAN00958S0)
- E-4: Add getHistory() method to EconomyLedger (CG-0MRYZTUBJ0074DJZ)
- If two patrons are atracted in one turn, only one arrives (CG-0MRDL8YUE00007KY)
- Golf AI: should only take cards from discard if it will use them in a swap (CG-0MR6UAKB9005I6OT)
- Detect when running in developer mode and provide debug tools (CG-0MQZYFG3C0063DN3)
- Dev mode detection & Debug section framework (CG-0MS217X1F0089SAM)
- State inspector overlay with filter (CG-0MS1QC3E1003G5S4)
- Game Event Log debug tool (CG-0MS1QC3KR004C7UQ)
- AI Decision Viewer debug tool (CG-0MS1QC4SC006FPFM)
- Session export in Debug section (CG-0MS1QC3RR004J4Y5)
- Add game version to menu screen and Main Street settings panel (CG-0MR89YKN0000FK5W)
- Improve Lost Cities AI with probabilistic card evaluation (CG-0MRAGVDL90004RVJ)
- Gym button bar (CG-0MRDGW0DH001AA58)
- Feudalism new card animation (CG-0MRDKXBAK001GRH0)
- Patron animation in Feudalism (CG-0MRDL6LSS001LPCG)
- Game over / bankruptcy has no menu button (SA-0MQW8D9BI000116A)
### Bug Fixes
- Ensure game servers are killed after test runs — start a new server for every test (CG-0MS35J1FX005QYDV)
- [test-failure] EconomyLedger — Main Street integration parity > Purchase parity > purchaseUpgrade: ledger matches state after upgrade purchase — failing test (CG-0MS4B2VJV0017IMD)
- Take Screenshot in Save / Load State (CG-0MRDJB77F0057FJG)
### Other
- Game Balance Process & Tooling for CSV-Driven Card Data (CG-0MRBDPFPH009Y8M0)
- Phase 4: CI Integration for Balance Checks (CG-0MRZ0YBJ2009VFTM)
- CI-1: Add balance-check to CI pipeline (CG-0MRZ0YMTJ0026RRB)
- CI-2: Document baseline management in contributing guide (CG-0MRZ0YN2T0075QVT)
- CI-3: Add balance report generation to release checklist (CG-0MRZ0YNCO003J5CN)
- link back to the github page from the game home page (CG-0MS5BSKMX002IGW8)
- Remove Attempt Shader button and code from Shader & Blend Spike gym scene (CG-0MR4RP7T60038NOQ)
- Documentation update for dev mode debug tools (CG-0MS1QBONV0082TIQ)
- Further Lost Cities AI improvements (CG-0MS0BTM8P0061VM4)
- Implement Opponent Card Denial (Block Play) (CG-0MS4AD8G9006T5DZ)
- Implement Optimal Investment Timing (CG-0MS4ADGX800349J0)
- Implement Opponent Expedition Blocking (CG-0MS4ADOVB001762L)
- Implement Endgame / Deck-Count Awareness (CG-0MS4ADXEC009MRIY)
- Implement Score-Aware Multi-Column Strategy (CG-0MS4AE5W1009VEF5)
- Migrate remaining legacy addButton calls in GymAudioFeedbackScene and GymTokenPileViewScene (CG-0MS16TPI9002HLLH)
- Create GymButtonBar component (CG-0MS0ZJEE5003TVDA)
- Integrate GymButtonBar into GymSceneBase (CG-0MS0ZJPGY0086Z4O)
- Remove legacy addButton/addButtonAtAnchor from GymSceneBase and add per-scene tests (CG-0MS16UGQP009W0GH)
- Migrate Gym scenes to use GymButtonBar (batch 1: simple scenes) (CG-0MS0ZJPH4006CB7A)
- Migrate Gym scenes to use GymButtonBar (batch 2: multi-row scenes) (CG-0MS0ZJPH4008UY1U)
- Update documentation for GymButtonBar (CG-0MS16UOBZ007RPBZ)
- Generalize Flu epidemic game logic and move configuration into CSV (CG-0MR91VWHG005Q2E7)
- Tests: generalized duration-mitigation for all DurationEventCards (CG-0MS0Z9XDF001TAD4)
- Tests: second DurationEventCard CSV loading and resolution (CG-0MS0ZAOUP00257Y0)
- Add second DurationEventCard to CSV (CG-0MS0ZAXTD004QV59)
- Implement: generalize duration-mitigation logic (CG-0MS0ZAF6M0061FPX)
- Range of arc needs to be from 1 to 360 (CG-0MRDHN5VW0008IIF)
- HUD Components Demo polish (CG-0MRDJRUF2003L6PI)

## v0.1.7 (2026-07-23)
### Features
- Narrow Main Street HUD header to avoid overlapping undo button (CG-0MQS25QSO0031OHU)
Expand Down
14 changes: 11 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,10 @@ tableau-card-engine/
The engine provides a reusable HUD component library under `src/ui/` that
standardises overlay, sidebar, and button UI across all example games.
Components include HelpPanel, SettingsPanel, OverlayManager, Parameterized
Overlay, CardGameScene base class with initHelpPanel/initSettingsPanel
helpers, and depth conventions for consistent layering.
Overlay, GymButtonBar (reusable button bar with left/center/right zones
and automatic row wrapping), CardGameScene base class with
initHelpPanel/initSettingsPanel helpers, and depth conventions for
consistent layering.

See [Shared HUD Components](docs/DEVELOPER.md#shared-hud-components) in the
Developer Guide for full documentation and usage examples.
Expand All @@ -89,7 +91,7 @@ Developer Guide for full documentation and usage examples.
| Sushi Go! | `example-games/sushi-go/` | Card drafting game (human vs. AI). Pick and pass hands over 3 rounds, collect sets of sushi dishes, and score the most points |
| Feudalism | `example-games/feudalism/` | Engine-building card game (human vs. AI). Collect gem tokens, purchase development cards for bonuses, attract nobles, and reach 15 prestige to win. Checkpoint autosaves after each turn (human + AI) with startup recovery |
| Lost Cities | `example-games/lost-cities/` | Two-player expedition card game (human vs. AI). Bet on up to 5 colored expeditions across a 3-round match with investment multipliers, ascending-play rules, and cumulative scoring |
| Main Street | `example-games/main-street/` | Single-player tableau builder. Buy businesses/upgrades/events, place businesses on a 10-slot street rendered as a responsive 2x5 grid, and optimize score over 20 turns. **Multi-Use Card Economy**: cards can be held in hand for synergy bonuses; staff cards expand hand capacity with ongoing costs. Market cycles each turn. Tutorial overlay zones are defined in a separate SLL layout file (`main-street-tutorial.layout.json`) composed with the base layout. |
| Main Street | `example-games/main-street/` | Single-player tableau builder. Buy businesses/upgrades/events, place businesses on a 10-slot street rendered as a responsive 2x5 grid, and optimize score over 20 turns. **Multi-Use Card Economy**: cards can be held in hand for synergy bonuses; staff cards expand hand capacity with ongoing costs. Market cycles each turn. Tutorial overlay zones are defined in a separate SLL layout file (`main-street-tutorial.layout.json`) composed with the base layout. Balance analysis tools are specified in the [Balance Process & Tooling PRD](docs/main-street/prd-balance-process-and-tooling.md). |
| Scenario: Tutorial | `example-games/main-street/scenes/MainStreetTutorialScene.ts` | Guided introduction to Main Street. Non-interactive tutorial overlays walk through the market, street placement, synergies, events, and scoring. Easy difficulty, 25 turns. Accessible from the Game Selector. |

More games are planned: Coloretto.
Expand Down Expand Up @@ -130,6 +132,12 @@ Main Street can optionally route mapped SFX keys through a ToneForge-backed modu

For detailed development guidance, see [`docs/DEVELOPER.md`](docs/DEVELOPER.md).

## Main Street Balance Documentation

- **[Balance Process & Tooling PRD](docs/main-street/prd-balance-process-and-tooling.md)** — Comprehensive specification for game balance review process, micro/macro metrics, CLI tools, baseline management, and implementation roadmap.
- **[Balancing Methodology](docs/main-street/balancing-methodology.md)** — Technical description of the `run-balance-cards` balancing algorithm.
- **[Monte Carlo Sample Results](docs/main-street/monte-carlo-sample-results.md)** — Example output from the Monte Carlo balance simulation harness.

## AI Assisted Development

To use pi to assist with Phaser development, clone the Phaser repository into the parent directory and install it as a pi package. For example, from this repository root:
Expand Down
Loading
Loading