Four pieces of work are about to run in parallel — the shell, the admin page, the Timers module and the PCO Plan module — and three of them meet at things that didn't exist yet. This writes those down first, so they are built once, the same way. - **Offering timers to the Timers module.** A module declares `"provides": ["timers"]` and serves `GET /timers` (a cheap snapshot with startedAt/elapsedMs/targetMs, an optional status line, optionally an SSE stream). The consumer extrapolates locally, so no fast polling. Modules meet over loopback through each other's routes, as PCO Plan already does to follow ProPresenter. - **Admin group controls.** `configGroups[name].help` becomes an ⓘ beside the group title rather than a paragraph under it; `configGroups[name].toggle` names a switch that renders in the title row as the group's on/off. - **Switches, labelled with nouns.** On means shown or enabled; the label shouldn't say so twice. - **Themes** swap the shell variables; a tile's own configured colour is set closer and wins. Two shell hooks make it real: `/api/modules` forwards `provides`, and module servers get `shell.port` in init/routes/tiles instead of guessing it from proddash.json. Clock: descriptions gone, "Show seconds" is "Seconds" (1.0.1). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
24 lines
602 B
JSON
24 lines
602 B
JSON
{
|
|
"id": "clock",
|
|
"name": "Clock",
|
|
"version": "1.0.1",
|
|
"proddash": ">=1.1.0",
|
|
"client": "client.js",
|
|
"style": "style.css",
|
|
"minSize": { "w": 2, "h": 1 },
|
|
"defaultSize": { "w": 3, "h": 2 },
|
|
"instanceSchema": {
|
|
"format": {
|
|
"type": "select",
|
|
"label": "Format",
|
|
"default": "24h",
|
|
"options": [
|
|
{ "value": "24h", "label": "24-hour" },
|
|
{ "value": "12h", "label": "12-hour" }
|
|
]
|
|
},
|
|
"showSeconds": { "type": "boolean", "label": "Seconds", "default": true },
|
|
"showDate": { "type": "boolean", "label": "Date", "default": false }
|
|
}
|
|
}
|