Skip to content

chore(main): release 1.0.0#9

Open
github-actions[bot] wants to merge 1 commit into
mainfrom
release-please--branches--main--components--mtg-tcg-a11y
Open

chore(main): release 1.0.0#9
github-actions[bot] wants to merge 1 commit into
mainfrom
release-please--branches--main--components--mtg-tcg-a11y

Conversation

@github-actions

@github-actions github-actions Bot commented May 6, 2026

Copy link
Copy Markdown

🤖 I have created a release beep boop

1.0.0 (2026-05-08)

Features

  • adapter: expose colors and cmc on ICard (2e5912b)
  • ai: opponent plays greedy multi-creature main phase (85a1574)
  • ai: pickCardToPlay filters hand by affordable cmc (c088532)
  • battlefield: accept and forward onCardInspect (39ae347)
  • card: add onInspect prop, i key, and hover-only ⓘ button (12ebd3c)
  • combat: animator store with serial queue and reduced-motion branch (4d4a130)
  • combat: block face damage while the opponent still has creatures (9272c31)
  • combat: CombatLayer portal with floating damage numbers (8d46502)
  • combat: disable control buttons while animation is playing (a2ca7b6)
  • combat: flight clone travels from attacker to target (dc1f73a)
  • combat: focus restoration to next attackable card after combat (dc6f9b0)
  • combat: honor prefers-reduced-motion by toggling store flag (95f9bee)
  • combat: impact flash, shake, and life pulse on face damage (685583d)
  • combat: route AI attacks through playCombat (756ec09)
  • combat: route player attacks through playCombat before committing (96bcbad)
  • combat: show a visible note when face damage is blocked (0e78ffa)
  • combat: show face-blocked note only on attempt, auto-clear after 3s (5e4ad47)
  • csp: enforce CSP with nonce + strict-dynamic on script-src (9b22a1b)
  • deck: drop Scryfall candidates without an image so decks never show the blank fallback (36e2473)
  • engine: add buildDeckFromCandidates best-fit assembler (6b00b1d)
  • engine: add canAfford(player, card) predicate (14a0f1e)
  • engine: add Color type, skeleton, and opponent color picker (bba372f)
  • engine: add manaMax/manaAvailable to IPlayer and 'mana' LogKind (8c9980b)
  • engine: beginTurn ramps manaMax and refills manaAvailable (399cc20)
  • engine: playCardToField spends card.cmc from manaAvailable (d777130)
  • game: mana is the only gate for playing creatures (4ef70a7)
  • hook: AI orchestrator passes manaAvailable to pickCardToPlay (e99b45e)
  • i18n: add es-ES and fr-FR translations to the catalog (51ff752)
  • i18n: translate hardcoded EN strings in Card, Inspector, Footer, PlayerHeader (e0476b6)
  • inspector: basic CardInspector render with text panel (3d334da)
  • inspector: close on Escape and backdrop click (c580965)
  • inspector: initial focus and Tab trap (44e98a4)
  • inspector: render through portal so background can be inert (a31deea)
  • life: animated count-down display for life totals (0bf15f2)
  • observability: wire Sentry + Web Vitals behind NEXT_PUBLIC_SENTRY_DSN (b808301)
  • page: wire CardInspector into game flow (daf429e)
  • phase 1 - axe CI gate, Lighthouse workflow, PT/EN toggle, copy polish (59a5b1d)
  • scryfall: retry with exponential backoff on transient failures (f4de0a0)
  • security: add CSP report-only, HSTS, COOP, CORP headers (f46f2da)
  • services: fetchDeckForColor with per-slot fallback (55a4d6c)
  • services: per-color fallback pools balanced against skeleton (2a75500)
  • store: block plays when canAfford fails, announce mana reason (99e4c13)
  • store: init mana, emit 'mana' log on player turn start; CombatLog renders mana kind (cc8f29b)
  • ui: ColorSelection radiogroup with keyboard navigation (e5dd3de)
  • ui: gate game behind ColorSelection and offer 'Trocar cor' on end (5413f63)
  • ui: give action buttons semantic weight and tint the playmats (a31720a)
  • ui: inspector play action disables with aria reason when unaffordable (5ee87e8)
  • ui: phase 2 - structured event stream and visible combat log (bfb6863)
  • ui: PlayerHeader displays Mana: available / max (8601896)
  • ui: polish board with color identity, hero life, card backs (0138f24)
  • ui: show an Opponent thinking indicator during the AI's turn (a763f2f)
  • ui: swap color name for mana symbol and tighten flavor copy (d946ffa)
  • ui: use Scryfall art crops as color selector icons (957d0da)
  • ui: wire mana into PlayerHeader and inspector affordability (74536b2)
  • utils: add buildInspectorActions decision helper (fb16f22)
  • ux: skeleton loader and recoverable ErrorBoundary (25ba13b)
  • ux: stack page header below 480px (e8a0609)
  • validation: zod runtime schemas at the scryfall boundary (1243996)

Bug Fixes

  • a11y: aria-labelledby on dialog and unnest inspect button (5516ff3)
  • a11y: move aria-posinset/setsize from card button to listitem (8a4ac57)
  • a11y: remove duplicate skip link, hint arrow-key nav, focus loading main (3c28f18)
  • card: restore descriptive inspect aria-label and anchor card test (e85825d)
  • ci: pin release-please-action by commit SHA (not annotated-tag SHA) (#16) (7185461)
  • ci: use npm install to coexist with Railway's node_modules cache mount (d5e60ca)
  • combat: prevent a creature from attacking twice in the same turn (22337b9)
  • csp: allowlist svgs.scryfall.io for the WUBRG mana symbols (33f575c)
  • engine: double the skeleton to 20 slots so decks don't run out by turn 6 (57602ac)
  • inspector: redirect Tab into dialog when focus escapes to body (346b2ed)
  • log: use a monotonic sequence for log entry ids (316e914)
  • test: playerArb must not duplicate card ids across zones (ad9fda2)
  • test: preserve Outcome discriminant union after prettier reformat (95ec075)
  • ui: fit the whole game inside one viewport on mobile and desktop (d9b2ead)
  • ui: inspector uses aria-disabled so SR can announce play-blocked reason (dd9c2fc)
  • ui: PlayerHeader mana follows existing sr-only/aria-hidden pattern (70feaa1)
  • ui: stop cropping battlefield cards when a hand occupies the same zone (8178021)

Performance Improvements

  • bundle: ratchet /page floor to 197 kB for a11y deepening pass (178d241)
  • hooks: drop incidental useCallback wrappers (669c2c7)
  • images: use next/image for ColorSelection art (95ef229)
  • lazy-load CardInspector, CombatLayer, CombatLog via next/dynamic (48bfb90)
  • scryfall: drop axios for native fetch + AbortController, save 21 kB gzip (a13f890)

This PR was generated with Release Please. See documentation.

@github-actions github-actions Bot force-pushed the release-please--branches--main--components--mtg-tcg-a11y branch from 59048e1 to 0a16c38 Compare May 8, 2026 00:16
@github-actions github-actions Bot force-pushed the release-please--branches--main--components--mtg-tcg-a11y branch from 0a16c38 to f8f31c6 Compare May 8, 2026 00:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants