Local-app passwords — no username, the password picks the role. A coach types the coach password on their iPad and gets REPLAY only; your admin password unlocks everything.
USERS
roles: guest < parent < player < coach < manager < admin — uploads need parent+, tagging coach+, this page (incl. SCHEDULE/TEAMS) admin. Associate players to give a parent/player their PLAYERS page (a parent can have several — twins!).
cloud note: with the admin key configured (DEPLOY.md step 5), adding a user here ALSO emails their sign-in invite and role changes sync to Supabase automatically. Without it, invites are manual (Supabase → Authentication → Users) and access roles are the SQL snippet in DEPLOY.md 1c.
RIG HEALTH —
loading health…
TAG TYPES
the REPLAY tag buttons and the EDITOR type list. pre / post = seconds captured before and after the tap (defaults — every clip is still trimmable in EDITOR). Deleting a type keeps existing clips of that type. GOAL is load-bearing (operator goal flow) and can't be removed.
RINK DRIFT SENTINEL
re-measures the pano's board stripes and flags a bumped camera on the HEALTH board. Measured cost: 49 ms of one CPU core per check. 3 agreeing checks to flag, 3 to clear.
AUTO-FOLLOW DETECTION
player detection feeding the AUTO BROADCAST camera. Rate applies live; confidence applies when the pano next starts.
CROSS-CAMERA FUSION
how the rig decides two cameras are looking at the SAME player. These need tuning AT THE RINK — the right values depend on how accurately our cameras agree on a position, which has never been measured with the aux cams calibrated.
AUX CAMERA AUTO-FOLLOW
the OBSBOTs aim themselves at the play, driven by the pano's detections (no second detector). This physically moves the cameras. Does nothing until the pano has a rink frame AND each camera has ≥3 follow-calibration points.
coming to this section: landmark auto-recalibration on drift (detector in training), DeepStream infer interval, SAHI tiling for the follow detector, announcer-cue service.
ON-ICE GRAPHICS (AR)
graphics painted flat ON THE ICE — a logo, a reveal animation, or a video/replay projected on the sheet — locked to the rink by calibration. Real-time (GPU composite), shows in the live preview. For EMPTY ice (pregame / intermission / stoppages); players are not cut out.
⚠ the pano has no rink frame yet — it needs a rink calibration, so this paints nothing.
a static "house lights down, ice lit" layer — dims everything OFF the ice so the sheet pops. Cheap (one multiply, no AR), composes with any graphic. Pregame or all-game.
BROADCAST SCOREBUG
size and on-screen position of the score bar overlaid on the broadcast video. Applies to the next render.
DISCOVER finds every camera and AUTO-ASSIGNS it (role + name by model, keyed by serial — so this is one-time and IPs can change freely). Edit below to rename or change role/location.
COLOR MATCH
PANO PAIR—
ISO —KELVIN —SHUTTER —
ORDER — do these once per setup, top to bottom: 1. RECAL PANO (above) — re-solve the stitch from the live feeds (SIFT). Sets the
GEOMETRY: how the two halves join. Redo whenever the rig moves or a camera is bumped. 2. PANO PAIR → LOCK PAIR (below) — sets the two pano cameras' EXPOSURE so the two
halves look identical. Aim at the ice, let auto settle, then lock. Redo when the light changes,
not when the rig moves. 3. MATCH ALL (below) — makes on-air CUTS consistent: the whole pano, net and
scorer all render the ICE the same. Click a lit neutral spot (ice / grey card) in each,
then MATCH ALL. The pano moves via its base, so LOCK PAIR's seam match is preserved. Geometry and exposure are independent — fixing one never fixes the other.
MATCH ALL — the cameras cut between on air: pano (whole), net, scorer. Click the ice in each.