Skip to content

Releases

NotchIsland 1.3.2

Choose a tag to compare

@Edwardrem Edwardrem released this 31 Oct 16:37

What's new in 1.3.2

Fixed: a TV app (or QuickTime Player, Podcasts…) stream dropped out of the island after a few minutes. The process that reads the system Now Playing feed locked up on its first playback notification, and the island lost the stream about ten seconds later. The feed's notification handling has been rebuilt, and both the feed and the app now watch for silence and replace a feed that goes quiet before the island notices.

Every app that publishes is listed. The feed now reports each app with an item, not only the one macOS has elected as "now playing". With a browser tab paused in the background and the TV app playing, the island keeps the TV app; each app is its own source chip.

Commands never land on the wrong app. macOS delivers a Now Playing command to the elected app whichever app is named, so NotchIsland now sends a feed command only to that app. For the TV app and QuickTime Player it uses AppleScript instead when they are not the elected app, which asks for Automation permission once.

Updating: Settings ▸ Updates ▸ Update Now in 1.2.0 or later, or download the DMG below. Permission grants carry over (same signing identity).

NotchIsland 1.3.1

Choose a tag to compare

@Edwardrem Edwardrem released this 31 Oct 15:45

Fixed

  • A stream from the system feed vanished after about ten seconds unless playback changed: the TV app, QuickTime Player and friends showed up, then disappeared. The adapter's two-second heartbeat never ran because its timer was released as soon as the function that created it returned. The island now keeps such a stream for as long as it plays.
  • The Now Playing feed process could outlive the app. Apple's perl, which runs the adapter for the system feed (new in 1.3.0), kept going when NotchIsland was ended without warning, which is how an in-app update relaunches it, and would pile up one copy per relaunch. It now quits on its own within two seconds of losing its parent, and as soon as a write to the app fails.

In 1.3.0, a few hours earlier

  • Now Playing from any app: the TV app, Podcasts, QuickTime Player, IINA, a browser without its JavaScript switch, Music without Automation. Anything that publishes to Control Center shows in the island with artwork, progress, play/pause, next/previous and seek, next to the scripted sources. No permission needed. See the 1.3.0 notes.

Install

  • On 1.2.0 or 1.3.0: Settings ▸ Updates ▸ Update Now, or wait for the daily check. Grants carry over, no Gatekeeper dialog.
  • Fresh install or older versions: download NotchIsland.dmg below and drag NotchIsland into Applications (replace the old one). macOS says "Apple could not verify NotchIsland is free of malware" because the app is not notarized: on macOS 15 and later click Done, then System Settings ▸ Privacy & Security ▸ "NotchIsland was blocked" ▸ Open Anyway; on macOS 13 / 14 right-click it in Applications ▸ Open; or in Terminal xattr -dr com.apple.quarantine /Applications/NotchIsland.app.

NotchIsland 1.3.0

Choose a tag to compare

@Edwardrem Edwardrem released this 31 Oct 15:39

Added

  • Now Playing from any app. The TV app, Podcasts, QuickTime Player, IINA, a browser whose JavaScript switch is off, Music without an Automation grant: anything that publishes to Control Center now shows in the island with artwork, progress, play/pause, next/previous and seek, and joins the source chips next to the scripted streams. macOS stopped handing that feed (MediaRemote) to third-party apps in 15.4, so NotchIsland reads it the way the system still allows: through Apple's own /usr/bin/perl, which loads a small adapter library shipped in the bundle (Sources/MediaRemoteAdapter) and streams one JSON line per change. The scripted sources (Music, Spotify, VLC, browser tabs) keep their richer control and per-tab chips; the feed fills in everything else and stands in when a scripted app cannot be reached. No permission is needed for it.

Changed

  • Settings ▸ Modules names the feed; the browser note says a browser without the JavaScript switch still shows as one stream.

Install

  • On 1.2.0: open Settings ▸ Updates and click Update Now (or wait for the daily check: the island says when it is ready). Grants carry over, no Gatekeeper dialog.
  • Fresh install or older versions: download NotchIsland.dmg below and drag NotchIsland into Applications (replace the old one). macOS says "Apple could not verify NotchIsland is free of malware" because the app is not notarized: on macOS 15 and later click Done, then System Settings ▸ Privacy & Security ▸ "NotchIsland was blocked" ▸ Open Anyway; on macOS 13 / 14 right-click it in Applications ▸ Open; or in Terminal xattr -dr com.apple.quarantine /Applications/NotchIsland.app. Releases since 1.0.1 share one signing certificate, so grants carry over.

NotchIsland 1.2.0

Choose a tag to compare

@Edwardrem Edwardrem released this 31 Oct 10:32

Added

  • Updates from inside the app. Settings ▸ Updates asks GitHub Releases for the latest version (once a day while Check for updates is on, or with Check Now), shows what's new, and Update Now downloads the DMG, checks that the app inside is signed with the same certificate as the running copy, swaps it into place and relaunches. Every permission grant carries over, and Gatekeeper's "could not verify" dialog does not appear because nothing goes through a browser. A new version is announced once in the island (tap the HUD for the notes), as a line in the hover readout, as an Update button in the shade and as Update to x.y.z… in the menu bar; Skip silences one version. A copy that cannot be replaced (folder not writable) gets the DMG opened in Finder instead; a source or ad-hoc build only links to the release page.
  • Settings ▸ General ▸ Theme: Shadow under the open island switch.

