KoalaTrapLord
1f93b5510d
fix: add missing load_weights() to rules.py
2026-03-19 15:49:00 -04:00
KoalaTrapLord
6135feb644
feat: add run_substitution stub + clean up adapter
2026-03-19 13:49:13 -04:00
KoalaTrapLord
a8ef10d5b7
feat: add DeckBuilderAdapter to bridge Ollama pipeline to legacy API
2026-03-19 13:24:29 -04:00
KoalaTrapLord
70dfa3d3e0
fix: robust JSON extraction for LLM responses (_extract_json)
2026-03-19 12:29:49 -04:00
KoalaTrapLord
f970b6d571
fix: api __init__ imports modules not classes
2026-03-19 12:08:26 -04:00
KoalaTrapLord
3e64aa67eb
feat(phase-6): implement deck assembler (Ollama JSON parser)
2026-03-19 11:32:14 -04:00
KoalaTrapLord
1b4e9f5a66
feat(phase-3): implement community scraper (Moxfield + Archidekt)
2026-03-19 11:30:53 -04:00
KoalaTrapLord
c962d1f16a
feat(phase-9): implement FastAPI + CLI entrypoint
2026-03-19 11:29:29 -04:00
KoalaTrapLord
dcdf15c56a
feat(phase-8): add deck_builder package init with public API
2026-03-19 11:28:08 -04:00
KoalaTrapLord
b0214009f4
feat(phase-8): add api __init__ exports
2026-03-19 11:27:07 -04:00
KoalaTrapLord
5fe0ac2bd6
feat(phase-8): add core __init__ exports
2026-03-19 11:26:04 -04:00
KoalaTrapLord
fc09249ad3
feat(phase-7): add pipeline __init__ exports
2026-03-19 11:24:47 -04:00
KoalaTrapLord
d2c7783ce1
feat(phase-7): implement 7-step deck build pipeline
2026-03-19 11:23:38 -04:00
KoalaTrapLord
0ccf35f241
feat(phase-5): implement collection filter with CSV loader
2026-03-19 11:22:09 -04:00
KoalaTrapLord
9a5105b0d6
feat(phase-5): implement rules engine with ban list and validation
2026-03-19 11:19:42 -04:00
KoalaTrapLord
6a688d1cd0
feat(phase-4): implement Ollama gpt-oss:20b client with 6 core functions
2026-03-19 11:18:13 -04:00
KoalaTrapLord
d9639a8414
feat(phase-3): implement EDHrec JSON client
2026-03-19 11:16:28 -04:00
KoalaTrapLord
45c72aadc9
feat(phase-2): implement Scryfall API client
2026-03-19 11:14:58 -04:00
KoalaTrapLord
81ab7ac34a
feat(phase-1): implement Pydantic models for deck builder
2026-03-19 11:13:06 -04:00
KoalaTrapLord
232750a951
Create main.py
2026-03-19 10:46:45 -04:00
KoalaTrapLord
46c1c8cb01
Create build_deck.py
2026-03-19 10:46:14 -04:00
KoalaTrapLord
64a4cd3c7c
Create __init__.py
2026-03-19 10:45:36 -04:00
KoalaTrapLord
3f6b66fce3
Create deck_assembler.py
2026-03-19 10:44:53 -04:00
KoalaTrapLord
2887c09550
Create collection_filter.py
2026-03-19 10:44:18 -04:00
KoalaTrapLord
84d84a211f
Create rules_engine.py
2026-03-19 10:43:45 -04:00
KoalaTrapLord
12f90dd276
Create models.py
2026-03-19 10:43:15 -04:00
KoalaTrapLord
0b755c8428
Create __init__.py
2026-03-19 10:42:40 -04:00
KoalaTrapLord
50f36f284c
Create ollama_client.py
2026-03-19 10:42:12 -04:00
KoalaTrapLord
369cc9243f
Create community_scraper.py
2026-03-19 10:41:45 -04:00
KoalaTrapLord
22d3b64c2d
Create edhrec.py
2026-03-19 10:41:07 -04:00
KoalaTrapLord
beb3dac4d5
Create scryfall.py
2026-03-19 10:40:40 -04:00
KoalaTrapLord
330801107c
Create __init__.py
2026-03-19 10:40:11 -04:00
KoalaTrapLord
95c5a93584
feat(task-0.1): scaffold deck_builder subpackage structure
2026-03-19 10:39:21 -04:00
KoalaTrapLord
4e8a999ebd
feat: add Unity/Godot WebSocket server (Phase 1 stub)
...
- pom.xml: add Java-WebSocket 1.5.6 dependency
- bridge/GameWsServer.java: WS server on ws://localhost:7654
- bridge/GameSession.java: Phase 1 stub game loop with human-input queue
- cli/LabCli.java: add ws-server subcommand via picocli
2026-03-18 00:02:18 -04:00
Claude
0b623ec39e
feat: add lobby UI, build integration, and test suite (Phases 9, 11, 12)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-18 02:56:16 +00:00
Claude and Claude Opus 4.6
d1bed9ac20
feat: scaffold React+TS frontend with types and Tailwind tokens (Phases 1, 2, 10)
...
Phase 1 — Project Scaffold:
- Vite + React-TS project in frontend/ with Tailwind v3, PostCSS, Autoprefixer
- clsx and react-router-dom installed
- Vite proxy configured for /api and /ws to localhost:8000
- Tailwind directives in src/index.css
- Makefile targets: frontend-dev, frontend-build
- app.py updated to serve frontend/dist/ with SPA catch-all fallback
Phase 2 — Type Definitions:
- TypeScript types in frontend/src/types/game.ts (Phase, Card, Player,
GameState, WsIncoming, NarrationLine)
- Constants in frontend/src/constants.ts (SEAT_COLOURS, PHASES)
Phase 10 — Tailwind Colour Tokens:
- Custom color tokens for bg, accent, life, seat, card color groups
- Additional tokens from index.html audit: border, phase, btn, text, highlight
- Custom pulse animation keyframe
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-18 02:35:50 +00:00
KoalaTrapLord
09b0708c4d
fix(models): commander_tax int→dict to match engine per-commander tax tracking
2026-03-16 23:58:07 -04:00
KoalaTrapLord
1121e1cb26
feat: add commander_bonus weight to score_card()
...
Commanders get +5.0 priority in AI spell selection, making the
AI prioritize casting its commander when affordable.
2026-03-17 03:38:14 +00:00
KoalaTrapLord
4bade21220
feat: route commander deaths to command zone instead of graveyard
...
Added _send_to_graveyard() helper that checks card.is_commander
and routes to command_zone (resetting tapped/turn_played) or
graveyard. Applied to all 4 death paths: removal, board wipe,
blocker death, and attacker death in combat.
2026-03-17 03:36:36 +00:00
KoalaTrapLord
46421fe8c4
feat: add commander casting from command zone with tax tracking
...
Second pass in _play_spells() checks command_zone for castable
commanders, applies commander_tax, taps lands, places on
battlefield, and increments tax by 2 for subsequent casts.
2026-03-17 03:34:25 +00:00
KoalaTrapLord
da5e9bd74f
feat: set is_commander during deck loading, place in command_zone
...
- Add commander_names param to run(), run_n(), _create_state()
- Commander card flagged is_commander=True and placed in
player.command_zone instead of shuffled into library/hand
- Only first matching card is extracted (handles singleton rule)
- Backward compatible: commander_names defaults to None
2026-03-17 03:31:35 +00:00
KoalaTrapLord
019a710acd
feat: add command_zone and commander_tax to Player dataclass
...
Adds command_zone (list[Card]) and commander_tax (int, +2 per cast)
to the base Player model so the headless engine can track commander
zone and tax natively without requiring CommanderPlayer wrappers.
2026-03-17 03:18:06 +00:00
KoalaTrapLord
9f7fbef7f8
fix: implement all 19 simulator audit bug fixes
...
Bug fixes across 7 Python files from the deep-dive audit:
engine.py (bugs 1-6):
- Fix summoning sickness (was disabled after turn 0)
- Move untap step before draw (correct MTG ordering)
- Rebuild playable list each iteration (fix mana overspend)
- Menace now allows 2+ blockers instead of preventing all
- Add double strike damage handling (blocked + unblocked)
- (Finish position sort already correct, no change needed)
game_state.py (bugs 7,9,18,19):
- Add .players property returning commander_players
- Add get_legal_moves()/apply_move() stubs
- Initialize commander zone in from_sim_state()
- Sync land_drop_used from engine stats
turn_manager.py (bugs 8,10,11):
- Use sim_state.get_battlefield() + card.tapped attr access
- Replace asyncio.get_event_loop() with get_running_loop()
- Fix APNAP iterations counter (always increment)
- Fix drawn.name and discarded.name (was dict .get())
threat_assessor.py (bugs 12,13,14):
- Use game_state.battlefield(seat) for card iteration
- Use Card dataclass attrs (c.type_line, c.oracle_text, etc)
- Move import re to module top level
models.py (bug 15):
- Word-boundary regex in has_keyword() (fixes reach/ward FPs)
prompt_builder.py (bug 16):
- Remove @staticmethod from module-level _category_label()
rules.py (bug 17):
- Evaluate ramp detection independently of is_removal flag
2026-03-16 20:50:09 +00:00
KoalaTrapLord
2f117eedcb
fix: Java 17 compat - inline ternary in this() call instead of local var
2026-03-16 20:34:05 +00:00
KoalaTrapLord
8f8abb79c6
fix: match actual Forge verbose log format - cast/played/Life:/Zone Change: patterns
2026-03-16 20:25:35 +00:00
KoalaTrapLord
78898f6da0
fix: regex patterns match Forge verbose output, single-winner resolution, 300s clock for 4p
2026-03-16 17:34:12 +00:00
KoalaTrapLord
69242a8f6e
fix: remove duplicate numPlayers declaration in parseForgeOutput
2026-03-16 17:13:48 +00:00
KoalaTrapLord
2b6ccac3ea
fix: hardcoded 3-element arrays in BatchRunner causing empty stats for 4-player games
2026-03-16 17:09:57 +00:00
KoalaTrapLord
94bb369866
feat: add --deck4/--commander4 support for 4-player games in LabCli + BatchRunner
2026-03-16 02:28:06 +00:00
KoalaTrapLord
463b7c1483
Phase 8: Full multiplayer — lobby, private hands, LAN discovery, spectator mode, chat
2026-03-14 23:04:32 -04:00