Skip to content

feat-sync - Add user preference sync for spoiler toggles and a couple small fixes - #225

Open
mattsigal wants to merge 1 commit into
Moonfin-Client:masterfrom
mattsigal:feature/spoiler-toggles-and-collections-fix
Open

feat-sync - Add user preference sync for spoiler toggles and a couple small fixes#225
mattsigal wants to merge 1 commit into
Moonfin-Client:masterfrom
mattsigal:feature/spoiler-toggles-and-collections-fix

Conversation

@mattsigal

Copy link
Copy Markdown
Collaborator

Pull Request

Summary

Adds settings profile backend sync properties for 3 spoiler-free preference toggles (hideDetailsMediaDescription, detailUseSeriesThumbnails, hideHomeMediaDescription), fixes detailsScreenBlur background opacity/blur linking on the config page, and safeguards media bar collection/library sources from being cleared on save.

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 hideDetailsMediaDescription, detailUseSeriesThumbnails, and hideHomeMediaDescription properties to MoonfinSettingsProfile.cs in both Jellyfin and Emby backend models to enable multi-device profile sync (desktop, mobile, tv).
  • Fixed detailsScreenBlur save logic in configPage.html to save via getNullableRangeInput('#DefaultDetailsScreenBlur') as a numeric string (e.g. '10') matching C# models and per-device profile syncing.
  • Safeguarded mediaBarCollectionIds and mediaBarLibraryIds save logic in configPage.html and moonfin.js so saving settings forms when the collection/library picker is unrendered does not overwrite saved collection IDs with null.

Client Impact

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

  • No client changes needed
  • Companion client PR(s) required, linked here: feat-ui - SPOILERZONE: The PR Moonfin-Core#1088
  • New setting keys added. List each key and confirm it matches the client key exactly, including casing:
    • hideDetailsMediaDescription (bool?)
    • detailUseSeriesThumbnails (bool?)
    • hideHomeMediaDescription (bool?)

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
  • [ X] 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:)
  • Manual testing completed
  • Not tested (explain why):

Test Steps

  1. Verified JSON property names and types match Moonfin-Core synced_fields.dart keys exactly.
  2. Verified detailsScreenBlur range input string formatting matches C# string? DetailsScreenBlur model expectations.
  3. Verified mediaBarCollectionIds and mediaBarLibraryIds DOM existence checks prevent null overwrites on hidden tabs.

Screenshots (if applicable)

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

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

…y linking, and safeguard collection picker saves
@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown

Build Successful

The plugin compiled successfully against .NET 8 / Jellyfin 10.10.0.

Property Value
Commit b058ff5
Workflow Build #284

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.

1 participant