Add versioned DB migrations, startup error dialog and native basics

rusqlite_migration with a VACUUM INTO backup before upgrading; M2 adds GST
registration, snapshot, cancellation and draft columns and backfills
snapshots for existing invoices. Startup failures now show a native dialog
instead of exiting silently. Adds single-instance and window-state plugins,
minimum window 960x600, embedBootstrapper, DMABUF workaround on Linux and
xbps dependency updates.
This commit is contained in:
2026-10-04 04:04:34 +05:30
parent f7a1302e94
commit ecf57c9221
13 changed files with 607 additions and 34 deletions
+10 -1
View File
@@ -4,7 +4,7 @@ version = "0.1.0"
description = "Voiced — offline invoicing desktop app by Bongbetic"
authors = ["Bongbetic"]
edition = "2021"
rust-version = "1.77"
rust-version = "1.95"
# The `_lib` suffix keeps the library name distinct from the binary name on Windows.
[lib]
@@ -21,11 +21,20 @@ tauri-plugin-opener = "2"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
rusqlite = { version = "0.40", features = ["bundled"] }
rusqlite_migration = "2.6"
chrono = { version = "0.4", features = ["serde"] }
uuid = { version = "1", features = ["v4"] }
thiserror = "2"
base64 = "0.22"
# Desktop-only plugins (not available on mobile targets).
[target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies]
tauri-plugin-single-instance = "2"
tauri-plugin-window-state = "2"
[dev-dependencies]
tempfile = "3"
[features]
# Production builds embed the frontend and serve it over the custom asset
# protocol. Without this, the app expects a dev server on localhost:1420.