Changelog
Full release history for Watchflare Hub and Agent — new features, bug fixes, and breaking changes. Updated with every release since v0.27.0.
Hub and Agent share a single version number and are released together. Full release notes, signed binaries, and archives are published on GitHub Releases. To update your installation, see Update the Hub or Update the Agent.
v0.39.1 - 2026-06-22
Bug fixes
- Restored full metric collection for LXC containers (disk, disk I/O, network, swap, and temperature). These stopped being reported in v0.39.0 when LXC were routed to the limited container profile; LXC are now monitored as full hosts again.
- Fixed metric values lingering in the Hosts table after a host stopped reporting them (for example a temperature that kept showing on an LXC).
- Added a host-level indicator on an LXC’s Disk I/O, Load Average, and CPU Temperature charts, since these reflect the underlying host node (shared kernel) rather than the container.
v0.39.0 - 2026-06-20
New features
- Pause incidents with hosts: pausing a host now also pauses its open incidents. Paused incidents are excluded from the active list and shown with a dedicated filter and badge on both the Incidents page and the host detail. Resuming a host restores normal incident handling without falsely resolving incidents, and package inventory from paused hosts is ignored.
- Modal behavior: dialogs now lock background scrolling and close when you click outside them.
Bug fixes
- Fixed 7-day and 30-day charts losing history and showing only recent points (continuous aggregate refresh offsets exceeded raw data retention).
- Improved LXC detection on cgroups v2 and unprivileged agents (now via
/run/systemd/container). - Entering an invalid 2FA code no longer logs you out (returns 403 instead of 401).
- Dead agents are now correctly marked offline when the Hub restarts (the heartbeat cache is primed from the database on boot).
- Improved alert and incident accuracy around host pause/resume and pending-to-online transitions.
- Backend error messages are capitalized when displayed in the UI.
v0.38.0 - 2026-06-16
New features
- Two-factor authentication (2FA): optional TOTP-based two-factor authentication for an extra layer of account security. Set it up from User > Account by scanning a QR code with any authenticator app (Proton Pass, Proton Authenticator, 2FAS, 1Password, etc.). You also get one-time backup codes for recovery and can regenerate them at any time. Once enabled, login requires a 6-digit code after your password.
- Multi-channel notifications: alert notifications can now be sent through any of the 26+ services supported by Shoutrrr (Discord, Slack, Telegram, Matrix, Ntfy, Gotify, Teams, Pushover, SMTP, generic webhooks, and more). Manage channels from Settings > Notifications with a side drawer for add/edit.
- Test before save: the channel form now validates and sends a test notification without persisting anything, so you can verify a URL before clicking “Create”.
- Per-channel test cooldown: the Test button is rate-limited to once every 5 seconds per channel (or per URL for drafts) to prevent accidental spam.
- Redesigned containers table: the containers view is now more compact and scannable. A runtime icon distinguishes Docker from Podman, memory shows usage at a glance, and exposed ports appear as badges. Click any row to open a detail drawer with the full breakdown.
Breaking changes
- The
SMTP_ENCRYPTION_KEYenvironment variable is renamed toNOTIFICATION_ENCRYPTION_KEYto reflect its broader scope (it now also protects notification channel URLs). Rename the variable in your.envbefore upgrading, no fallback is provided. - The legacy
webhook_endpointstable is dropped. Existing webhook URLs are lost on upgrade because the URL format has changed (Shoutrrr style:discord://TOKEN@WEBHOOK_IDinstead of the native Discord webhook URL). Re-add your channels through Settings > Notifications.
Removed
- Native Discord, Slack, Telegram and Generic webhook senders, superseded by Shoutrrr
- The previous
Settings > Webhookspanel
v0.37.0 — 2026-06-08
New features
- Webhook notifications — alert and resolution notifications can now be sent to Discord, Slack, Telegram, or any HTTP/HTTPS endpoint; manage multiple endpoints from Settings → Notifications; Discord, Slack, and Telegram URLs are auto-detected and receive natively formatted messages; any other URL receives a structured JSON payload
Bug fixes
- Fixed
status,start,stop,restart, andlogscommands on macOS (vialaunchctland Homebrew services) - Fixed systemd service detection and post-install messages on Linux
- Fixed LXC container detection via
/proc/1/environon cgroups v2 - Fixed registration installer not forwarding
--token/--host/--porttowatchflare-agent install - Default
log_levelin generatedagent.confis now"info"instead of being omitted - Upgraded Go to 1.26.4
v0.36.0 — 2026-05-27
New features
- Logo and favicon — logo, full favicon set, and minimal meta tags added to the Hub frontend
- Persistent update spinner — agent update dispatched from the Hub now shows a persistent spinner on the host detail page instead of a disappearing confirmation message
v0.35.0 — 2026-05-23
New features
- Containers table — new “Containers” tab on the host detail page listing all running containers with status, health check result, exposed ports, and sortable columns; includes an inline search filter
- Configurable notification recipient — alert notification email address can now be set independently in Settings → Notifications, separate from the Hub admin account
- Renamed “Load” to “Load Avg” in dashboard columns and alert rule labels for clarity
Bug fixes
- Sort button styling harmonized across the Hosts, Packages, and Containers tables
- Per-host SSE connection badge now displays correctly in the sidebar on host detail pages
v0.34.0 — 2026-05-20
New features
- Container metrics — agent collects per-container CPU usage, memory, and network I/O for Docker, Podman, and Colima via the API socket; opt-in with
--containers - IP address reporting — agent sends all current network interface addresses on every heartbeat; addresses are displayed in the host detail header
- Dashboard redesign — full bento grid layout with new stat cards (CPU, memory, disk, load avg), per-metric sparklines with 1h/24h delta trends; Sparkline chart rewritten from SVG to Canvas for performance
- Global incidents page — new
/incidentsroute listing all active and resolved alert incidents across every host, with start/end timestamps and triggering values - Settings tab bar — Settings reorganized into tabs; collapsed sidebar now opens as a popover flyout instead of requiring full expansion
- Reworked command palette — rebuilt with native keyboard navigation; fixes iOS Safari focus trap and scroll-lock issues
- Current installed version shown in the “Latest Version” column on the Packages page for packages that are already up to date
Bug fixes
- Hardened agent binary install: atomic replacement with
os.Rename, stdlibuser.Lookupinstead of shell calls, correct Homebrew registration order (register → start service) - Widened valid temperature range; CPU thermal sensor now uses a bool sentinel to distinguish “no reading” from zero
- Login error handling sanitized — database failures are logged server-side; clients receive a generic 503 to prevent information leakage
- SSE stream cleanup: removed unused per-host batch machinery and redundant
host_idguards; per-host stream now correctly filters the global broadcast - Load average (1m/5m/15m) included in aggregated metrics snapshots and dashboard sparklines
- Upgraded Go to 1.26.3 and
golang.org/x/netto patch HTTP/2 and network-layer vulnerabilities
v0.33.1 — 2025-04-25
Bug fixes
- Fixed SSE connection leak on host detail page — connections are now reused instead of duplicated on navigation
- Added breadcrumb navigation on the host detail page (
Hosts › hostname) - Updated repository URLs to
watchflare-ioorganisation
v0.33.0 — 2025-04-19
New features
- Agent version via SSE — the agent version is now broadcast on the first heartbeat and displayed live in the host detail header, no page refresh required
- Automatic agent updates (Linux) — self-update via systemd path unit: the Hub dispatches an update command to the agent, which downloads and applies the new binary without manual intervention
v0.32.1 — 2025-04-19
Bug fixes
SMTP_ENCRYPTION_KEYis now required at startup — the Hub exits with a clear error instead of silently failing when SMTP credentials cannot be decrypted
v0.32.0 — 2025-04-19
New features
- HTTPS auto-detection — the
Securecookie flag is now set automatically based on the request context (direct TLS orX-Forwarded-Proto: httpsfrom a trusted proxy), replacing the oldENV=productionheuristic - Extended system metrics — iowait %, steal %, swap used/total, process count, and host info (CPU model, core counts, clock speed) are now collected and displayed
- Global packages view — new
/packagespage showing a deduplicated package inventory across all hosts, with filters and outdated counts - Per-host SSE filtering — the host detail page subscribes to a host-specific SSE stream instead of the full broadcast, reducing client-side processing
- Outdated package detection — packages with available updates and security fixes are flagged; supported managers: apt, dnf, pacman, apk, Homebrew, npm, pnpm, pip, gem, Composer
log_levelconfig field — agent log verbosity can now be set todebug,info,warn, orerrorinagent.conf- Server-side pagination for the packages endpoint
Bug fixes
- Fixed WAL corruption: the WAL is now reset instead of blocking metrics when it contains invalid records
- Fixed pnpm, yarn, pipx, composer, flatpak collectors (path redirects, format changes, D-Bus availability)
- Fixed Cargo collector (
CARGO_HOMEredirect for unprivileged service user)
v0.31.0 — 2025-04-11
New features
- Command dispatch via heartbeat — the Hub can dispatch commands to agents through
HeartbeatResponse: force package collection, trigger agent update - Add host modal — the add host flow is now a modal on the hosts page instead of a separate page
Breaking changes
- Renamed
Server→Hostthroughout the Hub, frontend, and agent (API paths, SSE events, config keys). Existing agents must be re-registered or have their config updated if upgrading from v0.30.
v0.30.0 — 2025-04-10
New features
- Alert system — threshold-based alerts for CPU, memory, disk, load average, and temperature, plus host offline notifications
- Email notifications — SMTP configuration in Settings → Notifications with test email support; AES-256-GCM encrypted password storage
- Incident history — alert incidents are stored with start/end time and triggering value; visible on each host detail page
- Incident resolution emails — a second notification is sent when an alert resolves
- Default alert rules — global defaults apply to all hosts; per-host rules override them
v0.29.2 — 2025-03-31
Bug fixes
- Fixed agent self-update on Linux systems with
noexec/tmpmounts - Fixed UPlotChart ResizeObserver race conditions and memory leaks
v0.29.1 — 2025-03-31
Bug fixes
- Added
COOKIE_SECUREenvironment variable to decouple cookie security from theENV=productionheuristic
v0.29.0 — 2025-03-31
New features
- Per-sensor temperature collection with multi-curve charts
- User display preferences: time format (12h/24h), temperature unit (°C/°F), gauge thresholds
Security & bug fixes
- Comprehensive security and code quality audit across the entire codebase (agent and Hub)
- Fixed agent UUID hijacking prevention during re-registration
- Added
LimitReaderguards throughout the agent to bound memory usage - Exec timeout enforcement on all external command calls in the agent
v0.28.1 — 2025-03-22
Bug fixes
- Fixed Linux agent install issues (ETXTBSY errors and silent service failures)
- Fixed agent status shown as offline on initial registration
- Fixed theme preference not applied consistently during registration
v0.28.0 — 2025-03-21
New features
- Homebrew distribution — the agent is now available via
brew install watchflare-agent(tap:watchflare-io/watchflare) - Agent version display — the running agent version is shown on host list and detail pages with an update badge when a newer release is available
- Username — users can set a display username in profile settings
v0.27.5 — 2025-03-21
New features
- Vulnerability detection for installed packages
- Package inventory UI improvements
- Mobile host card redesign
- Dashboard search and filter
v0.27.4 — 2025-03-19
New features
- Additional dashboard columns: Load Average, Network I/O, Temperature
- Actions dropdown in host table replaced with inline controls
Bug fixes
- SSE broadcast optimization for metrics charts
v0.27.3 — 2025-03-16
Bug fixes
- Host detail header redesign with improved mobile charts
- Agent tick alignment corrections
v0.27.2 — 2025-03-15
Bug fixes
- Agent metrics aligned to wall clock boundaries for consistency
v0.27.1 — 2025-03-15
Bug fixes
- Comprehensive codebase audit (42 bugs addressed)
- Chart gap detection threshold improvements
v0.27.0 — 2025-03-14
New features
- CI/CD with GoReleaser — automated release pipeline producing signed binaries and archives for Linux (amd64/arm64) and macOS (amd64/arm64)
- Docker container metrics — per-container CPU, memory, and network I/O via the Docker API socket (opt-in with
--containers) - uPlot charts — all metric charts migrated from SVG (layerchart) to Canvas (uPlot), fixing Firefox OOM on host detail pages with many series
- Clock desync detection — the gRPC interceptor detects agent clock drift and shows a warning banner on the host detail page
- Distroless Docker image — production Hub container uses a minimal Debian-based distroless image
Note
Versions prior to v0.27.0 were internal development releases. The public release history starts at v0.27.0.