feat: configurable media bar content source (collections/playlists)#43
feat: configurable media bar content source (collections/playlists)#43enyineer wants to merge 6 commits intoMoonfin-Client:masterfrom
Conversation
…and an expanded configuration interface across frontend and backend. Signed-off-by: enyineer <nico.enking@gmail.com>
|
Hey! Just a heads-up — this PR includes some formatting/whitespace changes alongside the actual feature work. These came from the IDE auto-formatter running on files that were touched during development (e.g. consistent indentation, trailing spaces, quote style normalization in JS). They don't affect functionality at all, but I understand they add noise to the diff. If you'd prefer to keep those out and only have the feature-related changes, just let me know and I'll revert the formatting to match the original style. Happy either way! |
|
For a library option, I think people were also interested in picking which libraries to use. It'd probably be convenient to have a synced setting for selected library ids that all clients can use. --Just imo, but maybe someone else can chime in. |
|
Great idea, I'll look into that at Sunday (maybe earlier if I have time for it). Would be interested in Axl's opinion though. |
…abar # Conflicts: # frontend/src/components/settings.js # frontend/src/utils/storage.js
Allow users to optionally select specific Jellyfin libraries when using Library (Random) mode. When no libraries are selected, all libraries are used (preserving existing default behavior). - Add mediaBarLibraryIds to backend models and settings service - Extend getRandomItems() API to support parentId filtering per library - Add library picker UI in user settings and admin config page - Reuse collection picker styling for consistent UX
|
I agree with @broken-droid it should be per-library and we can build out an endpoint that the tv and mobile clients can use as well but I can handle that part |
I like it. I think it makes sense to keep content type too. You don't really know how everyone has their libraries set up. |
|
Sorry was out and about doing errands, looing at #48 now |
|
The main thing I get asked for lately is local trailers and per-library for the media bar |
- Remove mediaBarContentType from backend models, service, frontend storage/settings/mediabar/api, and README - Add GET /Moonfin/MediaBar?profile= endpoint that resolves user settings and queries ILibraryManager for media bar items server-side - Frontend calls unified endpoint first with client-side fallback - Update README with new library selection settings and MediaBar endpoint
Changes in this updateRemoved:
|
…diabar # Conflicts: # frontend/src/components/mediabar.js # frontend/src/utils/api.js
✅ Build SuccessfulThe plugin compiled successfully against .NET 8 / Jellyfin 10.10.0.
|
|
There's still a bug with Collections / Playlists in the new endpoint return 0 results. I'll investigate. |
|
Fix: Collections/Playlists in MediaBar endpoint The Subsequent fixes using Final approach avoids all unstable method signatures:
This keeps the plugin compatible with both Jellyfin 10.10 and 10.11+. |
59a9d4f to
e4bed26
Compare
please do, it makes it a bit harder to review the PR |

Summary
Closes #39
Allows administrators and users to configure the media bar to display content from specific Jellyfin collections and/or playlists, instead of only random library items.
Features
Changes
Backend
MoonfinSettingsProfile.cs— addedMediaBarSourceType,MediaBarCollectionIds,MediaBarShuffleItemsMoonfinUserSettings.cs— added matching legacy v1 fields for migrationMoonfinSettingsService.cs— added reset entries inClearLegacyFieldsconfigPage.html— added admin default controls (source type dropdown, collection picker, shuffle toggle)Frontend
api.js— addedgetCollectionsAndPlaylists()andgetCollectionItems()methodsmediabar.js—loadContent()branches on source type;applySettings()tracks new settingssettings.js— source dropdown, collection picker UI, shuffle toggle,loadCollectionPicker()methodstorage.js— defaults + server↔local sync mappings for 3 new settingssettings.css— collection picker stylesScreenshots
User Settings — Default (Random)
User Settings — Collections / Playlists
Admin Settings — Default Collections / Playlists