Complete frontend rewrite from vanilla HTML/CSS/JS to React 19 + TypeScript + Tailwind CSS v4. Frontend (frontend/commander-ai-lab-ui/): - Vite + React 19 + TypeScript + Tailwind CSS v4 + React Router - 7 pages: BatchSim, Collection, Decks, AutoGen, Simulator, Coach, Training - Reusable components: Spinner, StatusBadge, CardImage, ManaSymbols, EmptyState - Full typed API client layer (8 modules matching all backend endpoints) - Recharts for mana curves, win rate charts, progress bars - Lucide icons throughout - Custom dark theme with MTG mana color tokens - Code splitting (recharts + react in separate chunks) Backend (lab_api.py): - SPA-aware static file serving with catch-all for client-side routing - Fallback to legacy ui/ folder if React dist not built - Updated startup log with SPA route list Build system: - .gitignore added (was missing - removes pyc, db, node_modules, etc.) - build-full-installer-v2.py: v23 with Node.js check + React build step - Vite build config with manual chunks for optimal loading Also includes: V3 deck generator fixes, coach improvements, DeepSeek sim modules
80 lines
1.4 KiB
Plaintext
80 lines
1.4 KiB
Plaintext
[metadata]
|
|
Name=Undead Unleashed
|
|
[Commander]
|
|
1 Wilhelt, the Rotcleaver
|
|
[Main]
|
|
1 Aetherspouts
|
|
1 Arcane Signet
|
|
1 Army of the Damned
|
|
1 Bojuka Bog
|
|
1 Butcher of Malakir
|
|
1 Cemetery Reaper
|
|
1 Charcoal Diamond
|
|
1 Choked Estuary
|
|
1 Cleaver Skaab
|
|
1 Command Tower
|
|
1 Commander's Sphere
|
|
1 Corpse Augur
|
|
1 Crowded Crypt
|
|
1 Curse of Unbinding
|
|
1 Curse of the Restless Dead
|
|
1 Dark Salvation
|
|
1 Darkwater Catacombs
|
|
1 Death Baron
|
|
1 Dimir Aqueduct
|
|
1 Diregraf Captain
|
|
1 Diregraf Colossus
|
|
1 Distant Melody
|
|
1 Dread Summons
|
|
1 Dreadhorde Invasion
|
|
1 Drown in Dreams
|
|
1 Eater of Hope
|
|
1 Eloise, Nephalia Sleuth
|
|
1 Empty the Laboratory
|
|
1 Endless Ranks of the Dead
|
|
1 Eternal Skylord
|
|
1 Exotic Orchard
|
|
1 Feed the Swarm
|
|
1 Fleshbag Marauder
|
|
1 Forgotten Creation
|
|
1 Ghouls' Night Out
|
|
1 Gisa and Geralf
|
|
1 Gleaming Overseer
|
|
1 Go for the Throat
|
|
1 Gorex, the Tombshell
|
|
1 Gravespawn Sovereign
|
|
1 Havengul Runebinder
|
|
1 Hordewing Skaab
|
|
1 Hour of Eternity
|
|
1 Liliana's Devotee
|
|
1 Liliana's Mastery
|
|
1 Liliana, Death's Majesty
|
|
1 Lord of the Accursed
|
|
1 Midnight Reaper
|
|
1 Mortuary Mire
|
|
1 Myriad Landscape
|
|
1 Open the Graves
|
|
1 Overseer of the Damned
|
|
1 Path of Ancestry
|
|
1 Prowling Geistcatcher
|
|
1 Ravenous Rotbelly
|
|
1 Rooftop Storm
|
|
1 Ruthless Deathfang
|
|
1 Shadow Kin
|
|
1 Sky Diamond
|
|
1 Sol Ring
|
|
1 Spark Reaper
|
|
1 Stitcher Geralf
|
|
1 Sunken Hollow
|
|
1 Syphon Flesh
|
|
1 Tainted Isle
|
|
1 Talisman of Dominance
|
|
1 Temple of Deceit
|
|
1 Tomb Tyrant
|
|
1 Unclaimed Territory
|
|
1 Undead Alchemist
|
|
1 Undead Augur
|
|
1 Zombie Apocalypse
|
|
14 Island
|
|
13 Swamp
|