- Keep an NSMetadataQuery warm and merge its snapshot into manual sync so
the first tap sees songs the Mac just uploaded (fixes sync-twice bug)
- Skip songs whose bytes haven't reached iCloud yet (Mac still uploading)
- Report stragglers as pending after 5s instead of stalling: banner shows
'Added N songs · M more shortly' / 'N songs almost ready'
- Progress counts only real downloads (1/2, not 15/80)
- Concurrent artwork sync retained; remove sync-complete notification
- Route all sync logging through os_log unified logging (mmLog)
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Xy8SPh94Bg4afKzBuvbWEX
- All iCloud downloads start up front (parallel) instead of one-at-a-time;
250ms completion polling — sync drops from ~20s/song to batch speed
- Sync runs in the background: no blocking overlay, menu row shows live
"syncing… n/N", songs appear in the library as each file lands
- "Added N songs" toast on completion; local notification if app inactive
- Playback undisturbed during sync
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RxoH8d7osdkiL83F9G8KrW
- Swipe left/right on the touchpad skips next/previous (axis-locked, haptic)
- Songs shuffle is now truly random each advance — repeats allowed, CD-changer style
- iOS icon on light grey so the player silhouette reads on any wallpaper
- Site: lighter icon + tightened promo video (one title card, straight into demo)
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RxoH8d7osdkiL83F9G8KrW
- GitHub Pages: flagship tandem video as hero, iOS preview video, refreshed
Mac gallery + iOS shots, What's New 1.3.0, equalizer feature card
- README: v1.3.0 notes, new promo screenshots, App Store links (id6757622797)
- ScreenshotsMac/ScreenshotsIOS replaced with the App Store board sets
- marketing/ (local-only, gitignored) now holds all raw recordings and assets
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RxoH8d7osdkiL83F9G8KrW
- Equalizer restored (flat/rock/pop/jazz/classical/hip-hop) via AVAudioUnitEQ,
playback migrated to AVAudioEngine with behavior-preserving player wrapper
- Equalizer first in settings; Tip Jar removed from settings (main menu only)
- Preset persisted and applied live to current playback
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RxoH8d7osdkiL83F9G8KrW
- System review prompt (once per version, 4th+ launch, after sync/play engagement)
- Sync UI responds instantly on tap; iCloud enumeration moved off the main actor
- Guard against double-tap during sync
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RxoH8d7osdkiL83F9G8KrW
- New app icon across macOS + iOS icon sets (player face: purple menu screen + touchpad)
- Tip Jar surfaced as a main-menu item on iOS (between sync library and song count)
- Version bump to 1.3.0, build 4
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RxoH8d7osdkiL83F9G8KrW
- Update yt-dlp to 2026.02.04 and add mweb client workaround for YouTube SABR streaming
- Fix project entitlements: Release uses sandboxed entitlements, Debug uses direct distribution
- Add Export to Downloads and Reveal in Finder context menu options for direct builds
Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Rename "Support" menu to "Tip Jar" to avoid confusion with app support
- Add descriptive labels to tip options (Small Tip, Nice Tip, Amazing Tip, Unreal Tip)
- Update screenshots and refactor iOS player files
Addresses App Store Guideline 1.1.6 feedback about misleading IAP labeling.
Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Replace iPod references with Zune HD throughout README and website
- Replace old iOS screenshots with new Zune-themed screenshots
- Remove old iPod-style screenshots from ScreenshotsIOS and docs
- Update GitHub Pages with new screenshots and descriptions
Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Replace Mac and iOS app icons with new logo
- Add new iOS screenshots and promo image
- Remove alpha channels from screenshots for App Store compliance
- Update docs with new screenshots and icon for GitHub Pages
- Add ZunePlayerView and related components
- Remove old iPodView and ClickWheelView
Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Allows users to open the app's iCloud folder in Files app
- Users can manually add MP3s without using Mac app
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Add fallback to access iCloud via Mobile Documents folder
- Works for non-sandboxed apps where url(forUbiquityContainerIdentifier:) returns nil
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Add landing page (docs/index.html) with real screenshots
- Add Mac App Store screenshots (2880x1800)
- Add iOS screenshots to docs folder
- Add direct download entitlements (non-sandboxed)
- Update PlayerViewModel with download availability check
- Update README with download links and screenshots
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Added ffmpeg static binary (62MB, self-contained)
- Downloads now work without any homebrew dependencies
- Both yt-dlp and ffmpeg bundled in app
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Added yt-dlp_macos standalone binary (no Python required)
- Updated download code to use yt-dlp directly
- Checks bundled binary first, then homebrew fallback
- Much simpler and more reliable
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Initial message: "Preparing sync... This may take a moment"
- During sync: "Syncing 'Track Name' (1 of 7)"
- User sees which song is downloading so app doesn't appear frozen
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Removed migration complexity and legacy UserDefaults code
- Library loads from iCloud, builds fresh if not found
- iCloud files downloaded locally for offline use
- Cleared old cached data for clean start
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Library now saves to iCloud JSON file (like playlists)
- Auto-detects old ~/Music/MyMusic paths and triggers rescan
- Keeps local UserDefaults backup
- Metadata changes on Mac now sync to iOS
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Downloads all tracks and artwork on app launch
- Files are cached locally for offline playback
- Uses startDownloadingUbiquitousItem to trigger iCloud download
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Mac now uses iCloud container exclusively
- Removed bidirectional sync logic (no longer needed)
- Local Application Support is only a fallback if iCloud unavailable
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <[email protected]>
- musicDirectory now returns iCloud container when available
- Fixes artwork and tracks not loading after sandbox enabled
- copyToiCloud is now a no-op when already using iCloud
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Change local storage from ~/Music/ to Application Support (sandboxed)
- iCloud sync still works as primary storage
- Application Support is only used as fallback when iCloud unavailable
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Highlight download songs from links as key feature
- Add clone/build instructions for developers
- Add yt-dlp and ffmpeg prerequisites
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Add 6 color-themed screenshots (black, white, red, blue, green, pink)
- Rename to Music in 2001 throughout README
- Remove DJ mixer feature (deprecated)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Onboarding: Welcome to Music in 2001
- Main menu title: Music in 2001
- How to Use: Get Music in 2001 on a Mac
- Fix tip product ID consistency
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <[email protected]>