diff --git a/apps/desktop/src/renderer/main/pages/settings/advanced/index.tsx b/apps/desktop/src/renderer/main/pages/settings/advanced/index.tsx
index 83163bf..753dd77 100644
--- a/apps/desktop/src/renderer/main/pages/settings/advanced/index.tsx
+++ b/apps/desktop/src/renderer/main/pages/settings/advanced/index.tsx
@@ -226,12 +226,12 @@ export default function AdvancedSettingsPage() {
Cancel
- resetAppMutation.mutate()}
>
Yes, delete everything
-
+
diff --git a/apps/desktop/src/renderer/onboarding/index.tsx b/apps/desktop/src/renderer/onboarding/index.tsx
index 0712e4f..900cc5a 100644
--- a/apps/desktop/src/renderer/onboarding/index.tsx
+++ b/apps/desktop/src/renderer/onboarding/index.tsx
@@ -41,7 +41,7 @@ root.render(
-
+
diff --git a/apps/desktop/src/services/auth-service.ts b/apps/desktop/src/services/auth-service.ts
index 4be1f18..dd4456f 100644
--- a/apps/desktop/src/services/auth-service.ts
+++ b/apps/desktop/src/services/auth-service.ts
@@ -320,8 +320,13 @@ export class AuthService extends EventEmitter {
}
const authState = await this.getAuthState();
- if (!authState || !authState.refreshToken) {
- // No refresh token available - invalid state, logout user
+ if (!authState) {
+ // User was never logged in - nothing to refresh
+ return;
+ }
+
+ if (!authState.refreshToken) {
+ // User has auth state but no refresh token - corrupted state, logout
await this.logout();
return;
}
diff --git a/apps/desktop/src/trpc/routers/settings.ts b/apps/desktop/src/trpc/routers/settings.ts
index 65e5a76..1c6a66c 100644
--- a/apps/desktop/src/trpc/routers/settings.ts
+++ b/apps/desktop/src/trpc/routers/settings.ts
@@ -633,17 +633,24 @@ export const settingsRouter = createRouter({
logger.main.info("Resetting app - deleting all data");
}
- // Close database connection before deleting the file
- if (logger) {
- logger.main.info("Closing database connection before reset");
- }
+ // Close database connection before deleting
await closeDatabase();
// Add a small delay to ensure the connection is fully closed on Windows
await new Promise((resolve) => setTimeout(resolve, 100));
- // Delete the database file
- await fs.unlink(dbPath);
+ // Delete entire userData directory (includes db, models, cache, etc.)
+ const userDataPath = app.getPath("userData");
+ await fs.rm(userDataPath, { recursive: true, force: true });
+
+ // In development, also delete the local db file if it exists
+ if (process.env.NODE_ENV === "development" || !app.isPackaged) {
+ try {
+ await fs.unlink(dbPath);
+ } catch {
+ // Ignore if file doesn't exist
+ }
+ }
// Handle restart differently in development vs production
if (process.env.NODE_ENV === "development" || !app.isPackaged) {