Shared plumbing for the DOM HUD, no framework:
- voice.ts: every player-facing string, so the OSHA-poster deadpan
register lives in one place instead of being re-invented per panel.
- style.ts: injected terminal-industrial stylesheet. Panels re-enable
pointer-events; #ui itself stays transparent to the mouse.
- chips.ts: the item chip (swatch + name + count), keyed off GameData
so new items from LANE-DATA light up with no code change.
- hotkeys.ts: the whole keymap in one file, per lane orders.
- selection.ts: pending build selection, written through to bus._sel.
- pick.ts: tile -> entity hit-testing plus the flattened roster the UI
keeps instead of holding a snapshot across frames (CONTRACTS says sim
may reuse those buffers, and input handlers fire between frames).
- palette.ts: machine accent colors. Stopgap — MachineDef has no color
field; contract request filed.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Eased param pressure so shipments land as waves, log escalation over the
first ~100 items, cross-modulated wobble above 0.8 so a mature factory looks
alive, brownout seize, and a one-frame white awakening on the first ship ever.
Measured 0.004-0.013ms/frame CPU against a 2ms budget.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Mix and total are separate axes: what you ship picks the artifact, how much
you have ever shipped picks the intensity. That separation is what makes
40 chroma slurry read as chroma specifically instead of generic damage.
Covers the full 40-item codex LANE-DATA landed; unknown ids degrade to a
generic noise bump, with a test walking data/items.json to keep it that way.
anchor-slab has negative potency and sanitizes THE SCREEN (see NOTES).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Raw WebGL fullscreen triangle, not three.js: one texture, one pass.
The 8 prototype params keep their tuning verbatim; u_drift, u_brownout
and u_flash are additions. Base feed repaints only when a visible glyph
changes rather than per frame, so the texture upload stays off the hot path.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Transcribe the §2-§6 codex into machine-readable canon and add the validator
that keeps five parallel lanes from drowning in dangling ids.
- validator (28 tests): recipes point back at their machine, every item/tech/
commission reference resolves, ids unique + kebab-case, colors hex, footprints
>=1x1, plus a reachability pass proving MELT is craftable from raw ore.
- items 9->36, machines 7->21, recipes 4->35, tech 0->17, commissions 1->10.
- mosh rewired to canon (gop-crate -> melt + reclaimed anchor slab); all seed
recipe ids preserved so nothing dangles mid-round.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>