Repository navigation
Add on-device music imports and polish iPhone player controls - #48
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add an on-device audio library through the Files picker. Imported MP3/M4A/AAC/WAV/FLAC files are copied into private app storage, validated for playable audio, deduplicated by content, and played through the existing offline playback path. Local identities are separate from VK IDs; VK mutations, stream refresh, reporting and broadcast exclude local tracks. Removing an import keeps the original file.
The full-screen player gains a visible close button, fast flick recognition and a previous-artwork gesture that changes tracks even after four seconds. The Previous button retains its restart behavior. Copy artist/title from the player or a track row, with a localized confirmation.
Validation: localization, source and artwork checks and Python tests pass locally. New iOS tests cover imports, persistence, deduplication, invalid files, path/symlink boundaries, VK guards, gestures and previous-button behavior. Final Xcode 26.5 run: 1126 tests passed with no failures or retries. All four CodeQL language jobs and the final security verdict passed. Xcode 27 archived both unsigned IPA variants for version 3.31.0 (194); the downloaded packages passed ZIP and version checks. Reviewed the changed player/local-library captures in dark, light and large-text layouts from the 214 generated simulator images. Missing artwork now uses a plain artist monogram instead of an empty cover plate. Stable publication remains an explicit final action.