Skip to content

feat-playback - Add preferTextSubtitles and preferExternalSubtitles user defaults - #302

Open
mattsigal wants to merge 1 commit into
Moonfin-Client:masterfrom
mattsigal:feature/prefer-text-and-external-subtitles
Open

mattsigal wants to merge 1 commit into
Moonfin-Client:masterfrom
mattsigal:feature/prefer-text-and-external-subtitles

Conversation

@mattsigal

@mattsigal mattsigal commented Sep 26, 2026 •

Copy link
Copy Markdown
Collaborator

Pull Request

Summary

Adds preferTextSubtitles and preferExternalSubtitles boolean settings to the user settings profile schema and default profile configuration, allowing client preferences for prioritizing text-based and external subtitle streams to persist and synchronize across devices.

Related Issues

Link related issues or tickets separated by commas.

Type of Change

  • Bug fix
  • New feature
  • Refactor
  • Performance improvement
  • API / endpoint change
  • Settings schema change
  • Documentation update
  • Build/CI change
  • Other (describe):

Area

  • Settings sync / profiles
  • Admin defaults / config page
  • Ratings (MDBList / TMDB)
  • Notifications / Push (FCM / relay)
  • Seerr integration
  • Games / Emulators
  • Custom home rows
  • Web Client (Go to Moonfin-Core repo)
  • Other / shared

Changes Made

List the key changes included in this PR.

  • Added PreferTextSubtitles and PreferExternalSubtitles nullable boolean properties to UserSettingsProfile.cs.
  • Added default values (false) to PluginConfiguration.cs.
  • Exposed settings in the Moonbase web administration UI (configPage.html) under Subtitle Stream preferences with descriptive labels and toggles.

Client Impact

Does this need matching changes in a client repo (Core, Smart-TV, Roku)?

Compatibility

  • Change to the settings profile is additive only, no renamed or removed properties
  • New properties use the same type the client sends (a client bool maps to bool?, an int to int?)
  • Migration added for any renamed or removed settings
  • Older clients still work, unknown fields are ignored and no keys were removed

Testing

Describe how this change was tested.

  • Built the plugin and deployed to a Jellyfin server
  • Verified against a live client (which one:) Core (Windows) and Smart-TV (webOS emulator)
  • Manual testing completed
  • Not tested (explain why):

Test Steps

  1. Built Moonbase .NET release DLL and deployed to local Jellyfin server.
  2. Verified configuration page loads and toggles persist when saved.
  3. Verified settings synchronize bidirectionally with Moonfin-Core and Smart-TV clients.

Screenshots (if applicable)

Include config page screenshots or request/response samples where relevant.

Before

2026-09-26_12-55-38_brave

After

2026-09-26_13-24-49_brave

Checklist

  • Code builds successfully
  • Code follows project style and conventions
  • No unnecessary commented-out code
  • No new warnings introduced
  • Any new setting keys match the client-side keys exactly

- Add PreferTextSubtitles and PreferExternalSubtitles properties to MoonfinSettingsProfile in Jellyfin and Emby plugins
- Add UI controls to User Defaults section in configPage.html for Jellyfin and Emby, and wire load/save in moonfin.js
- Add SubtitleSelectionProfileTests validating serialization, deserialization, and field retention
@github-actions

Copy link
Copy Markdown

Build Successful

Both plugins compiled against .NET 8, and both test suites passed.

Property Value
Commit f48b793
Jellyfin ABI 10.10.0.0
Emby version 2.3.0.0
Workflow Build #444

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.

1 participant