Skip to content

Releases: Homelabcraft/Watcher

Watcher 1.6.0 (Enterprise Management)

12 Apr 10:27
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

[1.6.0] - 2026-04-12

Added

  • Persistent Update Journal: Added local JSON journaling (journal.json) to track every scan cycle, container check, and update result across service restarts. Configurable history rotation via JOURNAL_MAX_ENTRIES.
  • Failure Cooldown: Implemented an intelligent cooldown period (FAILURE_COOLDOWN_SECONDS) for containers that repeatedly fail to update, preventing excessive Docker API calls and resource churn.
  • Optional Notifications: Watcher no longer requires a notification backend to start. It now defaults to a NoopNotifier if no webhooks are configured, while maintaining strict "Fail-Fast" validation for partial configurations.
  • Update Rate Limiting: Added MAX_UPDATES_PER_CYCLE to limit the number of containers updated in a single run, preventing potential CPU/Network spikes.
  • Advanced Filtering: Added EXCLUDE_CONTAINER_REGEX support for global, pattern-based container exclusion.
  • Granular Notification Control:
    • NOTIFY_SUMMARY_STRATEGY: Choose when to receive cycle summaries (always, on_change, or on_error).
    • NOTIFY_ON_UPDATE_START: Option to suppress "Initiating sequence" alerts for a quieter notification feed.
    • NOTIFY_ON_STARTUP: Option to disable the initial "Watcher Started" notification.
  • Operational Toggles:
    • RESTART_DEPENDENTS: Option to globally disable the automatic restart of linked containers.
  • Improved Failure Tracking: Success or "No Change" results now automatically clear any active cooldowns for a container.
  • Enhanced Configuration Validation: Strict startup checks for all new 1.6.0 parameters.

Fixed

  • Journal Robustness: Improved error handling for filesystem IO errors and JSON corruption during journaling.
  • Code Hygiene: Eliminated remaining unsanitized exception blocks to prevent interference with system signals.
  • Summary Logic: Refined the definition of "Change" for the summary report strategy to strictly mean operational actions (Update, Fail, Rollback).

Watcher 1.5.3 (Verified)

12 Apr 09:53
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

[1.5.3] - 2026-04-12\n### Changed\n- Documentation: Enhanced the configuration table in README.md to include Telegram variables.\n- Verification: Full synchronization check between local and public repository state.

Watcher 1.5.2

12 Apr 09:13
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

[1.5.2] - 2026-04-12

Fixed

  • Repository Cleanup: Removed accidentally tracked temporary release notes files from the repository.
  • Configuration Parity: Synchronized docker-compose.yml and .env.example to correctly include the new v1.5.0/v1.5.1 configuration variables (LOG_LEVEL, NOTIFY_UPDATES_AVAILABLE, SCHEDULE_TIME, NTFY_URL, etc.).
  • Documentation: Corrected the GitHub repository topics to strictly align with the project's scope.

Watcher 1.5.1

12 Apr 08:50
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

[1.5.1] - 2026-04-12

Added

  • Configurable Notification Verbosity: Added NOTIFY_UPDATES_AVAILABLE environment variable (defaults to true). If set to false, Watcher will no longer include watcher.enable=false containers in the daily summary report, reducing notification spam for containers you explicitly chose not to auto-update.
  • Dynamic Log Levels: Added LOG_LEVEL environment variable (defaults to INFO). Can be set to DEBUG for deep troubleshooting and visibility into the Docker SDK recreation process.

Watcher 1.5.0 (Release)

12 Apr 08:40
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

[1.5.0] - 2026-04-12

