Commit Graph
64 Commits
Author SHA1 Message Date
christianandClaude Fable 5.1 0ad6fb8451 docs: settings page plan, engineering details, audit record and inventory
Plan for the settings page on NA Ingest (every setting editable, what runs
where, multi-campus), built with a plan-and-audit workflow and consolidated
against a decisions list; the audit's 157 findings and their dispositions;
the 544-item inventory of everything configurable today.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-13 15:05:36 -04:00
christianandClaude Opus 5.5 38b6d1b014 Spotify: read the whole playlist so one wrong song shows WRONG PLAYLIST; refresh hourly and on unknown songs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 10:23:15 -04:00
christianandClaude Opus 5.5 9a108b2508 Spotify: alarms like every other key, any day (Sunday window is only for auto-fix)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 10:20:29 -04:00
christianandClaude Opus 5.5 bdec4251d9 Spotify: grey when closed or paused outside services
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 10:17:58 -04:00
christianandClaude Opus 5.5 1eb9247ade Spotify: holding the status key always plays the playlist, even when it isn't alarming
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 10:11:13 -04:00
christianandClaude Opus 5.5 3bd140108e Spotify: SPOTIFY key watches the Christian EDM 2026 playlist during services; hold, restart key and auto-fix play it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 10:05:09 -04:00
christianandClaude Opus 5.5 7e15deec9e README: ATEM checks
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 10:55:16 -04:00
christianandClaude Opus 5.5 98070f31c4 ATEM: audio, camera settings and MIDI control watched and fixed against the restore file
atem_watch.js (run with Companion's node + its atem-connection) keeps one
connection to the switcher and compares, every second, every Fairlight
source's mix option and fader and every camera's settings with
atem-reference.xml (the 2026-10-07 14:59:55 restore file). ATEM shows
ATEM AUDIO WRONG / ATEM CAMERA WRONG; the hold and Sunday auto-fix send
back only what differs. ATEM SW MIDI ON is fixed by quitting ATEM Software
Control, switching midiEnabled off and reopening it. Live check: switcher
matches the file (0 differences, 1440 camera values).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 10:54:59 -04:00
christianandClaude Opus 5.5 b468b42889 ATEM: alarm when ATEM Software Control's MIDI control is turned on
New 'pref' check reads an app setting on NA Ingest (defaults read) every
10 s; ATEM shows ATEM SW MIDI ON if midiEnabled is not 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 09:52:33 -04:00
christianandClaude Opus 5.5 0a4352bb92 Watch Pro Tools Solo Mode (AFL + Latch) on the Studio B Mac Studio
A LaunchAgent helper on that Mac (Accessibility) reads Options > Solo Mode
every second into a status file and ticks AFL/Latch on request. APPS
alarms PT SOLO NOT AFL (hold fixes it; in the Sunday auto-fix list) and
PT SOLO CHECK OFF when the helper is not running or not allowed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 09:26:26 -04:00
christianandClaude Opus 5.5 3649fb269f MIDI drops show in about 1-2 s
- NA Tracks and the ProPresenter Mac: one long-lived ssh each streams the
  MIDI sessions (checked twice a second, sent on change) instead of an ssh
  login every 5 s; a silent stream gives no verdict after 12 s.
- NA Ingest's own session is read twice a second (was every 2 s).
- MIDI links show a drop after 1 s (was 3 s); everything redraws twice a
  second (was once).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 07:55:39 -04:00
christianandClaude Opus 5.5 7d5233a1d7 Network blip counts only connections the panel watches
At 07:45:55 the six tcp-HyperDeck helper connections (behind the 'reboot
all' button, watched by no tile) flickered together; each counted as its
own group, so NET showed a blip and auto-fix paused, though the real
HyperDeck connections and everything else stayed up.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 07:49:14 -04:00
christianandClaude Opus 5.5 a0cefe8428 Auto-fix day logs are deleted a calendar month after their date
Only files named exactly '<YYYY-MM-DD> <Weekday> Auto-Fix.log' in that
folder; checked when a new day's file starts and when the watchdog starts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 07:13:19 -04:00
christianandClaude Opus 5.5 f7a98f4dec Daily auto-fix log on NA Ingest's Desktop
~/Desktop/Auto-Fix Logs/<YYYY-MM-DD Weekday> Auto-Fix.log, written line by
line as it happens: auto-fix on/off, each problem and what was done (try n
of 2), the result, when the fault cleared, give-ups, and when it held back
(network problem, several Dante devices gone). Tests write to a temp
folder.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 07:10:06 -04:00
christianandClaude Opus 5.5 560e0401a3 Sunday auto-fix (gentle fixes only), reviewed; PROPRESENTER key label
Sundays 06:30-13:30, with ALARMS on, a fault that has lasted 20 s is fixed
by itself if the fix is gentle (reconnects, HyperDeck off/on, Tascam, MIDI,
rtpMIDI, starting a closed Vista/Resolume/OBS/Ableton/Translate, DVS on one
Mac). At most 2 tries 90 s apart; key shows AUTO-FIXING. Anything that
closes a running program stays a hold (load_config refuses it).

A review before going live (2 lenses, each finding verified) confirmed and
this fixes: a Dante-wide "gone" (Ingest's view) would restart DVS on every
Mac every minute - several devices gone at once now means hands off; the
try limit reset whenever a fix made its fault blink - tries are kept until
the fault has been gone 10 min; DVS on Ingest kills ProdCom - removed from
the auto list; restarting dead connections looked like a network burst -
only a connection good in the last 30 s counts; a restart key could kill
an app auto-fix was starting; concurrent MIDI reconnects overwrote each
other - now one worker. Auto-fix errors are caught so the panel keeps
running. 105 tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 07:05:05 -04:00
christianandClaude Opus 5.5 3417f00f1b Say which machine is unreachable instead of FIX FAILED
The Bible TV PC's Wi-Fi dropped for ~30 s at 06:17 on 2026-10-11; the
hold could not reach it and showed FIX FAILED, though nothing on the PC
was broken. An ssh fix that cannot reach its machine now shows e.g.
"BIBLE APP NOT REACHABLE".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 06:20:02 -04:00
christianandClaude Opus 5.5 ae28bb3c6d HyperDeck hold switches its Companion connection off and on
After a deck restarts, Companion's HyperDeck connection does not come back
by itself and a plain restart of the connection does not help; switching
it off and on does. Each HD key's hold now does exactly that (even when it
looks green), waits 15 s and checks: DONE, STILL OFFLINE (deck pings) or
NO NETWORK. Decks are no longer rebooted by the panel; a recording deck is
left alone. Tested live on HD2 (off/on, reconnected in 17 s).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 05:20:07 -04:00
christianandClaude Opus 5.5 0b38e9247b Restart keys flash when their thing is down; Ableton reopens its last set
- A Restart page key flashes red "HOLD TO FIX" while any check that its
  fix (or a fix/connection in its "watch") covers is down, e.g. DVS
  TRACKS when DANTE misses NA-Tracks.
- Ableton's start and restart reopen the set Live last opened (read from
  its Log.txt before quitting; templates skipped) instead of the default
  template. Tested live: ABLETON and TRANSLATE restart keys.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 18:57:04 -04:00
christianandClaude Opus 5.5 a2a2e40b15 MIDI hold re-adds a peer stuck half-connected
After the network test SuperRack sat in NA Ingest's session as
"initializing"; the hold saw it listed and did nothing ("already").
connect_peer now drops a listed-but-not-live peer and adds it back,
building the second write from the first so a slow re-read cannot leave
it dropped. Tested live today: DVS x4, APPS and INGEST holds, NET clear,
CAPTIONS and BRIDGE restart keys.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 18:49:43 -04:00
christianandClaude Opus 5.5 6410525681 NET blip flashes, clears itself after 5 minutes, hold NET clears it; Restart page is now page 20
- The remembered network blip is a flashing amber warning (new "notice"
  level, not counted as DOWN): press NET to stop the flashing, hold NET 2 s
  to clear it, otherwise it goes by itself after 5 minutes (was 3, solid).
- The user moved the Restart page to page 20: config, the RESTART PAGE key
  on page 19 and both pages re-pushed. A scan of all pages finds no other
  button pointing at the old page.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 18:38:19 -04:00
christianandClaude Opus 5.5 482a0a4f82 Built pages: status page with the RESTART PAGE key, and the Restart page
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 18:08:40 -04:00
christianandClaude Opus 5.5 a0c72183bd Restart page (23), force restarts, Tascam reconnect, ProdCom, Resi encoder
- Page 23 "Restart": hold a key 2 s to restart DVS (4 Macs), ProPresenter,
  Ableton, Church Translate, ProdCom, ProdDash, captions, the bridge or the
  Tascam connection even when the status page says it is fine ("force",
  shared 60 s guard). RESTART PAGE key on page 19, STATUS PAGE back.
- Holds carry Companion's clock; ones queued while the watchdog was down
  are dropped instead of firing together later.
- TASCAM hold always reconnects and checks again after 20 s: HUNG - POWER
  CYCLE IT (pings, control port hung), NO NETWORK, or turns a disabled
  connection on. Tascam pinged at its Companion address.
- INGEST: ProdCom (:24480), ProdDash's page (:24500), the caption screen;
  DVS on Ingest restarts ProdCom afterwards. RESI: the encoder (10.1.10.202).
- Windows starts check the app really started (FIX FAILED otherwise); OBS's
  start task runs elevated (OBS is "Run as administrator"); setup script
  does that for any such app and gives sshd restart-on-failure.
- push_page.py checks what is on the target page, not its name (pages 22
  and 97 are named "PAGE" but hold buttons); --which restart.
- Companion custom variables are written in the request body (no URL limit).
Reviewed by a 3-lens review with per-finding verification; 7 confirmed
issues fixed. Tested live: OBS hold opens OBS; Restart page TASCAM key.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 18:08:29 -04:00
christianandClaude Opus 5.5 17347a5d9a Watch Companion's lighting MIDI port and the Prop TV page
lighting-midi (Companion's MIDI out through NA Ingest's session) on MIDI;
http://10.1.14.225:1025/ (ProPresenter's network page, used for the band
lineup / Prop TV) on APPS, hold restarts ProPresenter.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 17:36:05 -04:00
christianandClaude Opus 5.5 033f3c6696 Ignore ProPresenter API's harmless yellow warning
It flickers to "warning" every 15-20 minutes and made APPS blink for
nothing. "ignore_warning" on a conn check keeps offline, error and
disabled as alarms.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 16:46:25 -04:00
christianandClaude Opus 5.5 6d273fa3d8 Ping the Shure receivers at the address Companion has for them
A power-off test today took 18-27 s to show on RF (Companion's Shure
modules' own timeout). Each Axient, ULXD and PSM receiver is now pinged
every 3 s: "AXIENT 1 NO PING" in about 6-9 s. A ping check may name a
Companion "conn"; its address is read from Companion's settings database
(read-only, every 60 s), with "host" as the fallback.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 16:44:08 -04:00
christianandClaude Opus 5.5 46fb55533b Clear a fault once its check stops reporting it
Found in today's power-off test: a Shure/PSM check reports "conn" while its
connection is down and per-channel results once it is back, so the
"AXIENT 1 OFFLINE" tracker never saw OK. The button looked green, but no
CLEAR was logged and a hold on RF would still have restarted the Shure
connections. A tracker missing from a round now gets an OK update.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 16:39:15 -04:00
christianandClaude Opus 5.5 e4b7d0d0ec README: Vista autoloads Prop Takeover from its show folder
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 16:28:56 -04:00
christianandClaude Opus 5.5 f7346d6f5e Vista gets its own button (row 2, next to APPS)
The Art-Net heartbeat moves from APPS to a VISTA tile ("VISTA / SILENT";
"VISTA SILENT" on SHOW and ALL), hold starts Vista if it is not running.
SHOW now groups MIDI, APPS and VISTA. Tested live before the move: closing
Vista and Resolume alarmed, and each hold brought them back (Vista 5 s,
Arena 9 s after the hold).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 16:21:19 -04:00
christianandClaude Opus 5.5 288c1e6e1a Start rtpMIDI if it is not running; it also restarts itself if it crashes
- Hold MIDI on "LIGHT PC MIDI GONE" starts the rtpMIDI service, then its tray
  app, only if they are not running (a restart drops every session).
- The Lighting PC's rtpMIDI service now has Windows recovery actions
  (restart after 5 s, 5 s, 30 s); windows-setup.ps1 sets the same.
- coremidi.disconnect_peer (Disconnect in Audio MIDI Setup), used to test the
  alarms: all six links dropped and came back (four by themselves, two by
  the hold).
- Audio MIDI Setup need not be open: quitting it on NA Ingest left the
  session connected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 16:16:31 -04:00
christianandClaude Opus 5.5 1d05412359 README: put the MIDI description back in the checks table, not the layout table
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 16:02:24 -04:00
christianandClaude Opus 5.5 15febe8edd Watch all six MIDI links from the checklist, including ProPresenter -> Lighting
Adds Tracks -> Livebox, Tracks -> Studio B and ProPresenter -> Lighting
(read on the ProPresenter Mac over SSH), each with the hold-to-reconnect fix.
coremidi.py now recognises the network MIDI driver on macOS 26.2 too
("AppleMIDIRTPDriver"; 26.5 calls it "AppleMIDINetworkDriver"), which is why
the ProPresenter Mac's session looked empty before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 16:02:02 -04:00
christianandClaude Opus 5.5 80fd89d03b Hold MIDI reconnects a dropped peer from the Mac side
macOS's MIDINetworkSession API only reaches the default session (blank and
disabled on NA Ingest and NA Tracks), so coremidi.connect_peer writes the
named session's "apple.midirtp.session" settings with the peer added, as
Audio MIDI Setup's Connect does. Existing peers are passed back unchanged.
The watchdog remembers each peer's last address (config "address" is the
fallback) and runs it locally for NA Ingest's session or over SSH on the
Tracks Mac for NA Tracks' (FX lights). Checked live: both Macs answer
"already" while the Lighting PC is connected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:54:53 -04:00
christianandClaude Opus 5.5 74fbe73a4b MIDI alarm when the Lighting PC drops out of NA Tracks' session (FX lights)
Tracks sends the FX lighting cues to the Lighting PC through NA Tracks'
network MIDI session. A midi_peer check may now name a "host": the watchdog
reads that Mac's sessions over SSH every 5 s, sending this folder's
coremidi.py over stdin (nothing installed there). Unreachable = no verdict;
the Tracks Mac's own ping check covers that.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:48:25 -04:00
christianandClaude Opus 5.5 eef3f37fa9 README: the Lighting PC must stay on a Public network for MIDI
Its Bonjour firewall rules only allow Public; switched to Private it dropped
out of the MIDI directory and could not rejoin NA Ingest's session.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:44:03 -04:00
christianandClaude Opus 5.5 340d28263a Remove the rtpMIDI-restart fix for the Lighting PC MIDI
Tested live: restarting rtpMIDIService brought the Lighting PC's Bonjour
advert back but dropped it from the NA Ingest and NA Tracks sessions, and it
did not rejoin them. macOS only exposes the default network session to
scripts, not NA Ingest's named one, so there is no safe automatic reconnect.
MIDI now has no hold fix; the README says how to reconnect by hand.

