49 Commits
Author SHA1 Message Date
Christian OkekeandClaude Fable 5 03e193f195 iOS sync overhaul for 1.3.1: metadata-index detection, no-wait pending UX
- 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
2026-09-02 22:50:01 -05:00
Christian OkekeandClaude Fable 5 dfa25f8789 1.3.1: fast parallel sync + background streaming sync UX
- 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
2026-09-02 21:23:47 -05:00
Christian OkekeandClaude Fable 5 451c3c2002 Add Windows/Android Flutter port plan with Zune 4.8 references
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RxoH8d7osdkiL83F9G8KrW
2026-09-02 10:46:41 -05:00
Christian OkekeandClaude Fable 5 3c35de5d88 Site: final promo cut (captions at 7/10/14, 20s)
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RxoH8d7osdkiL83F9G8KrW
2026-09-02 10:16:45 -05:00
Christian OkekeandClaude Fable 5 90df2d81ff Site: YomMock 3D promo as the iOS hero video
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RxoH8d7osdkiL83F9G8KrW
2026-09-02 10:01:04 -05:00
Christian OkekeandClaude Fable 5 cc0bd29120 iOS: touchpad swipe-to-skip, true-random shuffle, light icon; build 11
- 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
2026-09-02 09:00:44 -05:00
Christian OkekeandClaude Fable 5 7a9a6d103f Promo page: iOS video first (mobile-friendly), Mac flagship below
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RxoH8d7osdkiL83F9G8KrW
2026-09-01 16:31:16 -05:00
Christian OkekeandClaude Fable 5 cc9996c05c Refresh site + README for v1.3.0: promo video hero, new screenshots, real store links
- 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
2026-09-01 16:08:56 -05:00
Christian OkekeandClaude Fable 5 b1e184521c iOS: rebuild six-preset equalizer, settings cleanup; build 10
- 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
2026-09-01 14:24:49 -05:00
Christian OkekeandClaude Fable 5 36b69c605d iOS: rating prompt, instant sync feedback, off-main-thread sync
- 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
2026-09-01 13:27:51 -05:00
Christian OkekeandClaude Fable 5 98969ae057 Remove DMG from repo; ignore release artifacts
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RxoH8d7osdkiL83F9G8KrW
2026-09-01 13:13:31 -05:00
Christian OkekeandClaude Fable 5 1d99b9ba58 Build 9 for App Store upload; export options plist
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RxoH8d7osdkiL83F9G8KrW
2026-09-01 13:12:52 -05:00
Christian OkekeandClaude Fable 5 5ebb383097 v1.3.0: Zune-style app icon, tip jar on iOS main menu
- 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
2026-09-01 12:12:25 -05:00
Christian OkekeandClaude Opus 4.5 bd7f4ad46b Add build and release documentation
Reference guide for signing, notarizing, and distributing the app.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-02-23 20:35:45 -06:00
Christian OkekeandClaude Opus 4.5 57f820a37a Fix YouTube download and improve direct distribution build
- 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]>
2026-02-22 21:21:18 -06:00
Christian OkekeandClaude Opus 4.5 18da455afa Fix App Store review issues for tip jar UI
- 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]>
2026-02-05 12:48:51 -06:00
Christian Okeke 698e574264 Merge pull request #3 from okekedev/update-to-zune-theme
Update to Zune HD theme for iOS app
2026-01-23 22:46:32 -06:00
Christian OkekeandClaude Opus 4.5 205e69c3c5 Update to Zune HD theme for iOS app
- 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]>
2026-01-23 22:42:38 -06:00
Christian Okeke c27197bed5 Merge pull request #2 from okekedev/update-screenshots-and-icons
Update app icons, screenshots, and Zune player UI
2026-01-23 22:32:27 -06:00
Christian OkekeandClaude Opus 4.5 5a0bde3319 Update app icons, screenshots, and Zune player UI
- 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]>
2026-01-23 22:30:02 -06:00
Christian Okeke 9c4c61293f Merge pull request #1 from okekedev/app-store-release
Ready for Production - App Store Submission
2026-01-15 09:36:41 -06:00
Christian OkekeandClaude Opus 4.5 43b123e98b Ready for App Store submission
## Changes
- Added demo music (Coffee Rings, Midnight Bus Ride) with embedded ID3 metadata
- Added demo artwork
- Fixed iOS sync to properly detect and delete orphaned tracks
- Fixed iCloud placeholder file detection (.icloud files)
- Added sync progress overlay showing track names on iOS
- Added manual sync button to Mac app sidebar
- Enabled sandbox for App Store distribution
- Background file deletion for better UI responsiveness

