Skip to content

feat: integrate mixed-source regular playlists - #142

Merged
jm2 merged 2 commits into
mainfrom
agent/p1.5-mixed-playlists
Jul 19, 2026
Merged

feat: integrate mixed-source regular playlists#142
jm2 merged 2 commits into
mainfrom
agent/p1.5-mixed-playlists

Conversation

@jm2

@jm2 jm2 commented Jul 19, 2026

Copy link
Copy Markdown
Owner

Summary

  • Integrate authenticated Subsonic, Jellyfin, Plex, and DAAP tracks into regular Tributary playlists using exact source-scoped identity.
  • Preserve playlist order and duplicate occurrences, render localized unavailable rows when a source or track disappears, and remove the exact selected occurrence.
  • Route remote playback and artwork through current-session source authority while keeping ratings and playback history local-only.
  • Make multi-track additions all-or-none: stage the SQL transaction, acquire exact current source authority immediately before commit, roll back if refresh or disconnect wins, and retain commit permits until commit or rollback completes.
  • Refuse mixed-source or unresolved regular-playlist XSPF export before touching the destination instead of silently truncating it to local tracks.
  • Update the README, changelog, task tracker, roadmap, source-scoped playlist contract, lifecycle architecture, and all 13 locales.

Review follow-up

  • Fixed Rust 1.97 Clippy manual_option_zip compatibility.
  • Closed the reported authority time-of-check/time-of-use race by coupling final validation and authority ownership to the database transaction.
  • Added deterministic coverage for disconnect-wins rollback, catalogue replacement, permit revocation, current-thread commit versus disconnect, cancellation-safe completion ownership, duplicate guard deduplication, and all-or-none XSPF refusal.

Validation

  • cargo test --release: 1,144 passed
  • cargo +1.92 check --all-targets --locked
  • cargo clippy --all-targets --all-features -- -D warnings
  • cargo clippy --release -- -D warnings
  • cargo build --release --all-features
  • cargo fmt --all -- --check
  • git diff --check

Implements the mixed-source regular-playlist portion of #47. Import and pull synchronization of playlists owned by a Subsonic server remain a separate follow-up capability.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request implements end-to-end support for mixed-source regular playlists (PR #142), allowing users to combine local tracks with entries from authenticated Subsonic, Jellyfin, Plex, and DAAP catalogues. Key changes include atomic all-or-none additions, exact removal of duplicate or unavailable entries using durable occurrence IDs, and a robust projection layer that renders explicit localized unavailable rows for disconnected sources or missing tracks. Additionally, the playback queue now tracks per-row media ownership and revalidates transient closed guards at the point of use for remote stream and artwork resolution. Rating writes and playback history remain restricted to local tracks. There are no review comments provided, so I have no feedback to evaluate.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 625d352888

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/ui/context_menu.rs Outdated
@jm2
jm2 merged commit 4441dd4 into main Jul 19, 2026
16 checks passed
@jm2
jm2 deleted the agent/p1.5-mixed-playlists branch July 19, 2026 23:10
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