Repository navigation
feat(kit): shared game shell, with the Lot and Night Shift on it - #431
Merged
Merged
Conversation
…hift on it Headless settings (volume per channel, mute on M, quality Auto/High/Balanced/Low, reduce camera motion, key labels, game sections), one title/pause/settings flow with pointer-lock handling, lobby model (name, rooms, invite, players, ready/start, reconnect state), leave-page guard and loading progress, with small default DOM views styled by --shell-* variables. Quality gets a slow-frames step-down policy so Auto starts High and steps down only on measured slow frames (createShellQuality). docs/game-shell.md holds the rules, new-game checklist, per-game audit and the woods adoption note; AGENTS.md points to it.
… the Archers audit row
…Leave leaves the room, lost stays lost, the audio sync owns the runtime's M; Night Shift quality applies with the look off
…ir own row; proof shoots titles at 720p and 1080p
kitlangton
force-pushed
the
game-shell
branch
from
October 22, 2026 23:29
f9edd03 to
634ae1d
Compare
This was referenced Oct 22, 2026
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.
What it does. Every game had its own title, pause, volume and quality UI, or none at all. This adds one shared player-facing shell,
@arcade/kit/shell: settings (volume, mute on M, quality Auto/High/Balanced/Low, reduce camera motion, key labels), the title and lobby, the Escape menu, the leave-page warning and a loading bar. The Lot and Night Shift move onto it here; each other game follows in its own PR.How it works.
ShellSettings,ShellFlow,ShellLobby,ShellLoading,LeaveGuard) and a small default DOM view styled by--shell-*variables. Games keep their own art intitleSlotandpauseSlot.ShellFlowis the one state machine (title → play → pause → play, Leave back to the title). Pointer-lock games pause when the lock goes, and a refused lock never strands the menu.stepDown: "slow-frames"policy onAdaptiveQualityController: Auto starts at High and steps down only on measured slow frames during play.arcade.volume.<game>.v1,arcade.mute.<game>.v1,arcade.quality.<game>.v1. Old mute and reduce-motion keys are read once.?shellshows them for proofs.docs/game-shell.md, linked fromAGENTS.md.Fixes from review: lobby errors now show; M and Escape work after using a slider; Leave from the pause menu leaves the room; a final "lost" connection isn't overwritten;
audioRuntimeSyncturns off the audio runtime's own M; Night Shift's quality applies with the Lab look off. Cards that don't fit the window scroll with an edge fade, and the mute and gear icons get their own row above the title.Risk. Player-facing UI and input in the Lot and Night Shift only. Kit additions are new modules or opt-in options, so other games are unchanged until their own PRs. Smoke readiness accepts the old selector or
.arcade-shell. The Lot's quality setting is new (High is its old 1.5× cap).Proof.
Lot title at 1280×720 and Night Shift title at 1920×1080 (both fit without scrolling):
bun test --max-concurrency 4 packages/kit/shell.test.ts: 23 pass (Escape with a slider focused, Leave leaving the room, lost status, audio M, Play alone clearing the invite).tscforpackages/kit, Lot, Night Shift and root scripts: clean.bun scripts/prove-game-shell.ts lot nightshift: title, Settings and pause in both; the title fits at 1280×720 and 1920×1080 (overflow 0).