slab/menuband: MIDI default off, update banner, MongoDB crash logs, Notepat.com
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>