cbNP 4.0.0
First release of the native Swift / SwiftUI rewrite of cbNP (the 3.x line was the Python implementation).
Highlights
- Native macOS menu-bar app (SwiftUI
MenuBarExtra) replacing the PyObjC app. - Now-playing via Apple Music / Spotify (AppleScript) and MediaRemote adapter.
Security
- Reject cleartext
ws://for non-loopback endpoints; remote endpoints must usewss://so the auth token is never sent in the clear. - Preferences file (
Pref.json) written with0600permissions since it holds the token.
Reliability / bug fixes
- Preferences load robustly: each field decoded independently with fallbacks, reading both
mediaPlayerand legacymedia_playerkeys, so one bad key no longer wipes all settings. error.lognow rotates past 512 KB instead of growing unbounded.- Fixed a potential pipe-buffer deadlock when draining the MediaRemote adapter's output.
UI
- Cleaned-up popover: compact interval field, uniform field styling, consistent label column and spacing.
Housekeeping
- Added
.gitignore; stopped tracking per-user Xcodexcuserdata; ignore.env/secrets. - App
MARKETING_VERSIONbumped to 4.0.0.