Skip to content

fix: keep physical local playback outside Gelato probes#190

Open
ChosenQuill wants to merge 1 commit into
lostb1t:mainfrom
ChosenQuill:agent/local-playback-probe-boundary
Open

fix: keep physical local playback outside Gelato probes#190
ChosenQuill wants to merge 1 commit into
lostb1t:mainfrom
ChosenQuill:agent/local-playback-probe-boundary

Conversation

@ChosenQuill

@ChosenQuill ChosenQuill commented Jul 26, 2026

Copy link
Copy Markdown

Summary

Closes #189.

SyncStreams copies the Stremio provider ID to a primary local item. Playback then uses IsGelato(), which treats that metadata ID as Gelato playback ownership and can send the physical local source through Gelato's probe path.

This change keeps the existing metadata behavior but uses playback-specific ownership:

  • Gelato stream items are identified by the existing gelato-stream tag.
  • Inserted Gelato items are identified by their existing gelato:// path.
  • Physical local items delegate to Jellyfin when mixed libraries are disabled.
  • With mixed libraries enabled, a selected physical local owner also delegates to Jellyfin; selected Gelato streams keep the existing playback path.

No Gelato stream protocol, probing, stubbing, user resolution, or CI behavior is changed.

Validation

  • dotnet build Gelato.sln --configuration Release: succeeded with 0 errors.
  • dotnet format Gelato.sln --verify-no-changes --no-restore: clean.
  • The exact submitted commit (2e4412e) was built and deployed on Jellyfin 10.11.11. The reproduced physical local title returned one native File source (IsRemote=false, no stub); its HLS playlist and segment returned HTTP 200, and Jellyfin Web playback advanced.
  • A remote Gelato fixture still returned one source with HTTP 200 playback info and advanced in Jellyfin Web.

@ChosenQuill
ChosenQuill force-pushed the agent/local-playback-probe-boundary branch from d66f31d to 2e4412e Compare July 26, 2026 09:08
@lostb1t
lostb1t requested a review from Copilot July 26, 2026 15:03

Copilot AI 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.

Pull request overview

Adjusts Gelato playback ownership detection so that Stremio provider IDs remain metadata-only and no longer force physical local media sources through Gelato’s probing/playback path. This aligns playback routing with the intended semantics of mixed libraries and prevents local filesystem sources from being treated as Gelato-owned after SyncStreams.

Changes:

  • Replace provider-ID-based ownership checks with playback-specific ownership (gelato-stream tag or gelato:// path).
  • Delegate playback back to Jellyfin when the selected media source resolves to a non-Gelato playback owner.
  • Centralize the new ownership rule in IsGelatoPlaybackItem(...) and apply it in both static and playback media source flows.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

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.

Physical local items can enter Gelato probe path after stream sync

2 participants