de51dde6e6
Replaces the stale CalVer changelog (last updated 2026-06-02, all referenced tags since deleted) with git-cliff output simulated against the v0.1.0 tag — matches what release-binaries.yml will publish as release notes.
180 lines
8.6 KiB
Markdown
180 lines
8.6 KiB
Markdown
# Changelog
|
|
|
|
## [v0.1.0] — 2026-06-12
|
|
|
|
### Added
|
|
|
|
- initial commit — uptime monitor (forked from go-upkeep)
|
|
- enhanced dashboard with lipgloss tables, huh forms, mouse support, and animations
|
|
- upgrade users tab with lipgloss table, edit support, role select
|
|
- upgrade alerts tab with lipgloss table, click zones, colored types
|
|
- widen Site struct and DB schema for ping, port, dns, group monitor types
|
|
- add ping, port, and DNS check routines
|
|
- add ntfy notification provider with TUI support
|
|
- add Uptime Kuma backup converter with CLI and API
|
|
- add mouse wheel scrolling for all tabs
|
|
- add per-site pause, fix viewport, polish status page
|
|
- add monitor groups with collapse/expand and tree view
|
|
- add Telegram, PagerDuty, Pushover, Gotify providers
|
|
- add Prometheus /metrics endpoint
|
|
- expose HTTP method and accepted status codes in monitor form
|
|
- add config-as-code YAML import/export
|
|
- add distributed probing foundation — schema, models, and probe APIs
|
|
- add probe execution mode, check extraction, and result aggregation
|
|
- add region affinity, Nodes TUI tab, and probe metrics
|
|
- add status bar, tab badges, and detail panel
|
|
- bordered modals, welcome state, and dynamic name width
|
|
- DOWN-first sort, health pulse, and site filter
|
|
- split available width evenly between NAME and HISTORY columns
|
|
- add type icons to sites table
|
|
- persist logs to DB, load on startup
|
|
- add incident management and maintenance windows
|
|
- zebra striping, detail breadcrumb, sparkline stats, collapse persistence
|
|
- add --version flag with build metadata injection
|
|
- add theme system with 4 curated palettes
|
|
- swap light theme for Tokyo Night and Gruvbox
|
|
- seed SSH users from env var and authorized_keys file (#31)
|
|
- show error reason when monitors go DOWN
|
|
- proper push monitor lifecycle — PENDING, LATE, DOWN states
|
|
- logs tab overhaul — severity tags, filtering, recovery durations
|
|
- alert channel health indicator + test alerts
|
|
- add GitHub release relay workflow
|
|
- classify error reasons on DOWN monitors
|
|
- add state change history view with outage duration
|
|
- add Opsgenie provider
|
|
- add STALE state for push monitors
|
|
- add SLA reporting view
|
|
- overhaul latency sparkline scaling, color, and layout
|
|
- auto-prune expired maintenance windows
|
|
- click-to-inspect sparkline tooltips in detail view
|
|
|
|
### Changed
|
|
|
|
- replace database ID column with row counter
|
|
- unify SQLite and Postgres into dialect-based SQLStore
|
|
- add error returns to all Store interface methods
|
|
- remove store global singleton, thread store explicitly
|
|
- extract shared HTTPProvider for webhook-based alerts
|
|
- extract shared table rendering, fix cursor bounds
|
|
- encapsulate engine state, add graceful shutdown and tests
|
|
- split release pipeline, add nfpm/homebrew/git-cliff
|
|
- decompose god files into single-concern modules
|
|
- consistent chrome across all views
|
|
- status icons, clean STATUS column, relative time
|
|
- extract magic numbers into named constants
|
|
- check all discarded errors in sqlstore_test.go
|
|
- overhaul tab bar — consistent counts, active highlight, colored alerts
|
|
- responsive column hiding — 3-tier priority-based layout
|
|
- swap mattn/go-sqlite3 for modernc.org/sqlite
|
|
- propagate context.Context through all Store methods
|
|
- typed Status constants with IsBroken() predicate
|
|
- schema_version migration table + DeleteAlert FK fix
|
|
- shared storetest.BaseMock replaces 5 duplicated mocks
|
|
- consolidate env parsing into appConfig struct
|
|
- extract Server type with named handler methods
|
|
- split Site into SiteConfig + SiteState
|
|
- unify logging with log/slog
|
|
|
|
### Fixed
|
|
|
|
- forward all msg types to huh forms, improve row selection UX
|
|
- harden TLS, timeouts, validation, logging, and token generation
|
|
- add delete confirm, input validation, XSS fix, history persistence
|
|
- correctness and robustness fixes across all subsystems
|
|
- make status bar and tab badges visible
|
|
- use stable sort to prevent site list shuffling each tick
|
|
- sort children by ID before status to prevent map-order shuffling
|
|
- sparkline now spans full column width
|
|
- sparkline right-aligned — current time at right edge, dots fill left
|
|
- increase history buffer to 60 so sparkline fills completely
|
|
- compute uptime from windowed statuses, not running counters
|
|
- seed status and latency from DB history on startup
|
|
- strip push tokens from /status/json response
|
|
- correct viewport sizing and dynamic chrome calculation
|
|
- constrain form height to terminal and forward resize events
|
|
- skip children in maintenance when computing group status
|
|
- exclude maintenance'd monitors from down count and pulse
|
|
- group selection highlight, layout constants, group history graphs
|
|
- stable monitor count and universal group icons
|
|
- replace panic with error return, handle unmarshal errors
|
|
- add context to Provider.Send, log alert failures
|
|
- constant-time secret comparison, request size limits
|
|
- graceful shutdown for HTTP, SSH servers and database
|
|
- add jitter to check intervals and stagger startup
|
|
- use sh instead of bash for runner compatibility
|
|
- enable CGO for race detector, use lint-action v7
|
|
- install gcc for race detector support
|
|
- skip irrelevant field validation by monitor type
|
|
- guard max retries validator for group type
|
|
- tighten zebra row contrast for Tokyo Night and Gruvbox
|
|
- phase 1 critical fixes for public release
|
|
- phase 2 high-severity hardening
|
|
- phase 3 medium reliability and hardening
|
|
- phase 4 code quality and low-severity fixes
|
|
- rename GITEA_TOKEN to RELEASE_TOKEN
|
|
- remove explicit container, use sh shell
|
|
- bump golang.org/x/crypto v0.47.0 → v0.52.0
|
|
- install git and gcc for GoReleaser in release pipeline
|
|
- use internal Gitea URL for GoReleaser API calls
|
|
- use docker-builder runner for Docker image builds
|
|
- patch Docker Scout CVEs and remove unused openssh-client (#41)
|
|
- non-root user, supply chain attestations, build cleanup
|
|
- move SSH host key path into /data for non-root user
|
|
- create .ssh dir explicitly, ensure entrypoint is executable
|
|
- resolve git-cliff download URL dynamically
|
|
- extract git-cliff to /tmp to avoid dirty worktree
|
|
- make Grype CVE scan non-blocking for known wish vuln
|
|
- bump Go 1.26.3 → 1.26.4
|
|
- remove error truncation from detail panel
|
|
- classify safedial "failed to connect" as TCP
|
|
- resolve staticcheck lint errors in history view
|
|
- trigger immediate recheck after site config edit
|
|
- broken tick chain after form/dialog + retries off-by-one
|
|
- wire up [e] edit key in detail panel
|
|
- show push token and URL in detail panel
|
|
- show correct push heartbeat curl command in detail panel
|
|
- propagate STALE/LATE child status to group
|
|
- quick wins batch — version footer, column widths, zebra, sparkline
|
|
- logs tab use viewport for scrollable content
|
|
- pin footer to bottom of terminal
|
|
- normalize content whitespace for consistent footer position
|
|
- clip overflowing content to keep footer pinned
|
|
- remove extra blank lines above footer
|
|
- expand log viewport to fill content area
|
|
- log STALE recovery in push heartbeat handler
|
|
- check fmt.Sscanf return value (errcheck lint)
|
|
- inject time into ComputeDailyBreakdown for testability
|
|
- cascade delete related rows when removing a site
|
|
- merge check results into live state, never overwrite
|
|
- serialize DB writes through a single drained writer
|
|
- close XFF bypass and three secret-leak paths
|
|
- move blocking DB IO out of Update/View into tea.Cmds
|
|
- move theme styles onto the Model to end cross-session races
|
|
- finish moving keypress DB reads into tea.Cmds
|
|
- move all store writes out of Update into tea.Cmds
|
|
- mask alert secrets in the TUI detail panel and table
|
|
- serve /status/json through a public DTO
|
|
- make SSH key revocation fail closed
|
|
- six correctness fixes for the state machine
|
|
- migrate Postgres timestamps to TIMESTAMPTZ
|
|
- seven quick-win bug fixes across engine, server, TUI, CLI
|
|
- SSRF guard gaps + DNS port restriction + metrics auth
|
|
- track selection by site ID + q means back everywhere
|
|
- apply convergence + push/group check history
|
|
- Kuma import tokens/paused, Docker hardening, migrate-secrets idempotency
|
|
- six small fixes — rate limiter leak, DST SLA, probe sort, TUI cleanup
|
|
- seven fixes — token scan, variadic cleanup, TUI layout, compose secrets
|
|
- chmod SQLite DB files to 0600 on open
|
|
- close DNS-rebind TOCTOU on ping/port checks
|
|
- API import no longer replaces user accounts
|
|
- email send respects context deadline
|
|
- rename X-Upkeep-Secret header to X-Uptop-Secret
|
|
- apply log filter to full log list, not viewport window
|
|
- repair pipeline defects found in v0.1.0-rc.1 rehearsal
|
|
- suppress wish GHSA alias in grype, fold rc tags into launch notes
|
|
- scan gates docker push, rc tags spare :latest, mirror waits for stable assets
|
|
- remove tagged scan image in cleanup step
|
|
- exclude rc tags from cliff tag_pattern so launch notes span full history
|
|
- fall back to embedded build info when ldflags absent
|
|
|