ssh fixes run with LogLevel=ERROR so warnings stay out of the log.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:38:16 -04:00
christianandClaude Opus 5.5 d6f54685bc Hold-to-fix for the Lighting PC and the LiveStream (OBS) PC
- OBS: start OBS on the LiveStream PC if it is not running, then reconnect
  Companion. If the PC does not answer, send Wake-on-LAN and show WAKING PC.
- ARENA: start Resolume Arena on the Lighting PC if it is not running, then
  reconnect Companion. VISTA SILENT: start Vista if it is not running.
  A running OBS, Arena or Vista is never closed.
- MIDI (LIGHT PC): restart the rtpMIDI service; it reconnects to its saved
  peers (NA Ingest, NA ProP, NA Tracks).
- Fixes may set "reconnect" (restart the check's Companion connection after
  the command succeeds); hosts may set "mac"/"wake_broadcast" for Wake-on-LAN.
- windows-setup.ps1 finds OBS on any drive and Vista, and leaves Wake-on-LAN
  alone when it is already on (changing it can reset the adapter).
- Tests stub the fix executors so a hold in a test never reaches a machine.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:29:54 -04:00
christianandClaude Opus 5.5 7cc73c253d windows-setup: the Bible app task also opens it 15 s after login
The Startup-folder shortcut on the Sanctuary TV PC is switched off in
Startup apps, so the app stayed closed after a restart. The StatusPanel
task now has a logon trigger (set live on that PC over SSH too), and a
re-run of the script keeps it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 14:55:00 -04:00
christianandClaude Opus 5.5 b670946a69 Hold APPS restarts the Bible app on the Sanctuary TV PC
SSH to media@10.6.7.13 (Windows OpenSSH, cmd.exe): kill a hung Bible App,
then run the StatusPanel\Start BibleApp task, which starts it on the
logged-in desktop.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 14:52:19 -04:00
christianandClaude Opus 5.5 ad18d49dc9 windows-setup: allow SSH from NA Ingest on any network profile
Windows' OpenSSH firewall rule covers Private networks only, so SSH timed out
on the Bible TV PC (Wi-Fi). Open it on any profile, but only to NA Ingest's
two addresses, and print each adapter's network category in the RESULT.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 14:40:04 -04:00
christianandClaude Opus 5.5 08d925aad9 windows-setup: say when Windows needs a restart before the SSH server exists
Add-WindowsCapability can finish without registering the sshd service until
the PC restarts; the script stopped with a raw Set-Service error. It now prints
a RESULT block saying to restart and run it again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 14:16:13 -04:00
christianandClaude Opus 5.5 77daf7424d HyperDeck IPs from Companion, Vista Art-Net heartbeat, quiet Tascam module
- The hold-to-fix deck probe takes each HyperDeck's IP from its Companion
  connection's "ip" variable, so the config no longer repeats them.
