Skip to content

feat: add managed Emby library publishing - #1362

Open
Serph91P wants to merge 8 commits into
m3ue:devfrom
Serph91P:feat/emby-library-publishing
Open

feat: add managed Emby library publishing#1362
Serph91P wants to merge 8 commits into
m3ue:devfrom
Serph91P:feat/emby-library-publishing

Conversation

@Serph91P

@Serph91P Serph91P commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add managed Emby library mappings and a Filament control plane
  • publish deterministic versioned catalogs through authenticated Xtream actions
  • create and reconcile Emby libraries while excluding managed output from imports
  • require explicit PlaylistAuth opt-in and redact companion sync failures

Verification

  • focused publishing regression suite: 117 tests, 470 assertions
  • vendor/bin/pint --dirty --format agent
  • git diff --check
  • changed-text ASCII punctuation scan
  • npm build, dependency audits, migration checks, and Docker image build completed before delivery

Notes

  • app/Services/TmdbService.php and tests/Feature/TmdbServiceTest.php are untouched
  • PR intentionally remains Draft

@Serph91P
Serph91P marked this pull request as ready for review August 9, 2026 05:16
@Serph91P
Serph91P requested a review from sparkison August 9, 2026 05:16
@Serph91P

Serph91P commented Aug 9, 2026

Copy link
Copy Markdown
Contributor Author

Hi @sparkison, this PR is ready for maintainer review. It adds managed Emby library publishing and includes the fail-closed remediation for the delayed Emby library-listing case. The current head has passing focused tests plus green Code Quality, Security Scan, Tests, and Docker Build Validation checks. Please take a look when you have time.

@Grimothy

Grimothy commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

looking forward to seeing this. Excellent work this weekend brother

@sparkison

Copy link
Copy Markdown
Member

Noticed a lot of Dispatcharr callouts still (thinking those should be m3u editor now?) in the plugin: https://github.com/Serph91P/m3u-editor-for-emby

also missing the manifests, e.g. https://github.com/Serph91P/m3u-editor-for-emby#installation

thinking we'll want the Emby plugin tightened up a bit before merging this. We'll probably also want a callout somewhere that the plugin is required for this functionality (a callout section with a link maybe?)

@Serph91P

Copy link
Copy Markdown
Contributor Author

Noticed a lot of Dispatcharr callouts still (thinking those should be m3u editor now?) in the plugin: https://github.com/Serph91P/m3u-editor-for-emby

also missing the manifests, e.g. https://github.com/Serph91P/m3u-editor-for-emby#installation

thinking we'll want the Emby plugin tightened up a bit before merging this. We'll probably also want a callout somewhere that the plugin is required for this functionality (a callout section with a link maybe?)

@sparkison I didn't merge so the main branch of the plugin does not break until this is merged 😉

That's why I send you the develop branch:
https://github.com/Serph91P/m3u-editor-for-emby/tree/develop
Where it's gone.

The dispatcher call outs are optional for those using dipatcharr but can remove them if you want. M3u editor is automatically detected and you don't even need to choose it.
I can make that more clear in the readme and tooltips and whatnot if you want?

@sparkison

Copy link
Copy Markdown
Member

That's why I send you the develop branch:
https://github.com/Serph91P/m3u-editor-for-emby/tree/develop
Where it's gone.

sorry about that! I'll take another look 👀

Scope to Auth to prevent cross-contamination of users recorded content.

Resolves m3ue#1398
@sparkison

Copy link
Copy Markdown
Member

...forget that last commit, meant to push to dev 🙄

Resolves the conflict in tests/Feature/GuestDvrRecordingResourceTest.php
by keeping both PR and dev test additions. Also fixes a guest-DVR data
leak that survived the merge: getEloquentQuery() in
GuestDvrRecordingResource, GuestDvrRuleResource, and
GuestScheduledSeriesWidget passed a null $currentAuth?->id straight into
->where('playlist_auth_id', ...), which Laravel converts to
whereNull() — exposing the playlist owner's recordings/rules to a guest
whose session fails to resolve to a PlaylistAuth. Now guarded with the
isOwnerAuth() check dev already introduced elsewhere in this trait, plus
a regression test.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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.

3 participants