Revamp: 2-6 players, table layouts, two themes, table tools - #453
Merged
Conversation
Rebuild of the app on the existing Vue 3 + Vite + Tailwind base. Game - 2 to 6 players, each seat rotated towards the edge its player sits at. - Three table layouts: facing (top/bottom rows), sides (quarter turn, left and right edges) and same side (upright stack). Picking the player count opens the layout step, which previews live on the table behind it. - Game presets: Standard, Commander, Energy, Duel 8000 and a board-game counter, with a freely adjustable starting life total. - Poison and energy counters, per-seat names and colours. - Table tools: dice (coin, d4-d100), match timer, random first player. Look - Two themes: Pulse (edge-to-edge colour, oversized numerals) and Arena (floating cards on a dark stage), both driven by CSS design tokens. - Radial control hub replaces the old corner menu. Touch - Pointer events with per-pointer ownership, so a second finger cannot end somebody else's hold on a shared tablet. - Touch targets, safe-area insets, 100dvh sizing and iOS callout handling. Structure - Domain layer under src/game (state, presets, seat layouts, persistence) with migration from the previous two-player storage keys. - Composables for hold-to-repeat, pending delta, dice, timer and screen APIs. - 144 unit tests replace the two smoke tests; vitest config, npm scripts and CI updated to run type-check, tests and build. Removes the @radial-color-picker dependency in favour of a built-in hue slider. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rebuild of the app on the existing Vue 3 + Vite + Tailwind base. The technical
foundation is unchanged; everything above it is new.
Game
table turned a quarter turn) and Same side (upright stack). Picking the
player count opens the layout step, and the table behind it updates live as
you pick.
board-game counter, plus a freely adjustable starting life total.
player, all from a radial hub in the middle of the table.
Look
Two themes driven by CSS design tokens: Pulse keeps the original
edge-to-edge colour blocks with oversized numerals, Arena puts floating
player cards on a dark stage. A theme only overrides a token block.
Touch
The app is used on phones and tablets, so: pointer events with per-pointer
ownership (a second finger cannot end somebody else's hold on a shared
tablet), touch-target sizing, safe-area insets,
100dvhsizing and iOSlong-press callout handling.
Structure and tests
src/game(state, presets, seat layouts, persistence),including a one-off migration from the previous two-player storage keys, so
returning users keep their life totals and colours.
APIs.
vitest.config.ts,the npm scripts and CI now run type-check, tests and build.
Removes the
@radial-color-pickerdependency in favour of a built-in hueslider.
Verification
Type-check, tests and production build all pass. The app was driven in
Microsoft Edge across both themes, all player counts and all three layouts, at
phone (390x844) and tablet (820x1180) viewports. Lighthouse mobile reports
accessibility 100 and best practices 100, with a clean console.
Four bugs found that way and fixed here: hue tokens resolving on
:rootinstead of the panel (every player rendered red), a hub backdrop with no area,
a settings sheet that overflowed the phone without scrolling, and
aria-hiddenapplied to a focused element.
Screenshots are in the README.
🤖 Generated with Claude Code