Skip to content

[Overlay] Fix hit-testing via declared interaction regions - #273

Merged
Programistich merged 10 commits into
devfrom
fix/overlay-hit-testing
Aug 2, 2026
Merged

[Overlay] Fix hit-testing via declared interaction regions#273
Programistich merged 10 commits into
devfrom
fix/overlay-hit-testing

Conversation

@Programistich

@Programistich Programistich commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Replace private hit-test traversal (relied on UIHostingController view hierarchy internals that broke on iOS 18 and again on iOS 26) with an explicit interaction mode each overlay declares: fullscreen blocks all touches, regions([CGRect]) passes through everywhere else. Also adds an Options screen to manually verify tap passthrough for notifications, alerts, and popups.

Tested on ios 16, 17, 18, 26

Siri Shortcut phrases must contain \(.applicationName); a hardcoded
"Find Flipper" phrase fails App Shortcuts validation and breaks the build.
Replace private hit-test traversal (relied on UIHostingController
view hierarchy internals that broke on iOS 18 and again on iOS 26)
with an explicit interaction mode each overlay declares: fullscreen
blocks all touches, regions([CGRect]) passes through everywhere else.
Also adds an Options screen to manually verify tap passthrough for
notifications, alerts, and popups.
Wrap the Options debug menu entry in #if DEBUG alongside the
existing Infrared layouts item so it is compiled out of Release.
Fix App Shortcuts phrase missing applicationName placeholder
Mirrors the setup from busy-app/iOS: automated PR review via Pullfrog,
XcodeBuildMCP wired to the Flipper(iOS) scheme, and a CLAUDE.md (symlinked
as AGENTS.md) describing build/test commands and package architecture.
Auto-lints .swift files with SwiftLint right after Claude edits them,
using the project's Flipper/.swiftlint.yml config, with a fallback to
the vendored Flipper/swiftlint binary if the system one isn't installed.
  Set up LLM tooling: MCP config, CI review, CLAUDE.md
Replace private hit-test traversal (relied on UIHostingController
view hierarchy internals that broke on iOS 18 and again on iOS 26)
with an explicit interaction mode each overlay declares: fullscreen
blocks all touches, regions([CGRect]) passes through everywhere else.
Also adds an Options screen to manually verify tap passthrough for
notifications, alerts, and popups.
Wrap the Options debug menu entry in #if DEBUG alongside the
existing Infrared layouts item so it is compiled out of Release.
@Programistich
Programistich merged commit 5e5617c into dev Aug 2, 2026
1 check failed
@Programistich
Programistich deleted the fix/overlay-hit-testing branch August 2, 2026 15:57
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