Skip to content

eqosys menus: a game injects its skin once and every shared surface wears it, hill climb to 8/10, rounds 4+ (from #3549) #3570

Closed

Description

@QuinnsCode

Score: 7/10 (target 8), after round 3 (PR #3540; main 1, round 1 7, round 2 7.5, each from a fresh judge). Moved up from #3549: its round 3 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:

  1. One injection point. eqosys({ app, url, from, prefix, skin }) (or a sibling skinEqosys(...)) takes a Theme of --ui-* tokens plus optional extra CSS, and every shared surface reads tokens from packages/ui instead of hard-coded colours. No per-surface styling API.
  2. 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.
  3. Three games wear it. Two Fronts (distressed metal: --imperial fonts, brass on dark steel, square corners), Mythic Masters (tome: parchment, ink, Covered By Your Grace for the Book's hand; look at apps/mythic-masters/src/tome.css), Skate Tech Park (stay minimal: the house skin). Each injects its skin in its eqosys.ts and deletes any duplicate styling of those surfaces from its own CSS.
  4. Cut before you add. The per-game account boxes that do the same thing (apps/*/src/account.ts) share one accountChip(...) in packages/util that the skin styles; copies die in the same PR.
  5. 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 4 starts here

Activity

  1. self-assigned this
    on Nov 5, 2026
  2. QuinnsCode commented on Nov 5, 2026

    @QuinnsCode
    OwnerAuthor

    Score: 6.5/10 (target 8)

    Round 4 is PR #3597. The hook itself landed tonight in #3540. A fresh agent judge scored this round. Earlier fresh judges gave 7, 7.5 and 7, and agent judges run about 2 points above the owner.

    What landed:

    Judge's shares: injection 2/2, no hard-coded looks 1.5/2, three games 1.5/2, account chip 1/2, tests 1/2. It docked the badge for reading in capitals in the Two Fronts toast, but that shot came from before the badge pinned its own case. The retaken shot below shows "eqosys" in both places.

    Two Fronts Mythic Masters Skate Tech Park

    Next:

    • Add a test that the badge's computed look is identical in all three skins.
    • Move Mythic's settings-pane account row onto accountChip (the game-controls .gc-acct rule has to give way). It's listed in eqosys skin: each game injects or updates its skin through the merged hook (three lines per game) #3598 under the tome climb.
    • On a phone, make the report form a bottom sheet that doesn't cover the menu or its main button, and keep the toast clear of the top bar.
    • Add real-game skin journeys for Mythic and Skate, like apps/two-fronts/test/eqosys-skin.test.ts.
  3. QuinnsCode commented on Nov 5, 2026

    @QuinnsCode
    OwnerAuthor

    Moved up to #3600

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions