Skip to content

Changelog

What's shipped

v1.5.0

freshdock follows Keep a Changelog and Semantic Versioning. This mirrors the project's CHANGELOG.md, the canonical, always-current source. Full release artifacts (binaries, images) are on the releases page.

1.5.0 (28 August 2026)

Added

  • Compose-aware rollouts: a Compose project is treated as one update unit. One-shot service_completed_successfully services (your migrate step) are re-run first, the rest follow in depends_on order, and a failed migration aborts the rollout. Read from Compose's own labels, no compose file needed. (#83)
  • Optional watch-all opt-out mode (FRESHDOCK_WATCH_ALL=true): watch every container by default, step out per container with freshdock.mode=off. (#81)

Other

  • Release notes are generated from merged PRs. (#76)

1.4.2 (19 August 2026)

Fixed

  • Probe: a republished multi-arch index is treated as up to date instead of a spurious update. (#75)

Other

  • README: refreshed status line and network-mode re-attach mention. (#72)

1.4.1 (9 August 2026)

Fixed

  • Docker: negotiate the API version with the daemon and honour every DOCKER_HOST scheme (unix://, tcp://, http://, https://, ssh://). (#71)

Other

  • SMTP TLS modes, including plaintext, and re-attach network_mode: container:X dependents after the parent updates. (#69)
  • Dependency bumps. (#65)

1.4.0 (28 July 2026)

Added

  • Lifecycle hooks: freshdock.lifecycle.pre-update and post-update commands run inside the container around an update. The pre-update hook can veto or defer an update (exit 75); the post-update hook handles maintenance like cache clears, best-effort. (#62)
  • Watchtower labels are read directly: com.centurylinklabs.watchtower.enable, monitor-only, and the lifecycle hook labels (timeouts in Watchtower's minutes) work as fallbacks, so a migrated fleet needs no relabelling. A freshdock.* label always wins. (#66)

1.3.0 (25 June 2026)

Added

  • Declare notification targets entirely via env URLs (FRESHDOCK_NOTIFY_<NAME>_URL, shoutrrr-style), plus notification logging. A container deployment no longer needs a config file for notifications. (#56)

Other

  • Env-first configuration docs and GitHub Pages links. (#53)

1.2.1 (16 June 2026)

Other

  • Bump toml from 0.8.23 to 1.1.2 (spec 1.1.0). (#50)

1.2.0 (16 June 2026)

Added

  • Credential observability. Surface registry-auth state, and survive rejected tokens instead of failing the whole check. (#45)

Other

  • Publish documentation as an mdBook site on GitHub Pages. (#46)
  • Add monthly Dependabot for cargo and GitHub Actions. (#47)
  • Add a funding option, project logo, and README header. (#41, #44)

1.1.0 (10 June 2026)

Added

  • Full environment-variable config coverage, onboarding docs, and node24 release actions. (#39)

1.0.0 (10 June 2026)

First stable release. Same surface as 1.0.0-rc.1, promoted after a homelab beta. watch, read-only check, and the recreate health-gate were verified on Docker, Portainer, and TrueNAS. No functional changes since the candidate.

1.0.0-rc.1 (9 June 2026)

First release candidate. Closes Phases 0 to 7 of the roadmap.

Added

  • freshdock check: read-only update-status table. Lists opted-in containers, resolves the latest registry digest per unique image (deduped to respect Docker Hub's anonymous rate budget), and reports which have updates. Never mutates state.
  • freshdock recreate <name>: manual single-container update. The sequence is inspect → pull → stop → rename → create → start, health-gated with automatic rollback on failure.
  • freshdock run: scheduler daemon polling opted-in containers on their per-mode cadence (--interval, --tick, --stop-timeout); graceful SIGINT/SIGTERM drain.
  • Per-container update modes via Docker labels: live, nightly, weekly, monthly, watch, off. Opt-in by default (freshdock.enable=true).
  • Per-container cron override (freshdock.schedule) with a hand-rolled 5-field parser; calendar modes evaluated in system local time with DST-gap handling.
  • Health-gated rollback: a new container must pass its healthcheck (or a grace period) before the old one is removed; otherwise it is restored.
  • Multi-registry digest checks: Docker Hub (anonymous + authenticated), GHCR, Quay.io, lscr.io, and any OCI bearer-token registry.
  • Notifications: webhook, Discord, Telegram, and SMTP backends, each subscribable to a subset of the available / succeeded / failed triggers.
  • Image cleanup: remove the superseded image after a healthy update; optional daemon-wide dangling prune.
  • Global default mode for enabled containers with no explicit freshdock.mode label.
  • Multi-arch container image (amd64, arm64, armv7) on GHCR and static-musl release binaries for the same three architectures.