Skip to content

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 01 Jun 16:41
0dabe35

0.1.0 (2026-06-01)

Features

  • add forge card script debugger and lsp tooling (#480) (3a45501)
  • Add parity repair agent v0.2 (#255) (d2fe522)
  • agent: Auto-add regression test for validated fixes (be0faf6)
  • Assign combat damage (#297) (280f9b4)
  • ci: per-PR preview deploys with isolated relay (reopen of #20) (#26) (bd800d0)
  • complete effect & replacement port + parity fixes (#317) (1dafc94)
  • dashboard: Show resolution status on failure clusters (74ae9fa)
  • debugger: action-space surfacing + card_widgets refactor + valid_filter fix (#518) (a369613)
  • deck-editor: multi-select, lasso, labels color picker, and stack view fixes (#293) (eaa2042)
  • deploy: build and deploy both forge-server and parity-dashboard (a68c451)
  • deploy: Discord-friendly summary on stdout, raw log to file (38075ff)
  • deploy: joyful Discord embed + rename to Wasm deploy (#14) (011c8bd)
  • dice rolls — engine prompts, polyhedral UI, opening d20 (#477) (718a111)
  • editor: warn on cards the engine doesn't implement (#100) (7e9f843)
  • engine | UI: Commander mode (#338) (b7e797e)
  • engine: #152 Staticability (#283) (ace74e6)
  • engine+ui: interactive attack cost payment for Propaganda/Ghostly Prison (#141) (4769400)
  • engine: Charm & Modal Mechanics — SP$ Charm effect (issue #18) (#41) (6e4a0e9)
  • engine: combat attack restrictions, requirements, and damage assignment order (#140) (4bd2e63)
  • engine: Combat module (#321) (9d6a5fc)
  • engine: expand cost system — 13 new cost types (#96) (f6a1380)
  • engine: Expand trigger types from 8 to 25 (issue #19) (#43) (ed32f9b)
  • engine: Implement 7 critical effects (issue #52) (#65) (54429b6)
  • engine: Implement Fireblast, Plot, Madness, GenericChoice for realMonoRedMadness parity (#282) (044d111)
  • engine: implement next batch of keywords (#60) (#244) (c1d585e)
  • engine: Mass & board-wide effects (issue #17) (#40) (63d9735)
  • engine: Morph/Megamorph face-down casting and TurnFaceUp triggers (#257) (94c5d76)
  • engine: Player & game-state effects (issue #22) (#49) (7e2f45d)
  • engine: port card module (#326) (0b10d82)
  • engine: Port cost module (#336) (e87d2cd)
  • engine: Port Java replacement/ folder to Rust (#289) (39ae226)
  • engine: Port player module (#337) (39c456f)
  • engine: port staticability full module (#323) (fc0a78d)
  • engine: port trigger module (#333) (d86d8ec)
  • engine: Static abilities & CR 613 layer system (#11) (#26) (230fb18)
  • engine: undo mana abilities (#484) (c27256f)
  • engine: X mana cost support and Phyrexian life payment (#113) (8d70157)
  • implement graveyard interaction UI for cards like Raise Dead (b3252b1)
  • implement library manipulation effects (issue #15) (a864c95)
  • implement smart prio for java engine (#97) (d7c0a63)
  • Library Manipulation effects — Scry, Surveil, Mill, Dig (issue #15) (0f53fdc)
  • Library Manipulation effects — Scry, Surveil, Mill, Dig (issue #15) (#36) (f54dae0)
  • limited: .gamemodes.limited (sealed → draft → winston → gauntlet) (#491) (e37ead4)
  • limited: multiplayer booster draft (+ image hydration / DraftCardDto cleanup) (#80) (c144dda)
  • Mono Red Madness parity + UI improvements (#286) (cbb716e)
  • mulligan: fan out prompts per round for parallel multiplayer (#411) (936f604)
  • Multi-ability land tapping with picker modal and Combo mana (#67) (de13430)
  • node: hosted java-forge play-vs-ai — espresso concurrency, lobby, engine select (#82) (a1ea74c)
  • node: self-play soak harness (java + rust) for the hosted prompt path (#32) (11af526)
  • parity | engine: Make parity engine pure actions pace rng (#242) (795d7ca)
  • parity | engine: Remove AI Controller from parity. Fix misc engine issues (#246) (c11b538)
  • parity: Add --java-workers (#340) (bfa3e60)
  • parity: Add since filter to failures and clusters API endpoints (ad2e9cc)
  • parity: add analysis daemon with LLM, Discord, and GitHub integration (#155) (5ca5de8)
  • parity: Add cluster/analysis to failures and hover tooltips to matrix (cb70a0a)
  • parity: Add Commander variant support to parity engine (#341) (ac87518)
  • parity: Add field filter to failures API endpoint (5da2af2)
  • parity: add Java harness server mode to eliminate per-matchup JVM startup (#88) (47ce58f)
  • parity: Add time range filtering, commit tracking, and run-matchup API (f3d9f14)
  • parity: agentic tool-calling analyzer (#157) (45272af)
  • parity: backfill GitHub issues for existing clusters on startup (5e63aa7)
  • parity: Blacklist real_ decks from scheduling and stats (b21ef61)
  • parity: CI server mode with persistent JVM and job queue API (#171) (add2aef)
  • parity: continuous parity server with SQLite and web dashboard (#149) (9ffd228)
  • parity: Docker layer caching + n8n auto-deploy (#167) (c24edd8)
  • parity: forge-parity crate + Java forge-harness for cross-engine differential testing (#51) (ae0beec)
  • parity: fuzz random deck testing with dynamic card pool (#85) (548c0d5)
  • parity: Introduce extra actions (#115) (3fa5dc2)
  • parity: Java harness server mode + fuzz pool effect filter (#91) (ba8b7a3)
  • parity: Java output cache — skip redundant JVM spawns (#264) (d9d73ef)
  • parity: multi-deck matrix mode with rayon parallelization (#70) (213be79)
  • parity: normalize field indices for GitHub issue dedup (5bed28a)
  • parity: normalize field indices in dashboard clusters API (3a8272e)
  • parity: randomize agent decisions with deterministic seed (#83) (97fafac)
  • parity: replace gh CLI with reqwest GitHub REST API (51dff87)
  • parity: reqwest GitHub API + dedup issue creation (1360c28)
  • parity: separate fuzz data from preset data (#161) (2f556ec)
  • parity: split parity decks + non-interactive import + 31 starter decks (#534) (a5515f6)
  • parity: support custom OpenAI-compatible endpoints (LiteLLM) (b0666d9)
  • parity: Time-filter headline stats and inline traces in failures tab (1f52c9b)
  • pixi: grid-based battlefield with stacking, center-placement, and settings (#404) (4b559c8)
  • port ability module — 100% scan coverage (#301) (#322) (24fc95d)
  • port keyword module — 100% scan coverage (#304) (#320) (ca41d56)
  • port mana module — 100% scan coverage (5/5 files, 46/46 symbols) (#305) (#328) (3d46a76)
  • port phase module — 100% scan coverage (6/6 files, 35/35 symbols) (#307) (#324) (8895a65)
  • port replacement module — 100% scan coverage (45/45 files, 57/57 symbols) (#310) (#335) (fad1212)
  • port spellability module — 100% scan coverage (22/22 files, 133/133 symbols) (#311) (#327) (2c46936)
  • port zone module — 100% scan coverage (7/7 files, 53/53 symbols) (#314) (#325) (43e4842)
  • replacement: expand replacement effects (#56) (c7ba30a)
  • replacement: expand replacement effects with 6 new event types (#56) (6205a9a)
  • Scan features (#300) (5f6ce8a)
  • standalone card search page & card detail modal (#290) (20ca560)
  • tools: add deck importer CLI (#387) (3c8b385)
  • triggers: expand trigger types, fire points, and code quality (#54) (#84) (265be72)
  • triggers: implement 35 new trigger types (#81) (01d1f61)
  • ui | engine: Fix UI callback gaps for engine agent methods (#248) (a7f47aa)
  • ui | engine: stack logs + infra (#144) (4105eea)
  • ui: add terms acknowledgement onboarding gate (#540) (57f15a6)
  • ui: Auto-priority pass with random delay (#48) (1348a68)
  • ui: better atk prio phase handling (#476) (735f5bf)
  • ui: custom targeting pointers with per-intent icons and glow (#413) (d97f09f)
  • ui: Draggable stack view sections + Zustand DevTools (#344) (bc57a20)
  • ui: game UX overhaul — copy badge, auto-stack, combat polish, prompt auto-resolver, counter icons, dev panel (#509) (4d1a078)
  • ui: granular card actions in deck editor (#485) (f14d90d)
  • ui: in-pile counter target + clearer stack ordering (#96) (2f98263)
  • ui: preset decks browser + format-aware play selection (#522) (4c4c27d)
  • ui: sticky card previews with grace period (#370) (1b5c1df)
  • ui: tabletop mode uses DeckVsSelector and supports preset decks (#473) (70d2cbb)
  • unified archive and app init (#541) (96bb5ca)
  • wasm: Full WASM web platform with interactive gameplay & multiplayer (#351) (e10a0d5)
  • web: configure hosted forge runtime (#25) (cb94dd6)

Fixes

  • agent: Add guardrails to prevent hack fixes in parity repair agent (a0d70e4)
  • agent: Fix broken validation — add --bin flag, field-aware scoring, v0.3 (aa57d48)
  • agent: Increase per-attempt budget from $5 to $15 (3b908c9)
  • agent: Parity repair agent v0.3 — fix validation and git cleanup (ea23eae)
  • agent: Use --games 1 in auto-added regression tests (263a38c)
  • agent: Use exit code for PASS/FAIL detection instead of string matching (01cf2a6)
  • aura enchantments — SBA, AddAbility, SVar resolution, mana tracking (a0076d0)
  • aura targeting enforcement and playability checks (268cd0c)
  • bot in room for web, misc fixes on lobby deck exchange (#556) (70333be)
  • ci: prevent windows changelog step from inheriting git exit code (#511) (2addc6b)
  • ci: use yarn instead of npm in Dockerfile.web (#470) (e8c3aaf)
  • dashboard: replace confusing dual-axis chart with stacked bar + line (0b0adb8)
  • deploy: cap Maven heap at 512m and skip checkstyle to avoid OOM (4dae286)
  • deploy: copy checkstyle.xml into Docker java-builder stage (50940c6)
  • deploy: copy tree-sitter-forge-card-script into parity docker build (#500) (fcbd345)
  • deploy: copy tree-sitter-forge-card-script into web docker build (#488) (b9da708)
  • deploy: force plain BuildKit progress so redirects actually work (259a63f)
  • deploy: init forge submodule in preview-deploy (#64) (9eee16b)
  • deploy: init forge submodule on the deploy host (#56) (f9a5d80)
  • deploy: limit container restarts to 5 to avoid infinite crash loops (6733fd6)
  • deploy: Pass GIT_COMMIT_SHA build arg to Docker build (b5d5eab)
  • deploy: point origin remote at correct repo url (#545) (8185835)
  • deploy: print failure warning to stdout for Discord visibility (b7ea22c)
  • deploy: strip unused Maven modules in Dockerfile, fix deploy paths (8f50931)
  • deploy: use GITHUB_TOKEN from .env for git pull (no SSH key needed) (53c0b05)
  • dice roll on game start for java room (#98) (5270460)
  • engine | harness: Fix 3 parity regressions and CI permissions (#253) (8070357)
  • engine | parity: Fix 11 confirmed bugs across engine and harness (#249) (5542517)
  • engine: Ashling commander deck + 4 parity bugs (#385) (e3e2f30)
  • engine: bring kaalia parity seed forward (#514) (47d3715)
  • engine: emit game-over prompt from java-hosted sessions (#99) (3a418e3)
  • engine: Fix cost payment bugs from merge (#270) (63ccf4d)
  • engine: fix priority on attack, fix colorless autopay, fix cards… (#523) (dd2eb4a)
  • engine: fix prompts and TriggerRemember (#525) (f2642f4)
  • engine: Fix subtype qualifier matching in valid_filter — was matching all cards (#280) (8e07aa2)
  • engine: Greedy phyrexian mana matching Java parity (#256) (da0a5b7)
  • engine: misc fixes for sauron the dark lord (#58) (ed0b803)
  • engine: phased-out trigger gate + animate keyword cleanup on zone change (#504) (4f7e4eb)
  • engine: proper static ability modes modelling (#479) (d21c776)
  • engine: reserve additional-cost sacs from spell mana auto-pay (b64cbec)
  • engine: reserve additional-cost sacs from spell mana auto-pay (f3f0aad)
  • engine: resolve jund parity panics and 15+ parity divergences (#345) (5e3e7c3)
  • engine: starter_animar parity — iterative seed-by-seed (#549) (f6059eb)
  • engine: World shaper seed 42 - Add action space to decision log (#506) (400c3cc)
  • forge: java dto zone casting (#91) (8a6be25)
  • hosted play-vs-ai — let the user set format and start, not the node (#94) (f5281f4)
  • include mana abilities on interactive controller action space (#93) (d113015)
  • infra: build forge-server with full workspace context (#555) (9062b18)
  • infra: Update deploy.sh to respect COMPOSE_PROFILES for parity dashboard (7a1f63d)
  • java self hosted dto (#90) (d11cc7e)
  • lobby: let host set room format on enter, not just at game start (#85) (070d880)
  • multiplayer: broadcast game-over and unstick lobby return on concede (#53) (5aeeed7)
  • parity: 100% extended matrix — mana, combat, Bushido, token filter (#142) (a7623c5)
  • parity: add stub lib.rs in Dockerfile for src-tauri workspace member (26e6ac5)
  • parity: always log Java stderr for crash diagnostics (9dcb509)
  • parity: ashling_limitless_commander seed 44 passes (#439) (b8bd060)
  • parity: ashling_limitless_commander seed 45 passes (#478) (953fbf6)
  • parity: binary insertion sort + deathtouch through wither (#147) (c277763)
  • parity: Cache Java output for both passes and failures (42c7968)
  • parity: Charm sub-ability targeting in DeterministicController (85194f9)
  • parity: comprehensive DeterministicController overrides (#119-#126) (#138) (2489509)
  • parity: copy full forge-gui/res/ for Java Localizer (e4bb147)
  • parity: counter targeting, zone search sorting, +1/+1 cancellation — 126/126 base matrix PASS (430adb4)
  • parity: DamagedBy trigger filter and explore Num loop (d88dc46)
  • parity: decouple GitHub issues from LLM analysis (c9d4555)
  • parity: disable GitHub issue comments to avoid spamming subscribers (4be6c27)
  • parity: empty mana pools at phase transitions (MTG rule 500.4) (6bdee6f)
  • parity: Exclude blacklisted decks from all dashboard endpoints (104cf97)
  • parity: filter Java stderr spam, add analyzer env vars to compose (8223c2a)
  • parity: Fix commit SHA in Docker and preserve traces across refresh (cc139e1)
  • parity: Fix counterspell targeting — Java harness Card/SpellAbility type mismatch (#262) (10258ae)
  • parity: Fix divergence in players[*].graveyard (#263) (f2e31b2)
  • parity: Fix divergence in players[*].poison (#261) (f2e1328)
  • parity: fix Docker cardsfolder path for Java harness auto-detect (712514c)
  • parity: Fix exile zone divergence — Deputy of Detention, perpetual P/T, parent target propagation (#259) (e5a9936)
  • parity: Fix matrix tooltip clipping and analysis toggle propagation (d5cbc94)
  • parity: Fix multiple RNG desync and engine bugs (#251) (5a89fcc)
  • parity: Fix stats URL query param prefix for time range filter (653a6f4)
  • parity: hybrid mana, haste snapshot, RNG unification — 92.9% extended (#116) (1a0cffd)
  • parity: mana pool, random discard, and first-strike combat fixes (#93) (4a8b458)
  • parity: mana source ordering, charm mode filtering, and Ponder reorder (cacdcf1)
  • parity: never pay additional costs in DeterministicController (#129) (e784f32), closes #118
  • parity: pass GITHUB_TOKEN/GITHUB_REPO through compose + read from env (046ab44)
  • parity: plug memory leaks and reduce wasted CPU across runner, dashboard, and CI (#240) (0f44157)
  • parity: prefer-actions mode and extensible counter types (ba2c42e)
  • parity: prefer-actions mode, extensible counters, and trigger fixes (b838f08)
  • parity: prevent crash from empty env vars + limit restarts (3f7dca8)
  • parity: rate-limit backfill to avoid hammering GitHub API (438fde2)
  • parity: resolve engine divergences (54% → 100%) (ba264c7)
  • parity: resolve multiple engine divergences, 54% -> 83% pass rate (ec51687)
  • parity: resolve remaining engine divergences, 89.7% -> 90.5% pass rate (936a81e)
  • parity: resolve RNG divergence for random discard, 90.5% -> 99.2% pass rate (a5b03f3)
  • parity: Resume from last played deck pair, keep seeds stable for cache (440eee2)
  • parity: Resume matrix pair position on restart, keep seeds stable for cache (d57ade7)
  • parity: Resume scheduler from DB on restart, gate logs behind --log-level (06588d1)
  • parity: run backfill in background so main loop starts immediately (33ef377)
  • parity: search open+closed issues to prevent reopening duplicates (8280d38)
  • parity: skip alternative cost spells in DeterministicController (#128) (a60e562)
  • parity: throttle game loop to avoid 200% CPU usage (49179d3)
  • perf: point packaged builds at the bundled rkyv cardset archive (#483) (e9aacff)
  • prod: caddy scryfall proxy regex + --remove-orphans on deploy (#24) (e0bdf49)
  • prompts: restore reveal modals + correct discard chooser (#521) (50e7731)
  • relay: app-level keepalive so idle clients aren't dropped (#33) (94aec7c)
  • relay: diagnose + harden relay reliability on hetzner (#79) (caf398f)
  • remove bad indexed deck (#547) (dd453bd)
  • remove hsl() wrappers from CSS variable references (#456) (b52b49a)
  • remove stray comma in activated_abilities_test.json breaking wasm build (#375) (48887a3)
  • route cross-origin fetches through platform-aware helper for web build (#441) (3b46631)
  • server: clean up relay sessions when websocket writes fail (#41) (8ba85c9)
  • Tokens are now derived from the deck (#557) (afce027)
  • triggers: flush waiting triggers before SBA to prevent lost enrage-style triggers (540c2cc)
  • triggers: support TriggerCount$Amount SVar for Woodland Champion (9d6a034)
  • ui: better import flow and misc fixes (#55) (5c56125)
  • ui: card hover preview works during autopass (f504e5a)
  • ui: confirm prompt (#526) (59f47c1)
  • ui: Deck editor UX overhaul (#334) (#343) (4f92394)
  • ui: fix slop rendering RAF and FPS handling (#57) (482c645)
  • ui: guard empty deck cover from undefined crash (#481) (647dcee)
  • ui: keep tapped same-name cards stacked (#83) (c2f9e07), closes #60
  • ui: prompts flashing and cursor disappearing (#527) (75c8228)
  • ui: remove redundant native tooltip on card hover (e31a58a)
  • ui: targeting arrows/pointers no longer dropped by hidden DOM duplicates (#487) (0561775)
  • ui: wasm (5e1a7a7)
  • web: fix wasm multiplayer architecture (#23) (aa0d060)
  • web: restore worker deck availability lookup (#363) (9c651db)
  • web: stabilize endgame and concede flow (#366) (9c1af9f)

Performance

  • carddb: pre-compile cardset to rkyv archive (~6× faster cold start) (#465) (9783c6f)
  • ops: gzip/zstd-compress web assets in Caddy (#27) (92432e2)
  • parity: Cap JVM heap and worker count to prevent OOM on VMs (#250) (41b0656)
  • parity: Parallelize Rust/Java engines and add streaming diff + batching (15ddbd0)

Refactors

  • debugger: extract worker thread + panic-safety fixes (#503) (aa0b5dd)
  • Enforce exact 1:1 file naming parity with Java effects (86e0efe)
  • engine: lower svar and produced mana ir (#530) (ce30dba)
  • engine: Mad Trigger refactor (#405) (22786b7)
  • engine: Pay mana, cast spell refactored (#391) (ba38c7c)
  • engine: Trigger part 2 (#408) (351e48b)
  • lint: clear all eslint errors and warnings (#464) (8f04868)
  • modules in forge-harness (#92) (c114a74)
  • node: drop espresso, run java-forge on bare hotspot (#88) (a7c370c)
  • parity: unify runtime entrypoints (#529) (dce46ee)
  • ui: Extract game components and shared modules from Game.tsx (#72) (b946d6d)
  • ui: replace hardcoded colors with theme tokens (#474) (cacedd3)
  • ui: Replace prompt type magic strings with typed PromptType enum (#279) (bd5e5f2)