Immutable
release. Only release title and notes can be modified.
Downloads
| Platform | File |
|---|---|
| Windows | Phase_*_x64-setup.exe |
| macOS (Apple Silicon) | Phase_*_aarch64.dmg |
| Linux | Phase_*_amd64.AppImage or .deb |
macOS note: If you see "this app is damaged", open Terminal and run:
xattr -cr /Applications/Phase.app
Changes
- feat(parser): "Lands you control are the chosen type in addition to their other types" (Realmwright) (#5136)
- chore: refresh metagame feeds (#5133)
- fix: require bearer auth for unauthenticated /admin/drafts endpoints (#5128)
- fix(engine): stop Jinnie Fay replacement from re-prompting (#4886) (#4938)
- fix(parser): gate a conditional draw on "if that creature has a +1/+1 counter" (Oblivion's Hunger) (#5129)
- fix(parser): scope "each opponent attacking that player does the same" curse rider (CR 508.6 + CR 608.2c) (#5025)
- ship/quantity grammar nom migration (#5127)
- Add Dazzling Beauty (#5074)
- feat(grafana): organize telemetry dashboard into rows; card-triage and abandons panels (#5126)
- fix(engine): recover from dangling pending-trigger cursor; classify stale actions; card-report follow-ups (#5122)
- fix(parser): preserve named Kookus condition (#5120)
- fix(parser): preserve single-graveyard target constraint (#5119)
- Add Sylvan Echoes (#5040)
- fix(parser): parse anaphoric perpetual effects (#5117)
- fix(parser): accept deconjugated-singular "assigns combat damage equal to its toughness" (#5111)
- chore(changelog): publish #162 - World rule arrives (#5112)
- fix(parser): count only creature cards for Dread Summons' token repeat (#5009)
- Recover the count and filter when a verb cost continues past an and-clause (#4931)
- feat(telemetry): card reports and usage events (Tier 2) (#5113)
- [codex] improve discord issue automation (#4523)
- fix(parser): parse any-one-plus-other-color mana (#5106)
- fix(parser): count "the number of you control with " (Axebane Guardian, Doorkeeper) (#5059)
- fix(parser): count "for each you control with a counter on it" (High Sentinels of Arashin, Armorcraft Judge) (#5024)
- fix(pr-review): track proof hygiene without blocking reviews (#5108)
- fix(engine): bind Helm copy-token haste to token (#5094)
- ship/split board ui polish (#5107)
- fix(engine): manifest dread drops a non-permanent card instead of manifesting it face down (#4641)
- fix: enforce draft lobby password on join (password bypass) (#5038)
- fix(parser): preserve legacy activation timing (#5103)
- docs(skills): dual-walk boolean axes + sweep-delta evidence step (post-#5072 R4/R5) (#5100)
- fix(parser): stop named filters before origin zones (#5101)
- feat(manabrew-compat): adopt updated Manabrew prompt protocol (#5105)
- feat(telemetry): first-party Tier 1 telemetry — client beacon, worker ingest, engine unimplemented accumulator (#5104)
- fix(parser): parse targeted perpetual p/t grants (#5099)
- docs(skills): add read/write-profiler (dual-walk) discipline to walker checklist step (#5086)
- feat(engine): PR-6.75 — C0-full+C1 read/write conflict profiler; sound CR 603.3b same-event trigger ordering (#5072)
- fix(parser): preserve optional target counts (#5095)
- feat(lobby): capture usage analytics in the Cloudflare broker DO (#5097)
- fix(parser+engine): Skullscorch unless that player has source deal damage (closes #4921) (#4922)
- fix: redact P2P draft backup seat tokens from HTTP storage (#5053)
- fix(import): support choose-a-color-or-colorless branches (#4827) (#4932)
- fix(pr-review): resurface blocked PRs after author follow-up (#5096)
- feat: support Ghyrson Starn damage trigger (#5090)
- Configure multiplayer default server for self-hosted builds (#4992)
- perf(engine): batch identical self-counter triggers (#5084)
- fix(ci): always publish parse-diff sticky evidence (#5092)
- fix(parser): protect card-named literals during normalization (#5080)
- fix(engine): implement the World rule state-based action (CR 704.5k) (#5088)
- [codex] Reclassify basic land mana backlog bucket (#5089)
- fix(parser): parse opponent-turn activation restrictions (#5082)
- fix: support Altaïr copies and freerunning casts (#5083)
- chore(changelog): publish #161 — Foretell and excess damage arrive (#5085)
- fix(client): treat a whitespace-only deck-search query as no criteria (#5067)
- fix(engine): control effects don't end when a player leaves the game (CR 800.4a / 702.26k) (#5077)
- fix(engine): cast-copy-of-a-card copies never cease to exist (CR 704.5e / 707.10a) + fix CR 707.10f token-transition timing (#5071)