- APPS shows "VISTA SILENT" when the Lighting PC's Art-Net poll (every 0.5 s)
  is not heard for 5 s: a crashed or closed Vista shows in seconds, not the
  minute macOS takes to drop a network MIDI peer.
- tascam-quiet/ builds the Tascam DA-6400 module 1.3.1-quiet: the recorder's
  "Illegal Status" warning is logged once a minute, not 5 times a second.
- README: hold-to-fix table fixed and updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 13:46:49 -04:00
christianandClaude Opus 5.5 d06798adf0 Find Dante PoE devices by MAC automatically instead of hard-coding ports.
Every 10 minutes the watchdog maps each Dante device: name and IP from
Companion, MAC from NA Ingest's ARP table, switch port and PoE state from
the Netgear switches in dante_switches, saved to dante-map.json. A DANTE hold
on a missing PoE-powered device power-cycles the port it is on now (found
live by MAC, or its last known port if it has aged out and nothing else is
there); never a port with more than 2 devices. Re-patching, adding or
renaming devices needs no config change. First live map: 19 devices, the 4
Studio B boxes on PoE.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 13:31:51 -04:00
christianandClaude Opus 5.5 c8b9216ea5 A DANTE hold power-cycles a missing Studio B PoE box on its Netgear switch port.
STUDIO-B-SOLO-MON, MON, TB and TB-MON map to ports 0/14-0/17 on the Netgear
M4250 Dante switch 10.66.1.102. netgear.py poe_cycle first checks the port's
MAC table and refuses if a different device is plugged in there, then runs
poe reset. Tested 2026-10-08 13:10 on SOLO-MON: dropped off Dante and was
back about 17 s later. install.sh now copies netgear.py too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 13:12:45 -04:00
christianandClaude Opus 5.5 9838ce9292 Add netgear.py: read the Dante switches' MAC table and PoE status.
The Dante network runs on two Netgear M4250 AV switches (10.66.1.100
M4250-8G2XF-PoE+, 10.66.1.102 M4250-26G4XF-PoE+), managed by Engage from NA
Ingest. netgear.py logs in over their CLI with the login stored in NA
Ingest's login keychain (service netgear-status-panel) and, read-only, finds
which port a MAC is on and what PoE a port is delivering. The Studio B AVIOs
and talkback are on 10.66.1.102 ports 0/14-0/17.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 13:09:13 -04:00
christianandClaude Opus 5.5 7c5f086bd5 A DANTE hold on missing hardware restarts Companion's Dante module.
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>
2026-10-08 12:42:00 -04:00
christianandClaude Opus 5.5 df4da8f42e Never reboot a HyperDeck to fix a connection that is switched off; turn connections back on instead.
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>
2026-10-08 12:23:05 -04:00
christianandClaude Opus 5.5 b8748be655 Fix NA Ingest's own DVS from the DANTE button, and stop saying NOTHING TO FIX when something is failing.
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>
2026-10-08 12:19:26 -04:00
christianandClaude Opus 5.5 ef9d755982 Let a DANTE hold start Dante Virtual Soundcard's engine, not just open the app.
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>
2026-10-08 12:02:39 -04:00
christianandClaude Opus 5.5 10466cae80 Show on the button what a hold is doing.
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>
2026-10-08 11:41:44 -04:00
christianandClaude Opus 5.5 51f09900ab Hold a failing button to fix what it is failing on.
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>
2026-10-08 11:34:44 -04:00