Commit Graph
25 Commits
Author SHA1 Message Date
christianandClaude Opus 5.5 c9ffbc6828 READY page: LED CROSS checks the Resolume columns Sunday's slides call up
- For every item in the plan's ProPresenter playlist: the macros its slides fire (read on the
  ProP Mac from Configuration/Macros and the .pro files), the RossTalk "CC page/row/col" each
  macro sends to Companion, the Companion buttons that one presses in turn, down to Resolume's
  /composition/columns/N/connect. Each such column must hold a clip on some layer (one whose
  ignore-column-trigger is not On), and Resolume must be on the Service deck.
- COL N EMPTY / COL N MISSING name the column and the items that use it. The hold only puts
  Resolume back on its deck; it never plays a clip. "Something is playing" is no longer checked.
- ready.prop_host replaces ready.led_clip.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 14:43:49 -04:00
christianandClaude Opus 5.5 5adab6c518 Settings page: ON/OFF switches everywhere, the Auto switch screen, a Companion button picker
- ON/OFF on every key, check, fix, Restart and READY key, computer, MIDI link, HyperDeck,
  Dante device, watched Companion connection, switcher and Spotify check, outlet fix, and one
  main switch each for auto-fix, the auto switch and the READY page. Switched off = kept in
  the settings, grey OFF on the deck, never checked or run (effective_config in the watchdog).
- Settings › Auto switch: a plain summary, what counts as down (each trigger editable in place:
  address, program and computer, Dante device, the button it presses, timings), the hours
  folded away, the buttons; + Button, + What counts as down, Remove.
- Pick a Companion button by clicking it on its page, drawn like Companion (read-only API:
  /api/companion/pages and /api/companion/page).
- STREAM STB / STREAM FOH Restart keys removed (the Studio B page has its own); the alert names
  the switch-back button instead.
- Dante screen: shows the DANTE key's device list again (it picked STB AUDIO's one device).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 14:30:41 -04:00
christianandClaude Fable 5.1 14fce2cf9a Audio failover: press FOH Backup by itself when Studio B dies; Companion button presses as fixes
A new fix kind "companion_press" presses any Companion button over its HTTP API (page, row, col).
A fix marked "failover" runs by itself within seconds of its check failing: inside the "failover"
windows (Sunday 06:30-13:30), even while ALARMS is muted, once per fault, never back the other way.
The hidden STB AUDIO key (inside AUDIO) watches Studio B's ping every second, Pro Tools over SSH
every 2 s and its Dante device; each check's fix is the FOH Backup press. The keys say ON FOH BACKUP
until STREAM STB on the Restart page switches back. Settings page: the press builder, the failover
tick and undo, the Failover calendar, help entry "A fallback button".

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-15 12:40:24 -04:00
christianandClaude Opus 5.5 422e92f814 Settings page: add and edit everything by hand, READY page included
- Keys › READY page: + READY key (tap to confirm, a checklist line the page checks itself, or
  any check), and the same check/fix editor the Status page keys have; delete a key.
- Settings › READY page: when gaps turn red (calendar), every address and folder it looks at,
  and the lists the slides must match.
- Help: "How do I add…", step by step: a Companion connection, a ping, a program, a fix,
  auto-fix, a checklist line, where READY looks, a computer, undo.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 11:40:05 -04:00
christianandClaude Opus 5.5 309bc5fab7 Watch the DiGiCo FOH console inside AUDIO; "+ Key" asks for a group when the deck is full
- DIGICO (in the AUDIO group): Companion's DiGiCo_FOH connection, the digico-relay helper on
  NA Ingest (hold AUDIO restarts it), and a ping to the console at 10.1.60.100 (the OSC
  connection reads good even with the console off).
- Settings page: "+ Key" on an unwatched Companion connection asks which group key to put it
  in when the Status page has no free spot (it used to make a key nobody could see); the
  connection field of a check suggests Companion's connection names.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 11:33:40 -04:00
christianandClaude Opus 5.5 bf128e1bad READY page: drop the MICS and STAGE keys
BOH MIX is the one tap key left.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 20:46:00 -04:00
christianandClaude Opus 5.5 d5ede0c91e READY page: the weekly worship checklist, checked against Planning Center
- readiness.py looks every 2 minutes (never while a HyperDeck records) at this weekend's PCO plan
  and what is in place for it: the Ableton set (songs, mix, routing, lighting cues), ProPresenter
  (every PCO item, MC announcements, baptism names, timelines, backgrounds), the LTC note of every
  song against the timecode the tracks play, the Band Lineup TV, Resolume's LED cross, and the
  tracks and ProP bundles for the locations.
- READY key on the Status page (row 2, col 7; SPOTIFY now shows inside SHOW) opens page 24.
  Amber until done, blinking red from Saturday noon; not part of ALL. Tap keys for BOH mix,
  mics and stage reset every Monday.
- Holds fix what can be fixed: re-sync the lineup, put the cross back up, write LTC into PCO,
  copy tracks to locations, look again. Hold READY fixes everything.
