Skip to content

Enhance recommendations UI with genre filter and improve dev server - #56

Merged
primetime43 merged 7 commits into
mainfrom
develop
Jul 2, 2026
Merged

Enhance recommendations UI with genre filter and improve dev server#56
primetime43 merged 7 commits into
mainfrom
develop

Conversation

@primetime43

Copy link
Copy Markdown
Owner

This pull request introduces several improvements and new features to both the backend and frontend, focusing on enhancing the actor search experience and improving scan history usability. The most significant changes include the addition of a new endpoint to rehydrate scan history gaps with display data, enhancements to the popular actors API and UI (including manual refresh and refresh timestamps), and dependency updates and fixes for the development environment.

Backend:

Scan History and Gap Rehydration:

  • Added a new endpoint (/scan_history/<entry_id>/gaps) that returns a scan history entry's gaps rehydrated with display fields (e.g., posters, ratings, genres for movies; posters, overviews for TV) using warm TMDB/TheTVDB caches, so reopening a past scan in the Missing view looks like a live scan. Falls back to stored fields on cache misses. (backend/app/blueprints/scan_history.py, backend/app/services/tmdb_service.py, backend/app/services/tvdb_service.py) [1] [2] [3]

Popular Actors API Improvements:

  • Enhanced the /actors/popular endpoint to support a refresh query parameter, allowing the cache to be bypassed and rebuilt on demand (for a manual "Refresh" button). The response now includes refreshedAt and nextRefreshAt timestamps to inform the UI when the suggestions were last built and when they will auto-refresh. (backend/app/blueprints/actors.py, backend/app/services/tmdb_service.py) [1] [2] [3]

Other Backend Improvements:

  • Upgraded the backend version to 2.9.0. (backend/app/blueprints/about.py)
  • Enabled threaded mode for the Flask development server to better handle concurrent API calls from the frontend SPA, preventing connection resets during development. (backend/run.py)

Frontend:

Popular Actors UI Enhancements:

  • Updated the actors component UI to display when the popular actors list was last refreshed, when it will auto-refresh, and added a "Refresh" button to manually rebuild the suggestions. The toggle and search box are now hidden when viewing results for a selected actor. (frontend/src/app/components/actors/actors.component.html) [1] [2] [3] [4]

Dependency and Build Fixes:

  • Updated the http-proxy dependency to version 3.x via overrides and lockfile changes to ensure compatibility with Node 18+ and related tooling, and removed unused dependencies. (frontend/package.json, frontend/package-lock.json) [1] [2] [3] [4] [5] [6] [7] [8]

These changes collectively improve the user experience for both actor search and scan history review, while also ensuring smoother development and build processes.

Add a visible genre filter badge with a clear button to the recommendations UI (recommended.component.html + .scss). Introduce activeGenreName getter and clearGenreFilter() in the component, and make ownedCount/missingCount respect the active genre filter by using a matchesGenre helper so headline/view-toggle counts match the filtered results. This prevents an active genre from silently hiding results while counts still show unfiltered totals.
Run the Flask dev server with threaded=True to allow concurrent SPA /api requests and avoid werkzeug proxy ECONNRESETs during development; production still served via gunicorn. Add a package.json override to resolve http-proxy to http-proxy-3 (npm:http-proxy-3@^1.23.3) and update package-lock.json accordingly so the dev tooling uses the pinned http-proxy variant.
Removes the 'Load IMDb ratings' button and related state (loadingImdbRatings, imdbRatingsLoaded, loadImdbRatings()) from the Actors component. Also hides the media type toggle, page heading, description, and search box once an actor is selected, decluttering the results view. #54
Expose popular actor cache timestamps from the backend and let the Actors page show when suggestions were refreshed. Adds a manual refresh action that bypasses the cache and rebuilds the list on demand. #55
Adds a new `GET /scan-history/<id>/gaps` API that rehydrates stored movie/TV gap entries from warm TMDB/TheTVDB caches so past scans can be rendered in the same shape as live results. The Recommended page now detects `?scan=<id>&type=` params, loads those saved gaps, and shows a read-only saved-scan banner. The Scan History table now supports row click navigation into `/recommended` for successful scans with stored gaps, with matching UI affordances and a new service response type for the gaps payload.
Set `.status-card` to `height: 100%` in `index.component.scss` so cards in paired columns stretch to the same height. Added an inline comment clarifying that this relies on the row's flex column stretching behavior.
Version bump to 2.9.0
@primetime43 primetime43 self-assigned this Jul 2, 2026
@primetime43
primetime43 merged commit 07712cc into main Jul 2, 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.

1 participant