• v0.1.0 adf8fed44f

    v0.1.0
    CI / test (pull_request) Successful in 1m49s
    CI / lint (pull_request) Successful in 1m17s
    CI / vulncheck (pull_request) Successful in 51s
    Release Binaries / release (push) Successful in 2m22s
    Release Docker / docker (push) Successful in 11m3s
    Stable

    lerko released this 2026-06-17 20:20:37 +00:00 | 0 commits to main since this release

    [v0.1.0] — 2026-06-17

    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
    • restructure site form to 2 type-aware pages

    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
    • drop body-grep Security grouping, map polish type in cliff
    • sync selectedID on click so refreshLive doesn't revert cursor
    • resolve 4 tag-blocking issues for v0.1.0
    Downloads