v1.12.0 (2026-09-15)
Breaking Changes
No breaking changes.
Bug Fixes
- claims: patch every pod's AlertStore on claim fanout, not just the origin (#183)
- config: fail fast when auth.provider lacks its secret material (#193)
- db: bound RecordStatusChange/RecordResolvedForCluster transactions (#200)
- db: increment occurrence_count without a cluster_name filter (#199)
- db: make RecordResolvedForCluster transactional and advisory-locked (#198)
- db: carry annotations over into resolved event rows (#197)
- db: break recorded_at ties on id in getLastEventForClusterOn (#196)
- db: serialize PostgreSQL schema migrations with an advisory lock (#195)
- db: reject SQLite with multiple replicas regardless of persistence.enabled (#194)
- db: render chart Secret independently for DSN and auth key (#192)
Chores
- config: make the AI agent context tool-agnostic (#210)
- deps: bump the minor-patch group across 1 directory with 11 updates (#204)
- deps: bump the codeql-action group across 1 directory with 4 updates (#205)
- deps: bump github.com/jackc/pgx/v5 in /backend (#190)
- deps: bump golang.org/x/crypto from 0.56.0 to 0.57.0 in /backend (#203)
- deps: bump the minor-patch group in /frontend with 3 updates (#185)
- release: explicit breaking changes, Helm chart changelog, image-first chart publishing (#209)
Documentation
- require closing keyword in PRs that resolve an issue (#207)
- agents: slim AGENTS.md, move PR workflow into a skill (#211)
- release: forbid hard-wrapping release-notes prose (#184)
Features
- alerts: toolbar Grouped control, compact status buttons, doc screenshot refresh (#188)
- alerts: multi-column card grid, recency sort, columns setting (#187)
- config: add server-side persistence for user settings (#202)
- frontend: saved filters menu, Alertmanager-style ?filter= URL syntax (#208)
- frontend: redesign label display to Pin & Hide, persist settings URL state (#206)
- frontend: header redesign, claim UX, and detail-panel polish (#186)
Tests
- alerts: expand fixture script with label-heavy test alerts (#201)
v1.11.0 (2026-09-09)
Breaking Changes
No breaking changes.
Bug Fixes
- alerts: return alert snapshot in a deterministic order (#170)
- claims: re-hydrate active claims on follower snapshot rebuild (#176)
- db: isolate leader advisory lock per test, acquire it immediately (#181)
Chores
- deps: bump pnpm/action-setup from 6.0.10 to 6.1.0 (#175)
- deps: bump golang.org/x/time from 0.15.0 to 0.16.0 in /backend (#172)
- deps: bump golang.org/x/oauth2 from 0.36.0 to 0.37.0 in /backend (#173)
- deps: upgrade Go toolchain to 1.26, bump golang.org/x/crypto to v0.56.0 (#171)
- deps: bump the minor-patch group in /frontend with 5 updates (#165)
- deps: bump anchore/sbom-action/download-syft (#169)
- deps: bump docker/setup-qemu-action from 4.2.0 to 4.3.0 (#168)
- deps: bump docker/setup-buildx-action from 4.2.0 to 4.3.0 (#167)
- deps: bump the codeql-action group with 4 updates (#166)
- deps: bump github.com/coreos/go-oidc/v3 in /backend (#164)
- deps-dev: bump @playwright/test from 1.62.1 to 1.63.0 in /frontend in the minor-patch group (#174)
- release: prepare v1.11.0
Documentation
- regenerate settings-panel screenshot for the new colophon (#180)
Features
- frontend: add brand colophon to settings, narrow the sheet (#179)
- silences: redesign card (lifetime bar) and list (dense rows) (#178)
- silences: show creation time, fix Created sort, add direction toggle & "by" filter (#177)
v1.10.1 (2026-09-05)
Breaking Changes
No breaking changes.
Chores
- deps: bump modernc.org/sqlite from 1.56.0 to 1.58.0 in /backend (#158)
- deps: bump the minor-patch group across 1 directory with 16 updates (#157)
- deps: bump ossf/scorecard-action from 2.4.3 to 2.4.4 (#147)
- deps: bump docker/login-action from 4.5.0 to 4.6.0 (#149)
- deps: bump golang.org/x/crypto from 0.54.0 to 0.55.0 in /backend (#144)
- deps: bump actions/attest-build-provenance from 4.1.1 to 4.2.2 (#146)
- deps: bump the codeql-action group with 4 updates (#145)
- deps: bump pnpm/action-setup from 6.0.9 to 6.0.10 (#150)
- release: prepare v1.10.1
Documentation
- readme: center header logo and drop inline copyright line (#161)
v1.10.0 (2026-09-05)
Breaking Changes
No breaking changes.
Chores
- release: prepare v1.10.0
Features
- frontend: add logo and favicon assets (#159)
v1.9.3 (2026-08-17)
Breaking Changes
No breaking changes.
Chores
- deps: bump github.com/prometheus/client_golang in /backend (#135)
- deps: bump modernc.org/sqlite from 1.53.0 to 1.56.0 in /backend (#139)
- deps: bump actions/setup-node from 6.4.0 to 7.0.0 (#114)
- deps: bump actions/setup-go from 6.5.0 to 7.0.0 (#124)
- deps: bump the codeql-action group across 1 directory with 4 updates (#123)
- deps: bump actions/checkout from 7.0.0 to 7.0.1 (#129)
- deps: bump the minor-patch group across 1 directory with 22 updates (#141)
- deps: bump docker/login-action from 4.4.0 to 4.5.0 (#134)
- release: prepare v1.9.3
v1.9.2 (2026-07-17)
Breaking Changes
No breaking changes.
Bug Fixes
- config: add codecov.yml with thresholds to stop flaky coverage checks (#127)
- db: stop self-healing PostgreSQL reconnects and transient AM 503s from paging (#126)
Chores
- release: prepare v1.9.2
v1.9.1 (2026-07-16)
Breaking Changes
No breaking changes.
Bug Fixes
- db: cap PostgreSQL connection pool to stop RDS slot exhaustion (#120)
Chores
- release: prepare v1.9.1
Features
- frontend: explain refresh in tooltip incl. backend poll interval (#119)
v1.9.0 (2026-07-15)
Breaking Changes
No breaking changes.
Bug Fixes
- db: make RecordStatusChange transactional and lock-guarded (#108)
- frontend: hide @claimed-by pseudo-label from label chips (#107)
Chores
- release: prepare v1.9.0
Documentation
- canonical persistence guide + doc consolidation (D8) (#116)
Features
- alerts: leader-only polling + PostgreSQL snapshot distribution (#110)
- config: ServiceMonitor relabelings, annotations, honorLabels (#117)
- config: Helm chart HA deployment surface (PDB, topology spread) (#113)
- config: leader pod label via Kubernetes API PATCH (no client-go) (#112)
- config: PostgreSQL leader election + leader-gated history writes (#109)
- ws: cross-pod mutation fanout via PostgreSQL LISTEN/NOTIFY (#111)
v1.8.0 (2026-07-13)
Breaking Changes
No breaking changes.
Bug Fixes
- alerts: bucket heatmap by recorded_at instead of starts_at
- alerts: make alert detail panel responsive on narrow viewports
- api: 20-min resolved-alert removal timer no longer deletes re-fired alerts
- config: bump codeql-action init/autobuild/analyze together to v4.37.0 (#105)
- db: scale grace period with JARVIS_POLL_INTERVAL
- db: reconcile alerts resolved during a Jarvis restart
- db: keep last-known-good alert snapshot on cluster fetch failure
- db: dedupe firing episodes in GetFiringStarts by starts_at
Chores
- deps: bump github.com/coreos/go-oidc/v3 in /backend (#90)
- deps: bump docker/build-push-action from 7.2.0 to 7.3.0 (#93)
- deps: bump golang.org/x/crypto from 0.53.0 to 0.54.0 in /backend (#92)
- deps: bump github/codeql-action/upload-sarif (#89)
- release: prepare v1.8.0
Documentation
- alerts: regenerate screenshots and rewrite detail-panel docs for tabbed layout (#100)
- alerts: add full alert-lifecycle reference, fix stale 60s grace-period mentions
Features
- alertmanager: identify HTTP client as Jarvis via User-Agent
- alerts: navigate between group siblings from the detail panel (#103)
- alerts: add @age and @claimed-by advanced filter expressions (#102)
- alerts: add Related tab to detail panel (#101)
- alerts: rework comments and alert detail panel layout
- db: add optional data-retention sweeper (#104)
Security
- api: require auth on /ws websocket upgrade in full_protect mode (#98)
v1.7.0 (2026-07-09)
Breaking Changes
No breaking changes.
Chores
- release: prepare v1.7.0
Features
- alerts: add alerts overview modal with top-label breakdown (#87)
v1.7.0-rc.1 (2026-07-08)
Breaking Changes
No breaking changes.
Bug Fixes
- alerts: redesign Fast-Silence menu, aligned submenu icon (#79)
- backend: silence staticcheck SA5011 false positive in registry_test (#85)
- silences: use shared fallback refetch interval for cluster health (#82)
- silences: eliminate per-client Alertmanager load (#80)
- silences: edit real regex matchers as raw text instead of corrupting them (#70)
- silences: fix group Fast-Silence scope and reach 100% coverage (#69)
- silences: validate matchers server-side and relay AM rejections (#68)
- silences: match Alertmanager's anchored-regex semantics exactly (#67)
- ws: register clients synchronously to stop losing events after connect
Chores
- deps: bump docker/metadata-action from 6.1.0 to 6.2.0 (#75)
- deps: bump anchore/sbom-action/download-syft from 0.9.0 to 0.24.0 (#76)
- deps: bump docker/setup-buildx-action from 4.1.0 to 4.2.0 (#74)
- deps: bump docker/setup-qemu-action from 4.1.0 to 4.2.0 (#73)
- deps: bump docker/login-action from 4.2.0 to 4.4.0 (#72)
Documentation
- add Mermaid diagrams for lifecycle, OIDC login, and E2E stack (#81)
- make PR-only git workflow explicit with interactive gates for AI agents (#60)
- define project scope, add scope gate and issue-triage command (#58)
Features
- alerts: firing-pattern heatmap for card + detail view (#84)
- alerts: add group Fast-Silence and persistent bell action rail (#61)
- alerts: support Alertmanager HA gossip clusters with fingerprint dedup (#59)
- release: support pre-release (RC) tags in release workflow (#86)
Tests
- silences: add differential E2E specs against real Alertmanager (#71)
v1.6.0 (2026-07-04)
Breaking Changes
No breaking changes.
Bug Fixes
- api: add cluster label to alert events, add per-cluster fetch duration
- db: report event creation from RecordStatusChange, fix event metric drift
- docker: generate release SBOM via syft directly, sync release docs
- docker: chart-release guard and cosign auth
Chores
- decouple Helm chart versioning, publish and sign via own workflow
- enforce DCO sign-off on all commits via CI check
- update maintainer in Chart.yaml
- add OpenSSF Scorecard workflow
- fail release job instead of overwriting existing release
- harden workflows, move chart publishing out of release.yml
- ci: replace unpinned pnpm npm-install with SHA-pinned pnpm/action-setup
- deps: bump the minor-patch group across 1 directory with 9 updates (#52)
- deps: bump azure/setup-helm from 4.3.1 to 5.0.1 (#45)
- deps: bump actions/checkout from 6.0.3 to 7.0.0 (#42)
- deps: bump actions/setup-go from 6.4.0 to 6.5.0 (#46)
- deps: bump golangci/golangci-lint-action from 9.2.1 to 9.3.0 (#47)
- deps: bump gitleaks/gitleaks-action from 2.3.9 to 3.0.0 (#43)
- deps-dev: bump eslint from 9.39.4 to 10.6.0 in /frontend (#50)
- deps-dev: bump @types/node from 25.9.3 to 26.0.1 in /frontend (#49)
- deps-dev: bump jscpd from 4.2.5 to 5.0.11 in /frontend (#51)
- release: prepare v1.6.0
- security: consolidate gosec into golangci-lint, move govulncheck to CI-only
Documentation
- document PR-only main branch workflow
- add maintainers list and coordinated vulnerability disclosure policy
- add OpenSSF Baseline badge to README
- document the prometheus metrics endpoint
- add known gaps in E2E test coverage for future cycles
- migrate issue templates to YAML issue forms
- add code of conduct and PR process, fix README
- replace LICENSE with canonical Apache-2.0 text, add NOTICE
- add lessons.md and enforce doc-sync via PR checklist
- restructure AI agent context into AI-agnostic AGENTS.md/.agents structure
- readme: reorganize badges into header and tech stack sections
- security: make CVD timeframes best-effort and add private reporting
Features
- api: instrument HTTP requests with prometheus middleware
- api: instrument poll cycle, error, duration and event metrics
- api: add prometheus metrics endpoint skeleton
- docker: add ServiceMonitor and prometheus.io annotations for /metrics
- frontend: wire up ESLint flat config as lint gate (#53)
- release: fully automate /release flow with attestation and SBOM
Tests
- add Go native fuzz targets for parser functions
- e2e: fix B5 spec for expand/collapse card UX
v1.5.3 (2026-06-30)
Breaking Changes
No breaking changes.
Bug Fixes
- update Alertmanager, Grafana, and Prometheus URLs to use localhost for local testing
- alerts: persist only unlocked label matchers to URL to prevent duplicates
- api: log underlying alertmanager error on silence create/delete
- silences: strip backslashes from regex matchers on silence recreate
Documentation
- update CHANGELOG and README for v1.5.3
Tests
- silences: add fixtures to reproduce silence recreate escaping
v1.5.2 (2026-06-29)
Breaking Changes
No breaking changes.
Bug Fixes
- claims: increase claimReleaseDelay from 65 s to 20 min
Documentation
- update CHANGELOG and README for v1.5.2
Features
- frontend: collapse/expand AlertCard body and show claimed count badge
- frontend: replace pagination with expand/collapse in grouped alert cards
v1.5.1 (2026-06-29)
Breaking Changes
No breaking changes.
Bug Fixes
- silences: skip @receiver pseudo-label when filtering silences
Documentation
- update CHANGELOG and README for v1.5.1
v1.5.0 (2026-06-26)
Breaking Changes
No breaking changes.
Bug Fixes
- alerts: keep silence result visible after creating from a card
- alerts: scope history, claims, and comments by cluster
- claims: scope claims by cluster to prevent cross-cluster claim bleed
- docker: relabel gitleaks config mount for SELinux
- e2e: fix two screenshot spec selectors
- e2e: use e2e cluster for all silences in screenshot spec
- e2e: fix auth-login-page and auth-admin-panel screenshot specs
- e2e: remove ensureInternalAdmin from auth-login-page to avoid /setup rate limit
- e2e: fix auth-login-page firstRunRedirect and add 429 retry to ensureInternalAdmin
- e2e: stabilize CI image build for pnpm
- e2e: correct SSO button label in auth-login-oidc screenshot spec
- e2e: use alert-group-row testid to expand list view groups in screenshot spec
- frontend: remove creator name setting
- frontend: polish alert detail panel display
- frontend: improve claim badge in alert detail header
- frontend: restore Server icon on cluster chip in alert detail
- frontend: restore animated snake border on Claim button in alert detail
- frontend: simplify resolved list severity display
- frontend: use explicit Tailwind classes for link color in linkUtils
- frontend: widen empty matcher filter inputs
- frontend: stabilize detail prompt caching
- frontend: align nav tab labels and lower their vertical position
- frontend: restore active tab view mode after switching tabs
- silences: align card sections and compact list view
- silences: show add-filter control on Silences page
Chores
- deps: bump github.com/coreos/go-oidc/v3 in /backend
- deps: bump modernc.org/sqlite from 1.52.0 to 1.53.0 in /backend
- deps: bump github.com/labstack/echo/v4 in /backend
- deps: bump actions/setup-node from 4.4.0 to 6.4.0
- deps: bump docker/login-action from 3.7.0 to 4.2.0
- deps: bump docker/metadata-action from 5.10.0 to 6.1.0
- deps: bump actions/upload-artifact from 4.6.2 to 7.0.1
- deps: bump actions/checkout from 4.3.1 to 6.0.3
- deps-dev: bump @vitejs/plugin-react in /frontend
- docker: move Containerfile.dev to repo root, rename dev-dependencies compose
Code Refactoring
- frontend: split alert detail history sections
- frontend: extract filter controls into chip-based MatcherChipsBar
- frontend: move filter and search controls out of Header into pages
Documentation
- update CHANGELOG and README for v1.5.0
- refresh README, CONTRIBUTING, testing docs, and screenshots
- extract feature documentation to docs/features.md
- assets: refresh screenshots after spec and selector fixes
- assets: fix screenshots that previously showed empty/broken state
- assets: add screenshots for fullscreen and dark/light theme
- commands: align command docs with current test, release and config setup
- helm: clarify PostgreSQL recommendation for Kubernetes
Features
- alerts: simplify affected-alerts display and open detail on click
- alerts: replace No alerts text with large empty-state icon
- alerts: show last-fired time in detail header
- claims: let claim owner edit note with immutable history
- docker: add healthcheck for backend service and ensure frontend waits for backend readiness
- docs: add Dark/Light Theme comparison and Fullscreen section
- e2e: add backend test fixtures for silences, comments, claims, templates
- frontend: add grouped toggle for card and list alerts
- frontend: add configurable alert grouping controls
- frontend: add UI store nav state and shared silence-count logic
- frontend: add suppressed alerts mode toggle
- frontend: make sheet dialogs accessible
- frontend: improve login and authenticated user icons
- frontend: add Silences page grouping, list view and fullscreen
- frontend: show login modal on all write actions when unauthenticated
- silences: add search functionality and fullscreen toggle to SilencesPage
- silences: show expired silence info box in card view
- silences: improve silence cards with re-create, label colors and duration formatting
- silences: make matcher and label chips truncatable
- testing: add E2E testing with Playwright and isolated Podman stack
Performance Improvements
- alerts: paginate detail timeline on server
- poll: reuse connections, batch claim lookups, dedup broadcasts
Tests
- api: broadcast claim over WS in e2e test endpoint
- api: relax poll rate limit in e2e builds
- e2e: align screenshot specs with docs image references
- e2e: fix alerts-views specs B4/B5/B9
- e2e: extend silences and search functional coverage
- e2e: cover silence actions and stabilize C11 filters
- e2e: add silences functional specs for page and templates
- e2e: add E2E specs for alerts views, detail panel, and filters
- e2e: fix screenshot specs and update docs for current UI
- e2e: add rich README hero screenshot spec in oidc mode
- e2e: add new spec files for extended functional coverage
- e2e: add Group 3 auth screenshot specs (login page, user menu, admin panel)
- e2e: fix detail-panel specs D2/D5/D9/D10
- e2e: cover silence expiry and recreate flows
- e2e: fix filters specs C10/C11
- e2e: harden silences page and complete F1 close flows
- e2e: fix flaky timing and extend write_protect coverage in existing specs
- frontend: add data-testid attributes for E2E selectors
- frontend: remove unit-test stack in favor of functional e2e
- silences: align SilenceCard and App tests with current behavior
v1.4.0 (2026-06-22)
Breaking Changes
No breaking changes.
Bug Fixes
- api: log 4xx as WARN, 5xx as ERROR in request middleware
- auth: improve hydrate resilience on slow backend startup
- frontend: ensure CI environment variable is set in docker-compose
- frontend: make silence calendar month arrows clickable
Chores
- dev: improve docker-compose for file watching with polling support
- git: ignore build artifacts and npm lock file
Documentation
- update CHANGELOG and README for v1.4.0
- frontend: add silence templates docs, screenshots, and fix test suite
Features
- alerts: store and filter all receivers in alert history
- api: add REST endpoints for silence template management (CRUD)
- auth: map OIDC claim value to admin role
- config: add per-cluster Alertmanager upstream authentication
- frontend: add silence template management UI with tab interface
- frontend: add React Query hooks for silence templates
- frontend: add silence template types and API client
- frontend: show local timezone below silence time inputs
- silences: implement silence template CRUD store operations
- silences: add silence template data model and database schema
v1.3.1 (2026-06-19)
Breaking Changes
No breaking changes.
Bug Fixes
- helm: use Recreate update strategy when SQLite PVC enabled
Documentation
- update CHANGELOG and README for v1.3.1
Features
- helm: reject SQLite PVC with multiple replicas at deploy time
v1.3.0 (2026-06-19)
Breaking Changes
No breaking changes.
Bug Fixes
- alerts: correct "Last fired" when Alertmanager corrupts startsAt
- db: handle NULL annotations column in resolved alert scans
- docker: use BUILDPLATFORM for frontend/backend stages to avoid QEMU hang
- frontend: improve cluster badge styling in AlertDetailPanel
- frontend: use getFilterableLabels in Header for filter dropdown
- screenshots: correct localStorage key for view mode in Playwright spec
- scripts: keep test alerts alive until manually resolved
- silences: make affected alerts count larger in matcher badge
- silences: filter cluster labels from matcher suggestions, improve zero-match warning
- silences: show affected alerts panel between badge and matcher rows
- silences: default to all clusters selected, improve cluster chip affordance
- silences: remove redundant 'Click to toggle' hint from cluster section
- silences: expire old silence when Alertmanager returns a new ID
- silences: cluster chips always toggleable, spinner wrap-carry, smaller font
- silences: pass all available clusters to SilenceForm from AlertDetailPanel
Code Refactoring
- silences: revert grouped badge, move affected panel above matchers
Documentation
- update CHANGELOG and README for v1.3.0
- update README for silence form overhaul and AI Prompt feature
Features
- config: add JARVIS_LOG_REQUESTS flag, default off
- frontend: show silence extend buttons for all active silences
- silences: add expire confirmation modal for all silence views
- silences: improve matcher UX with inline affected alert preview
- silences: standardize sheet width and improve silence section layout
v1.2.0 (2026-06-18)
Breaking Changes
No breaking changes.
Documentation
- update CHANGELOG and README for v1.2.0
Features
- helm: add extraEnv, extraVolumes, extraVolumeMounts and projected SA token support
v1.1.0 (2026-06-18)
Breaking Changes
No breaking changes.
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
Documentation
- update CHANGELOG and README for v1.1.0
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
v1.0.5 (2026-06-16)
Breaking Changes
No breaking changes.
Bug Fixes
- silences: group silence recreate prefills wrong cluster and matchers
Documentation
- update CHANGELOG and README for v1.0.5
v1.0.4 (2026-06-16)
Breaking Changes
No breaking changes.
Documentation
- update CHANGELOG and README for v1.0.4
Features
- alerts: inline time/silence metadata, extract link rendering to lib, fix severity header contrast
Tests
- alerts: extend fire/resolve scripts with error severity alerts
Reverts
- ci(docker): drop arm64 build — QEMU SIGILL crash on pnpm install
v1.0.3 (2026-06-16)
Breaking Changes
No breaking changes.
Bug Fixes
- alerts: align action buttons with badge row using pr-8
- header: prevent cluster popover from closing on mouse gap
Documentation
- update CHANGELOG and README for v1.0.3
Features
- alerts: relocate link buttons to summary section and fix runbook URL resolution
- alerts: improve detail sheet header and link handling
- alerts: add error severity level between critical and warning
- alerts: inject @receiver into alert labels on fetch
- config: expose RunbookBaseURL via /auth/info endpoint
- header: improve cluster instance popover
Tests
- scripts: extend fire-test-alerts with link, dashboard, and inline URL examples
v1.0.2 (2026-06-16)
Breaking Changes
No breaking changes.
Bug Fixes
- api: return empty JSON arrays instead of null for empty slices
- docker: strip v prefix from chart appVersion to match image tag
Documentation
- release: update CHANGELOG and README for v1.0.2
v1.0.1 (2026-06-15)
Breaking Changes
No breaking changes.
Bug Fixes
- docker: use VERSION (without v-prefix) in release body pull command
Documentation
- improve Getting Started section clarity
- add Getting Started section to README and release notes
- replace dual codecov badges with single combined coverage badge
- release: update CHANGELOG and README for v1.0.1
- release: bump README version as part of release process
Features
- api: serve resolved alerts from DB instead of in-memory buffer
- db: add GetAllResolved for persistent resolved alert history
- frontend: persistent resolved alert history with correct counts
v1.0.0 (2026-06-12)
Breaking Changes
No breaking changes.
Bug Fixes
- update exclusions section in golangci-lint configuration
- alertmanager: correct DELETE silence endpoint from /silences/:id to /silence/:id
- alerts: remove border between common labels and pagination
- api: enable structured request access logging via slog
- api: enforce max length on all free-text input fields
- api: add per-IP rate limiting on mutating endpoints
- api: tighten CSP connect-src to 'self' only
- api: tighten fingerprint regex to match Alertmanager's actual format
- backend: resolve errcheck and noctx violations (golangci-lint v2)
- backend: compile errors and Go 1.25 upgrade
- ci: lower go directive to 1.24 to unblock golangci-lint
- ci: pin Go to 1.25.11 to fix stdlib CVEs GO-2026-5039 and GO-2026-5037
- ci: remove toolchain directive and pin Go 1.25.11 in CI
- ci: pin helm-unittest plugin to v0.8.2, remove --verify=false
- ci: pin all GitHub Actions to commit SHAs via Ratchet
- ci: remove toolchain directive and pin golangci-lint version
- ci: fix failing tests and unused import errors
- ci: add GOPATH/bin to PATH so ratchet is found after go install
- ci: resolve all golangci-lint findings
- ci: add --verify=false to helm-unittest plugin install
- ci: use --ignore-scripts for pnpm + go-version-file
- ci: all 4 backend test failures + pnpm esbuild block + go version
- comments: use user_id for ownership checks; hide delete icon for others
- comments: scope DELETE to fingerprint to prevent cross-alert IDOR
- config: pin Helm v3 in CI Helm job
- deps: promote golang.org/x/time to direct dependency
- dev: fix podman rootless dev environment
- docker: rewrite release body step with printf; use gh cli for release creation; exclude bots from contributors
- docker: add SBOM attestation, provenance, and keyless image signing
- docker: include pnpm-workspace.yaml in Containerfile COPY step
- docker: replace invalid 'attestations' input with 'sbom: true' in release workflow
- docker: extract release notes from CHANGELOG instead of auto-generating
- docs: update Go version badge link in README.md
- docs: update Go version badge format in README.md
- docs: replace sslmode=disable with sslmode=require in production examples
- frontend: resolved list view — remove dimming, actions and claim columns
- frontend: remove unused imports and add vite-env.d.ts
- frontend: fix alert components for light theme
- frontend: remove unused DEFAULT_SETTINGS import in SettingsSheet
- frontend: hide view toggle when state filter is not active
- frontend: rename AlertCircle → CircleAlert for lucide-react 1.x
- frontend: stable sort in resolved view — tie-break by severity then alertname
- frontend: force list view for resolved and suppressed state tabs
- history: delay claim release by 65s to survive grace-period re-fires
- security: update Go toolchain to 1.25.11 to fix stdlib CVEs
- tests: repair 4 failing CI tests
- ui: break infinite loop in alert count sync effect
- ui: remove double scrollbar in Sheet, add consistent scrollbar styling
- ui: hide stale endsAt countdown for resolved alerts in AlertCard
- ui: default state filter to active on bare URL load
- ui: guard byState access with optional chaining
Chores
- switch license from MIT to Apache 2.0
- add CHANGELOG.md and renovate.json
- ignore *.tsbuildinfo build artifacts
- add GitHub issue templates and PR template
- remove initial development plan
- move git permissions to settings.local.json
- config: add Copilot instructions symlink and switch Dependabot to daily
- deps: bump github.com/labstack/echo/v4 in /backend
- deps: bump docker/build-push-action from 6 to 7
- deps: bump golang.org/x/crypto from 0.50.0 to 0.53.0 in /backend (#16)
- deps: bump sigstore/cosign-installer from 3.9.1 to 4.1.2 (#20)
- deps: replace Renovate with Dependabot
- deps: bump actions/setup-go from 5.6.0 to 6.4.0 (#19)
- deps: update GitHub Actions and Go dependencies
- deps: bump docker/setup-qemu-action from 3.7.0 to 4.1.0 (#17)
- deps: bump codecov/codecov-action from 4.6.0 to 7.0.0 (#18)
- deps: bump github/codeql-action from 3.36.2 to 4.36.2 (#15)
- deps: bump modernc.org/sqlite from 1.34.5 to 1.52.0 in /backend
- deps: bump softprops/action-gh-release from 2 to 3
- deps: bump lucide-react from 0.511.0 to 1.17.0 in /frontend
- deps: bump dorny/test-reporter from 1 to 3
- deps: bump docker/setup-buildx-action from 3 to 4
- deps: bump the minor-patch group in /frontend with 2 updates
- deps-dev: bump @types/node from 22.19.19 to 25.9.2 in /frontend
- deps-dev: bump jsdom from 26.1.0 to 29.1.1 in /frontend
- deps-dev: bump @vitejs/plugin-react in /frontend
- deps-dev: bump vite from 6.4.3 to 8.0.16 in /frontend (#23)
- deps-dev: bump @types/node in /frontend in the minor-patch group (#22)
- deps-dev: bump typescript from 5.9.3 to 6.0.3 in /frontend (#25)
- dev: consolidate test dependencies into single compose file
- docs: expand development workflow in CLAUDE.md and add command frontmatter
- github: improve open source project hygiene
- make: rename targets and add screenshots target
Code Refactoring
- alerts: move filters and alert count to header store
- history: replace episode model with immutable append-only audit log
- ui: extract labelColorStyle to LabelChip and deduplicate claim invalidation
- ui: improve column distribution logic in AlertCardGrid
- ui: remove redundant Alerts nav button, simplify Header
- ui: extract LabelChip and silence helpers to shared modules
Documentation
- document PostgreSQL support, resolved pagination, and update screenshots
- update CHANGELOG for v1.0.0
- add claude code skills and mark plan as completed
- update CHANGELOG for v1.0.0
- update CLAUDE.md with release workflow and Dependabot; add tmp/ to .gitignore
- add authentication reference and update project docs
- expand README with feature documentation and screenshots
- refresh screenshots and update README
- auth: add UI screenshots to authentication docs
- frontend: document search and theme; rename silence comment label to reason
- helm: add Traefik WebSocket ingress example alongside nginx
- readme: add prominent no-auth warning and deployment security section
- readme: remove authentication warning and emphasize security measures
- readme: add authentication to Why Jarvis feature list
Features
- initial Jarvis implementation
- alerts: unique per-label colors via HSL hash
- alerts: redesign AlertCard with grouped entries, label chips, and pagination
- alerts: compact masonry layout with greedy bin-packing
- alerts: show common group labels in card header
- alerts: make claimed alerts visually prominent
- alerts: replace nested entry cards with divide-y row layout
- alerts: move pagination above entries, remove hint text
- api: enforce authentication on write endpoints
- api: wire auth provider into server, router, and config
- auth: add JARVIS_AUTH_MODE for configurable protection level
- auth: add authentication infrastructure
- backend: immediate poll trigger and silence event audit log
- db: add users table migration
- db: add PostgreSQL support via DSN-based dialect detection
- dev: add test Alertmanager for local development
- docker: add container image and cosign verify block to GitHub Release body
- frontend: SilenceForm redesign, silence history tab, AlertDetailPanel overhaul
- frontend: make header responsive with mobile hamburger menu
- frontend: add dark/light theme toggle
- frontend: integrate auth into alert UI components
- frontend: add user settings panel and flat resolved view
- frontend: add auth store, login/setup UI, and admin panel
- frontend: add summary/description section to alert detail panel
- frontend: paginated resolved view with configurable page size
- header: redesign header UX with inline filter editing and live poll indicator
- helm: add Helm chart and OCI publish workflow
- helm: add auth configuration to Helm chart
- history: preserve resolved alerts in-memory for 20-minute window
- history: seed resolved alerts on startup and expose lastResolvedAt
- ui: move view toggle next to state nav, show per-state counts in pills
- ui: improve silence form label autocomplete and affected badge
- ui: rewrite AlertListView with severity sections and expandable groups
- ui: add inline claim/release and silence controls to AlertListRow
- ui: add AI prompt section and paginated history in AlertDetailPanel
- ui: replace Silences nav with inline Silence button, default active filter
Security
- add gitleaks secret scanning
Tests
- backend: add test coverage for api, cluster, and history packages
- frontend: add comprehensive unit tests for components, hooks, store, and utils
- helm: add helm-unittest suite and integrate into Makefile, pre-commit, CI
- history: add lifecycle integration tests for immutable audit log
