The receive path is genuinely done: macos_deep_link.zig registers a kAEGetURL AppleEvent handler, delivers through __craftDeliverDeepLink, and buffers a URL that arrives before the page loads. But nothing can cause macOS to send one:
macos_deep_link.zig:24says outright that scheme registration is not automated.macOSInfoPlist(package.ts:604-621) emits noCFBundleURLTypes.urlSchemesexists as a type field (types.ts:1556,1723) that nothing consumes.
So an app that declares urlSchemes: ['myapp'] typechecks, packages, and never receives a link. (Android has the better half here — renderAndroidDeepLinks is real.)
Ask: make packageApp consume urlSchemes into CFBundleURLTypes in the generated Info.plist, and fail loudly if deepLink.onUrl is reachable but the bundle declares no schemes. Concrete downstream use waiting on it: harness://pair?code=… would turn stacksjs/harness's device pairing from type-a-code into one tap.
🤖 Generated with Claude Code