Dante Virtual Soundcard on the four Macs is restarted directly; for hardware
(consoles, racks, cards, AVIOs) nothing can be restarted from here, so a hold
re-checks via a fresh Dante module connection (harmless to audio and routing).
If the device is still gone it is really off or unplugged. A check's fix can
now be "restart-connection", and a fix map can use "*" for every other sub-check.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On 2026-10-08 a hold on HD1, whose Companion connection had been disabled,
sent the deck a reboot. Now a disabled connection on any button is fixed by
enabling it, before any other fix is considered. The HyperDeck fix asks the
deck itself (transport info on port 9993): if it answers - recording or not -
only Companion's connection is restarted; only a deck that accepts a
connection and says nothing at all is rebooted; an unreachable deck is left
alone and the button shows FIX FAILED. Tested against a fake deck.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
STUDIO-A-Ingest now maps to a local dvs_ingest fix (same helper as the other
Macs, which NA Ingest also needs). A hold on a failing button that has no
automatic fix now shows NO AUTO FIX instead of NOTHING TO FIX.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
remote-access/mac-dvs-helper.sh (run once per Mac through Remote Desktop as
root) installs an admin-owned script that does what pressing Start in DVS
does (wantToRun = 1, restart the DVS service) and a sudoers rule letting the
logged-in user run only that script. The dvs_ fixes call it with sudo -n, so
until it is installed the hold shows FIX FAILED rather than pretending.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A hold now turns the button blue with FIXING <what> while the fix runs, then
CHECKING for 20 s (green if it worked, back to the alarm if not), orange FIX
FAILED if the command failed, and grey NOTHING TO FIX or JUST TRIED / WAIT 1
MIN so a hold always visibly registers. The page redraws as soon as a command
arrives instead of on the next 1 s tick.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fixes come from config.json only and run over SSH with NA Ingest's
status-panel key (ProPresenter restart, Ableton / Church Translate start,
reopen DVS), locally (Resi bridge, captions, ProdDash) or as a HyperDeck
reboot. A green button does nothing, each fix waits 60 s before it can run
again, and a recording deck is never rebooted. New remote checks ask the Macs
every 10 s whether their apps are running. Group buttons and INGEST now have a
hold too; tests never run a real fix or open an SSH connection.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The UHD Jr was switched off and the NovaStar module still reported
Connected (even after a restart), so LED stayed green. LED now also checks
that each processor answers ping; the Resi decoder (send-only RossTalk) gets
the same.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The converted key's "startup" page resolves to the current page on surfaces
set to "use last page", so a tap did nothing. The tap page is now
nav_tap_page in config.json (1).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A tap still goes to the start page, now on release so a hold does not flash
through page 1 first. Hold time is nav_hold_ms in config.json.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
New config setting nav_keys (now ["pagenum"]) picks which nav keys are
coloured; nav_keys.py restores the built-in key for any kind not listed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
DANTE now alarms for all 19 devices by name. MIDI covers the Lighting PC and
SuperRack peers plus the Lighting PC and NA Tracks sessions; APPS covers
ProPresenter, Ableton, the tracks Mac and the Bible TV app. Five buttons
became three, and a check's tag names the device in the message.
dns-sd pads hours before 10 AM with a space, which the Bonjour parser did not
allow for, so every session read as gone each morning. Parsing is now its
own function with a test for both cases.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
It now reads 19/19 to match Dante Controller. NA-Tracks, SuperRack and the
ProPresenter Mac still alarm on their own buttons, so a drop is not flagged
twice; DANTE just shows 18/19 while one of them is missing.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
All 19 Dante devices are now watched: 16 on DANTE, and NA-Tracks, SuperRack
and the ProPresenter Mac on their own buttons so a drop is not counted twice.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
status_panel.py runs on NA Ingest as a LaunchAgent. Every second it reads
Companion's connection statuses and module variables, adds what Companion
cannot see (network MIDI peers, Bonjour sessions, pings, launchd services,
disk, Resi cloud, the Bible TV app), and writes one JSON custom variable that
page 19 renders. Buttons acknowledge alarms, mute them, and restart a stuck
Companion connection on a two second hold. If the watchdog stops, the page
turns purple instead of freezing on stale green.
make_page.py builds the page export from config.json; tests/ runs offline
against a fake Companion and a CoreMIDI loopback.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>