Keep module config and layouts in a per-machine data directory
Connection settings, API keys, enabled flags and named layouts were written to config/ inside the checkout, so a re-clone or reset from main started the server with nothing configured. They now live in a data directory outside the app folder: Windows %APPDATA%\ProdDash macOS ~/Library/Application Support/ProdDash other $XDG_CONFIG_HOME/proddash, else ~/.config/proddash PRODDASH_DATA_DIR overrides the location (a relative path resolves against the app folder, so "config" restores the old spot). The first start after upgrading copies an existing config/modules.json and config/layouts/ into the data directory, so nothing has to be re-entered. If the directory cannot be created or written, the server warns and falls back to config/ rather than refusing to start. A proddash.json in the data directory overrides the checked-in defaults (port, adminPasscode). The startup banner prints the directory in use, /api/admin/state exposes it, and the admin page shows it under the Modules heading. Admin config and layout writes that fail on disk now report the path instead of a generic server error. README, MODULE-GUIDE and CLAUDE.md updated. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RNYUv9EyrGSFmCnmH7WYKH
This commit is contained in:
@@ -72,8 +72,8 @@ Both schemas map field names to specs:
|
||||
```
|
||||
|
||||
`password` fields are admin-config only in practice: their values are stored
|
||||
in `config/modules.json`, handed to your *server* entry, and **never sent to
|
||||
browsers** — not in `/api/modules`, and never echoed back into the admin
|
||||
in the server's `modules.json` (in the per-machine data directory, see the
|
||||
README), handed to your *server* entry, and **never sent to browsers** — not in `/api/modules`, and never echoed back into the admin
|
||||
form. Anything upstream that needs the secret must go through your server
|
||||
routes.
|
||||
|
||||
@@ -105,8 +105,9 @@ web address where protocol or path matter (a page to embed, a webhook).
|
||||
Endpoints belong in admin config, not per-tile settings — connections are
|
||||
server-wide by design.
|
||||
|
||||
Admin config lives in `config/modules.json` (written by the admin page —
|
||||
your module never touches that file). Per-tile settings live inside each
|
||||
Admin config lives in `modules.json` inside the server's data directory
|
||||
(written by the admin page — your module never touches that file, and it
|
||||
survives updates of the app folder). Per-tile settings live inside each
|
||||
browser's layout.
|
||||
|
||||
## Client entry (`client.js`)
|
||||
|
||||
Reference in New Issue
Block a user