Skip to content

fix(SPEC-004): rebuild overlay panel per show for fullscreen Spaces - #104

Draft
wine-fall wants to merge 3 commits into
mainfrom
zachg-0624--overlay-recreate-panel
Draft

fix(SPEC-004): rebuild overlay panel per show for fullscreen Spaces#104
wine-fall wants to merge 3 commits into
mainfrom
zachg-0624--overlay-recreate-panel

Conversation

@wine-fall

Copy link
Copy Markdown
Collaborator

SPEC

SPEC-004a (Recording overlay on another app's fullscreen Space) — adds the investigation spec in this PR.

Milestone

M2

Why

The recording pill intermittently lands on a background desktop instead of the user's active Space when dictation starts inside another app's native-fullscreen Space. Intermittent because the panel is bound to the Space it was born on (first dictation after launch). Visual-only — dictation/paste still work.

Change

  • RecordingOverlay.hideAnimated tears the panel down (panel = nil) instead of only orderOut, so the next dictation rebuilds it via ensurePanel() on whatever Space is active then.
  • Adds docs/SPECS/SPEC-004a-… recording the bug, why it's intermittent, the no-focus-steal constraint, and all attempted/rejected approaches.

Tests

  • unit test: n/a — app layer is an executableTarget; Space behavior needs a live fullscreen
  • swift build && swift test green locally (269 passed, 2 skipped)
  • manual: baseline (first dictation on desktop → fullscreen = invisible) then verify fix makes it visible (isOnActiveSpace == true) — see SPEC-004a §Acceptance criteria

Privacy impact

None — windowing only.

⚠️ Tentative — not guaranteed

Best-effort. Prior non-focus-stealing levers (window level, orderFrontRegardless in #102) did not fix it. The bug is intermittent and hard to verify (a restart perturbs the repro), so this needs the deterministic baseline protocol in SPEC-004a before/after. If rebuild also fails, fallback is to accept it as a documented known issue.

AI coding brief

  • Original request: overlay sometimes shows on the wrong desktop when another app is fullscreen; also log all attempts in a spec.
  • Manual interventions: human rejected earlier guesses, enforced single-variable discipline, asked to compare against the open-source Sol launcher, and requested a record of attempts.
  • Retro: for intermittent windowing bugs, write the diagnosis + attempts to a spec early and treat fixes as tentative until a deterministic repro confirms them.

🤖 Generated with Claude Code

wine-fall and others added 3 commits June 24, 2026 16:49
…mpts

Log the intermittent bug where the recording overlay lands on a background
desktop instead of the active fullscreen Space, why it is intermittent
(panel bound to its birth Space), the no-focus-steal constraint, every
attempt tried (level, orderFrontRegardless, rebuild), and rejected
approaches (key window, space-change notifications, conditional rebuild).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… Space

Tear the panel down on hide instead of just ordering it out, so the next
dictation rebuilds it on whatever Space is active then. A reused panel
stays bound to the Space it was born on and won't follow the user into
another app's fullscreen Space. Tentative — see SPEC-004a.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…tead

Per maintainer preference, the investigation lives in issue #105 (problem,
intermittency, attempts, rejected approaches) rather than a spec doc.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@wine-fall wine-fall changed the title fix(SPEC-004a): rebuild overlay panel per show for fullscreen Spaces fix(SPEC-004): rebuild overlay panel per show for fullscreen Spaces Jun 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant