The cue name is now shown wherever the countdown is, and the setup lives
in Companion's and ProdDash's own settings, so record how it's done:
- Companion: a button with $(resi-studio-cues:next_cue_name) in the top
46% (shrink to fit) over $(resi-studio-cues:next_cue_time_in_hms);
connection settings (3000 ms poll, decoder once connected). Section 3
pointed at the 0.1.2 package; it's 0.1.5.
- ProdDash: use Resi Cues' card (solo:resi-cues:next-cue), which is
titled with the cue name, not ProPresenter's NextCue timer; each screen
reloads its named layout to pick up a change.
- What's set where at North Attleboro (5 Booth 1/4; BOH TV, Studio A
Ingest and Studio B layouts).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
While the connection wasn't connected, nothing in its settings could be
saved. The saved decoder showed as "??" because the list only fills once
Resi answers, and a cue refresh that had never been saved showed as 0, below
its minimum. Either blocks Save, including the login change that would have
fixed the connection. That's how North Attleboro's connection stayed on a
locked login.
- The saved decoder is always a choice, "(not connected to Resi yet)" until
Resi answers.
- An upgrade script fills settings an older connection never saved with
their defaults (and leaves a complete one alone).
- Event details are read once per event instead of on every cue refresh:
one Resi request fewer every few seconds on a shared account.
- Cue requests share the login/rate-limit hold-off; "Loaded N cues" and
repeated cue-refresh failures are logged once, not every few seconds.
- "inf0" in the decoder info poll label.
source/config_test.js covers all of it (6 tests; the first fails on 0.1.4).
backoff_test.js 5/5 and the estimator matrix still pass.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Resi -> ProPresenter bridge, its installer and site kit, and the
Companion module resi-studio-cues, as running at North Attleboro.
Bridge (resi_to_propresenter.py)
- Follows a Resi decoder's playhead and keeps ProPresenter's NextCue timer
counting down to the next cue; optional cue name as a stage message, sent
once per cue (ProPresenter flashes it on every send) and off by default.
- Playhead estimate no longer learns a cadence from the partial first gap
after a start, so a 30s Resi doesn't read as paused half the time.
- Backs off on 429, holds 2 min before retrying a failed startup login, and
logs Resi's actual reason (wrong password, USER_LOCKED, rate limit).
- --setup asks for the login, decoder, ProPresenter and timer.
install_bridge.sh installs it as a login service (outside ~/Documents,
which launchd may not read); make_kit.sh builds the kit for another site.
Companion module resi-studio-cues 0.1.4 (source/, package committed)
- Same playhead fix; login and request hold-off (15s doubling to 5 min);
a 401/403 on a fresh session is a permission, not a reason to sign in
again; init never fails on a Resi problem, so Companion can't restart it
into a login loop.
Tests: test_playhead.py, test_stage_message.py, test_rate_limit.py and
source/backoff_test.js run offline; test_end_to_end.py drives a real
ProPresenter and refuses to run without an explicit flag.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>