## App Store
- Version 1.0, Build 1
- Sandbox enabled
- iCloud container: iCloud.com.christianokeke.mymusiccontainer
- Tip jar IAPs configured

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-15 09:27:03 -06:00
Christian OkekeandClaude Opus 4.5 2f882bb594 Add 'Open in Files' option to iOS Settings
- 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]>
2026-01-13 21:11:57 -06:00
Christian OkekeandClaude Opus 4.5 0e5b09af4c Fix iCloud access for non-sandboxed direct download version
- 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]>
2026-01-13 21:03:11 -06:00
Christian OkekeandClaude Opus 4.5 29c990f396 Add website, Mac screenshots, and direct download support
- 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]>
2026-01-13 15:43:09 -06:00
Christian OkekeandClaude Opus 4.5 acc83c41d3 Bundle ffmpeg static binary - no external dependencies
- 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]>
2026-01-12 15:01:03 -06:00
Christian OkekeandClaude Opus 4.5 fe67f3841d Replace Python with standalone yt-dlp binary
- 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]>
2026-01-12 14:56:54 -06:00
Christian OkekeandClaude Opus 4.5 a7bd8c1780 Show track names during iOS sync for better UX
- 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]>
2026-01-12 14:43:36 -06:00
Christian OkekeandClaude Opus 4.5 72903f52fd Simplify storage - clean iCloud-only approach
- 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]>
2026-01-12 14:28:12 -06:00
Christian OkekeandClaude Opus 4.5 28d8507fb7 Sync library metadata to iCloud and fix path migration
- 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]>
2026-01-12 11:26:22 -06:00
Christian OkekeandClaude Opus 4.5 b3821d5d88 Add automatic offline download for iCloud files
- 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]>
2026-01-12 09:33:25 -06:00
Christian OkekeandClaude Opus 4.5 f1911450c8 Simplify Mac storage to use iCloud container only
- 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]>
2026-01-12 09:30:50 -06:00
Christian OkekeandClaude Opus 4.5 aa72877d83 Use iCloud as primary storage when available
- 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]>
2026-01-12 09:27:14 -06:00
Christian OkekeandClaude Opus 4.5 e56d57e456 Fix sandbox compatibility for App Store
- 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]>
2026-01-12 09:22:08 -06:00
Christian OkekeandClaude Opus 4.5 2d65a6694f Enable App Sandbox and Hardened Runtime for Mac App Store
- Add com.apple.security.app-sandbox entitlement
- Add file access entitlements for user-selected and downloads
- Add network client entitlement
- Enable ENABLE_APP_SANDBOX in project settings
- Enable ENABLE_HARDENED_RUNTIME in project settings

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-12 09:16:58 -06:00
Christian OkekeandClaude Opus 4.5 041cde183c Add combined colors screenshot
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-12 09:02:50 -06:00
Christian OkekeandClaude Opus 4.5 1f343232c5 Rename project from Mixor to Music2001
- Renamed folders: Mixor → Music2001, MixoriOS → Music2001iOS, MixorCore → Music2001Core
- Renamed project file: Mixor.xcodeproj → Music2001.xcodeproj
- Updated all code references and file names
- Added yellow screenshot
- Build tested and working

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-12 08:41:31 -06:00
Christian Okeke a975e65256 Change screenshot alignment and size in README
Updated screenshot alignment and image width in README.
2026-01-10 15:29:01 -06:00
Christian Okeke 3072a5d78a Update README.md 2026-01-10 15:28:28 -06:00
Christian Okeke 13b496736b Remove unnecessary color images from README
Removed unused color images from the README.
2026-01-10 15:27:53 -06:00
Christian OkekeandClaude Opus 4.5 66286184db Change display name to Music 2001
- iOS and Mac both show 'Music 2001' under app icon

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-10 15:23:06 -06:00
Christian OkekeandClaude Opus 4.5 f90f80f467 Update app icons with new logo
- iOS: 1024x1024 icon
- Mac: All required sizes (16-512 @1x and @2x)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-10 15:22:00 -06:00
Christian Okeke 05cb991785 Add white screenshot to README 2026-01-10 15:20:55 -06:00
Christian OkekeandClaude Opus 4.5 37e10fe3ea Add build instructions and emphasize download feature
- 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]>
2026-01-10 15:16:54 -06:00
Christian OkekeandClaude Opus 4.5 48eb4e72c3 Update screenshots and branding
- 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]>
2026-01-10 15:15:16 -06:00
Christian OkekeandClaude Opus 4.5 3cdd18a8e5 Reorder screenshots in README
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-10 15:03:20 -06:00
Christian OkekeandClaude Opus 4.5 e810a3ac4b Add iOS screenshots to README
- 3 screenshots at 1284x2778 (6.5" size)
- Display inline in README

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-10 14:58:04 -06:00
Christian OkekeandClaude Opus 4.5 096cf59060 Update branding to Music in 2001
- 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]>
2026-01-10 14:31:53 -06:00
Christian OkekeandClaude Opus 4.5 d88d4db10f Initial commit - MyMusic 2001
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-01-10 14:13:21 -06:00