Skip to content

feat-homerow - Add Studio row as a Home Screen row - #1124

Open
mattsigal wants to merge 1 commit into
Moonfin-Client:mainfrom
mattsigal:feature/studios-home-row
Open

feat-homerow - Add Studio row as a Home Screen row#1124
mattsigal wants to merge 1 commit into
Moonfin-Client:mainfrom
mattsigal:feature/studios-home-row

Conversation

@mattsigal

Copy link
Copy Markdown
Collaborator

Pull Request

Summary

Adds the surprisingly annoying to implement new "Studios" Home Row section to Moonfin, which allows users to add a custom "Studio" row to their homepage. Which sounds straightforward enough until you realize that Jellyfin doesn't do "streaming networks" and instead lumps all production studios and networks together in the "Studios" tag. Which, on my modest library, yields a paltry 1,205 results.

However, all was not lost. I persisted and implemented a way to toggle, sort, and select individual studio rows (e.g. Netflix, Apple TV, A&E, HBO, Disney+) to display directly on their Home Screen. This includes a two-column multi-select dialog, landscape 16:9 studio cards, high-contrast TV focus styling, custom artwork support, and Moonbase sync integration. No big deal.

The end result: Desired studios appear on the Home page and, since the list is populated from the user's library, they aren't limited to just the big American ones. Since we only have thumbnails for these, I linked up the Custom Artwork picker to the long-press behaviour on them to allow users to add their own logos, but we could also consider just making them always be thumbnails (regardless of modern vs. classic rows). Entering any of the studios from the home row loads a library interface filtered for that studio. Tada.

Not sure if this will get merged but if it does, I can do a Moonbase PR to sync the preferences on that side.

Related Issues

Link related issues or tickets separated by commas.

Type of Change

  • Bug fix
  • New feature
  • Refactor
  • Performance improvement
  • UI/UX update
  • Documentation update
  • Build/CI change
  • Other (describe):

Changes Made

List the key changes included in this PR.

  • Added HomeSectionType.studios to home_section_config.dart defaults and preferences in user_preferences.dart.
  • Implemented StudioSelectionDialog in home_row_toggles_screen.dart with fast parallel /Studios API fetching, natural case-insensitive alphabetical sorting, and TV/Movie/Selected/Unselected filter toggles.
  • Fixed studio query item truncation in row_data_source.dart and multi_server_repository.dart by omitting query limits when selected studio IDs are present.
  • Added high-contrast focus indicators (_FocusableActionButton and _FocusableTile) for TV remote navigation.
  • Added Studio and Network item types to canChangeArtwork in context_action.dart and change_artwork_dialog.dart to enable uploading custom studio logos via long-press.
  • Integrated displayStudiosRows, studiosRowSortBy, studiosRowSortOrder, and studiosRowSelectedIds into synced_fields.dart for automatic sync with Moonbase via PluginSyncService, if this gets merged.
  • Added full localization keys for studio selection dialog filters in app_en.arb and regenerated localization bindings.
  • Ensured dialog dismissal in preference_tiles.dart handles single KeyDown events, preventing double-pop navigation issues.
  • Filters the library view for Movie, Series, or BoxSet titles to hide things like playlists from appearing.

Platform

  • Android
  • iOS
  • tvOS
  • Web
  • macOS
  • Windows
  • Linux
  • All / Shared code

Testing

Describe how this change was tested.

  • Tested on emulator / simulator
  • Tested on physical device
  • Manual testing completed
  • Not tested (explain why):

Test Steps

  1. Navigate to Settings > Personalization > Home Screen > Home Row Toggles.
  2. Toggle on the Studios row and open Select Studios.
  3. Verify autofocus lands on Select All with glowing border. Select 4–5 studios and save.
  4. Return to Home Screen and verify selected Studio cards render in 16:9 landscape aspect ratio.
  5. Open a Studio and verify it loads a properly filtered library view from that studio.

Screenshots (if applicable)

Include screenshots or recordings for UI changes.

New Section:

Shield_Screenshot_2026-08-10_16-47-41

Studio Picker Interface:

Shield_Screenshot_2026-08-10_19-52-26

Home Section (only adds 1 row):

Shield_Screenshot_2026-08-10_17-11-38

Home Screen Row:

Shield_Screenshot_2026-08-10_18-30-47

Studio Library View

Mainly shows:
Shield_Screenshot_2026-08-10_19-57-51

Mainly movies:
Shield_Screenshot_2026-08-10_20-05-02

Showing both episodes and movies:
Shield_Screenshot_2026-08-10_20-20-26

Checklist

  • Code builds successfully
  • Code follows project style and conventions
  • No unnecessary commented-out code
  • No new warnings introduced

- Add Studios section configuration and toggle in Home Row Toggles settings
- Implement StudioSelectionDialog with natural alphabetical sorting, filters, and high-contrast glowing focus indicators
- Fix studio query truncation in RowDataSource and MultiServerRepository by omitting limit when selected IDs are present
- Restrict Studio library browse view to main Movie, TV Series, and BoxSet pages (excluding Playlists, Episodes, and Seasons)
- Render StudioSelectionDialog on root navigator (useRootNavigator: true) with previousFocus restoration to preserve centered 740x480 dialog layout
- Add Studio and Network item types to canChangeArtwork for custom logo management
- Add localization keys for studio filter dialog and sync settings to Moonbase via SyncedFields
@mattsigal
mattsigal force-pushed the feature/studios-home-row branch from 18f9088 to c82662a Compare August 11, 2026 04:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] "Studio" row as a Home Screen Row

1 participant