Skip to content

pucktastic product strategy - #1

Merged
jayrdeaton merged 3 commits into
mainfrom
claude/pucktastic-product-strategy-hbu9z8
Oct 24, 2026
Merged

jayrdeaton merged 3 commits into
mainfrom
claude/pucktastic-product-strategy-hbu9z8

Conversation

@jayrdeaton

Copy link
Copy Markdown
Owner

No description provided.

BoxHockey's App Store record becomes PuckTastic: Box Hockey, Air Hockey
(from the AirHockey repo), Paddles and Breaker (both from Pong).

- Layout: src/app holds thin routes ([game]/loadout, [game]/play,
  stats, profiles), src/pack.ts the pack's identity, games and store,
  src/shell the app-wide screens and slices, src/shared code two or
  more games use, src/games/<id> each game. A lint rule keeps the shell
  and shared code from importing a game, and one game from another.
- Home: seat 1's button, then Solitaire's list, one row per game with
  its icon at app-icon size, a blurb naming the classic it remakes,
  and a rules button. A game's How to Play shows on its first tap.
- One shared loadout with a seat-2 button (CPU, Player 2, a profile,
  or Nobody in Breaker), saved pack-wide. A fresh install starts on
  the CPU.
- Stats: tabs plus player and game filters; each game keeps its own
  stats and achievements. Tapping outside a filter closes it.
- Saved data: Box Hockey keeps 1.0's store keys; the others use their
  own. A 1.0 save seeds the pack-wide settings and seat 2 once.
- Paddles and Breaker run on one engine from Pong, with the ball drawn
  as a puck. Breaker has bricks every round and a solo round alone.
- Identity: app name, EAS app name and the store listing are
  PuckTastic. Slug, scheme, bundle id and web path stay BoxHockey's.

Checked on the web: every game's Home row, How to Play, loadout and a
match start, the seat-2 menu and the stats filters. Not checked on a
device. The name change and @tastic/profile 0.17 need a new native
build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UeHAd8TTp7C13K3qMNF7M3
- The store saves under pucktastic:root, and Box Hockey's keys are
  named like every game's: boxhockeySettings, boxhockeyAchievements,
  boxhockeyGuide, boxhockeyProfileExtensions. Box Hockey's How to Play
  uses the shell's per-game guide slice like the others.
- src/importBoxHockey1.ts copies a BoxHockey 1.0 save (boxhockey:root)
  into the pack's store on the first launch of a pack build: Box
  Hockey's settings, stats, achievements and How to Play under the new
  names, the shared settings as they were, and 1.0's Lock Orientation,
  Edge Guard and last Home mode into the pack-wide settings and seat 2.
  It replaces the 1.0 seeding and pre-1.0 guide migrations. TODO.md says
  when and how to remove it (not before May 2027).
- README rewritten for PuckTastic: the four games, the shared
  features, how the pack is built, and the project layout.
- The App Store screenshot seed writes the new key and names.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UeHAd8TTp7C13K3qMNF7M3
Each game's match settings are now saved per player and load with whoever
is seat 1, and each seat's controls load with the player in that seat (a
profile, or that seat's guest). Seat 2's color already followed its profile.

- shared/playerSettings.ts: createPlayerSettings, the per-player store keys
  <id>Settings and <id>Controls, the hook the loadouts read and write through,
  and select() for How to Play.
- Box Hockey, Air Hockey, Paddles and Breaker use it; Box Hockey's
  per-profile shot style (boxhockeyProfileExtensions) is folded into
  boxhockeyControls. Where two seats can't share the mouse or a key cluster,
  a saved clash moves seat 2 to the next free one for the match, unsaved.
- The BoxHockey 1.0 import gives 1.0's one setup to seat 1's player and each
  seat's shot style to the player in it, a profile's own pick winning.
- Deleting a profile forgets its setup and controls.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UeHAd8TTp7C13K3qMNF7M3
@jayrdeaton
jayrdeaton merged commit 930bc2f into main Oct 24, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants