diff --git a/apps/desktop/src/db/app-settings.ts b/apps/desktop/src/db/app-settings.ts index f14c2ad8..ab379de3 100644 --- a/apps/desktop/src/db/app-settings.ts +++ b/apps/desktop/src/db/app-settings.ts @@ -140,6 +140,7 @@ const defaultSettings: AppSettingsData = { preferences: { launchAtLogin: true, showWidgetWhileInactive: true, + showWidgetWhileActive: true, showInDock: true, }, transcription: { diff --git a/apps/desktop/src/db/schema.ts b/apps/desktop/src/db/schema.ts index 6f97e201..7f863ec2 100644 --- a/apps/desktop/src/db/schema.ts +++ b/apps/desktop/src/db/schema.ts @@ -158,6 +158,7 @@ export interface AppSettingsData { launchAtLogin?: boolean; minimizeToTray?: boolean; showWidgetWhileInactive?: boolean; + showWidgetWhileActive?: boolean; showInDock?: boolean; }; telemetry?: { diff --git a/apps/desktop/src/main/core/app-manager.ts b/apps/desktop/src/main/core/app-manager.ts index c9e179a8..77df2ae4 100644 --- a/apps/desktop/src/main/core/app-manager.ts +++ b/apps/desktop/src/main/core/app-manager.ts @@ -188,12 +188,14 @@ export class AppManager { "preferences-changed", async ({ showWidgetWhileInactiveChanged, + showWidgetWhileActiveChanged, showInDockChanged, }: { showWidgetWhileInactiveChanged: boolean; + showWidgetWhileActiveChanged: boolean; showInDockChanged: boolean; }) => { - if (showWidgetWhileInactiveChanged) { + if (showWidgetWhileInactiveChanged || showWidgetWhileActiveChanged) { const recordingManager = this.serviceManager.getService("recordingManager"); const isIdle = recordingManager.getState() === "idle"; @@ -217,7 +219,11 @@ export class AppManager { const settingsService = this.serviceManager.getService("settingsService"); const preferences = await settingsService.getPreferences(); - if (preferences.showWidgetWhileInactive || !isIdle) { + const shouldShow = isIdle + ? preferences.showWidgetWhileInactive + : preferences.showWidgetWhileActive; + + if (shouldShow) { this.windowManager.showWidget(); } else { this.windowManager.hideWidget(); diff --git a/apps/desktop/src/renderer/main/pages/settings/preferences/index.tsx b/apps/desktop/src/renderer/main/pages/settings/preferences/index.tsx index 2d0dc387..d5371c17 100644 --- a/apps/desktop/src/renderer/main/pages/settings/preferences/index.tsx +++ b/apps/desktop/src/renderer/main/pages/settings/preferences/index.tsx @@ -34,6 +34,12 @@ export default function PreferencesSettingsPage() { }); }; + const handleShowWidgetWhileActiveChange = (checked: boolean) => { + updatePreferencesMutation.mutate({ + showWidgetWhileActive: checked, + }); + }; + const handleMinimizeToTrayChange = (checked: boolean) => { updatePreferencesMutation.mutate({ minimizeToTray: checked, @@ -48,6 +54,8 @@ export default function PreferencesSettingsPage() { const showWidgetWhileInactive = preferencesQuery.data?.showWidgetWhileInactive ?? true; + const showWidgetWhileActive = + preferencesQuery.data?.showWidgetWhileActive ?? true; const minimizeToTray = preferencesQuery.data?.minimizeToTray ?? false; const launchAtLogin = preferencesQuery.data?.launchAtLogin ?? true; const showInDock = preferencesQuery.data?.showInDock ?? true; @@ -123,6 +131,25 @@ export default function PreferencesSettingsPage() { + {/* Show Widget While Active Section */} +
+
+ +

+ Show the widget on screen when recording +

+
+ +
+ + + {/* Show in Dock Section (macOS only) */} {isMac && ( <> diff --git a/apps/desktop/src/services/settings-service.ts b/apps/desktop/src/services/settings-service.ts index 1d9cc803..5da6e557 100644 --- a/apps/desktop/src/services/settings-service.ts +++ b/apps/desktop/src/services/settings-service.ts @@ -21,6 +21,7 @@ export interface AppPreferences { launchAtLogin: boolean; minimizeToTray: boolean; showWidgetWhileInactive: boolean; + showWidgetWhileActive: boolean; showInDock: boolean; } @@ -289,6 +290,7 @@ export class SettingsService extends EventEmitter { launchAtLogin: preferences?.launchAtLogin ?? true, minimizeToTray: preferences?.minimizeToTray ?? true, showWidgetWhileInactive: preferences?.showWidgetWhileInactive ?? true, + showWidgetWhileActive: preferences?.showWidgetWhileActive ?? true, showInDock: preferences?.showInDock ?? true, }; } @@ -316,6 +318,8 @@ export class SettingsService extends EventEmitter { changes: preferences, showWidgetWhileInactiveChanged: preferences.showWidgetWhileInactive !== undefined, + showWidgetWhileActiveChanged: + preferences.showWidgetWhileActive !== undefined, showInDockChanged: preferences.showInDock !== undefined, }); } diff --git a/apps/desktop/src/trpc/routers/settings.ts b/apps/desktop/src/trpc/routers/settings.ts index ae7472d4..cf7392f7 100644 --- a/apps/desktop/src/trpc/routers/settings.ts +++ b/apps/desktop/src/trpc/routers/settings.ts @@ -43,6 +43,7 @@ const AppPreferencesSchema = z.object({ launchAtLogin: z.boolean().optional(), minimizeToTray: z.boolean().optional(), showWidgetWhileInactive: z.boolean().optional(), + showWidgetWhileActive: z.boolean().optional(), showInDock: z.boolean().optional(), });