Skip to content

feat-recs - Port Recommendation Update to Smart-TV - #407

Open
mattsigal wants to merge 1 commit into
Moonfin-Client:mainfrom
mattsigal:feature/recommendations-unified
Open

feat-recs - Port Recommendation Update to Smart-TV#407
mattsigal wants to merge 1 commit into
Moonfin-Client:mainfrom
mattsigal:feature/recommendations-unified

Conversation

@mattsigal

Copy link
Copy Markdown
Collaborator

Pull Request

Summary

Unifies recommendation sources across the Details page and Home screen ("Since You Watched" rows) to align with Moonbase PR #278 and Moonfin-Core PR #1456. Users can select between three recommendation engines: Moonfin Recommends (server-accelerated 9-factor scoring via /Moonfin/Items/{id}/Similar), Jellyfin Recommends (stock Jellyfin with Moonbase candidate pool boost via &bypass=moonfin), and TMDb Similarity (online recommendations via TMDb/Seerr).

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.

  • jellyfinApi.js: Added bypass parameter support to getSimilar(itemId, limit, bypass) and added dedicated getMoonfinSimilar(itemId, limit) endpoint.
  • settingsOptions.js: Added source options for Details (getRecommendationSystemSourceOptions) and updated getSinceYouWatchedSourceOptions with Moonfin Recommends, Jellyfin Recommends, and TMDb Similarity.
  • settingsSchema.js: Added recommendationSystemSource setting under Details panel (defaulting to Moonfin Recommends) and updated sinceYouWatchedSource fallback.
  • useDetailsItem.js: Implemented unified fetchSimilar() loader routing queries according to recommendationSystemSource, with client fallback to stock Jellyfin when Moonbase is absent.
  • homeRecommendations.js: Updated loadSinceYouWatchedRows to support server similarity bypass and Moonbase similarity with watched-item filtering. Exported getOnlineRecommendations for shared reuse.
  • homeRecommendations.test.js: Added unit test suite validating source option availability, Moonbase routing, watched-item filtering, Moonbase 404 client fallback, and server bypass routing.

Platform

  • Tizen (Samsung)
  • webOS (LG)
  • Both / Shared code

Testing

Describe how this change was tested.

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

Test Steps

  1. Built and launched webOS package connected to Jellyfin 12 server running Moonbase (with PR 278 active)
  2. Verified "Since you watched" home rows when configured to Moonfin Recommends return top-scored candidates (e.g., direct prequel Iron Sky at Welcome to Tizen Discussions! #1 for Iron Sky: The Coming Race).
  3. Switched setting to Jellyfin Recommends; confirmed row dynamically updates with stock recommendations without candidate starvation.
  4. Verified Details page similarity row reflects selected recommendation source.
  5. Ran automated test suite and linter: 87/87 test suites passed (927/927 tests) and enact lint . passed with 0 errors and 0 warnings.

Screenshots (if applicable)

Include screenshots or recordings for UI changes.

Home Page Setting:

2026-09-08_13-28-25_brave

Moonfin vs Jellyfin Recommends

2026-09-08_13-28-56_brave 2026-09-08_13-29-29_brave

Details Page Setting:

2026-09-08_13-37-48_brave

Details Page with Moonfin Recommends active:

2026-09-08_13-38-25_brave

Checklist

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

@github-actions github-actions Bot added Feature Request New feature or request Refactor Restructuring without changing behaviour Tizen UI webOS labels Sep 8, 2026
…d Home rows

- Add getMoonfinSimilar() and bypass query parameter to getSimilar() in jellyfinApi.
- Update Settings to support three distinct recommendation sources: Moonfin Recommends, Jellyfin Recommends, and TMDb Similarity.
- Update Details page (useDetailsItem) and Home screen (loadSinceYouWatchedRows) to query selected recommendation source.
- Add unit tests for recommendation source routing, Moonbase 404 fallback, and watch-status filtering.
@mattsigal
mattsigal force-pushed the feature/recommendations-unified branch from 9a310e4 to 08833a9 Compare September 8, 2026 20:44
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

✅ Build Successful

All platform builds and the test suite passed. You can download the artifacts below.

Platform Status Artifact
webOS ✅ Passed Moonfin_webOS_*.ipk
Tizen Regular ✅ Passed Moonfin_Tizen_Regular_*.wgt
Tizen Oblong ✅ Passed Moonfin_Tizen_Oblong_*.wgt
Tizen Legacy ✅ Passed Moonfin_Tizen_Legacy_*.wgt
Property Value
Commit 08833a9
Workflow run Build #252

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Feature Request New feature or request Refactor Restructuring without changing behaviour Tizen UI webOS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant