Skip to content

feat-homerows - Add global sync for CW&NU hiding - #199

Merged
RadicalMuffinMan merged 2 commits into
Moonfin-Client:masterfrom
mattsigal:bugfix/hiding-sync-999
Jul 20, 2026
Merged

feat-homerows - Add global sync for CW&NU hiding#199
RadicalMuffinMan merged 2 commits into
Moonfin-Client:masterfrom
mattsigal:bugfix/hiding-sync-999

Conversation

@mattsigal

Copy link
Copy Markdown
Collaborator

Pull Request

Summary

Sync items/series hidden from "Next Up" or "Continue Watching" globally across all devices/profiles by intercepting HiddenContinueWatchingItems and HiddenNextUpSeries on the server and storing them under the Global profile instead of the device-specific profile. Since all profiles fall back to the Global profile during resolution, this ensures that content hidden on one device (e.g. Shield TV) is also hidden on other device types (e.g. mobile, desktop).

Related Issues

Link related issues or tickets separated by commas.

  • Closes #
  • Fixes #
  • Related to #

Type of Change

  • Bug fix (expected behaviour, although wasn't previously incorporated)
  • 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.

  • Created MoveContentHidingToGlobal helper in Jellyfin's MoonfinSettingsService.cs.
  • Invoked MoveContentHidingToGlobal inside SaveUserSettingsAsync and SaveProfileAsync in Jellyfin's MoonfinSettingsService.cs before JSON serialization.
  • Implemented and invoked the same MoveContentHidingToGlobal helper inside Emby's MoonfinSettingsService.cs.

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:
  • New setting keys added. List each key and confirm it matches the client key exactly, including casing:

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

Test Steps

  1. Hide a series from Continue Watching on desktop.
  2. Verify that it gets pushed to the server and saved in the global profile.
  3. Verify that on Android TV, the series is also correctly hidden from Continue Watching.

Screenshots (if applicable)

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

Content visible on Windows Desktop and Android TV:

2026-07-19_13-17-22_moonfin Shield_Screenshot_2026-07-19_13-17-51

Content manually hidden on Windows Desktop:

2026-07-19_13-18-22_moonfin

Content hidden via sync on Android TV:

Shield_Screenshot_2026-07-19_13-18-30

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

github-actions Bot commented Jul 19, 2026

Copy link
Copy Markdown

Build Successful

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

Property Value
Commit e9e6aaf
Workflow Build #222

@mattsigal mattsigal self-assigned this Jul 19, 2026
@RadicalMuffinMan
RadicalMuffinMan merged commit 4440968 into Moonfin-Client:master Jul 20, 2026
1 check passed
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.

2 participants