Changed

  • The island's shadow is a window's now: soft and mostly below the surface, instead of the dark halo that bled some 25 px into the menu bar on either side of the open island. The notch and its ears cast none.
  • The update check is the app's only network request and sends nothing about you or your Mac. README and website say so instead of "no network".

Install

  1. Download NotchIsland.dmg below and drag NotchIsland into Applications (replace the old one). This is the last time: from 1.2.0 on, Settings ▸ Updates installs new versions in place.
  2. macOS says "Apple could not verify NotchIsland is free of malware": the app is not notarized (no paid Developer ID). To open it anyway:
    • macOS 15 and later: click Done, then System Settings ▸ Privacy & Security ▸ scroll to "NotchIsland was blocked" ▸ Open Anyway ▸ Open.
    • macOS 13 / 14: right-click NotchIsland in Applications ▸ Open ▸ Open.
    • Or in Terminal: xattr -dr com.apple.quarantine /Applications/NotchIsland.app
  3. Updating from 1.0.1, 1.1.0 or 1.1.1: same signing certificate, so every grant carries over. Updating from 1.0.0: on first launch NotchIsland clears the stale grants and asks for Accessibility again; add it under Full Disk Access for notifications, then relaunch.

NotchIsland 1.1.1

Choose a tag to compare

@Edwardrem Edwardrem released this 30 Oct 11:26

Fixed

  • Permissions that System Settings showed as allowed did not apply, and every restart or update looked as if it had lost them. macOS ties each grant to the signature of the build that asked for it. A grant made to 1.0.0 (signed ad hoc, so a different app to macOS after every build) or to a swift run binary never matches the signed releases, yet System Settings keeps listing it switched on, and flipping the switch does not refresh the stored requirement. NotchIsland now repairs this itself: on the first launch of a build with a different signature it removes its stale entries (tccutil reset) and asks for Accessibility again. Settings ▸ Permissions marks a grant that was there before and no longer applies, offers Allow… and Reset… per row, explains the leftover development entries (the ones with a terminal icon), and has Reset All Permissions… for Automation, Bluetooth and Camera.
  • Accessibility granted while the app was running was not used until a relaunch: the hotkey kept its observe-only fallback. The CGEvent tap is now re-armed within three seconds of a change (and dropped again if the grant goes away). The island shows a hint while Accessibility is off.
  • The app never asked for Accessibility, it only checked. Allow… in Settings and the first launch after an update now show the system dialog.
  • Relaunch NotchIsland restarts the launch-at-login job in place instead of starting a second copy next to it.

Changed

  • scripts/make-dmg.sh refuses to sign a release with a certificate other than the one recorded in Resources/release-identity.sha1 (the hash macOS stores with every grant) unless NEW_IDENTITY=1, and refuses an ad-hoc build unless ALLOW_ADHOC=1. scripts/signing-identity.sh --fingerprint prints the current certificate. Either slip would make every user grant everything again.
  • Settings ▸ Permissions ▸ About names the signing certificate and what it means for grants.

Install

  1. Download NotchIsland.dmg below and drag NotchIsland into Applications (replace the old one).
  2. macOS says "Apple could not verify NotchIsland is free of malware": the app is not notarized (no paid Developer ID). To open it anyway:
    • macOS 15 and later: click Done, then System Settings ▸ Privacy & Security ▸ scroll to "NotchIsland was blocked" ▸ Open Anyway ▸ Open.
    • macOS 13 / 14: right-click NotchIsland in Applications ▸ Open ▸ Open.
    • Or in Terminal: xattr -dr com.apple.quarantine /Applications/NotchIsland.app
  3. Updating from 1.0.x or 1.1.0: on its first launch NotchIsland clears the grants that belonged to the earlier build and asks for Accessibility again; switch it on. For notifications add NotchIsland under System Settings ▸ Privacy & Security ▸ Full Disk Access (click +, pick it from Applications), then relaunch. If anything still reads as missing while the switch is on, open NotchIsland's Settings ▸ Permissions and click Reset… next to it. From here on, grants carry over to every later release: all releases since 1.0.1 share one signing certificate.

NotchIsland 1.1.0

Choose a tag to compare

@Edwardrem Edwardrem released this 29 Oct 20:29

