Releases
v0.1.0
Compare
Sorry, something went wrong.
No results found
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 )
You can’t perform that action at this time.