You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 0da197c
Browse filesBrowse the repository at this point in the historyBrowse files
feat: make taskbar/Dock icon hiding during live interviews optional (#142)
* Add hideTaskbarWhileRunning setting and UI
Refs #141
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
* Gate taskbar hiding, pin and minimize on the setting
Re-raise the window on an interval while hidden.
Refs #141
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
* Update tests and docs for the taskbar setting
Refs #141
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
* Apply minimizable before skipTaskbar and only on change
Also remove a stray comment and fix comment placement.
Refs #141
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
* Remove dead Dock re-assert
Refs #141
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
* Test Dock stays visible on macOS with the setting off
Refs #141
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Parent save dialogs to the main window
An unowned dialog sits under the window while it is pinned on top.
Refs #141
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Pin save dialogs to the main window in tests
Refs #141
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Restore a minimized window before the save prompt
A close from the Dock or taskbar while minimized showed the prompt
inside a window nobody could see.
Refs #141
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Restore the window on a repeat close too
Refs #141
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CLAUDE.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -722,7 +722,7 @@ The outer container keeps `overflow-auto` as a safety valve for large zoom facto
722
722
723
723
The app keeps itself off the surfaces a screen share exposes, but only where it has to. There is never a desktop shortcut (the NSIS installer creates none, and `build/installer.nsh` deletes one left by an older install). The taskbar button and the macOS Dock icon are driven by `applySurfaceVisibility()` in [src/main/services/window-control.service.ts](src/main/services/window-control.service.ts) - `setSkipTaskbar(hidden)` plus, on macOS, `app.setActivationPolicy('accessory')` + `app.dock.hide()` going in and `'regular'` + `app.dock.show()` coming out. There is deliberately no `LSUIElement` in the packaged Info.plist: it would pin the app to accessory from launch and there would be no Dock icon to give back.
724
724
725
-
`hidden` comes from `shouldHideSurfaces()`, which is `_stealth || isAssistantRunning()`. **The two inputs are independent, not nested.** A running assistant is when a screen share is most likely live, so it hides the same surfaces stealth does; leaving stealth mid-session must therefore *not* hand the taskbar button back. The macOS traffic lights are the deliberate exception - they follow `_stealth` alone, because a merely running window is still focusable and interactive and needs its close and minimise buttons. `test/running-surface.test.mjs` pins all of it.
725
+
`hidden` comes from `shouldHideSurfaces()`, which is `_stealth || (_hideTaskbarWhileRunning && isAssistantRunning())`. `hideTaskbarWhileRunning` is an opt-in config setting, off by default: with it off a running assistant leaves the icon, z-order and minimize alone. **The two inputs are independent, not nested.** With the setting on, leaving stealth mid-session must *not* hand the taskbar button back. While hidden the window is also re-raised with `moveTop()` every `RAISE_INTERVAL_MS`, and `canMinimize()` (false in stealth and whenever the setting is on) drives `setMinimizable`, the `window:minimize` handler and the titlebar's minimize button. The macOS traffic lights are the deliberate exception - they follow `_stealth` alone, because a merely running window is still focusable and interactive and needs its close and minimise buttons. `test/running-surface.test.mjs` pins all of it.
726
726
727
727
Two consequences. A window minimized *in stealth mode* has no button to click, so it can only be brought back by relaunching the app - the single instance lock routes to `restoreWindow()`. And `window-all-closed` quits on every platform including macOS, because a windowless process in stealth mode would otherwise sit there holding the global hotkeys unreachable. `test/stealth-surface.test.mjs` pins all of it.
Copy file name to clipboardExpand all lines: README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -65,7 +65,7 @@ Stay on top of the conversation with live ASR:
65
65
66
66
### Staying Out of Sight
67
67
68
-
The app keeps itself off the surfaces a screen share exposes. There is no desktop shortcut, and stealth mode hides the window from screen capture while also removing the Windows taskbar button and the macOS Dock icon and Cmd+Tab entry. Outside stealth mode the app behaves like any other window, taskbar button and Dock icon included.
68
+
The app keeps itself off the surfaces a screen share exposes. There is no desktop shortcut, and stealth mode hides the window from screen capture while also removing the Windows taskbar button and the macOS Dock icon and Cmd+Tab entry. Outside stealth mode the app behaves like any other window, taskbar button and Dock icon included, unless you turn on "Hide taskbar icon during live interviews" in Configuration.
69
69
70
70
**Lost the window?** Launch Power Interview again. It does not start a second copy - the running app brings its window back and focuses it.
Copy file name to clipboardExpand all lines: SPEC.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -105,7 +105,7 @@ Nothing in it is a trap: Skip is on every step, every setting has a working defa
105
105
106
106
### Session Window Behaviour
107
107
108
-
While the assistant is running - or while stealth mode is on - the window is pinned above other windows (`screen-saver` level, and visible over a fullscreen call on macOS)and drops its taskbar button and Dock icon. The two conditions are independent: switching stealth off mid-session leaves both in place until the session actually stops. macOS traffic lights stay visible outside stealth, since the window is still interactive. Service: [src/main/services/window-control.service.ts](src/main/services/window-control.service.ts).
108
+
While stealth mode is on - or while the assistant is running with the opt-in "Hide taskbar icon during live interviews" setting enabled - the window is pinned above other windows (`screen-saver` level, visible over a fullscreen call on macOS), re-raised every 2 seconds, cannot be minimized, and drops its taskbar button and Dock icon. With the setting off (the default) a running assistant leaves the window alone. The two conditions are independent: switching stealth off mid-session with the setting on leaves everything in place until the session stops. macOS traffic lights stay visible outside stealth, since the window is still interactive. Service: [src/main/services/window-control.service.ts](src/main/services/window-control.service.ts).
0 commit comments