Shell 1.11.0: alerts — a module flashes every dashboard listening on one of six channels
A module that sees something a tech must act on now (a timer overrun, a meter past its limit, timecode gone) raises an alert on a channel, 1–6, and every dashboard listening to that channel flashes: the menu bar — brought out for the duration if it was hidden — and a frame round the screen alternate between the level's two colours, with the alert's text bold across the bar. Low fades slowly, medium faster, critical snaps with no fade and floods the board behind the tiles too, in a muted cut that shows faintly through the tile panels without costing their content any contrast. Server: the hub. One alert per channel (a new one replaces the last), timed out server-side (1–600 s, 15 by default, 0 = held until cleared), broadcast over the shell stream as `alert` / `alert-clear`; GET /api/alerts for a dashboard that opens or reconnects mid-alert; POST /api/alerts and DELETE /api/alerts/<n>, open like a layout save. Modules raise from their server entry with shell.alert() / shell.clearAlert() or from a tile with moduleApi.alert() / moduleApi.clearAlert(); a module's alerts end when it stops. Colours live as alerts.colors in the data directory's proddash.json. Dashboard: the Layouts menu gains a folded Alerts row with six numbered toggles; the channel list saves with the layout, local and named (the server keeps it in a saved layout). Admin: a folded Alerts section with two colour pickers per level, a swatch running each level's cadence, and a Test row. Docs: docs/ALERTS.md (the feature), a "Raising alerts" section in the module guide, README. Tools: tools/alert.js raises/clears/lists from the command line; tools/alerts.test.js drives it all end to end. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
a3500f98b1
commit
5ca0a672fa
@@ -129,6 +129,7 @@ with this machine's shell settings — the same keys as the checked-in
|
||||
| `adminPasscode` | An older free-text passcode. Still honoured, so an existing install keeps working; new installs should use `adminPin`. |
|
||||
| `forge` | Where updates and module installs are fetched from. Absent or `"github"` uses GitHub; a Gitea or Forgejo base URL such as `"http://10.3.8.90:3000"` uses a server of your own. Set it per machine in the data directory, alongside `repo`. |
|
||||
| `theme` | The dashboard palette: `booth` (default), `harbor`, `graphite`, `ember`, `daylight`, `midnight`, `moss`, `plum`, `sepia`, `blackout`, `paper` or `iron`. The admin page's **Theme** section writes this one — see [Themes](#themes). |
|
||||
| `alerts` | `{ "colors": { "low": [a, b], "medium": [a, b], "critical": [a, b] } }` — the two colours each alert level flashes between, as `#rrggbb`. The admin page's **Alerts** section writes this one — see [Alerts](#alerts). |
|
||||
|
||||
**Locked out?** Delete `adminPin` from the data directory's `proddash.json`
|
||||
and restart, or start the server with `PRODDASH_PASSCODE` set — that passcode
|
||||
@@ -192,6 +193,25 @@ saw and applies it before the server answers, so nothing flashes. Modules
|
||||
style with the shell's colour variables, which is why they follow; a colour
|
||||
set on a tile itself (a PCO Plan header colour, say) is deliberately kept.
|
||||
|
||||
### Alerts
|
||||
|
||||
A module that sees something a tech must act on now — a timer overrun, a
|
||||
meter past its limit, timecode gone — can raise an **alert** on one of six
|
||||
channels, and every dashboard listening to that channel flashes: the menu
|
||||
bar (brought out if it was hidden, for as long as the alert lasts) and a
|
||||
frame round the screen alternate between two colours, with the alert's text
|
||||
bold across the bar. **Low** fades slowly between its two colours,
|
||||
**medium** faster, **critical** snaps between them with no fade and floods
|
||||
the board behind the tiles as well, in a muted cut of the two that shows
|
||||
faintly through the tiles without costing their content any contrast. The admin
|
||||
page's **Alerts** section (folded, near the bottom) holds the two colour
|
||||
pickers for each level, with a swatch running that level's cadence, and a
|
||||
**Test** row that flashes any level on any channel for eight seconds. The
|
||||
choice is stored as `alerts.colors` in the data directory's `proddash.json`.
|
||||
Which channels a dashboard listens to is chosen on the dashboard itself —
|
||||
see *Using the dashboard* below — and [docs/ALERTS.md](docs/ALERTS.md) has
|
||||
the whole feature, module side included.
|
||||
|
||||
## Installing modules and updating
|
||||
|
||||
Everything below happens in the **admin page**; ProdDash talks to its git
|
||||
@@ -309,6 +329,14 @@ below. Nothing is installed without someone clicking.
|
||||
that no longer fits where it was moves to the first free spot rather than
|
||||
onto another tile. It saves with the layout, so a named layout comes back
|
||||
at the density it was arranged on.
|
||||
- The same menu's **Alerts** row says which of the six alert channels this
|
||||
screen listens to, and opens to six numbered buttons that toggle them
|
||||
without closing the menu. An alert a module raises on a chosen channel
|
||||
flashes this dashboard's menu bar and screen edge with its text in the
|
||||
bar; one on any other channel leaves it alone. A fresh dashboard listens
|
||||
to nothing. The choice saves with the layout, local and named — a booth
|
||||
loading its "Stage" layout gets the stage's channels with it. See
|
||||
[Alerts](#alerts).
|
||||
- Every tile has a **status dot**: green = live, amber = connecting,
|
||||
red = upstream unreachable (hover it for details). Tiles reconnect
|
||||
automatically.
|
||||
@@ -553,7 +581,9 @@ ProdDash/
|
||||
├── config/ proddash.json defaults (runtime state lives in the
|
||||
│ per-machine data directory — see "Configure")
|
||||
├── docs/MODULE-GUIDE.md how to build and install a module
|
||||
├── docs/ALERTS.md the alerts feature: levels, channels, admin, API
|
||||
├── tools/prodcom-mock.js mock ProdCom API for development
|
||||
├── tools/alert.js raise / clear / list alerts from the command line
|
||||
├── prodcom-listener/ reference fork — read-only, not served
|
||||
└── band-lineup-display/ reference fork — read-only, not served
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user