Repository navigation
Releases
v1.6.5
ChannelWatch v1.6.5 - Dashboard and mobile polish
Changed
- Improve dashboard layout, mobile navigation, status colors, Update Center summaries and interface wording across the app. This update installs from Settings > Updates without recreating the container.
- Start the dashboard with a one-line health summary, such as "Monitoring healthy · 1 DVR connected", or the most serious problem when something needs attention. On phones the four summary tiles sit in a 2x2 grid.
- Put what is on first. Home now opens on phones with the four summary tiles, then a Now list of live streams and active recordings when something is on, then upcoming recordings.
- Make the health summary say the worst thing that is true, with how many other problems sit behind it and one button to the next step. It now covers stopped or stale monitoring, and no longer names the version.
- Point to Set up notifications in the health summary when no notification service is set up.
- Show disk space as what is left, such as "116 GB left · warns at 186 GB", with marks on the bar where alerts start. Show uptime as days and hours or hours and minutes, without seconds.
- Replace "Last updated" with how old the data is, such as "Updated 2 min ago" or "Last good data 12 min ago". The 30-second refresh no longer makes the page or the Refresh button flicker.
- Keep Home open behind other tabs, so coming back keeps your place. Each tab starts at its top, and tapping the tab you are on scrolls back up. Home reads nothing while it is out of view.
- Show activity and recording rows as the show, then the device or result and the time. Show artwork only when there is artwork, and show bad or missing dates as a dash or "Time unknown".
- Show five rows of Recent Activity and Upcoming Recordings on phones and tablets instead of a small scrolling box, with Open Watch History below the first and Show all below the second.
- Show the 24-hour timeline as one sentence and three simple lanes for Live TV, VOD and Recordings. The chart's show and hide toggles are gone, because every lane now shows at once.
- Keep Home in place while it loads, with placeholders the same size as the content. A new activity row settles in once when a refresh brings it.
- Open disk and uptime details in a sheet on phones and tablets, so the tile stays put and the page does not shift.
- Open Diagnostics, Help & Feedback and About from a bottom sheet under the More tab on phones.
- Close sheets by swiping down, with a flick or a long drag. A sheet holding an unsent report or request springs back and keeps your draft.
- Slide sheets up from the bottom and back down the same way, with their content still showing as they leave. A sheet closed while it is opening turns around from where it is.
- Open dialogs from the center without drifting, and open menus from the button you tapped. Healthy status no longer pulses.
- Put filters on phones behind short pills that open one sheet. Notification Log hides its filters until there is something to filter, and Watch History hides paging when there is one page.
- Show long show, channel and program names on two lines with the full name in the detail view.
- Show notification routing as stacked cards with full-width switches on phones, and line up the Notification Log date filters.
- Highlight rows and tabs the moment you press them, keep buttons from selecting their own text, and keep the page from zooming when you tap a field on an iPhone.
- Arrange Home for tablets and for phones on their side, and make the sign-in form work with password managers and the keyboard's Go key.
- Give every screen three clear surface levels in light and dark, one set of corner sizes and one thin line for borders and dividers. The header, tab bar and save bar are now solid, so page text no longer shows through them. Cards have a clear edge in light, selected tabs sit above their track in both themes, and the save bar reads as its own layer.
- Use color for status only. Green, amber and red mean the same thing on every screen, while routine activity, summary tile icons and notification provider rows stay neutral. A disk warning now looks the same on Home and in Diagnostics.
- Keep healthy states quiet. A healthy summary is a dot and one line of text, and Status shows Running and Connected as plain words.
- Flatten Settings into plain cards. Notification providers and alerts each sit in one list, and field labels are no longer in capitals.
- Say "No sign-in set" in Status at every screen size, and in the header on wide screens, instead of a red badge.
- Call the first page Home in the page title and the side rail, to match the phone tab, and use the same order in the side rail as the tabs. Call the core process Monitoring engine and the UI process Web app.
- Show the Save and Discard bar only when settings have unsaved changes. After a save it says the settings were saved and applied, then slides away.
- Show Unsaved changes, then "General settings saved and applied", and keep "Last saved" under the title. Discard now offers Undo, and a failed save stays on the page until it is fixed.
- Confirm Restart in a sheet instead of a browser popup. Messages appear above the tab bar on phones, and you can swipe them down.
- Make Retry stand out after a failed restart, and give the restart recovery buttons a full-size touch target.
- Fade Settings sections in when opened and keep the page where it was.
- Tell one story in Update Center: one headline, one next action, and a failure together with its reason and Retry. Install progress and check errors now sit beside the buttons that started them, and Roll back asks first.
- Use one name for each thing across the app: Delivery for the notification log tab, Destination for its filter, Password sign-in and No sign-in, update window, Live TV and Recordings.
- Rename Notify me only to Install manually, because that setting has never sent a notification.
- Say plainly what becomes public when you send a report, and that anyone with a backup file can read saved credentials. Pushover, Discord and other provider credentials are stored unencrypted. Only DVR API keys and webhooks are encrypted.
- Name the status and program in default recording notification titles, such as "Failed: The Bear". Custom templates are unchanged.
- Name the DVR in default disk alerts and shorten their titles to "Disk space low" and "Disk space critically low". Custom templates are unchanged.
- Show 25 rows per page in Notification Log, with a shorter row on phones.
- Explain failed notifications in a plain sentence with the original error one tap away, and say what to do next when History or the log cannot load.
- Say why a DVR is disconnected in Status: it timed out, the connection was refused or the host is unreachable, or the DVR answered with an HTTP error.
- Archive a saved DVR for 30 days when you remove it, with Undo right there. Saving applies the removal.
- Ask you to confirm before a backup file replaces your settings. A safety copy of the current files goes to /config/backups/ first.
Fixed
- Record a low or critical disk warning in Recent Activity once per level instead of every few minutes while free space stays low. A new entry appears only when the level changes, disk space recovers, or your existing disk alert cooldown allows a re-alert. Repeated entries already in history are shown once.
- Fill in duration, episode title, summary and season and episode numbers for VOD playback in Watch History. The DVR sends these fields in lowercase and ChannelWatch only read the capitalized names. Progress now shows as a percentage and duration reads like "32m 19s".
- Keep two different recordings of the same program and channel as two entries in Recent Activity instead of one.
- Restore the default when you clear a disk threshold instead of saving 0. On a DVR's own tab, clearing a number returns that DVR to the global value. Critical must stay lower than warning, including what a DVR inherits from the global settings, and the error names the DVR.
- Keep the level of new disk alerts in Recent Activity, so a critical alert stays red. Alerts saved before this update show as warnings.
- Show a dash and a reason when a number could not be read, instead of 0 or a red label. After a failed refresh, the last good value stays with the time it was read.
- Show the reason and the next step when a sign-in, DVR test or restart fails, instead of a status code or a general failure message. A wrong password still says "Invalid username or password." Error messages stay until you close them.
- Keep unsaved settings when you move to another tab or the app restarts, and warn before you reload the page.
- Stop Discard from clearing a saved notification credential the next time you save.
- Refresh Settings after a restore, so the next save cannot overwrite what you restored.
- Ask you to sign in again above the page when your session ends, so what you were editing is still there afterwards.
- Stop asking a signed-in person to sign in when ChannelWatch is restarting or busy. The page says it cannot reach the server and keeps trying.
- Keep an unsent report or request when you go back and return.
- Save the update window when you press Enter in its fields, instead of reporting a save that changed nothing.
- Give each DVR you add its own ID, and stop a save that lists the same address twice or leaves a host blank.
- Keep routing you set on a new DVR before its first save.
- Stop saving a notification provider that is switched on with no details, instead of switching it off without a word.
- Hide archived DVRs from the header selector.
- Say "ChannelWatch is busy" when it is rate limiting, and stop blaming the container for errors that are not about it.
- Close an open sheet or menu when you go back to another tab, so it never sits on top of the wrong page.
- M...
v1.6.4
ChannelWatch v1.6.4 - Watch History activity
Fixed
- Keep Watch History focused on playback and recording activity. DVR health and disk events remain in Recent Activity, while search, pagination, client filters and CSV exports use the same history scope. Existing activity is preserved, and no new setting is required (#30).
Docs
ChannelWatch Official Docs Site
Images
Docker Hub:
coderluii/channelwatch:1.6.4
coderluii/channelwatch:latest
GHCR:
ghcr.io/coderluii/channelwatch:1.6.4
ghcr.io/coderluii/channelwatch:latest
License and verification
ChannelWatch is MIT-licensed. The container and app-update bundle include the project notices, applicable complete copyleft license texts, and an exact corresponding-source map.
- Third-party license inventory
- Corresponding-source and rebuild map
- Complete copyleft license texts
- Release asset checksums
- Exact amd64 and arm64 SPDX and CycloneDX SBOMs are attached below; every other attached asset is covered by the checksum manifest.
v1.6.3
ChannelWatch v1.6.3 - Diagnostic alerts and activity
Fixed
- Keep diagnostic samples out of Recent Activity, Watch History, timelines and saved monitoring state. Mark sample notifications and logs with
[TEST], including custom templates, and keep sample channel details and artwork consistent (#28). - Show disabled notification diagnostics as Skipped, with a reason and a separate count. Apply the tested DVR's alert settings before creating samples or attempting delivery, while keeping genuine connection and delivery errors visible as failures (#29).
- Show which DVR was tested. Diagnostic checks use the first enabled DVR.
Security
- Update the pnpm package manager and release validation tools to supported security releases without changing notification providers or the minimum image foundation.
Docs
ChannelWatch Official Docs Site
Images
Docker Hub:
coderluii/channelwatch:1.6.3
coderluii/channelwatch:latest
GHCR:
ghcr.io/coderluii/channelwatch:1.6.3
ghcr.io/coderluii/channelwatch:latest
License and verification
ChannelWatch is MIT-licensed. The container and app-update bundle include the project notices, applicable complete copyleft license texts, and an exact corresponding-source map.
- Third-party license inventory
- Corresponding-source and rebuild map
- Complete copyleft license texts
- Release asset checksums
- Exact amd64 and arm64 SPDX and CycloneDX SBOMs are attached below; every other attached asset is covered by the checksum manifest.
v1.6.2
ChannelWatch v1.6.2 - Artwork and diagnostics fixes
10/26/2026
Fixed
- Show complete channel logos and program artwork in Recent Activity, Watch History and activity details instead of cropping them into narrow poster slots. Keep row text aligned when artwork is missing (#28).
- Run the selected diagnostic using its API command rather than its display label, so individual tests and Run All Tests reach the correct checks. Label the DVR API check accurately (#29).
Update through Settings > Updates. Direct in-app updates from v1.4.0, v1.4.1, v1.4.5, v1.5.3, v1.6.0 and v1.6.1 do not require recreating the container. See the update guide for details.
Docs
ChannelWatch Official Docs Site
Images
Docker Hub:
coderluii/channelwatch:1.6.2
coderluii/channelwatch:latest
GHCR:
ghcr.io/coderluii/channelwatch:1.6.2
ghcr.io/coderluii/channelwatch:latest
License and verification
ChannelWatch is MIT-licensed. The container and app-update bundle include the project notices, applicable complete copyleft license texts, and an exact corresponding-source map.
- Third-party license inventory
- Corresponding-source and rebuild map
- Complete copyleft license texts
- Release asset checksums
- Exact amd64 and arm64 SPDX and CycloneDX SBOMs are attached below; every other attached asset is covered by the checksum manifest.
v1.6.1
10/26/2026
Important
- Install v1.6.1 directly from Settings > Updates on v1.6.0, v1.5.3, v1.4.5, v1.4.1 or v1.4.0. No intermediate release or container recreation is needed.
- Automatic installation remains disabled. Install this release manually from Update Center.
- The v1.4.x app-only route keeps the image's existing Python packages, so those users can install the application in-app but need to replace the container with the v1.6.1 image to receive certifi 2026.10.19. The v1.5.3 and v1.6.0 protocol-4 route installs the signed application and official Python package generation together.
Added
- Accept v1.6.0 as a direct signed Update Center source on both the current launcher and supported v1.4.x launchers.
Changed
- Move Maintenance Windows below Recent Activity and Upcoming Recordings and keep it collapsed until opened, reducing dashboard scrolling without shrinking text (#27).
- Update Next.js to 16.4.2, React to 19.3.1, Zod to 4.6.7, axe-core Playwright to 4.14.0 and Playwright to 1.64.1 without changing the supported notification-provider set or v1.5.3 minimum image foundation.
Fixed
- Let administrators explicitly disable Email and the other global notification providers while preserving untouched masked secrets, per-DVR overrides and encrypted settings (#26).
- Keep activity titles, artwork rows and compact dashboard cards aligned across narrow mobile, tablet and desktop widths.
- Give timeline, diagnostics and filter controls visible accessible names so their purpose remains clear to screen readers and automated accessibility checks.
- Require the release gate to qualify direct legacy updates and the exact signed v1.6.0-to-v1.6.1 chain on native AMD64 and ARM64 before publication.
- Bound Docker qualification and cleanup commands so an unresponsive daemon fails the check instead of hanging it.
- Handle pip's generated launchers on long build paths while keeping console scripts out of runtime packages.
Security
- Refresh the official Python image to 3.14.9 with pip 26.2.2 and update the pinned Node build image. Keep the signed package generation compatible with Python 3.14.8 so retained containers can still update in-app.
- Update the signed Python runtime generation to certifi 2026.10.19 after the compromise of eight eMudhra intermediate CA keys. This version restores unaffected emSign roots and no longer trusts the affected emSign ECC Root CA G3 (GHSA-6q48-6c7w-9gw2).
- Update the Vitest test toolchain to 4.1.12, which includes the upstream fixes for two @vitest/mocker advisories.
Docs
ChannelWatch Official Docs Site
Images
Docker Hub:
coderluii/channelwatch:1.6.1
coderluii/channelwatch:latest
GHCR:
ghcr.io/coderluii/channelwatch:1.6.1
ghcr.io/coderluii/channelwatch:latest
License and verification
ChannelWatch is MIT-licensed. The container and app-update bundle include the project notices, applicable complete copyleft license texts, and an exact corresponding-source map.
- Third-party license inventory
- Corresponding-source and rebuild map
- Complete copyleft license texts
- Release asset checksums
- Exact amd64 and arm64 SPDX and CycloneDX SBOMs are attached below; every other attached asset is covered by the checksum manifest.
v1.6.0
10/16/2026
Important
- Install v1.6.0 directly from Settings > Updates on v1.5.3, v1.4.5, v1.4.1 or v1.4.0. No intermediate release or container recreation is needed.
- On v1.4.x images, the signed app-only update retains the existing Python packages. On v1.5.3 images, the signed runtime generation updates the application and packages together.
- Automatic installation is disabled for this first package release. Install it manually from Update Center.
- Python itself, operating-system libraries, Supervisor and image-owned startup and verification tools still use the container image update path.
Added
- Install signed application and Python package updates together from Settings > Updates on compatible v1.5.3 images.
- Report the responding selected worker's package versions, loaded state and paths in update diagnostics without importing unloaded optional modules.
Changed
- Refresh the interface for desktop, tablet and mobile, with clearer text, compact navigation and show artwork where available.
- Keep dashboard details compact until opened. Expanded Disk Space and Uptime cards align without stretching a collapsed neighbor.
- Improve settings navigation, dropdowns, dialogs, loading states and artwork fallbacks on smaller screens.
- Update charset-normalizer to 3.5.2, httptools to 0.9.0, Markdown to 3.11, opentelemetry-api to 1.45.1, pycparser to 3.11, python-dotenv to 1.2.4, SQLAlchemy to 2.1.4 and websockets to 17.2.
- Sign and validate the complete 40-package official Python closure with the application, including the eight updated packages.
Fixed
- Refresh the dashboard after a successful rollback to the previous runtime.
- Keep the install result intact when checking for updates again immediately after installation.
- Handle overlapping restart requests on v1.4.x images without aborting the active restart.
- Show the recorded installation error instead of a generic server error when an update cannot be prepared.
Docs
ChannelWatch Official Docs Site
Images
Docker Hub:
coderluii/channelwatch:1.6.0
coderluii/channelwatch:latest
GHCR:
ghcr.io/coderluii/channelwatch:1.6.0
ghcr.io/coderluii/channelwatch:latest
License and verification
ChannelWatch is MIT-licensed. The container and app-update bundle include the project notices, applicable complete copyleft license texts, and an exact corresponding-source map.
- Third-party license inventory
- Corresponding-source and rebuild map
- Complete copyleft license texts
- Release asset checksums
- Exact amd64 and arm64 SPDX and CycloneDX SBOMs are attached below; every other attached asset is covered by the checksum manifest.
v1.5.3
ChannelWatch v1.5.3 - Dependency update foundation
10/11/2026
Important
- Container image update required. Pull v1.5.3 and recreate the container with the same
/configvolume and existing external storage key configuration. Every published v1.4.x image needs this one-time update to receive launcher protocol 4. - v1.5.3 supplies the image foundation. It does not publish a runtime-generation payload. Future compatible releases can deliver a complete signed application and official Python package generation through Settings > Updates in the same container.
Added
- Let future compatible releases update the application and official Python packages together from Settings > Updates. ChannelWatch prepares, verifies, activates, and rolls back the complete signed runtime generation as one unit.
Changed
- Keep Python interpreter, OS, glibc, Supervisor, and image-owned verifier updates on the container image path.
- Require future image-floor retention to pass compatibility, restart, and rollback checks on both native AMD64 and native ARM64.
Fixed
- Keep
channelwatch doctoron the image-owned application and Python environment, isolate it from selected-generation import paths, and report the actual diagnostic runtime identity. - Keep runtime security tests independent of the hosted test interpreter's writable permissions while continuing to reject unsafe interpreter paths.
- Make interrupted update preparation retryable after the current runtime starts again, while preserving the selected release and saved configuration.
- Keep update policy button labels readable on smaller screens.
Docs
ChannelWatch Official Docs Site
Images
Docker Hub:
coderluii/channelwatch:1.5.3
coderluii/channelwatch:latest
GHCR:
ghcr.io/coderluii/channelwatch:1.5.3
ghcr.io/coderluii/channelwatch:latest
License and verification
ChannelWatch is MIT-licensed. The container and app-update bundle include the project notices, applicable complete copyleft license texts, and an exact corresponding-source map.
- Third-party license inventory
- Corresponding-source and rebuild map
- Complete copyleft license texts
- Release asset checksums
- Exact amd64 and arm64 SPDX and CycloneDX SBOMs are attached below; every other attached asset is covered by the checksum manifest.
v1.4.5
ChannelWatch v1.4.5 - Reliable release transport
Important
- Signed in-app update for the v1.4.0 image. You can install it from Settings > Updates without recreating the container.
Fixed
- Keep the exact Apply or Retry job through temporary restart disconnects, resume it after Settings reopens, and refresh only when that job and the new runtime are ready.
- Show a compatible signed future image-required release as an announcement without treating its runtime bundle as an installable app update.
- Write the candidate transport context as exact canonical JSON bytes so the isolated signer can seal and hand off the verified release candidate.
- Verify that the failed v1.4.4, v1.4.3, and v1.4.2 tags have no GitHub releases before retaining v1.4.1 as the signed catalog predecessor.
- Check the exact versioned OpenVEX security document before publishing update assets.
Docs
ChannelWatch Official Docs Site
Images
Docker Hub:
coderluii/channelwatch:1.4.5
coderluii/channelwatch:latest
GHCR:
ghcr.io/coderluii/channelwatch:1.4.5
ghcr.io/coderluii/channelwatch:latest
License and verification
ChannelWatch is MIT-licensed. The container and app-update bundle include the project notices, applicable complete copyleft license texts, and an exact corresponding-source map.
- Third-party license inventory
- Corresponding-source and rebuild map
- Complete copyleft license texts
- Release asset checksums
- Exact amd64 and arm64 SPDX and CycloneDX SBOMs are attached below; every other attached asset is covered by the checksum manifest.
v1.4.1
ChannelWatch v1.4.1 - Corrected container license inventory
Important
- Signed in-app update for the v1.4.0 image. You can install it from Settings > Updates without recreating the container.
Fixed
- Correct the documented official Python image digest in the third-party license inventory so it matches the Dockerfile and corresponding-source map. Runtime dependencies and container behavior are unchanged.
Docs
ChannelWatch Official Docs Site
Images
Docker Hub:
coderluii/channelwatch:1.4.1
coderluii/channelwatch:latest
GHCR:
ghcr.io/coderluii/channelwatch:1.4.1
ghcr.io/coderluii/channelwatch:latest
License and verification
ChannelWatch is MIT-licensed. The container and app-update bundle include the project notices, applicable complete copyleft license texts, and an exact corresponding-source map.
- Third-party license inventory
- Corresponding-source and rebuild map
- Complete copyleft license texts
- Release asset checksums
- Exact amd64 and arm64 SPDX and CycloneDX SBOMs are attached below; every other attached asset is covered by the checksum manifest.
v1.4.0
ChannelWatch v1.4.0 - Maintenance windows and update choices
Superseded by v1.4.1, which corrects the Python image digest in the third-party license inventory. Use v1.4.1 for new installations. Existing v1.4.0 containers can install the signed app update from Settings > Updates.
Important
- Container image update required. Pull v1.4.0 and recreate the container with the same
/configvolume and existing external storage key configuration.
Added
- Show potential maintenance windows for each DVR, with minimum duration, day, and time filters. Recording gaps use the configured timezone and exclude active and scheduled recordings. Unreachable, incomplete, and unobserved schedule periods stay marked as unknown.
Changed
- Refresh compatible Python and UI dependencies, the pinned official Python image, and release tools. Keep Apprise on its supported 1.x notification interface.
Fixed
- Show an available compatible app update separately from a newer container image recommendation. Signed-update checks, downgrade protection, and rollback behavior stay in place. Previously installed clients need an image update to receive the new selection behavior.
Docs
ChannelWatch Official Docs Site
Images
Docker Hub:
coderluii/channelwatch:1.4.0
coderluii/channelwatch:latest
GHCR:
ghcr.io/coderluii/channelwatch:1.4.0
ghcr.io/coderluii/channelwatch:latest
License and verification
ChannelWatch is MIT-licensed. The container and app-update bundle include the project notices, applicable complete copyleft license texts, and an exact corresponding-source map.
- Third-party license inventory
- Corresponding-source and rebuild map
- Complete copyleft license texts
- Release asset checksums
- Exact amd64 and arm64 SPDX and CycloneDX SBOMs are attached below; every other attached asset is covered by the checksum manifest.