Hot Reload
ChannelWatch v1.0 watches /config/settings.json for changes. When you save settings through the web UI, the application reloads the affected components without restarting the container. The sections below describe what is known to reload, what requires a restart, and where the behavior is not yet confirmed.
Reload-vs-restart matrix
Section titled “Reload-vs-restart matrix”The table below covers every setting category that has been documented. Source confidence reflects whether the behavior has been independently confirmed in app source or is based on the page’s stated design intent.
| Setting category | Behavior on save | Source confidence |
|---|---|---|
| DVR servers | Changed DVRs are re-initialized; unchanged DVRs keep running | UNKNOWN — plausible from design intent, not independently confirmed in app source |
| Alert settings | New thresholds, cooldowns, and toggles apply to the next alert event | UNKNOWN — plausible, not independently confirmed |
| Notification providers | Updated credentials and provider settings apply to the next delivery attempt | UNKNOWN — plausible, not independently confirmed |
| Notification templates | Custom message templates apply to the next notification | UNKNOWN — plausible, not independently confirmed |
| Logging verbosity | Log level switches immediately (Standard or Verbose) | UNKNOWN — plausible, not independently confirmed |
| Network binding (host and port) | Requires restart — the HTTP server binds at startup; rebinding requires stopping and restarting the process | Plausible (standard HTTP server behavior), not independently confirmed |
| Database URL | Requires restart — the database connection is established at startup; changing it requires a fresh connection pool | Plausible, not independently confirmed |
| Notification plugins | Requires restart — the plugin loader runs once at startup | UNKNOWN — stated as design intent, not independently confirmed in app source |
What reloads automatically
Section titled “What reloads automatically”Based on the design intent for v1.0, these settings are expected to take effect when you save them in the web UI:
| Setting category | What happens on save |
|---|---|
| DVR servers | Changed DVRs are re-initialized; unchanged DVRs keep running without interruption (UNKNOWN — not independently confirmed) |
| Alert settings | New thresholds, cooldowns, and toggles apply to the next alert event (UNKNOWN — not independently confirmed) |
| Notification providers | Updated credentials and provider settings apply to the next delivery attempt (UNKNOWN — not independently confirmed) |
| Notification templates | Custom message templates apply to the next notification (UNKNOWN — not independently confirmed) |
| Logging verbosity | Log level switches immediately (Standard or Verbose) (UNKNOWN — not independently confirmed) |
When a DVR’s configuration changes, the design intent is that ChannelWatch cancels that DVR’s monitoring task and spawns a new one with the updated settings. DVRs whose configuration did not change are not touched.
What requires a restart
Section titled “What requires a restart”A small number of settings cannot be changed at runtime. These require a full container restart to take effect:
| Setting | Why a restart is required |
|---|---|
| Network binding (host and port) | The HTTP server binds to the port at startup; rebinding requires stopping and restarting the process |
| Database URL | The database connection is established at startup; changing it requires a fresh connection pool |
To apply any of these changes:
- Update the value in your compose file or environment variables.
- Run
docker compose down && docker compose up -d(or the equivalent for your setup).
Notification plugins and hot reload
Section titled “Notification plugins and hot reload”Notification provider plugins (files in /config/plugins/notifications/) are not hot-reloaded according to the documented design intent. The plugin loader is expected to run once at startup. To activate a new plugin or update an existing one, restart the container.
See Provider Plugins for details on the plugin system.
Direct file edits
Section titled “Direct file edits”You can edit /config/settings.json directly on disk instead of using the web UI. According to the v1.0 design, ChannelWatch detects the file change and reloads in the same way as a web UI save.
The web UI is the recommended path because it validates your input before writing to disk. Direct edits bypass that validation. If the new configuration is invalid, ChannelWatch is designed to log an error and keep the previous configuration active rather than applying a broken config.
Verifying a reload
Section titled “Verifying a reload”After saving settings, check the application logs to confirm the reload completed. The following is an illustrative example of the log format. The exact log string (CONFIG_RELOADED) has not been independently confirmed in app source and may differ in the shipped release:
INFO CONFIG_RELOADED: dvr_servers[0].port changed (8089 -> 8090); DVR task re-initializedRelated pages
Section titled “Related pages”- Core Settings — timezone, log level, log retention, and alert toggles
- DVR Connection — add and manage Channels DVR servers
- Provider Plugins — third-party notification providers (require restart to activate)
- Delivery Log — notification history and retry status