github TheDuffman85/crowdsec-web-ui 2026.10.11

4 hours ago

Upgrade notes

This release splits the SQLite database into two files. Back up your data directory before upgrading.

  • On the first start, the durable data in crowdsec.db is copied into a new state.db, and then crowdsec.db is deleted.
  • Cached alerts and decisions are not copied. The first start runs a full synchronization over crowdsec.sync.lookback, so the alert list may be incomplete until it finishes.
  • Older versions can't read the new files. To roll back, restore your backup.

Highlights

Durable state and rebuildable cache are now separate (#552, #553)

File Location Contents If lost
state.db storage.dataDir Users, passkeys, notification channels, rules and history, saved and recent filters, queued alert deletions, UI settings Restore from a backup
cache.db storage.cacheDir (new) Alerts and decisions synchronized from LAPI Rebuilt by the next synchronization
  • New option storage.cacheDir / CONFIG_STORAGE_CACHE_DIR (default: storage.dataDir). You can put the cache on fast node-local storage and keep state.db and config.yaml on backed-up or network storage. The container only fixes ownership of /app/data, so a cache mount elsewhere must be writable by the container user.
  • state.db always uses a rollback journal, so it works on network filesystems that don't support WAL. storage.walEnabled now only applies to cache.db.
  • Database maintenance is simpler. If startup reports reclaimable space, stop the app, delete cache.db, cache.db-wal and cache.db-shm, and start it again. The manual VACUUM steps are no longer needed.

Browser Back and Escape close overlays (#549)

  • Back (including the mouse back button) closes the alert details modal without leaving /alerts. The alert list isn't reloaded, so loaded pages and the scroll position are kept. Thanks @mcbyte-it!
  • Back also closes the Add Decision form opened from alerts (returning to the alert details if you opened it from there) and the mobile sidebar drawer.
  • Closing a modal with the close button, a backdrop click or by deleting the alert doesn't leave a stale history entry. Closing a modal opened from a deep link (/alerts?id=…) no longer adds an entry each time, so Back goes to the previous page.
  • Escape closes any modal, the same as a backdrop click. Only the topmost modal closes, and an open dropdown inside a dialog handles Escape first.

Fixes

  • Fixed refreshes stalling during retention cleanup ("Database refresh worker is no longer available", #551). Cleanup now runs before the refresh transaction, in separately committed batches whose size adapts. A slow cleanup can no longer roll back or block the LAPI delta. Cached analytics and list counts are updated as each batch commits.
  • Made reconciliation planning faster with a covering index on decisions(stop_at, alert_id, instance_id).
  • Notification incident and history writes, and progress on queued deletions, are now done in bounded batches that yield between them.

Maintenance

  • Upgraded runtime and dev dependencies (React 19.3.1, Vite 8.3.5, Vitest 5.0.5, tsup 9, …) and pnpm 12.15.0.
  • Updated GitHub Actions (setup-node v7.1.0, login-action v4.7.0, codeql-action v4.39.1).
  • Fixed flaky Settings tests.

Contributors

Full changelog

Docker

docker pull ghcr.io/TheDuffman85/crowdsec-web-ui:2026.10.11

Don't miss a new crowdsec-web-ui release

NewReleases is sending notifications on new releases.