Immutable
release. Only release title and notes can be modified.
What's Changed
🚀 Features
- Configuration Backup & Restore (Issue #32)
- smart defaults for encryption and remote-upload in the Create Backup dialog
- thread UploadToRemote option and stored-passphrase reuse through backup creation
- add Save button to BackupEncryptionCard
- surface backup job progress and DB corruption warnings in the Backups page
- add job polling and DB health hooks to frontend backup API/hooks
- switch backup create/restore handlers to 202+job, add GetJob
- extract lock-free restore core and add async job-tracking to BackupService (restore)
- add async job-tracking to BackupService (create)
- add BackupJob model and migration
- enable WebDAV/Dropbox/Google Drive E2E + hardening pass
- add WebDAV/Dropbox/Google Drive remote-target UI
- add Dropbox and Google Drive uploaders + OAuth routes
- enable backup E2E, hardening pass, and disaster recovery docs
- wire SFTP host-key discovery for draft remote targets
- backup schedule, encryption, upload-restore, and remote targets UI
- v2 backups — validated restore, encryption, schedule, remote storage
🐛 Bug Fixes & Improvements
- resolve brace-expansion DoS advisory (GHSA-mh99-v99m-4gvg)
- resolve brace-expansion DoS advisory via jsx-a11y types pin
- migrate react-router-dom to react-router v8 (GHSA-qwww-vcr4-c8h2)
- suppress unreachable cel-go MEDIUM finding blocking PR image scan
- eliminate race in pending-restore-harness boot mode
- patch kin-openapi CRITICAL auth-bypass in crowdsec-builder
- repair pre-existing certificate, proxy-group, and logout test bugs
- delete bulk certificates sequentially
- invalidate cache when proxy hosts change certificate links
- migrate react-router-dom to react-router v8
- add sourceUrl override for sirupsen/logrus in Renovate config
- update module github.com/prometheus/client_golang to v1.24.1
- update module github.com/prometheus/client_golang to v1.24.1
- update npm-non-major
- update npm-non-major
- update google.golang.org/grpc to v1.82.1 and add vulnerability suppression for GHSA-hrxh-6v49-42gf
- update google.golang.org/grpc to 1.82.1 in go.work.sum
- update google.golang.org/grpc to 1.82.0 in go.work.sum
- gate X-Forwarded-Proto/X-Forwarded-Host trust behind an explicit CHARON_TRUSTED_PROXIES allowlist, remove Origin/Referer from cookie-security decisions
- apply the encryption setting to scheduled/cron backups, correct their Type to "scheduled"
- hide remote-target Test button until OAuth target is connected
- don't record failed test status for unattempted OAuth-precondition probes
- redirect OAuth callback to /tasks/backups, not nonexistent /backups route
- make auth cookie Secure flag scheme/network-aware, close Tailscale CGNAT gap
- stop logging raw restore-job error text (CodeQL go/log-injection)
- run DB integrity checks on a dedicated connection, not the shared pool
- standardize all SQLite file access on a single driver, drop mattn/go-sqlite3
- make backup filenames collision-proof to stop same-second overwrites
- add Docker Compose task for Charon container
- route restore-failure toasts through backups.restoreFailed template
- surface RestoreBackupSafe's double-failure path as a real error instead of false success (C1)
- make RehydrateLiveDatabase's per-table swap transactional (H1)
- eliminate buffer-reuse data race in Dropbox chunked upload
- mock OAuth callback redirect via JS navigation, not HTTP 3xx fulfill
- remove live-network dependency from OAuth callback test, add validateRemoteTargetConfig coverage
- restore missing minio-go/v7 dependency for S3 remote storage
- stop auto-restaging files fixed by pre-commit hooks
- persist explicit enabled:false on remote target creation
- disambiguate create-backup button and update dialog-flow assumptions
- tidy go.mod/go.sum after development merge
- add stateless SFTP host-key discovery for draft remote targets
Full Changelog: v0.34.1...v0.35.0