Networked control surface — drive the experience from a separate control device #26
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Networked control surface — drive the experience from a separate control device
Summary
The installation's experience can be driven by a separate controller device
over the local network, decoupled from the machine that renders it — enabling a
handheld software remote now and a physical control panel later, with no change to
the renderer when the controller changes.
Problem / pain
Today the controls and the rendered experience are the same browser tab on one
machine: to change altitude, left/right, mood, or content you must stand at the
rendering computer and operate on-screen sliders. For an installation this is
backwards — the person experiencing the piece can't drive it from where they're
standing, the operator can't tune it from across the room, and there is no path
to a physical control panel without re-architecting, because the control surface
and the screen are fused. Every future controller (a handheld, real knobs) is
blocked on that coupling today.
Who feels it
Desired outcome / value
Control is decoupled from display. The experience is driven by any "control
source" over the network, so a handheld remote works now and a physical panel
drops in later without re-architecting the renderer — proving the path to the
real installation while keeping today's simulator-first workflow.
Acceptance — "done right"
separate device while the rendering machine only renders.
another needs no renderer change.
honest feedback on the controller while they play.
the same contract and needs no renderer or server redesign.
Scope / non-goals
In scope (across child Features): decoupling control from display; the
networked control contract every control source speaks; transition/busy feedback;
the first software control source (handheld remote); the eventual physical control
source.
Non-goals (deferred / child-level): the specific physical-panel build;
transports beyond local wifi; access control/auth; migrating rendering off the
laptop (e.g. to a Pi); multi-room / multi-screen fan-out.
Assumptions · constraints · dependencies
simulator-first directive (prototype the controller in software before
hardware).
docs/superpowers/specs/2026-06-26-networked-control-surface-design.md(session0019). Its control inventory should be reconciled with the then-current
simulator surface at implementation time (the content/mode surface has evolved
since — see session 0020's video+audio toggles).
Source / signal
Capture session
human-experience-filter-art-0025. Originates from the session0019 brainstorming and its design spec
docs/superpowers/specs/2026-06-26-networked-control-surface-design.md.Priority (WSJF)
Value: medium-high (unblocks the whole hardware/installation path) ·
Time-criticality: low (deferred, experience-first) · Opportunity-enablement: high
(every controller depends on it) ÷ Size: large → provisional priority/P2.
Decomposition (one level — child Features)
software remote on a separate device + the server-side networked-control
machinery it needs. Carries the design spec's v1 scope.
ESP32) over the same contract; reframes ROADMAP sub-project 4.
off the laptop and/or drive multiple surfaces; the contract already allows it.
Rolling wave: only Feature 1 is carved now; Features 2–3 stay high-level until
their wave.
Solution notes (optional — NOT a design, non-binding)
The design spec details the engineering approach: one server-authoritative session
state, a live push to the renderer, and a single control-source contract any
device posts to (software remote now, hardware later — e.g. wifi-capable
microcontroller posting directly, or a classic board via a small bridge). Captured
here only as orientation; the binding design is the spec.