- First-time visitors see a password setup page instead of open access
- Password persisted to SQLite (env var DBX_PASSWORD takes priority)
- Add change password in settings dialog (Security tab, web only)
- Split settings dialog into Editor and Security tabs
- Argon2 hashing for all password storage
- Switch sqlx, reqwest, tiberius from native-tls to rustls to eliminate
OpenSSL dependency, enabling clean cross-compilation
- Use cargo-zigbuild to cross-compile dbx-web for both amd64 and arm64
natively without QEMU emulation for Rust compilation
- Frontend and backend stages use --platform=$BUILDPLATFORM to avoid
emulation during build
- Remove libssl3 from runtime image (no longer needed with rustls)
- Run docker build in parallel with platform builds instead of sequentially
- Publish release as pre-release instead of full release for manual verification
- Integrate brew/scoop package publishing into release workflow
- Keep publish-packages.yml with workflow_dispatch only for manual re-runs
Replace all JSON file storage (connections, secrets, history, AI config,
conversations, sidebar layout) with a single SQLite database (dbx.db).
Auto-migrates existing JSON data on first launch, renaming old files to
.bak. Remove keyring dependency — passwords now stored in SQLite.
Extract 11 composables and 5 layout components from App.vue, reducing it
from 1921 to 327 lines. Unify dialog overlay style across DialogContent
and DialogScrollContent for consistent backdrop appearance.
Introduce src-web (axum HTTP server) exposing all 43 database operations
as REST APIs with SSE streaming for AI, transfers, and SQL file execution.
Frontend adapts automatically between Tauri and HTTP backends via api.ts.
Includes password authentication, Docker packaging, and login page.
Refactor all database drivers, query execution, schema operations, and
business logic into a shared `dbx-core` crate. The Tauri desktop app
becomes a thin shell delegating to dbx-core, enabling future web and
CLI frontends to reuse the same core.