Conversation
crmne
added a commit
that referenced
this pull request
Sep 14, 2026
Add native JPEG/PNG selection, bounded preparation and a separate upload action with preview and actionable errors. Keep protected grants while renewing image-upload consent and route uploads like other playlist edits. Hold uploaded artwork through stale Spotify replies, reject late dialog results, and prevent concurrent uploads for the same playlist. Co-authored-by: Carmine Paolino <carmine@paolino.me>
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.
Why
Playlist details can be edited in Fastpotify, but changing the cover requires another app. This adds cover uploads using Spotify's existing Web API endpoint.
What changed
Feature, interaction, and renewed-consent scope remain pending a maintainer decision.
Visible changes: Edit details gains a cover preview, Change cover and Upload cover controls, busy feedback and retryable errors. The form scrolls when needed, keeping Save and Cancel visible. Upload cover saves artwork independently of Save, which still saves the existing details fields.
ugc-image-uploadconsent and document shared sign-in and personal-app reconnection.rfdsupplies the cross-platform native picker. The branch incorporates upstream 0.7.0 and updates the Nix vendored-dependency hash.Verification
Passed on macOS Apple Silicon, Rust 1.98.0:
Both local test configurations passed 372 library tests and 5 binary tests; the 24 issue-assessment tests also passed. Coverage includes regressions for stale upload completions after reopening the dialog and old, confirmed, and externally changed artwork. Native live testing selected, previewed and uploaded existing artwork on a user-authorized owned playlist through the shared app. Authenticated Spotify image readback confirmed new artwork URLs and changed JPEG bytes. Cancellation state handling passed regression tests; native cancellation was not independently confirmed after the picker adjustment. Personal-app routing has automated coverage only. Linux and Windows were not compiled or run locally; cross-platform results are reported by CI.
All eight native before/after screenshots and reproducible capture harnesses. Captures use deterministic demo data at 1240 x 800 and 760 x 520 logical pixels, in both themes. Evidence is kept outside the implementation branch.
CONTRIBUTING.mdand kept this pull request to one concern.Prepared and verified with Codex. The final contributor responsibility checkbox is left for human review.