CHANGELOG.md
Rama main · réplica de lectura del repositorio original.
# Changelog
All notable changes to Observer Lite are documented in this file.
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
Observer Lite uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
---
## [Unreleased]
### Added
- Initial public release of Observer Lite
- HTTP/HEAD/POST monitor types with flexible status code DSL (`2xx`, `!5xx`, `200|404`)
- Response body matching: `contains`, `equals`, `not_equals`
- Response time warning threshold per monitor
- Configurable retry before alerting (`retry_count` + `retry_interval_seconds`)
- Ping (ICMP) monitor type via system `ping` binary
- SSL certificate validity and expiry monitoring
- Heartbeat (push-based) monitor type with grace period
- Maintenance windows with optional cron recurrence
- APScheduler-backed job scheduler persisted to SQLite (survives container restarts)
- Incident state machine: open on N consecutive failures, close on recovery
- Recovery notifications with downtime duration
- Email notifications via async SMTP (aiosmtplib)
- Telegram notifications via Bot API
- Per-monitor notification channel assignment (`on_down`, `on_recovery`, `on_ssl_warn` flags)
- Multi-user system with roles: `superadmin`, `admin`, `viewer`
- Per-monitor user assignment with individual alert opt-in
- Monitor groups for organisational grouping
- API keys with prefix `obs_`, SHA-256 stored, optional expiry
- Audit log for all write operations
- Admin-configurable data retention (default 90 days), enforced by a nightly cleanup job
- Daily SSL expiry scan job
- Server-Sent Events (SSE) real-time dashboard updates
- JSON import/export for monitor configurations
- Stats API: uptime %, average response time, total incidents (configurable time window)
- 90-day uptime bar visualisation
- Response time chart (uPlot, ~40 KB)
- Dark-mode Vue 3 frontend (Tailwind CSS, no CDN dependencies)
- Single Docker image: multi-stage build, embedded SQLite, `VOLUME ["/data"]`
- Forced password change for the default `admin` account on first login
- `slowapi` rate limiting on login (5/min/IP) and heartbeat (1/10 s/token)
- SMTP and Telegram credentials encrypted at rest (Fernet / AES-128-CBC)
- SECURITY.md, CONTRIBUTING.md, and this CHANGELOG
---
## [0.2.3] — 2026-09-27
### Fixed
- Treat timestamps read from SQLite as UTC so a heartbeat monitor can be marked down after the grace period, and incident duration is recorded when a monitor recovers.
## [0.2.2] — 2026-09-27
### Security
- Scope monitor list and detail reads so viewers only see monitors they created or are assigned to. Unassigned monitors return not found.
- Omit `heartbeat_token` from monitor responses unless the caller is an admin or the monitor creator. Reported by zeroninetoo.
- Serve built frontend files from a fixed map so a request path cannot leave the static directory.
- Replace `python-jose` with PyJWT and raise locked dependencies past the open Dependabot advisories.
## [0.2.0] — 2026-05-06
### Added
- Feature: Added multi-select monitor assignment on Group creation/edit form.
- Feature: Added silent notification configuration option for Telegram channels.
### Fixed
- Bugfix: Allow clearing optional fields (like Response Body Match) on Monitor edit.
## [0.1.0] — 2026-05-05
Initial release. See [Unreleased] for the full feature list — all items above ship in 0.1.0.
[Unreleased]: https://github.com/cagatayuresin/observer-lite/compare/v0.2.3...HEAD
[0.2.3]: https://github.com/cagatayuresin/observer-lite/compare/v0.2.2...v0.2.3
[0.2.2]: https://github.com/cagatayuresin/observer-lite/compare/v0.2.0...v0.2.2
[0.2.0]: https://github.com/cagatayuresin/observer-lite/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/cagatayuresin/observer-lite/releases/tag/v0.1.0