Skip to content

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.

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 categoryBehavior on saveSource confidence
DVR serversChanged DVRs are re-initialized; unchanged DVRs keep runningUNKNOWN — plausible from design intent, not independently confirmed in app source
Alert settingsNew thresholds, cooldowns, and toggles apply to the next alert eventUNKNOWN — plausible, not independently confirmed
Notification providersUpdated credentials and provider settings apply to the next delivery attemptUNKNOWN — plausible, not independently confirmed
Notification templatesCustom message templates apply to the next notificationUNKNOWN — plausible, not independently confirmed
Logging verbosityLog 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 processPlausible (standard HTTP server behavior), not independently confirmed
Database URLRequires restart — the database connection is established at startup; changing it requires a fresh connection poolPlausible, not independently confirmed
Notification pluginsRequires restart — the plugin loader runs once at startupUNKNOWN — stated as design intent, not independently confirmed in app source

Based on the design intent for v1.0, these settings are expected to take effect when you save them in the web UI:

Setting categoryWhat happens on save
DVR serversChanged DVRs are re-initialized; unchanged DVRs keep running without interruption (UNKNOWN — not independently confirmed)
Alert settingsNew thresholds, cooldowns, and toggles apply to the next alert event (UNKNOWN — not independently confirmed)
Notification providersUpdated credentials and provider settings apply to the next delivery attempt (UNKNOWN — not independently confirmed)
Notification templatesCustom message templates apply to the next notification (UNKNOWN — not independently confirmed)
Logging verbosityLog 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.

A small number of settings cannot be changed at runtime. These require a full container restart to take effect:

SettingWhy 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 URLThe database connection is established at startup; changing it requires a fresh connection pool

To apply any of these changes:

  1. Update the value in your compose file or environment variables.
  2. Run docker compose down && docker compose up -d (or the equivalent for your setup).

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.

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.

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-initialized