diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..f667841 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,438 @@ +# 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