Enhance recommendations UI with genre filter and improve dev server - #56
Merged
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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:
/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:
/actors/popularendpoint to support arefreshquery parameter, allowing the cache to be bypassed and rebuilt on demand (for a manual "Refresh" button). The response now includesrefreshedAtandnextRefreshAttimestamps 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:
2.9.0. (backend/app/blueprints/about.py)backend/run.py)Frontend:
Popular Actors UI Enhancements:
frontend/src/app/components/actors/actors.component.html) [1] [2] [3] [4]Dependency and Build Fixes:
http-proxydependency 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.