What to Download (below)
- Mac users: download the .dmg
- Windows users: download the "setup" .exe
- Linux: you know what you want
What's Changed
Root cause identified: The jose library v6 is ESM-only ("type": "module") and was loaded via await import('jose') from the CJS main process. In packaged Electron apps, dynamic ESM imports from CJS can fail silently due to module resolution differences between dev and production. This is the most likely reason Apple Music auth fails for the end user despite the .p8 key being present in the build.
Key changes:
-
Replaced jose with Node.js built-in crypto (
main.js:1838-1870) - Usescrypto.createPrivateKey()+crypto.sign()withdsaEncoding: 'ieee-p1363'for ES256 JWT signing. Zero external dependencies, works reliably in all environments. -
Fixed
playlists-delete-from-sourcehandler (main.js:4000) - Was only checkingstore.get('applemusic_developer_token'), now properly falls back togeneratedMusicKitTokenlike all other handlers. -
Better error diagnostics -
sync:check-authnow returns specific reasons ("Missing developer token" vs "Missing user token") and the UI toast shows the actual error instead of a generic message. -
Added
musickit:token-statusdiagnostic IPC (preload.js,main.js:2123) - Can be called from DevTools console viawindow.electron.musicKit.tokenStatus()to check: key file found, token generated, user token stored, etc.
If this fix works (which I believe it will), the developer token should generate correctly from the bundled .p8 key on the user's machine.
Also:
- A number of other improvements to error handling in Apple Music connections
- Upgrade SoundCloud OAuth to 2.1 with PKCE and CSRF protection #363
Full Changelog: v0.7.0-alpha.9...v0.7.0-alpha.10