What's changed
Polish and UX improvements across the board — smarter link handling, a fully reworked dark/light
theme system, and a more expressive alert interaction model.
Highlights
Dynamic links from labels & annotations
The detail sheet now scans all alert labels and annotations for URL values and renders them as
clickable link buttons — no configuration needed. Works with runbook_url, dashboard, or any
custom label pointing to a URL.
Dark & light mode overhaul
Both themes received a full palette redesign: proper depth chains, consistent token usage,
theme-aware backgrounds for claimed rows, correct list view hierarchy, and no more hardcoded
dark colors leaking into light mode.
Changelog
Bug Fixes
- alerts: fall back to @receiver label when receivers array is empty
- frontend: replace emoji severity labels with CSS colored dots in card grid
- frontend: fix hardcoded dark colors and list view hierarchy in light mode
- frontend: redesign light mode color palette with proper depth chain
- frontend: remove blue card background for claimed alerts and fix expired silence banner color
- frontend: redesign dark mode color palette and theme consistency
- frontend: use theme-aware background for claimed rows in light mode
- frontend: replace 'First seen' with 'Last fired' using alert.startsAt
- frontend: consolidate multiple group silences into single button with count
- release: update release body to include changelog and container image verification
Features
- api: expose build version via GET /api/v1/info
- frontend: add info tooltips to settings panel
- frontend: add setting to disable Claim button snake animation
- frontend: add info tooltip to claim form and refine Claim button appearance
- frontend: animated snake border on unclaimed Claim button
- frontend: make Claim and Silence action buttons more prominent
- frontend: add dynamic link buttons from URL-valued labels/annotations
- frontend: show local timezone abbreviation next to all timestamps
- frontend: show version badge in Settings sheet
- history: track externally created silences and preserve createdBy in events
- screenshots: add feature screenshots Playwright spec and overhaul tooling
Container Image
docker pull ghcr.io/kj187/jarvis:1.1.0Verify with Cosign
cosign verify ghcr.io/kj187/jarvis@sha256:2a3d59d52fe88637db4ac37d50265cbbbf93390cff3a5f7ea9e5a10f29c0e841 \
--certificate-identity-regexp="https://github.com/kj187/jarvis/.*" \
--certificate-oidc-issuer="https://token.actions.githubusercontent.com"