slab/menuband: MIDI default off, update banner, MongoDB crash logs, Notepat.com master
Defaults: - Fresh installs no longer auto-enable MIDI mode. Most users hear the built-in synth first; DAW routing is the opt-in path. Existing users' choice is preserved via the UserDefaults presence-check (only the fallback default for first-launch changes). Update banner: - New UpdateChecker.swift fetches `latest.json` from assets.aesthetic.computer/menuband/, compares against the bundled CFBundleShortVersionString via dotted-integer ordering. Caches 1h. - Popover shows a Tahoe-tinted banner under the subtitle when newer is available, with a button that opens aesthetic.computer/menuband. - Manifest at assets.aesthetic.computer/menuband/latest.json (DO Spaces, hosted via the existing assets sync — bump its `version` field to trigger the banner on next release). Crash logs → MongoDB: - New netlify function `menuband-logs.mjs` stores POSTed crash reports in the `menuband-logs` collection (mirrors `os-install-reports`). Doc shape: {receivedAt, filename, version, bytes, log, meta}. 5 MB body cap, sanitized filename, no auth. - lith/server.mjs routes `/menuband-logs` through `directFn` with an inline `express.text({type:"*/*", limit:"5mb"})` body parser, so event.body is the raw .ips text. Dropped the previous filesystem write + console.log entirely — nothing hits lith stdout. UI copy: - Input segmented control middle label: "Notepat" → "Notepat.com" (the domain it points users to, not the app name). Re-deployed: - App + DMG re-notarized + stapled. DMG submission 61c140ed-75d1-499f-bc8b-4ee771f531d7. md5 2b9d32b598f82a916be953620e741d71. Page download URL bumped to ?v=2b9d32b for cache-bust. User-side install: - Removed legacy ~/Applications/MenuBand.app (without space). - Reinstalled fresh ~/Applications/Menu Band.app via install.sh. - Reset notepat.midiMode UserDefault to false so this user's running app reflects the new off-by-default behavior. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>