feat: add playable Blokus web UI with replay system

- Add blokus_ui package: Flask web app for human-vs-bot Blokus
- GameSession: wraps BlokusGame for human play, records move history, serializes
- RunStore: file-based JSON replay storage with save/load/list/delete
- Flask app: routes for new game, play, save, browse runs, replay
- Templates: index (new game + run browser), game (playable board), replay (step controls)
- Static: CSS (dark theme, colored cells, placement overlays) + JS (click handling, API calls)
- Add blokus_ui tests (19 tests for GameSession and RunStore)
- Update pyproject.toml with flask dependency and blokus-ui entry point
- Fix: remove unreachable dead code in BlokusGame.valid_move
- All 102 tests pass, ruff lint clean
This commit is contained in:
mattlamb227@gmail.com
2026-08-09 20:08:18 -04:00
parent 123513e32f
commit 70672e9fef
13 changed files with 1888 additions and 2 deletions
+8
View File
@@ -0,0 +1,8 @@
__pycache__/
*.pyc
*.pyo
*.pyd
.pytest_cache/
.ruff_cache/
*.egg-info/
runs/