Skip to content

Add shareable playlist snapshots without Spotify login - #243

Open
dev-x64 wants to merge 2 commits into
watsonbox:masterfrom
dev-x64:feat/playlist-share-links
Open

dev-x64 wants to merge 2 commits into
watsonbox:masterfrom
dev-x64:feat/playlist-share-links

Conversation

@dev-x64

@dev-x64 dev-x64 commented Nov 4, 2026 •

Copy link
Copy Markdown

Adds shareable playlist snapshots that recipients can view and download as CSV without signing in to Spotify.

  • Adds a Share action for playlists and Liked Songs, with link copying and a manual-copy fallback.
  • Stores the complete snapshot in the URL fragment, keeping sharing entirely client-side.
  • Uses DEFLATE with a compact format: shared dictionaries for artist/album names, grouped field columns and abbreviated Spotify URI prefixes.
  • Automatically selects whichever representation produces the shorter link.
  • Preserves track order, duplicates, Unicode and local tracks, with support for existing version 1 links.
  • Excludes access tokens and account metadata, and explains that anyone with the link can view the snapshot.
  • Validates incoming data and limits decompression and dictionary expansion.

Validation:

  • All 335 Vitest tests and 7 smoke tests pass.
  • ESLint, TypeScript, production build and asset smoke check pass.
  • Covers 1,000- and 2,000-track round trips, both link formats and CSV downloads.
  • The 2,000-track synthetic sample shrank from approximately 86,000 to 79,000 characters.

Limitation: large snapshots still produce long URLs that some messaging apps may truncate. The interface explains this and offers CSV export as a fallback.

@dev-x64
dev-x64 marked this pull request as draft November 4, 2026 22:29
@dev-x64
dev-x64 marked this pull request as ready for review November 4, 2026 22:40

This branch has not been deployed

No deployments
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.

1 participant