# Changelog All notable changes to this project are documented here, organized by release. ## [5.3.8] ### Added - Wiki home page with overview and getting started guide ### Fixed - Release workflow: use `GITHUB_REF`/`GITHUB_OUTPUT` (Gitea Actions uses GitHub-compatible variable names) - Release workflow: replace `head -1` with `grep -m 1` to avoid SIGPIPE (exit 141) in changelog step --- ## [5.3.7] ### Added - Dark mode with light/dark/auto theme setting - UNKNOWN level filter in Log of Events - Per-metric grace period input in threshold settings - Replace Dynamic DNS YAML editor with a web form - Sort hosts, thresholds, and channels alphabetically on settings page - Suppress alerts for unwatched hosts ### Fixed - Preserve log message order when replaying history on connect --- ## [5.3.6] ### Added - MIT license ### Fixed - Correct ZFS pool status threshold operator and add per-metric grace - Normalize email and domain fields - Move dependencies back under `[project]` in pyproject.toml --- ## [5.3.4] ### Fixed - Run full reload after HTTP config publish, not just `config.reload()` --- ## [5.3.3] ### Added - Replace YAML threshold editor with a form-based UI - Replace multi-select fields with dual-panel picker on settings page - Nav bar button to publish pending config changes - Host, level, and message filters in Log of Events ### Fixed - Remove container max-width; stop stretching inputs on settings page ### Removed - Legacy `dyndnshosts`/`drophosts` config keys --- ## [5.3.2] ### Added - Retry DNS resolution indefinitely; add `-4`/`-6` address-family flags to `hbc` and `hbc_mini` - Replace YAML hosts editor with form-based CRUD table - Replace YAML notification channel editor with form-based UI ### Fixed - Support list-valued `threshold_config` in hosts table - Derive hosts threshold config list from config file keys - Replace channel checkboxes in Users table with multi-select - Support plugin-level `enabled: false` in threshold config - Always populate glance strip for all hosts on page load - Fetch host info on initial page load --- ## [5.3.1] ### Added - Host info section in Host Overview (fetched and rendered on card expand) - `GET /api/0/hosts/{hostname}/info` endpoint - Show suffix-matched metric coverage in host info threshold table - Move `hbc_version` and `hbc_type` out of `os_info` into the host info section ### Fixed - Correct `THRESHOLD_DEFAULTS` metric keys and add missing defaults --- ## [5.3.0] ### Added - Profile page self-service: change identity, password, and notification channels - Settings page editor with form sections, YAML editors, stage/publish/rollback workflow - Config read API: `GET /api/0/config`, `/section/{name}`, `/backups` - Config write API: `POST /api/0/config`, `POST /api/0/config/rollback` - `configio` module for comment-preserving YAML round-trip writes - Multi-provider OAuth2 login page and generic provider routes - Log login/logout events to the event log with auth source ### Fixed - ZFS monitor alerts dropped on restart with wildcard pool thresholds - Preserve OAuth users across config reload - Config API error handling, consistent 403 messages, deduplicated key lists - Validate password body type; coerce `notification_channels` to strings in profile API - Preserve OAuth `client_secret` on roundtrip; harden rollback path validation --- ## [5.2.6] ### Added - Alerts host-filter field with URL query parameter and notify URL - Optional logo on Gitea OAuth login button ### Fixed - Show human-readable duration in re-notification messages --- ## [5.2.5] ### Added - Alert CRITICAL on degraded or suspended ZFS pools (ONLINE=OK, DEGRADED=WARNING, all else=CRITICAL) - Sign in with Gitea button on login page with OAuth2 redirect/callback routes - OAuth2 CSRF state management - Host owner shown in glance strip for admin users - C port of `hbc_mini` (single-file client in `scripts/c/`) ### Fixed - Use `base_url` config for OAuth redirect URI to handle reverse proxy deployments - Preserve OAuth users across config reload - Escape HTML in login page error display --- ## [5.2.4] ### Added - `hbc`/`hbc_mini`: `owner` config field included in `os_info`; server applies to host record - Server requests InfoPlugin refresh when a host has no plugin data - Event log stores structured dicts; filter by user ### Fixed - Strip `_status_code` suffix from displayed metric names in threshold alerts - Use plain URL in Mattermost plugin metrics link - Fall back to `default_owner` when `os_info` has no owner --- ## [5.2.3] ### Added - `hbc`/`hbc_mini`: log name and version at startup - Show metric name inline with hostname in alerts and notifications ### Fixed - Send shutdown message only if a boot message was previously sent; suppress both on restart --- ## [5.2.2] ### Fixed - Retry connection on network error instead of permanently dropping it - Silence `aiohttp.access` log; strip plugin prefix in alerts UI --- ## [5.2.1] ### Fixed - Threshold and logging improvements --- ## [5.2.0] ### Added - `nagios` operator for direct exit-code severity mapping ### Fixed - Always show `THRESHOLD_DEFAULTS` in Settings threshold config --- ## [5.1.21] ### Added - `nagios_runner` improvements and alerts page fixes --- ## [5.1.20] ### Added - Generic threshold matching for `nagios_runner` with `{check_name}` display support ### Fixed - Reduce default hysteresis from 10% to 2% - Show recovery threshold in alerts UI --- ## [5.1.19] ### Added - Exclude ZFS ARC from `memory_percent` - Add `uptime_seconds` to `cpu_monitor` ### Fixed - Send boot/shutdown message on the first open connection, not blindly on the first in list --- ## [5.1.18] ### Added - Fetch-based Update/Delete buttons with toast notifications on Host Overview ### Fixed - Settings thresholds show correct per-config metrics; miscellaneous `hbc` fixes --- ## [5.1.17] ### Added - Owner Update/Delete buttons on Host Overview; purge stale alerts on reload - Retry `AsyncConnection.open()` indefinitely; drop IPv6 only on early startup failure - Alert pie chart in the nav bar ### Fixed - Make Alerts page scrollable --- ## [5.1.16] ### Added - Generic `ping_monitor` thresholds; round RTT to nearest ms --- ## [5.1.15] ### Added - Link hostnames in Live Dashboard to Host Overview - Threshold Configurations section on settings page ### Fixed - Suppress notifications on alert de-escalation (e.g. CRITICAL→WARNING) - Suppress recover messages for down durations under 4 seconds --- ## [5.1.14] ### Added - ZFS pool renderer in Host Overview --- ## [5.1.13] ### Added - ZFS monitor plugin - Host-level watch flag to suppress notifications - Filter Live Dashboard and Host Overview by owner/manager - Composable `threshold_config` list for per-host threshold layering - Restart on SIGHUP in `hbc` and `hbc_mini` ### Fixed - Mask `api_password` and `access_token` in settings page --- ## [5.1.12] Internal release — no user-visible changes. --- ## [5.1.11] ### Fixed - Install under Docker - Clean up install script --- ## [5.1.10] ### Fixed - Synchronize version in `hbc_mini` - Install script no longer overwrites itself --- ## [5.1.9] ### Added - Install `hbc_mini` via package or install script --- ## [5.1.8] ### Added - Track `hbc` type and version ### Fixed - Nav bar position --- ## [5.1.7] ### Added - `hbc_mini`: single-file heartbeat client ### Fixed - Drop dead connections on protocol error --- ## [5.1.6] ### Fixed - Simplify event log usage; fix argument handling --- ## [5.1.5] ### Added - Update `hbc` via `hb_install.sh` instead of code patching --- ## [5.1.4] ### Added - Redesign Plugin Metrics page as Host Overview --- ## [5.1.3] ### Added - Validate absolute command paths at `nagios_runner` init - Async subprocess in `nagios_runner` with stderr capture and signal handling - `skip_reason` field on `Plugin`; surface in `PluginLoader` init messaging ### Fixed - Use `shlex.split()` for `nagios_runner` path validation to handle quoted paths - Reconfigure logging to syslog after `daemonize()` --- ## [5.1.2] ### Fixed - Plugin config lookup shadowed by `CLIENT_DEFAULTS` plugins key - Apply grace period to all threshold alerts before logging/notifying - RECOVER routing: use consistent level name and route via alerted channel - Early reminder notifications and lost recovery notifications - Non-alerting of overdue hosts ### Added - Swiss clock widget in the UI --- ## [5.1.1] ### Added - SMS and Matrix notification channels - CLI commands `stop`, `restart`, and `reload` for `hbd` - WebSocket endpoint at `http://.../ws` - Mobile HTML pages ### Fixed - Profile not updating - Sortable columns in tables --- ## [5.1.0] ### Added - Ping monitor plugin - Persist state to pickle file; restart timers on server restart - SIGHUP config reload for `hbd` - Renotify on CRITICAL only; persistent user sessions - RTT count threshold ### Fixed - Bogus notification on new clients - Show "overdue" in alerts instead of null --- ## [5.0.12] ### Added - User management and settings page --- ## [5.0.10] ### Added - Publish package to Gitea PyPI registry --- ## [5.0.9] ### Added - Use `SO_TIMESTAMP` for RTT measurement (Linux, FreeBSD, macOS) - Persist state to pickle file; restart timers on restart --- ## [5.0.6] ### Added - Major codebase refactoring: restructured into client/server components - Per-client threshold configuration - Display and acknowledge alerts in the UI - Proper `hbc` termination; `hbd` config reloadable at runtime