# Notes from building NotchStar.

> Notes from building NotchStar, a native Mac notch app, written plainly with the real numbers.

Canonical: https://www.notchstar.com/blog/

What worked, what broke, and the numbers, written plainly.

- [How a notch app reads Now Playing on macOS 15.4 and later](https://www.notchstar.com/blog/how-notch-apps-read-now-playing-deep-dive/): A source backed look at reading macOS Now Playing data through MediaRemoteAdapter, with lifecycle, fallback, artwork and failure handling. (2026-11-01)
- [I recorded my app's demo videos without Screen Recording](https://www.notchstar.com/blog/demo-videos-without-screen-recording/): How NotchStar records repeatable SwiftUI demo clips from an offscreen NSPanel, with synthetic events, safe data and measured failure lessons. (2026-11-01)
- [Shipping an indie Mac app: signing and notarization](https://www.notchstar.com/blog/signing-and-notarizing-an-indie-mac-app/): A verified Developer ID release path for an indie Mac app, covering inside out signing, hardened runtime, notarization, stapling and checks. (2026-11-01)
- [The complete guide to the Mac notch: 25 ways to use it](https://www.notchstar.com/blog/mac-notch-complete-guide/): What the Mac notch is good for, and 25 everyday jobs it handles, from parking a file to timing a focus session. Prices as of 7 October 2026. (2026-10-14)
- [How to find what is filling your Mac, and free space safely](https://www.notchstar.com/blog/free-up-space-on-your-mac-without-a-cleaner/): Find what fills your Mac with Finder and Terminal, learn which folders are safe to clear, and what to leave alone. Commands tested, with a 20 minute routine. (2026-10-08)
- [Four AI search tools, nine questions, and one Mac app that was not named](https://www.notchstar.com/blog/four-ai-search-tools-nine-questions-one-mac-app/): NotchStar was named in 0 of 9 AI answers about Mac notch apps. The method, the data on Domain Rating and sources, what changed, and a repeatable audit. (2026-11-04)
- [A panel above the menu bar: NSPanel, window levels and when it may take focus](https://www.notchstar.com/blog/nspanel-above-the-menu-bar/): How a Mac notch app builds a floating NSPanel: window level, nonactivating style, a key window only when typing is needed, and the bugs that shaped it. (2026-11-04)
- [Hover intent: opening a notch panel after 80 ms without flicker](https://www.notchstar.com/blog/swiftui-hover-intent-without-flicker/): SwiftUI onHover fires false exits when a view resizes under a still pointer. How a Mac notch app uses an 80 ms delay and a pointer check to stop the bounce. (2026-11-04)
- [codesign --deep stripped the entitlements, and why the camera would fail only after notarization](https://www.notchstar.com/blog/codesign-deep-stripped-entitlements/): codesign --force --deep replaced a Mac app's entitlements with none. A four step test on a tiny bundle shows it, and how to check an app before notarizing. (2026-11-04)
- [Camera, Calendar, Reminders and Apple Events: the four permissions a notch app asks for](https://www.notchstar.com/blog/four-permissions-a-notch-app-asks-for/): The four macOS permissions a notch app asks for: camera, Calendar, Reminders and Apple Events. Plist keys, prompt timing and denied states, from real code. (2026-11-04)
- [NSImage(contentsOfFile:) blocked for 327 seconds: reading a wallpaper while Spotlight indexes](https://www.notchstar.com/blog/nsimage-contentsoffile-blocked-327-seconds/): NSImage(contentsOfFile:) blocked for 327 seconds on a 500 KB wallpaper while Spotlight indexed. The ImageIO fix, a fresh measurement, and what remains unproven. (2026-11-04)
- [A Swift Task that never ran: RunLoop.run, the main actor and Task.sleep](https://www.notchstar.com/blog/swift-task-never-ran-runloop-main-actor/): A Swift Task never ran while a script pumped RunLoop.run. What the main actor does, the async fix with Task.sleep, and a repro that did not fail. (2026-11-04)
- [ProgressView did not redraw offscreen: drawing your own thin bar in SwiftUI](https://www.notchstar.com/blog/swiftui-progressview-offscreen-thinbar/): A SwiftUI ProgressView stopped redrawing in offscreen captures. The ThinBar and Spinner that replaced it, a pixel check of both, and what is still open. (2026-11-04)
- [An empty accessibility tree offscreen: registering control frames instead](https://www.notchstar.com/blog/macos-accessibility-tree-empty-register-frames/): A scripted recorder could not find SwiftUI buttons by label in an offscreen window. A frame registry fixed it, and an in process check of the tree shows why. (2026-11-04)
- [Clipboard history without a daemon: NSPasteboard changeCount and concealed types](https://www.notchstar.com/blog/nspasteboard-changecount-clipboard-history-concealed/): How a Mac clipboard history polls NSPasteboard changeCount, picks files over text over images, skips concealed types, and avoids recording its own writes. (2026-11-04)
- [Finding new screenshots, and the macOS 27 custom folder bug](https://www.notchstar.com/blog/finding-new-screenshots-macos-27-custom-folder/): How a Mac app finds new screenshots: a file system watcher, a poll, the capture tag, and the macOS 27 key that broke custom folders. (2026-11-04)
- [A license client with no Keychain: a 0600 file, weekly revalidation and a soft wall](https://www.notchstar.com/blog/license-client-without-keychain-swift/): A small macOS license client in Swift: a 0600 JSON file, a weekly silent check that offline never fails, and a trial wall that never touches user data. (2026-11-04)
- [Dodo Payments license API gotchas: 201 not 200, and the live host](https://www.notchstar.com/blog/dodo-payments-license-api-gotchas/): Using Dodo Payments license keys from a macOS app: the public endpoints, 201 on activate, the live host the docs omit, 422 limit errors and how to map them. (2026-11-04)
- [Vercel rewrites to an external host returned the site's own 404 with trailingSlash](https://www.notchstar.com/blog/vercel-rewrite-trailing-slash-404/): A Vercel rewrite to an external host returned the site's own 404 when trailingSlash was true. The symptom, the explicit fix, curl checks and open questions. (2026-11-04)
- [Sensitive Vercel environment variables cannot be pulled back](https://www.notchstar.com/blog/vercel-sensitive-env-variables-cannot-be-pulled/): Vercel sensitive (now Secret) environment variables are write only. What that meant when a key was needed from another project, and where to keep real secrets. (2026-11-04)
- [Why a disk tool should only ever move to the Trash](https://www.notchstar.com/blog/disk-cleaner-only-move-to-trash-swift/): How a Swift disk cleaner stays safe: no delete calls, a path gate, a Trash only rule, tests for the refusals, and an honest list of what the gate misses. (2026-11-04)
- [A ports view built on lsof: listeners, working directories and a two press Stop](https://www.notchstar.com/blog/macos-lsof-ports-view-two-press-stop/): Find which process listens on a port on macOS with lsof, map it to a project folder, and stop it safely. Real Swift parsing code, output and limits. (2026-11-04)
- [A shadow test that sampled an icon: testing flat design with pixels in Swift](https://www.notchstar.com/blog/swift-pixel-test-shadow-sampled-an-icon/): Test a SwiftUI shadow with pixels: render a view into NSBitmapImageRep, sample luminance, and avoid sampling an icon. Real Swift code from a Mac app. (2026-11-04)
- [XcodeGen for a one person Mac app: project.yml, tests and a reproducible build](https://www.notchstar.com/blog/xcodegen-for-a-one-person-mac-app/): Install XcodeGen, write a project.yml for a Mac app with tests and an embedded framework, and generate Info.plist and entitlements. A real 122 line spec. (2026-11-04)
- [A universal DMG in a shell script: lipo, hdiutil, notarytool and stapling](https://www.notchstar.com/blog/universal-dmg-shell-script-lipo-hdiutil-notarytool/): Build a universal Mac app, create a DMG with hdiutil, notarize with notarytool, staple, and verify with spctl. A real release.sh with checks and its limits. (2026-11-04)
- [Measuring what a menu bar app costs while idle: a method, with numbers](https://www.notchstar.com/blog/measure-menu-bar-app-idle-cpu-memory-mac/): How to measure a Mac menu bar app's idle CPU, memory and wake ups with ps, top and footprint, with real numbers from three runs and why one window misleads. (2026-11-04)
- [How a one person Mac app handles email](https://www.notchstar.com/blog/how-a-one-person-mac-app-handles-email/): Who sends what for NotchStar: license emails from Dodo Payments, a support inbox on its own domain, the DNS records behind it, and what is still weak. (2026-11-10)

## Practical Mac guides.

Step by step help for files, screenshots, music and everyday work. Available in [French](https://www.notchstar.com/fr/guides/) and [Belgian Dutch](https://www.notchstar.com/nl-be/guides/).

- [A Mac notch app with clipboard history, a file shelf and timers in one](https://www.notchstar.com/guides/mac-notch-app-clipboard-file-shelf-timers/): Which Mac notch apps put clipboard history, a file shelf, timers, a teleprompter and a mirror in one app? Compared from official pages, with prices.
- [Is NotchStar safe? Signing, permissions and what it sends](https://www.notchstar.com/guides/is-notchstar-safe/): NotchStar is signed and notarized by Apple, needs no account and sends nothing unless you opt in. See every permission it asks for and how to check it yourself.
- [Mac notch apps you can buy once, with no subscription, priced](https://www.notchstar.com/guides/best-one-time-purchase-mac-notch-apps/): Which Mac notch apps cost one payment instead of a subscription? Prices, Mac counts, trials and macOS versions from official pages, checked 4 November 2026.
- [Mac screenshot tray apps compared: keep screenshots handy, drag them out](https://www.notchstar.com/guides/mac-screenshot-tray-apps/): Compare Mac apps that hold screenshots in a tray so you can drag them into chats, email or folders: notch, menu bar and edge trays, checked 4 November 2026.
- [Notch teleprompter apps for Mac, compared with prices](https://www.notchstar.com/guides/best-mac-notch-teleprompter-apps/): Compare Mac teleprompters in the notch: voice following, hiding from screen sharing, price and macOS version, from official pages checked 4 November 2026.
- [Check your Mac camera before a video call](https://www.notchstar.com/guides/check-mac-camera-before-video-call/): Preview your camera, check permissions and confirm the camera selected in your meeting app. Use a mirror preview without mistaking it for a recording test.
- [Mac notch music controls not working: what to check first](https://www.notchstar.com/guides/mac-notch-music-controls-not-working/): Check the player, missing track information and Music or Spotify permissions before reinstalling a notch app. Learn which missing controls are expected.
- [Share Mac screenshots from the notch without losing the file](https://www.notchstar.com/guides/share-screenshots-from-mac-notch/): Capture a screenshot, find its saved file and send it from the Mac notch. Understand tray expiry, multiple selections and what happens to the original.
- [A file shelf for Mac: stop stacking files on the Desktop](https://www.notchstar.com/guides/airdrop-shelf-for-mac/): A file shelf is a temporary holding area for drag and drop. Learn the workflow, why it beats the Desktop, and how an AirDrop zone speeds up sharing.
- [A privacy checklist for any Mac notch app](https://www.notchstar.com/guides/notch-app-privacy-checklist/): Seven checks to make before you install a notch app: permissions, notarization, network use, data storage and what to do if something looks off.
- [Dynamic Island for Mac: what it is and what you can get](https://www.notchstar.com/guides/dynamic-island-for-mac/): The Mac has no Dynamic Island, but notch apps can imitate one. See what live activities are, which apps do it and what to expect.
- [How notch apps read what is playing, after macOS 15.4](https://www.notchstar.com/guides/how-notch-apps-read-now-playing/): Why showing the current song got harder in macOS 15.4, how open source adapters work around it, and the tradeoffs. Tested, with real findings.
- [How to run a Pomodoro timer on your Mac](https://www.notchstar.com/guides/pomodoro-timer-on-mac/): The Pomodoro technique in practice: block lengths, breaks, what to do when you get interrupted, and how to run it from the Mac notch.
- [Mac clipboard history in the notch: how to use it well](https://www.notchstar.com/guides/mac-clipboard-history-in-the-notch/): Why a clipboard history helps, how to search it, what it should never record, and how NotchStar's notch version handles privacy.
- [Mac notch menu bar replacement: fix hidden icons](https://www.notchstar.com/guides/mac-menu-bar-icons-hidden-by-notch/): If menu bar icons disappear behind the MacBook notch, compare built in fixes, menu bar managers, TopNotch and notch utilities before replacing anything.
- [Notch apps for Macs without a notch](https://www.notchstar.com/guides/notch-apps-for-macs-without-a-notch/): Do notch apps work on iMac, Mac mini or older MacBooks? Yes, often as a floating pill. Here is what to expect and how NotchStar handles it.
- [The best Mac notch apps in 2026, compared fairly](https://www.notchstar.com/guides/best-mac-notch-apps/): Compare thirteen Mac notch apps from their official pages, with prices, requirements, strengths, limits and who each one suits. Updated 4 November 2026.
- [The MacBook notch explained](https://www.notchstar.com/guides/macbook-notch-explained/): What the notch is, which MacBooks have it, why menu bar icons disappear behind it, and the options for working around or making use of it.
- [Using a teleprompter on your Mac for calls and video](https://www.notchstar.com/guides/teleprompter-on-mac/): How to read a script on camera without looking like you are reading: placement, pacing, writing for the ear and a notch based setup.
- [What is a notch app? A plain English guide](https://www.notchstar.com/guides/what-is-a-notch-app/): A notch app turns the dead space around the MacBook notch into a tiny control center. Here is how they work, what they do and what to watch for.
