Skip to content

feat-settings-sync - Allow for Custom Home Rows Sync across devices#209

Open
mattsigal wants to merge 1 commit into
Moonfin-Client:masterfrom
mattsigal:fix/preserve-disabled-custom-home-sections
Open

feat-settings-sync - Allow for Custom Home Rows Sync across devices#209
mattsigal wants to merge 1 commit into
Moonfin-Client:masterfrom
mattsigal:fix/preserve-disabled-custom-home-sections

Conversation

@mattsigal

Copy link
Copy Markdown
Collaborator

Pull Request

Summary

Fixes server-side issues where custom home rows were either purged during web dashboard normalization or restricted to single device profiles instead of being accessible across all client 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 PropagateCustomHomeSectionsAcrossProfiles() in SaveUserSettingsAsync() and SaveProfileAsync() in MoonfinSettingsService.cs.
  • Automatically propagates custom sections created on one profile (e.g. desktop) into all other device profiles (tv, mobile, global) as enabled: false.
  • Updated normalizeHomeSections() in configPage.html and moonfin.js to preserve disabled dynamic plugin sections (section.enabled !== false).

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:) Android TV and Windows Desktop
  • Manual testing completed
  • Not tested (explain why):

Test Steps

  1. Deployed compiled Moonfin.Server.dll to Synology NAS plugin directory and restarted Jellyfin.
  2. Created custom home row on Windows Desktop client.
  3. Verified SaveProfileAsync ran and populated tv profile with custom section (enabled: false).
  4. Connected Nvidia Shield Android TV client and verified custom section appeared in Custom Home Rows Wizard and toggled ON cleanly.

Screenshots (if applicable)

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

Screenshots are client-side so in PR 946

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

@github-actions

Copy link
Copy Markdown

Build Successful

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

Property Value
Commit fa3e2be
Workflow Build #239

@mattsigal mattsigal self-assigned this Jul 26, 2026
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