Commit Graph
11 Commits
Author SHA1 Message Date
mattlamb227@gmail.com 946196f2eb Initial commit 0.1.1 2026-08-14 13:59:56 -04:00
mattlamb227@gmail.com 37cc621020 feat: migrate web UI to Cython-optimized game engine
- Add cpdef wrappers (get_placed_squares, get_placed_corners) for Python
  accessibility of previously cdef-only methods
- Add get_standard_pieces() to expose Cython standard piece set
- Add is_game_over(), get_scores(), get_winners() to Cython BlokusGame
- Fix valid_move() player_occupied lookup (was using player_idx instead
  of player_idx+1, causing bots to fail after first move)
- Update session.py, app.py, bots.py to use Cython with pure Python fallback
- Fix board.grid.tolist() to np.array(grid).tolist() for memoryview compat
- Add Cython build artifacts to .gitignore
2026-08-14 00:17:31 -04:00
mattlamb227@gmail.com c14a98fbca updated to use optimized cyython build 2026-08-13 23:09:08 -04:00
mattlamb227@gmail.com 3657a820ba Update cache and egg-info files 2026-08-13 00:17:27 -04:00
mattlamb227@gmail.com 3b2ffa28d4 Optimize: Cache player occupied squares for faster corner validation 2026-08-12 23:39:52 -04:00
mattlamb227@gmail.com 10d8b0a376 feat: auto-save replays on game over and page unload
- Add autoSave() function that saves replay silently on game over
- Add beforeunload listener to save incomplete games when navigating away
- Add prominent 'Save Now' button in status bar (visible during play)
- Show 'Replay auto-saved!' notification in status bar
- Add gameSaved flag to prevent duplicate saves
2026-08-09 22:11:50 -04:00
mattlamb227@gmail.com ba6e26ab59 fix: placement cells missing width/height and incorrect positioning
- Add width/height (30px) to .placement-cell CSS so cells are visible
- Account for CSS grid gap (1px) in placement cell positioning
- Set width/height dynamically in JS for consistency
2026-08-09 21:56:27 -04:00
mattlamb227@gmail.com 4a4eef679a fix: add action/method attributes to new game form 2026-08-09 21:35:14 -04:00
mattlamb227@gmail.com 70672e9fef 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
2026-08-09 20:08:18 -04:00
mattlamb227@gmail.com 123513e32f fix: remove unreachable dead code in BlokusGame.valid_move (game.py:220-260) 2026-08-09 18:18:46 -04:00
mattlamb227@gmail.com 4eb34bfeeb initial commit 2026-08-05 16:42:57 -04:00