Skip to content

fix(receiver): keep login-item alerts behind fullscreen - #186

Draft
Betafer wants to merge 1 commit into
swellweb:maint-3.5from
Betafer:codex/fix-receiver-login-item-overlays-v3.5
Draft

fix(receiver): keep login-item alerts behind fullscreen#186
Betafer wants to merge 1 commit into
swellweb:maint-3.5from
Betafer:codex/fix-receiver-login-item-overlays-v3.5

Conversation

@Betafer

@Betafer Betafer commented Aug 21, 2026

Copy link
Copy Markdown

Context

This is a small follow-up to #162. The existing monitor shield uses the same public window level as Notification Center, so a login-item banner created later can still be ordered above the Receiver. On the 2017 21.5-inch iMac, SDL/macOS could also reset the Receiver from the requested shield level back to level 0 after the delayed fullscreen Space transition.

Changes

  • use the first window level above kCGStatusWindowLevelKey
  • stay below public pop-up-menu and screen-saver/lock levels
  • order the Receiver forward only when correcting a changed level
  • react to AppKit fullscreen, screen and Retina-backing change notifications
  • perform only three bounded post-transition checks (250 ms, 1 s and 2.5 s)
  • remove the observers and restore NSNormalWindowLevel on Stop/disconnect

Safety

The patch does not use private APIs or the screen-saver level. Pop-up menus and the lock screen remain above the Receiver. There is no recurring polling: after 2.5 seconds no delayed check remains, and event observers are installed only for an active monitor session.

Validation

  • make test and full Receiver build pass on the maint-3.5 base
  • full integrated suite passes: 752 assertions/checks plus recovery-helper checks
  • native Metal shader/pipeline test passes on the iMac's AMD Radeon Pro 560
  • focused AppKit lifecycle harness verifies: no recurring polling, event-driven recovery, Stop restore and stale-retry cancellation
  • built and code-signature-verified as x86_64 on a 2017 21.5-inch 4K iMac running macOS 13.7.8
  • real sender session accepted after restart with its direct-link TCP connection established
  • after all bounded checks had expired, WindowServer confirmed both Receiver surfaces persisted at layer 26; the previous one-shot implementation had fallen back to layer 0

@Betafer
Betafer force-pushed the codex/fix-receiver-login-item-overlays-v3.5 branch from 44bfdfb to a1e5519 Compare August 21, 2026 21:22
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