feat(overlays): branded glass HUD that floats over fullscreen (Swift NSPanel routing + redesign)#189
Merged
Merged
Conversation
…s through the Swift NSPanel Every keyboard/HUD overlay (F13 toggle, F18 recording, transcribing, SIGNING OUT, the three CODEC Dictate pills, skill-fired, F16 task input) was a dated square tkinter box that macOS hides behind fullscreen apps. Root cause: commit faf3bef deleted the writers feeding the Swift CODECOverlay NSPanel — the renderer that floats over fullscreen (canJoinAllSpaces|fullScreenAuxiliary) — so everything fell back to tkinter. Fix + redesign: - codec_overlays.py emits JSON events to ~/.codec/overlay_events.jsonl (the channel the running Swift panel polls); tkinter kept as automatic fallback when the panel is down. One flag (_USE_SWIFT) reverts everything. - swift-overlay redesigned: dark-tinted glass (blur + black 0.66), 24px radius with maskImage (transparent corners), 84px tinted CODEC hexagon mark pinned left, solid accent-colored centered titles (orange/red/blue per state), shortcut chips (F18·voice …), pulsing dot / breathing mark, uniform 700×140 frame, fade in/out. - New focusable InputPanel replaces the raw AppleScript F16 dialog (glass field + Send; Enter submits, Esc cancels); codec_core.get_text_dialog falls back to osascript within 2s if the panel doesn't ack. Return contract preserved. - codec_dictate reuses the shared renderer (was 3 inline tkinter pills); codec.py hides the recording HUD on F18 release. Tests: tests/test_overlays.py (7, TDD red-then-green). Preview harness: tools/overlay_preview.py. Design: docs/OVERLAY-REDESIGN.md. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
All keyboard/HUD overlays looked like Windows 98 (square tkinter, 1px border) and never appeared over fullscreen apps. Both symptoms = one regression: commit
faf3befdeleted the event writers feeding the SwiftCODECOverlayNSPanel (the fullscreen-capable renderer), so everything fell back to tkinter.What
~/.codec/overlay_events.jsonl(tkinter = automatic fallback,_USE_SWIFTflag = instant rollback).InputPanel(Enter sends, Esc cancels), osascript fallback if the panel doesn't ack in 2s. Contract preserved.Tests
tests/test_overlays.py— 7 tests, written red-first. Full suite green (2391 passed). Live-verified on screen across all states + iterated with the operator.Engine modules only — no skill-manifest impact. Deploy:
swift build -c releaseinswift-overlay/+pm2 restart codec-overlay open-codec codec-dictate.🤖 Generated with Claude Code