Fixed

  • The island stuck on one browser while another one played. The browser status script stopped at the first tab with any media element, even a paused preview (YouTube's home page keeps one), so a tab playing further along the tab strip was never seen and the island stayed on whatever it had shown before. Every tab is now read and every stream is reported.

Added

  • Multiple sources. Every player and every browser tab with media is a stream. The island follows the one that started playing most recently (audible before muted), stays on the current one while nothing plays, and lists the others as chips in the media card. Tap a chip to switch; the choice holds until a new stream starts. Clicking the artwork of a browser stream jumps to its tab.
  • Safari and every Chromium browser next to Chrome, Brave and Edge: Arc, Vivaldi, Opera, Opera GX, Chromium and the beta/dev/canary channels. Safari needs Develop ▸ Developer Settings ▸ Allow JavaScript from Apple Events (turn on Show features for web developers in Settings ▸ Advanced first). Chromium browsers keep their one-time View ▸ Developer ▸ Allow JavaScript from Apple Events. Firefox has no scripting bridge.
  • NOTCHISLAND_MEDIA_LOG=1 logs every poll's streams and the chosen one.

Changed

  • Media that never played (hover previews, blocked autoplay) and muted looping decorations (landing-page hero videos) are ignored. Each tab gets at most 3 s, so a hung page can no longer freeze the island for a minute. A stream that one poll missed is held for a couple of seconds before the island moves on, so a tab closing elsewhere does not flip the card back and forth.

Install

  1. Download NotchIsland.dmg below and drag NotchIsland into Applications.
  2. macOS says "Apple could not verify NotchIsland is free of malware": the app is not notarized (no paid Developer ID). To open it anyway:
    • macOS 15 and later: click Done, then System Settings ▸ Privacy & Security ▸ scroll to "NotchIsland was blocked" ▸ Open Anyway ▸ Open.
    • macOS 13 / 14: right-click NotchIsland in Applications ▸ Open ▸ Open.
    • Or in Terminal: xattr -dr com.apple.quarantine /Applications/NotchIsland.app
  3. Allow NotchIsland to control each player or browser when macOS asks (Automation), and for notifications turn on NotchIsland under System Settings ▸ Privacy & Security ▸ Full Disk Access, then relaunch.

NotchIsland 1.0.1

Choose a tag to compare

@Edwardrem Edwardrem released this 29 Oct 12:19

Fixed

  • "Notifications unavailable: authorization denied." NotchIsland reads Notification Center's own store, which macOS only opens for apps with Full Disk Access. The old readable-file check used access(2), which Full Disk Access does not gate, so the real open failed later with SQLite's SQLITE_AUTH and Settings ▸ Permissions still showed a green check. The app now opens the store for real, shows a clear hint in the island (click it to jump to the Full Disk Access pane), and Settings ▸ Permissions explains the steps and offers a Relaunch button. The store is re-checked every 10 s so a new grant is picked up.

Changed

  • Releases are now signed with a stable self-signed NotchIsland Developer identity instead of ad-hoc. macOS ties Full Disk Access and Accessibility grants to the app's signature, and an ad-hoc signature changes with every build, which silently voided those grants on each update. After installing 1.0.1, grant them once more; later updates keep them. New script: scripts/signing-identity.sh.
  • The DMG includes a Read me first.txt with the first-launch steps below. scripts/make-dmg.sh gained a Developer ID + notarization path for when a paid Apple Developer membership is available (that is the only way to remove the dialog entirely).
  • NOTCHISLAND_PREVIEW=settings (with NOTCHISLAND_SETTINGS_TAB=…) opens the Settings window for screenshots.

Install

  1. Download NotchIsland.dmg below and drag NotchIsland into Applications.
  2. macOS says "Apple could not verify NotchIsland is free of malware": the app is not notarized (no paid Developer ID). To open it anyway:
    • macOS 15 and later: click Done, then System Settings ▸ Privacy & Security ▸ scroll to "NotchIsland was blocked" ▸ Open Anyway ▸ Open.
    • macOS 13 / 14: right-click NotchIsland in Applications ▸ Open ▸ Open.
    • Or in Terminal: xattr -dr com.apple.quarantine /Applications/NotchIsland.app
  3. System Settings ▸ Privacy & Security ▸ Full Disk Access ▸ turn on NotchIsland (click + and pick it from Applications if it is not listed), then relaunch.

NotchIsland 1.0.0

Choose a tag to compare

@Edwardrem Edwardrem released this 29 Oct 09:36

First public release.

Download: NotchIsland.dmg below (2.4 MB, macOS 13+, Apple silicon). Drag NotchIsland to Applications, then right-click ▸ Open the first time (the app is ad-hoc signed, not notarised; on macOS 15+ use System Settings ▸ Privacy & Security ▸ Open Anyway).

What's inside

  • One true-black island that flows out of the notch: compact ears, live-activity HUD, hover readout, click-down shade, ⌥ Space launcher
  • Now Playing from Music, Spotify, VLC and Chrome / Brave / Edge tabs, with scrubber, transport and system volume
  • Notification banners and an app-grouped shade with history
  • Live activities: charger, low battery, volume, AirPods battery, downloads progress, timer done, custom activities from Shortcuts
  • Timer / Pomodoro, next calendar event with Join, Shelf with AirDrop, clipboard history, quick toggles (Dark Mode, Keep Awake, Wi-Fi, Mirror, Focus), mic / camera / Focus indicators
  • Settings window: modules, hover delay, hotkey, accent colour, haptics, hide per app / full screen, launch at login

Website: https://edwardrem.github.io/NotchIsland/