Skip to content

Delayed Reaction: menus in the dub radio's own look (tape labels, dials, phone first), hill climb to 8/10, rounds 4+ (from #3581) #3589

Open

Description

@QuinnsCode

Score: 5.5/10 (target 8)

Part of the owner's 2026-11-04 round of hill climbs on every game's UI: once the eqosys skin hook (#3549) lands, each game's menus get real, stylised artwork in the game's own look. This climb is Delayed Reaction, the dub rhythm game: the direction is in apps/delayed-reaction/VISION.md (the reference radio is pinned there) and IDEAS.md.

Where it stands (from #3581)

Round 1 (#3566): 1.5 to 6. Round 2 (#3580): 4.5 to 5.5. Round 3 (#3588): 5 to 5.5. Each round's BEFORE is the previous round's NOW, scored by a fresh judge, and the judges score lower each time, so 5.5 is the score carried. The menu is a dub radio fascia in src/fascia.ts. The shots are in apps/delayed-reaction/docs/shots-2026-11-04/ (before/, now/ = round 1, round2/, round3/), retaken with bun apps/delayed-reaction/scripts/menu-shots.ts <dir> --url <dev server>; delayedReaction.result({...}) shows the results screen for given numbers. The round comments with every shot are on #3556, #3567 and #3581.

Next: (1) Settings at every size, now the biggest gap: hooks in packages/game-controls (tokens or classes for a fader track and thumb, and a toggle switch) so this game draws radio faders and switches without a fork. Fix "Toggle instead of hold" wrapping onto three lines, and let a game hide rows that mean nothing to it (Look X/Y sensitivity in a rhythm game). (2) Results: make the run an event. A grade stamped on the display (a tape-label rating), a "Level 3 clear" that reads bigger, Replay and Next buttons on the readout, and the stats filling the display's width on the side and desktop. (3) Levels, phone: keep a clear strip under the cog so it never sits over preset 6. Give the tapes cassette art: a shell or reels, the best score on the label, and a lane-colour spine. (4) Once #3540 (eqosys skin hook) is on main, skin the sign-in chip, report form and toast through it.

Goalpost: 8/10 from the owner on the menus

  1. In the game's own look. Title, level select, settings and the results screen read as the same world as the run: the VISION's material, type and colour, phone first.
  2. Artwork, not only CSS. Backplates, dials, tape labels, frames as small SVG, procedural canvas or headless-Blender tiles; say what each weighs.
  3. Still readable, every screen size. Contrast at or above today, the four pads untouched, checked with bun run probe delayed-reaction --shot from phone to desktop.
  4. eqosys menus wear it. The sign-in chip, report form and achievement toast come through the skin hook from eqosys menus: a game injects its skin once and every shared surface wears it, hill climb to 8/10, rounds 3+ (from #3541) #3549, never a second stylesheet.
  5. House kit underneath. Components from packages/ui and packages/game-controls re-themed by tokens; a forked copy of one is a gap.

The loop

Each round is one PR against main that says "Part of #N" and commits before/after shots to apps/delayed-reaction/docs/shots-<date>/. A fresh judge scores BEFORE vs NOW (judges run about two points above the owner). End with a comment starting Score: x/10 (target 8) and ending Next: ..., open the "rounds N+" issue and close this one with "Moved up to #new". At the target, a MANUAL RUN: for the owner's own score.

Activity

  1. QuinnsCode commented on Nov 5, 2026

    @QuinnsCode
    OwnerAuthor

    Moved here from #3598 (the eqosys skin roll-out, which #3603 closes). The next round also brings the eqosys skin along:

    • SKIN in apps/delayed-reaction/src/eqosys.ts is plain black and white. Match it to the radio fascia, reading the game's own CSS variables rather than copying hex values.
  2. QuinnsCode commented on Nov 5, 2026

    @QuinnsCode
    OwnerAuthor

    Score: 2.75/10 (target 8)

    Reset by the owner (2026-11-05): every hill climb's agent-judged "where am I at" score is halved to match what they expect; this one was 5.5. Judges keep scoring before against now the same way, and each round reports half the judge's number from here on.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions