Compare commits

..

2 Commits

Author SHA1 Message Date
byGalax cf3fef6936 fix(secretStore): fall back to localStorage when stronghold init fails
Release desktop app / build (, windows-latest) (push) Has been cancelled
Release desktop app / build (--target universal-apple-darwin --bundles app,updater, macos-14) (push) Has been cancelled
2026-04-19 20:05:37 +02:00
byGalax 8c878b3718 fix(capabilities): allow stronghold operations
Release desktop app / build (, windows-latest) (push) Has been cancelled
Release desktop app / build (--target universal-apple-darwin --bundles app,updater, macos-14) (push) Has been cancelled
2026-04-19 20:02:44 +02:00
3 changed files with 23 additions and 5 deletions
@@ -15,6 +15,14 @@
"updater:allow-check", "updater:allow-check",
"updater:allow-download", "updater:allow-download",
"updater:allow-install", "updater:allow-install",
"updater:allow-download-and-install" "updater:allow-download-and-install",
"stronghold:default",
"stronghold:allow-initialize",
"stronghold:allow-load-client",
"stronghold:allow-create-client",
"stronghold:allow-save",
"stronghold:allow-get-store-record",
"stronghold:allow-save-store-record",
"stronghold:allow-remove-store-record"
] ]
} }
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"$schema": "https://schema.tauri.app/config/2", "$schema": "https://schema.tauri.app/config/2",
"productName": "ChatApp", "productName": "ChatApp",
"version": "0.3.1", "version": "0.3.3",
"identifier": "com.meinname.chatapp", "identifier": "com.meinname.chatapp",
"build": { "build": {
"beforeDevCommand": "pnpm vite:dev", "beforeDevCommand": "pnpm vite:dev",
+10
View File
@@ -39,12 +39,22 @@ export async function setSecretStoreUser(userId: string | null): Promise<void> {
if (userId && isTauriRuntime()) { if (userId && isTauriRuntime()) {
const stronghold = makeStrongholdStore(userId); const stronghold = makeStrongholdStore(userId);
try {
// Force a tiny round-trip to verify Stronghold can actually open the
// vault on this machine. If not (broken vault file, bundled rust crate
// mismatch, etc.) we fall back to localStorage so the rest of the app
// remains usable instead of bricking device registration.
await stronghold.getSecret('__probe');
activeBackend = stronghold; activeBackend = stronghold;
try { try {
await migrateLocalStorageToStronghold(userId, PREFIX); await migrateLocalStorageToStronghold(userId, PREFIX);
} catch (err: unknown) { } catch (err: unknown) {
console.warn('stronghold migration failed', err); console.warn('stronghold migration failed', err);
} }
} catch (err: unknown) {
console.warn('stronghold init failed — falling back to localStorage', err);
activeBackend = localStore;
}
} else { } else {
activeBackend = localStore; activeBackend = localStore;
} }