- Settings page: a READY page tab (live keys, drag to move, why each key is amber), and Apply
  re-imports page 24.
- Auto-fix: "while_muted" fixes keep running with ALARMS muted (Spotify playlist).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 20:28:43 -04:00
christianandClaude Fable 5.1 0eee778a92 Drafts rebase onto the live settings; the review speaks in words
A draft started before someone else's Apply used to carry that older config and would have put
the newer changes back. Now every read of the draft replays only the draft's own changes onto the
live settings (base config from history), so the review lists exactly what you changed. Values
read in words (windows as days and hours), long ones fold open with was/now, commands are no
longer red, and warnings the live config already had are not repeated.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 19:44:51 -04:00
christianandClaude Fable 5.1 f61761f9bc Smart outlets: the panel can power-cycle a device through a SmartLife (Tuya) plug
settings/outlet.py talks to Tuya's cloud with the campus's own project keys (kept in outlets.json
beside the config, 0600, never in the repo): list, status, on/off, and 'cycle <outlet> --ping
<address>' which leaves a unit that answers alone, cuts power 8 s, and waits for the address to
answer; refused while a HyperDeck is recording. A builder 'Power-cycle a smart outlet' makes the
fix from fields; the TASCAM key's ping check now holds to it (verified live: the hung DA-6400
answered again 26 s after the cycle and Companion reconnected). Settings > Outlets: keys, the
outlet list with live state and on/off, + Outlet from the account's devices. Calendar in 12-hour time.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 19:14:53 -04:00
christianandClaude Fable 5.1 095f20b7a6 Key editor: the question heads a group of checks once; each row names the thing; 'Words it can show'
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 18:52:02 -04:00
christianandClaude Fable 5.1 c4820800b4 Key editor: folded hold and say lines, one-line check rows that unfold, stacked fields, inputs never overflow the card
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 18:41:14 -04:00
christianandClaude Fable 5.1 af4a1ea810 Gear dialog: do not shadow window.location
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 18:38:12 -04:00
christianandClaude Fable 5.1 7cbfa14404 Gear can be added, edited and removed on Computers > Gear, with an optional watching key; Check now sits on the Map tab
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 18:37:01 -04:00
christianandClaude Fable 5.1 9a3746e6a5 Auto-fix: Sunday first on the calendar; any fix can be ticked (ticking one that closes a program marks it 'may close')
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 18:09:18 -04:00
christianandClaude Fable 5.1 69bb09ad27 The page revamped: icon navigation, hints instead of prose, one Settings page, a weekly calendar, a PIN
- Top bar with icon navigation (Overview, Keys, Computers, Settings, Logs, History, Help); no side
  menu; every explanation moved into a hover hint; the [how] lines no longer shift the layout.
- One Settings page with sections: Playlist, Auto-fix (a paintable weekly calendar + which fixes),
  Changes wait (calendar), HyperDecks, MIDI links, Computers, Dante, Switcher, Companion (with the
  names check), Network, Site & PIN, Program & campus, Advanced (every field by screen).
- Fixes live under Keys as a tab; the jobs became sections or + buttons where they belong.
- Editing is switched on with a PIN (digits) plus a first name for History; the overview's
  status line became chips; 'Needs attention' instead of a person's name, and it no longer fires
  after a page-only Apply (page-only.json marker); last change comes from History.