Added

  • Multi-Messenger Notifications: Pluggable notification backends. Added full support for Slack, Telegram, and Ntfy alongside Discord.
  • Rich Embeds & Dashboards: Radically improved notifications. Notifications now provide extensive details including scan modes, version shifts (image hashes), exact duration, dependent restarts, and specific error steps.
  • Fail-Fast Configuration: Strict startup validation ensures Watcher fails immediately with a clear error if the environment is misconfigured (e.g., invalid intervals or webhook URLs), preventing silent runtime failures.
  • Graceful Shutdown: Safely handles SIGTERM and SIGINT signals. Watcher will never exit mid-update, guaranteeing containers are not left in an undefined or broken state if the host restarts.
  • Daily Scheduling: Added SCHEDULE_TIME config variable to allow running Watcher at a specific time once a day, instead of using a fixed interval.
  • Robust Execution Plan (Dry Run): The dry-run mode has been completely overhauled to not just log, but push a detailed "Execution Plan" to your configured messengers, showing exact targets and dependencies that would be touched.

Changed

  • Architectural Rewrite: The core logic now uses strict OOP models (ContainerUpdateInfo, UpdateStatus) instead of primitive types, massively boosting stability.
  • Stop Timeout Resiliency: The container stop process now reads the target container's specific StopTimeout from Docker, falling back to 15s. Additionally, Python client ReadTimeout exceptions during heavy stops (like databases or qBittorrent saving state) are now intercepted safely, eliminating false-positive rollback triggers.
  • Global Timeout: Increased the Docker client timeout to 120s to ensure Watcher does not lose connection during extensive operations.

v1.4.3 - Production Hardening

08 Apr 09:04
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

🛡️ Hardening & Reliability in v1.4.3

  • Hardened Self-Protection: Watcher now identifies itself via container ID, ensuring zero risk of self-updating even if renamed.
  • Healthcheck Visibility: Added warnings for containers lacking native Docker healthchecks to improve safety for stateful applications.
  • Smart Restart Protection: Prevented infinite restart loops by deduplicating dependency triggers within the same cycle.
  • Code Hygiene: Refined exception handling and logging for better production diagnostics.
  • Documentation: Updated README and Changelog to reflect the latest hardening measures.

v1.4.2 - Hotfix: Final Discovery & User-Resolution

07 Apr 21:35
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

🛠️ Bugfixes in v1.4.2

  • Container Discovery Fixed: Successfully handles containers with empty local RepoTags by prioritizing Config.Image references.
  • User-Resolution Fallback: Implemented a robust retry mechanism to bypass 'unable to find user root' errors in minimalist images.
  • Defensive Rollback: Reinforced the entire update lifecycle to prevent IndexErrors and provide clear diagnostic paths.

v1.4.1 - Hotfix: Robustness & Rollback

07 Apr 21:01
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

🛠️ Bugfixes in v1.4.1

  • User Handling Fixed: Resolved 'unable to find user root' errors by only passing user configuration if it is truthy.
  • Rollback Hardening: Fixed 'list index out of range' crash by adding defensive checks for containers without networks and improved error handling in the rollback lifecycle.
  • None-Value Cleanup: Automatically prunes None-values from Docker create arguments to prevent SDK-level inconsistencies.

v1.4.0 - Enterprise Ready

07 Apr 20:09

Choose a tag to compare

🚀 Key Enhancements in v1.4.0

  • 🛡️ Hardened Recreation: Full support for advanced Docker configurations: \Ulimits, \Sysctls, \LogConfig, \ShmSize, \IpcMode, and \PidMode.
  • 🔄 Intelligent Rollbacks: Zero-data-loss recovery if the new image is unhealthy or crashes on startup.
  • ⚖️ Hybrid Update Strategy: Opt-in/Opt-out modes allowing you to auto-update stateless apps while only monitoring mission-critical databases.
  • 🔗 Deep Dependency Management: Support for \watcher.depends_on\ labels and \NetworkMode: container:\ linking.
  • 📊 Summary Reporting: Professional Discord notifications with categorized results (Updated, Reported, Failed, Rolled Back).
  • ⚡ Polished Performance: Improved logging and optimized Docker API handling.