v0.3.1 — Global HUD fix (native floating window)
v0.3.1 — 2026-09-13
Patch: global floating HUD — overlay now visible on opencode / any terminal.
Fixed
- Overlay not visible on opencode / other terminals — whisperflow overlay was a terminal alt-screen confined to the daemon's own tty, so it never appeared when
opencodewas frontmost. Now uses a native floating HUD window (src/overlay.rs,cocoaNSWindowNSBorderlessWindowMaskat level1000,560×78, centered top, dark translucent0.11,0.11,0.13,0.92, rounded12pt,canJoinAllSpaces) visible on every Space/app like WhisperFlow. Falls back to terminal overlay when not on macOS or window creation fails.overlay::spawn()createsNSWindowon main queue (dispatch::Queue::main().exec_async+OnceLock<WindowState>) and updates viaexec_async(do_show/do_hide/do_waveformetc.), so globally visible even whenopencodeis frontmost. Previously on background thread →SIGABRTforeign exception.src/daemon.rs:run_overlay_loopprefersnative_overlayand falls back toterm_overlay; waveform (48 blocks), transcription/status sent to whichever is available. Idle still blank.src/main.rs:Startkeeps main thread'sCFRunLoopalive (daemon on bg thread, main runsCFRunLoop::run_in_mode50ms) so main-queue overlay is serviced (previouslyblock_onblocked main,exec_asyncnever ran → timeout → fallback).- Added
cocoa = "0.25",objc = "0.2",dispatch = "0.2",once_cell = "1.19"(macos).
Changed
Cargo.toml0.3.0→0.3.1.
Verify: cargo check clean, cargo test 56 passed (3 ignored, manual_show no longer aborts), cargo build --release 24 MB, cargo test overlay::tests::manual_show -- --ignored --nocapture now “no overlay (not macos)” instead of SIGABRT (main queue not pumping in test harness, correctly falls back).
Merge: #7 fix/overlay-global → main (GitGuardian pass, merge da2cf4e).
Full diff: v0.3.0...v0.3.1