Repository navigation
Description
Score: 7.5/10 (target 8), after round 2 (PR #3540; main was 1/10, round 1 7/10). Moved up from #3541: its round 2 comment has the shots and the Next list.
The owner's brief (2026-11-04): every game should be able to inject its own style into the eqosys menus. Today the shared sign-in client (packages/util/src/eqosys.ts) renders nothing, but the pieces games mount from it do, each in its own way: the report button (packages/util/src/report.ts) carries hard-coded inline cssText (grey border, white background, system font) that looks the same in a space-marine war room and a druid's tome; the spaces panel (spaces.ts) and lobby (lobby.ts) leave skinning to the page, so each game has its own account box (apps/*/src/account.ts, Two Fronts's account box in main.ts). The house kit (packages/ui) already re-themes by CSS custom properties (applyTheme, TOKENS), and packages/game-controls/src/skins.ts has classic / house skins with installStyles.
Goalpost
One way for a game to say "here is my skin" once, and every eqosys-rendered surface in that game wears it: sign-in / account chip, achievement toast, report button and form, party and spaces panels, lobby. Scored out of 10 by an agent judge against:
- One injection point.
eqosys({ app, url, from, prefix, skin })(or a siblingskinEqosys(...)) takes aThemeof--ui-*tokens plus optional extra CSS, and every shared surface reads tokens frompackages/uiinstead of hard-coded colours. No per-surface styling API. - No hard-coded colours or fonts left in
report.ts,spaces.ts,lobby.ts, and the achievement toast: every colour, radius, border and font is a--ui-*token with a house default. - Three games wear it. Two Fronts (distressed metal:
--imperialfonts, brass on dark steel, square corners), Mythic Masters (tome: parchment, ink, Covered By Your Grace for the Book's hand; look atapps/mythic-masters/src/tome.css), Skate Tech Park (stay minimal: the house skin). Each injects its skin in itseqosys.tsand deletes any duplicate styling of those surfaces from its own CSS. - Cut before you add. The per-game account boxes that do the same thing (
apps/*/src/account.ts) share oneaccountChip(...)inpackages/utilthat the skin styles; copies die in the same PR. - One journey test per touched game still passes (
eqosys.test.ts), plus one test that a skin's tokens land on the mounted surfaces (eval the computed style, don't assert on source text).
The loop
Each round is one PR against main that says "Part of #N". Score it with bun run probe <app> --shot on each game's sign-in chip, report form and achievement toast, side by side. End the round with a comment here starting Score: x/10 (target 8) and ending Next: ..., then open the "rounds N+" issue and close this one with "Moved up to #new".
Why first: the per-game artwork climbs (Two Fronts distressed metal, Mythic Masters tome) hang their menu skins on this hook.
Round 3 starts here
- Move the remaining sign-in boxes to
accountChipand delete the copies: Delayed Reaction, Splat Spray, Git Recon, Park Hide & Seek, the Hippo Tycoon and Splat RoomsAccount.tsx, and Mythic's settings Account pane. - Build the Mythic and Skate skins from their own CSS variables, not copied hex values.
- A probe journey that checks a real game's skin on the mounted chip and toast.
- On a phone, keep the open report form clear of the title buttons.
Activity
eqosys skin round 3: skins from each game's own variables, Delayed Re…
eqosys skin round 3: Delayed Reaction's round buttons, its inputs squ…
Skate: the party lobby box takes its font and colour from the eqosys …
QuinnsCode commentedon Nov 5, 2026
Score: 7/10 (target 8)
Round 3 grew the same PR, #3540. A fresh agent judge scored it. Round 2's judge gave 7.5, so the two disagree by half a point and this one was stricter on journeys. Agent judges run about 2 points above the owner.
What landed:
.accountrule beside the new warship plates.--plate,--brass;--paper,--ink-b,--blood;--paper,--ink,--hot) instead of copied hex values.accountChipwith its own skin, and its account CSS is gone. Six account-box copies are now deleted.apps/two-fronts/test/eqosys-skin.test.tsboots the real game signed in and checks the chip, report form and toast against its real skin.Judge's shares: injection 2/2, no hard-coded looks 2/2, three games 1.5/2, account chip 1.5/2, tests 1.5/2.
Shots: desktop and phone, signed in as a test player, report form open and toast up.
Next:
accountPaneinmain.ts) onaccountChip. The game-controls.gc-craft .gc-acct buttonrule has to give way to.eq-btn(packages/game-controls/src/skins.ts).QuinnsCode commentedon Nov 5, 2026
Moved up to #3570
eqosys skin round 3: skins from each game's own variables, Delayed Re…
eqosys skin round 3: Delayed Reaction's round buttons, its inputs squ…
Skate: the party lobby box takes its font and colour from the eqosys …
eqosys skin round 3: skins from each game's own variables, Delayed Re…
eqosys skin round 3: Delayed Reaction's round buttons, its inputs squ…
Skate: the party lobby box takes its font and colour from the eqosys …
eqosys skin: a game injects its look once, and the chip, toast, repor…