Back to Experimental

Steve Hinan presents

UI

Standard Game UI v1.5 (temporary name)

One shared look for every Steve Hinan Presents game. Synth, Polyrhythm, and Void all use it. The dials, Record row and tap hint below are the real shared components the games load from /shared/ui/standard-game-ui/. Pick a Style to restyle the whole app at once, fine tune any section, then Export the look.

Palette

Every color in a game comes from these tokens. Red is for recording only and stays the same in every style.

Typography

Game title
Polyrhythm
Body
Tap the circles to fly the tunnel. Match the rhythm to open the Rift.
Dial label
Volume
Dial readout
62%
Button
Record
Small label
Length

Buttons

Record button and length

The real SHPRecorderUI. Synth and Void use seconds (15 or 30). Polyrhythm uses cycles (4 or 8). Press Record to run a 5 second simulation (nothing is captured), or preview each state.

Seconds (Synth, Void)

Cycles (Polyrhythm)

Dials

The real SHPDial. Drag up or down, use the arrow keys, or double tap the readout to type a value. Classic is the shipped v1 knob; the other dial styles are proposals drawn on top of it. Parallel dials use letters: Osc A (orange), Osc B (green), Osc C (purple).

Sliders and steppers

Parallel rhythms are Rhythm A (orange), Rhythm B (green), and Rhythm C (purple). The numbers in the steppers are counts.

Volume
Tempo
Amount
Rhythm A
12
Rhythm B
4
Rhythm C
3

Popups

Game popups close by themselves after 10 seconds. The green bar shows the time left and runs down toward the left.

Tap the art

Players start or check by tapping the art itself. The shared tap hint (a glow pulse plus a tap hand) shows what to tap. Void: a big PLAY over the portal art. Polyrhythm: tap the shapes to check an objective.

Tap the portal to start.

Title lockups

Big titles in the title font. VOID runs nearly the full width.

Synth
stevehinanpresents.com/synth
Polyrhythm
12AGAINST4AGAINST3
stevehinanpresents.com/polyrhythm
VOID
stevehinanpresents.com/void

What this is

The Standard Game UI ("UI" here; both are temporary names) is the shared, versioned UI standard every Steve Hinan Presents game follows: Synth, Polyrhythm, and Void today, and every game after them.

The shipped files live at /shared/ui/standard-game-ui/: tokens.css (the palette and basics), dial.css and dial.js (SHPDial, the rotary knob), recorder.css and recorder.js (SHPRecorderUI, the Record button, length dropdown, and progress). Version 1.1 adds tap-hint.css and tap-hint.js (SHPTapHint, the tap the art hint). Version 1.2 adds the encoding mute to recorder.js. Version 1.3 adds the A/B/C labels rule (docs only). Version 1.4 rebuilds the 20 styles in this app and adds the shared Hexapuss Drip theme, themes/hexapuss-drip.css, which is live. Version 1.5 adds optional page event callbacks to recorder.js; every other shared file stays at v1.4.

Rules

Versioning and review

The standard is versioned and will keep improving. Each release has a VERSION file, a version line at the top of every file, and a changelog. v1 (Nov 10, 2026) is the first release. v1.1 adds the tap hint without changing any v1 file. v1.2 adds the encoding mute to the recorder; every other file is unchanged. v1.3 adds the A/B/C labels rule; no code file changes. v1.4 rebuilds the 20 styles in this document and adds the shared Hexapuss Drip theme file; the other shared files are unchanged. v1.5 changes recorder.js only; the tokens and the Drip theme stay v1.4.

Every new build of every game is reviewed against the current version of the standard before it goes live. When the standard changes, the next build of each game is checked against the new version.

Style 2 (Standard) is the shipped look. The other 19 styles and every per-section control are explorations. An exported look is a proposal until Steve adopts it into a new version of the standard.

Recorder page events (v1.5)

recorder.js v1.5 is additive and backward compatible. When a game passes onHidden, onVisible, onPageHide, or onUnload, the kit binds the page hide and teardown events and calls them. Games that do not pass them are unchanged. The kit still does not capture or encode, and it does not decide whether Stop saves or cancels; each game does that.

Expected behavior in a game that uses them:

Void b4 is the first game to use them. Polyrhythm and Synth adopt them later. The shared tokens and the Hexapuss Drip theme are v1.4; recorder.js is v1.5. The two version numbers are separate.

Theme tokens

Each style in this app sets look tokens as CSS custom properties. These tokens are defined by the UI app presets:

--sgu-font-title, --sgu-title-tracking, --sgu-surface, --sgu-btn-radius, --sgu-border-w, and --sgu-glow are not in the shared tokens.css. The shared Hexapuss Drip theme, /shared/ui/standard-game-ui/themes/hexapuss-drip.css, is live and sets them; a game opts in by linking it after the standard UI files. --sgu-focus is already in the shared tokens.css as white; the app also sets it from the style's white token.

Standard controls

Besides the shared dial, recorder, and tap hint, these controls are part of the standard look. They are styled from the tokens and the patterns on this page. They are not yet shipped as shared kit files.

Status

v1.5 is the current version of this document. The shared files at /shared/ui/standard-game-ui/ are v1.4, and the Hexapuss Drip theme, /shared/ui/standard-game-ui/themes/hexapuss-drip.css, is live. recorder.js is v1.5. Synth, Polyrhythm, and Void all use those shared files and the Drip theme. Truss applies the Hexapuss Drip look from this app's preset, with the theme tokens above in its own CSS. The name is temporary until Steve picks one.