Standalone endpoint monitors (discussion #6)
Endpoints can now be created directly from the UI, without requiring Docker/K8s labels. Click "New Endpoint" on the Endpoints page to monitor any HTTP or HTTPS URL or TCP host:port.
- Name, target URL, type (HTTP/TCP), and check interval are configurable
- HTTPS targets offer a "Monitor TLS certificate" checkbox that creates a certificate monitor alongside the endpoint
- Standalone endpoints appear in the same grid as auto-discovered ones, with a delete button in the card footer
- Full API support:
POST /api/v1/endpoints,PUT /api/v1/endpoints/{id},DELETE /api/v1/endpoints/{id}
Digest baseline tracking for non-semver tags (discussion #7)
Images using channel tags (lts, alpine, stable, latest) are no longer incorrectly flagged as having a semver update available. Maintenant now tracks remote digests for these tags and detects actual image rebuilds by comparing against stored baselines, instead of suggesting a switch to the latest semver tag.
UI consistency & ConfirmDialog
- Replaced all native browser
confirm()dialogs with a custom ConfirmDialog component — dark-themed, accessible (role="alertdialog"), keyboard-navigable (Escape to cancel), with destructive action styling - Unified delete button placement across all cards (endpoints, certificates, heartbeats) — always right-aligned in a dedicated actions section
- Applied to all 9 components that had delete/cancel actions: cards, channel manager, silence rules, status page managers, webhooks
PWA cache isolation
- Runtime caches are now versioned per build — each deployment gets unique cache names, preventing stale assets from persisting across updates
sw.js,registerSW.js, andmanifest.webmanifestare served withno-cacheheaders so browsers always fetch the latest service worker- SPA shell (
index.html) also served without caching to ensure immediate pickup of new builds