Skip to content

bugfix: not support for macOS 26#874

Open
mp-s9i wants to merge 1 commit into
jordanbaird:mainfrom
mp-s9i:main
Open

bugfix: not support for macOS 26#874
mp-s9i wants to merge 1 commit into
jordanbaird:mainfrom
mp-s9i:main

Conversation

@mp-s9i
Copy link
Copy Markdown

@mp-s9i mp-s9i commented Feb 4, 2026

fix:

  1. crash on macOS 26.
  2. not working during grant permissions for Ice.
  3. showing not proper while hidden icons.

emindeniz99 pushed a commit to emindeniz99/Ice that referenced this pull request Apr 18, 2026
Ice's macos-26 branch left several critical issues that prevent the app
from working correctly on Tahoe, especially 26.3+ / 26.4+. This change
folds in the fixes from the three community PRs that address them (jordanbaird#903,
jordanbaird#911, jordanbaird#922) and the cache-thrash guard from jordanbaird#874.

Changes:

* `Bridging.getActiveMenuBarDisplayID()` falls back to `CGMainDisplayID()`
  when `CGSCopyActiveMenuBarDisplayIdentifier` returns nil, which is now
  the case on macOS 26.4.1. Without the fallback, the item cache's
  `displayID` stayed `nil` and the layout preview rendered as "Unable to
  display menu bar items" even though items existed.

* `MenuBarItemTag.Namespace` on macOS 26 recognizes Ice's own control
  items by window title ("Ice.ControlItem.*") and falls back to the
  owning application's identifiers when the owner isn't Control Center.
  This stops the UUID-namespace feedback loop that left the layout stuck
  on "Loading menu bar items..." after Control Center re-parented Ice's
  status items.

* `SourcePIDCache` caches failed AX lookups for 30 seconds, and the item
  manager no longer invalidates the window-ID cache when `sourcePID` is
  nil. Those two together stopped the thrash where each failed lookup
  triggered another full scan, racing with `IceBarPanel.show()` and
  causing clicks to drop roughly half the time on notched Macs.

* `AXHelpers.menuBarElement(nearDisplayOrigin:)` probes several inset
  points along the leftmost menu bar region instead of hit-testing the
  exact display corner. Single-point probing fails on notched displays
  (outside the rounded-corner mask), next to menu bar accessories such
  as NotchNook, and on Tahoe's translucent menu bar.
  `getApplicationMenuFrame()` and `hasValidMenuBar(in:for:)` both use
  the new helper.

* `MenuBarItemImageCache.compositeCapture` falls back to `item.bounds`
  when `CGSGetScreenRectForWindow` fails and tolerates a one-pixel
  discrepancy in the composite width. This keeps items that Control
  Center has re-parented from being dropped entirely.

* XPC `.isFromSameTeam()` requirement is only applied when the current
  process actually has a team identifier. Ad-hoc signed builds (the
  default when no signing team is configured) do not, and the old
  requirement refused every peer, leaving the `MenuBarItemService`
  unusable. A new `CodeSignInfo` helper inspects the process's code
  signature.

* The settings detail pane is keyed by the current navigation
  identifier on macOS 26 so that `NavigationSplitView` reliably updates
  on the first sidebar click.
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