v1.1.0
Strata v1.1.0 ships one new feature, three bug fixes, and a round of CI and developer-experience improvements on top of the v1.0.0 baseline.
New feature
Section titled “New feature”SQLite database export
Section titled “SQLite database export”A new Export as .db button in Settings → Backup downloads the raw SQLite database file directly from the running backend. The file can be opened in any SQLite viewer (DB Browser for SQLite, DBeaver, the VS Code SQLite extension, …) to inspect your data outside the app.
The download is also available programmatically:
GET /api/v1/admin/backup/sqliteReturns the file as application/x-sqlite3 with a timestamped filename (strata-backup-YYYY-MM-DD.db).
Bug fixes
Section titled “Bug fixes”JSON backup import/export round-trip
Section titled “JSON backup import/export round-trip”Exporting a JSON backup and re-importing it failed with “Invalid backup format: missing version or data.”
Root cause: the backend exports { schemaVersion: "1", … } but the frontend type system and validation guard looked for version (wrong field name). The mismatch caused the import validator to always reject the file.
Fix: aligned BackupPayload, ParsedBackup, isParsedBackup, confirmRestore, and all related tests to use schemaVersion throughout.
Docker container re-seeding demo assets on every restart
Section titled “Docker container re-seeding demo assets on every restart”Running npm run docker:prod (or docker:dev) caused the demo dataset to reappear after the user had deleted demo assets.
Root cause: the Dockerfile CMD ran npx prisma db seed unconditionally on every container start. The seed guards (findFirst by name) re-created any deleted record.
Fix: the new backend/docker-start.sh startup script checks whether the database file exists before prisma migrate deploy runs (which creates the file on a fresh install). The seed step runs only when the database is fresh; subsequent restarts skip it, preserving user data and deliberate deletions.
This is the same pattern as the Tauri desktop app reseed fix (already present in src-tauri/src/lib.rs).
Version / environment badge display
Section titled “Version / environment badge display”Three surfaces showed the wrong version string or wrong environment label:
| Surface | Was | Now |
|---|---|---|
docker:dev docs | v1.0.0 PROD | v1.0.0-11-gcff978c — DEV |
docker:prod docs | v1.0.0 PROD | v1.0.0 (no badge) |
| strata.ducatillon.net | v0.0.0-dev+sha — DEV | v1.1.0 (clean, no badge) |
Fixes:
scripts/version.mjsnow accepts aSTRATA_ENVenv var to force the environment label independent of the git tag.docker:resetanddocker:nukesetSTRATA_ENV=developmentbefore generating version files.- When
git describereturns0.0.0-dev(shallow clone — Cloudflare Pages),version.mjsfalls back to the version in rootpackage.json, which is always in sync with the release tag. DocsSiteTitle.astronow shows a— DEVbadge only in development builds; production builds show the clean tag with no badge.
CI build failure (Prisma + missing DATABASE_URL)
Section titled “CI build failure (Prisma + missing DATABASE_URL)”npm run build on CI failed because prisma.config.ts validated DATABASE_URL at config-load time (even during prisma generate, before any database is involved).
Fix: prisma.config.ts now uses process.env.DATABASE_URL ?? 'file:/tmp/build.db' as a build-time fallback. The fallback value is never used at runtime.
Improvements
Section titled “Improvements”- Backend test coverage raised to meet the ≥ 90 % gate required by CI (
062ec83). - Node 24 confirmed compatible; Docker base images updated to
node:24-alpine. - Various UI fixes: acquisition date display, asset delete confirmation dialog, favicon, dark-mode flash on load, Codecov badge labels in README.
Upgrade
Section titled “Upgrade”Standard Docker upgrade path:
git pullnpm run docker:reset # rebuilds images + preserves existing DBFor the desktop app, download the new .app bundle from the GitHub releases page.