Skip to content

App Store release candidate: local file import replaces YouTube ingestion - #104

Closed
sanylax2 wants to merge 1 commit into
mainfrom
appStoreReleaseCandidate
Closed

sanylax2 wants to merge 1 commit into
mainfrom
appStoreReleaseCandidate

Conversation

@sanylax2

Copy link
Copy Markdown
Collaborator

What

The v1 App Store branch. Everything App Review would reject is gone, along with the external dependency that powered it:

  • YouTubeKit removed from Package.swift; all network resolvers deleted (YouTube stream/search/playlist, Spotify, oEmbed), plus the ranged downloader, retry helper, playlist source-sync, and the link-import pipeline (PreparationQueue is now local-only: verify file → ready → analyze → stems).
  • Share extension, app group, URL scheme, clipboard link detection all removed (target deleted from project.yml).
  • "+" now imports local audio files (.fileImporter, multi-select, any audio type): security-scoped copy into the audio cache, embedded metadata extracted (title/artist/duration/cover art → stored per-track), tracks land ready in a find-or-create My Music playlist, and the full BPM/key/loudness/silence analysis runs on import — so transitions work identically on imported files.
  • Stems still work: Track.stemKey falls back to the track UUID when there's no video ID; the on-device ONNX pipeline is unchanged (fully App Store-safe — no server, no scraping).
  • SwiftData-safe: no stored attribute renamed/removed (additive artworkPath only); old source-backed playlists degrade to plain local playlists. ContinuityCore untouched, so the CI test suite still passes.

Remaining before submission (not in this PR)

  1. PrivacyInfo.xcprivacy privacy manifest (UserDefaults required-reason API entry; no tracking/collection).
  2. App Store Connect metadata: privacy policy URL, support URL, screenshots.
  3. Run xcodegen generate after checkout (files added/removed); verify the share-extension scheme is gone.
  4. Optional polish: accessibility labels flagged in the earlier repo review; remove hardcoded DEVELOPMENT_TEAM from project.yml.

Testing

On device: build (after xcodegen generate), tap + → pick several audio files from Files → they appear in My Music with metadata and artwork, analyze in the background (BPM/key appear), play with full transitions, and get stems separated on demand. Confirm no YouTube URLs anywhere in the UI, share sheet no longer offers Continuity, and a fresh install seeds the demo playlists as before.

🤖 Generated with Claude Code

https://claude.ai/code/session_013TJoWkqg8bzkGdzxWhWjWP


Generated by Claude Code

…tion

Removes everything App Review would reject and the external dependency
that powered it:

- YouTubeKit dependency dropped; all network resolvers deleted
  (YouTube stream/search/playlist, Spotify, oEmbed), plus the ranged
  downloader, retry helper, playlist source-sync, and link import
  pipeline.
- Share extension target, app-group entitlements, URL scheme, and
  clipboard link detection removed.
- The + button now imports local audio files via the Files picker:
  security-scoped copy into the audio cache, embedded metadata
  (title/artist/duration/artwork) extracted, tracks land ready in a
  find-or-create My Music playlist, and the full BPM/key/loudness/
  silence analysis pipeline runs on import.
- Stems still work for local files: the stem cache key falls back to
  the track UUID when there is no video ID (Track.stemKey), and the
  on-device ONNX separation pipeline is unchanged (App Store safe).
- SwiftData stored attributes untouched (additive artworkPath only) so
  existing installs migrate cleanly; old source-backed playlists
  degrade to plain local playlists.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants