Milestone 2. Server scans modules/*/module.json, serves module assets at /modules/<id>/, mounts optional server routes (exact + trailing-/* prefix patterns) under /api/modules/<id>/ with per-module config from config/modules.json, and lists enabled manifests at GET /api/modules. Shell dynamically imports each module's client.js and hands it the moduleApi (config, instanceSettings, scoped fetch, auto-reconnecting sse, setStatus). Clock module proves the contract end to end; password-typed config fields never leave the server. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RNYUv9EyrGSFmCnmH7WYKH
24 lines
665 B
JSON
24 lines
665 B
JSON
{
|
|
"id": "clock",
|
|
"name": "Clock",
|
|
"version": "1.0.0",
|
|
"description": "Big booth clock — the smallest possible ProdDash module",
|
|
"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": "Show seconds", "default": true },
|
|
"showDate": { "type": "boolean", "label": "Show date", "default": false }
|
|
}
|
|
}
|