fix(app-detection): match macOS nested app identities#196
Conversation
|
@chenqianhe can you provide an example app we can test with? |
I originally ran into this with a game platform app, but that may not be a convenient test case for everyone. I asked AI to help find some more common examples of real nested macOS apps that should be easier to test, such as Xcode Simulator or Instruments. The key case is a focusable app whose .app bundle lives inside another .app bundle, not just an Electron helper process. Examples:
These are normal focusable apps/windows, but their bundle path is nested under another outer .app. The behavior to test is: when the foreground app resolves to the nested bundle, Mouser should include both the inner app identity and the outer containing .app identity, so a specific nested profile can win while an outer-app profile can still work as fallback. |
|
@chenqianhe thanks will try with ios simulator |
…#181, TomBadash#184, TomBadash#185, TomBadash#191, TomBadash#193, TomBadash#195, TomBadash#196, TomBadash#198, TomBadash#216) Merge and adapt the following upstream pull requests, resolving conflicts with MX Master 4 haptic and Actions Ring features: Clean merges: - PR TomBadash#193: symlink-safe config save via os.path.realpath() - PR TomBadash#198: fractional hscroll threshold (0.1 default, int/float compat) - PR TomBadash#185: pass through OS mouse events when no Logitech device connected - PR TomBadash#180: persist hardware-reported DPI across restarts - PR TomBadash#181: memoize Backend list properties for QML UI performance - PR TomBadash#195: ping-pong desktop cycling action (macOS Spaces) Conflict-resolution merges: - PR TomBadash#196: nested macOS app identity matching with tuple identities - PR TomBadash#191: Shift+wheel horizontal scroll translation (cross-platform) - PR TomBadash#216 (partial): phase-aware trackpad filter + 0.01 hscroll floor Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix macOS per-app profile matching for apps that launch nested or helper app bundles.
Previously, Mouser matched the foreground macOS app using a single identifier. Some apps launch secondary
.appbundles from inside the main application bundle, which caused profile matching to miss the configured host app profile. This PR changes foreground app detection to return an ordered tuple of app identities, from the most specific nested app to broader host app identities, so profile lookup can first match a nested app profile and then fall back to the host app profile.Changes