- Deployed to NA Ingest; the campus PIN set there and in config.json.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 17:42:03 -04:00
christianandClaude Fable 5.1 9278e08acc Editing dialog says where the code lives instead of naming a person
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 16:15:17 -04:00
christianandClaude Fable 5.1 1f87b2f01b Help gets a Try-it list; dialogs scroll on a phone; the installer's history note in plain words
Every screen was swept in the browser on NA Ingest with Editing on (31 screens, no script
errors); the job dialogs ran taller than a phone screen, so dialogs now scroll.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 15:38:47 -04:00
christianandClaude Fable 5.1 10e545d4e0 ATEM: read the saved-file folder through this Mac's own Remote Login when macOS keeps the page out of Google Drive
A launchd-run python3 gets 'Operation not permitted' on ~/Library/CloudStorage; sshd does not. The
page now lists and reads the folder over ssh to localhost with the panel's own key when the local
read is blocked (the Ingest Mac's Setup card gains that authorise step). Pick the newest verified
on NA Ingest.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 15:18:39 -04:00
christianandClaude Fable 5.1 3b3a1c7245 Names check for a copied campus; the ATEM folder says when the page may not read Google Drive
Site setup > Companion lists every connection, Dante device and MIDI session the keys use that
this campus does not report, with a map-to choice that renames it across checks, restart keys
and fixes. The ATEM section explains the Full Disk Access step when the cloud folder looks empty
to the background page. Verified on NA Ingest; Install the staged folder tested live there too.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 15:09:17 -04:00
christianandClaude Fable 5.1 a33e344cae Steps 4-6: the jobs, the set-up tab with generated scripts, Install the staged folder, site bundles and the campus template
- Overview jobs: Change the playlist, Add or remove a HyperDeck, Add a MIDI link, Add a computer,
  Make a PC program startable; 'Add a key for it' on unwatched Companion connections.
- Computers > Setup: steps with a [how] each and the set-up scripts generated per computer by
  settings/scripts.py from the templates in remote-access/ (no site-shaped value left in them);
  Remove this computer drops the fixes and checks that used it.
- Site setup > Site: the running and staged code, Install the staged folder (a one-shot launchd job
  running install.sh --keep-config, refused while live), Export site bundle (zip), New campus from a
  bundle (this campus's site block stays; every copied computer is flagged until touched).
- sites/: na -> the repo config, _template = the empty campus; install.sh --site <id>.
- Review reads appended checks as 'added'; tests for all of it.
- Deployed page-only to NA Ingest. (config.json, status_panel.py and readiness.py are left to the
  READY-page work in progress in the same tree.)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 14:53:08 -04:00
christianandClaude Fable 5.1 dafa14a512 Step 3: the layout - drag keys to move or hide them, add and delete keys, page numbers, the Restart page switch
Keys screen: every key is a draggable chip (empty cells and the tray are drop zones), + New key and
+ New restart key dialogs, Delete this key, Companion page numbers, 'this campus has a Restart
page'. A taken cell is refused on the spot; 'Layout changed: Apply will re-import ...' comes from
the server's plan. Screens wait for a pending draft save before asking the server about it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 14:25:09 -04:00
christianandClaude Fable 5.1 187dd464c0 Fix and check builders: every fix is built from fields; today's 27 fixes carry their templates
settings/builders.py renders a fix's command from a builder (template) and its fields; validate
refuses a config whose stored command no longer equals what its fields build; the Fixes screen and
the remote checks in the key editor rebuild through /api/build and /api/build-check. config.json
adopts templates for all 27 fixes and 5 remote checks (ProPresenter's restart loop and Ableton's
quoting normalised, same behaviour); tests/test_builders.py (174 tests pass). Deployed to NA Ingest.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 14:17:31 -04:00
christianandClaude Fable 5.1 02d0c77cd9 Step 2: the settings page can change things - shared draft, Review & Apply, rollback, history, undo
- settings/apply.py: the Apply pipeline (check, keep history, write, restart the watchdog, re-import
  pages by the marker-only rule, recolour page keys), rollback when the watchdog does not come back,
  the recording guard with the Emergency (LIVE) override, history entries and Go back / Undo.
- settings/server.py: the write routes behind the editing code (draft PUT/DELETE with 409 on a
  conflict, validate, apply, restore, undo, watchdog restart/stop/start, commands to the watchdog,
  the switcher file upload / pick newest / discard, gear notes).
- settings/ui/app.js: every screen grows inputs with Editing on; keys (checks, fixes, hold-always,
  members), computers, fixes, site setup (schedules, Dante devices, Spotify, ATEM), Review & Apply
  with live progress, History with Go back and Undo, Run this fix now.
- schema.unmask, push_page.push, nav_keys.colour; tests for all of it (163 pass).
- Verified live on NA Ingest: a page-only Apply, a restart Apply, Undo, history.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 14:06:42 -04:00
christianandClaude Fable 5.1 01c18ba5ef Step 1: the settings page, read-only, live on NA Ingest at port 8020
Overview (problems in the room with the hold action, the live deck, one line per computer),
Keys (both pages, what each key will say and what holding does), Computers (map with the keys
that turn red, cards with a light per thing that runs there from the watchdog's snapshot and a
read-only probe, Gear, Setup), Logs, History (the installer's copies for now), Help (four cards,
the generated key guide, cheat sheet and Where things are, glossary, Companion facts), Site setup
and Fixes read-only. The editing code is checked (with a lockout) but nothing can change yet.

Also: faults are attributed to the computers their check is about; the installer refuses while a
HyperDeck is recording (--now overrides); the Lighting PC's MIDI session is listed; the probes read
sudo's answer correctly and expand $HOME outside the quotes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 12:18:36 -04:00
christianandClaude Fable 5.1 2343a27529 Step 1 in progress: the settings page server, probes, teaching pages and UI (not deployed yet)
- settings/server.py: read-only routes (overview, keys, computers, gear, companion, logs, history,
  help facts, key guide / cheat sheet / where things are), the editing-code check with a lockout,
  LAN-only binding with a per-minute rebind
- settings/probes.py: fixed read-only probes per computer; whole lists fetched and matched locally
- settings/keyguide.py: the generated teaching pages
- settings/ui: the page, every screen read-only
- status_panel.py: snapshot.json every 5 s for the page; the Companion database lookup prefers the
  running build's folder and skips a database that will not open (a stale v5.1 folder was breaking it)
- config.json: every computer's record (what runs there, network ports, done-by-hand ticks), the
  editing code (kept in the repo, the user's choice), an empty gear list
- install.sh: the settings page as a second LaunchAgent; settings/ and schema.py deployed

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-13 16:23:59 -04:00