github sahara101/Movie-Roulette v4.0

latest releases: v5.0, v4.2, v4.1.2...
8 months ago

Movie Roulette v4.0 Release Notes

This release introduces major new features focused on user authentication and personalized movie caching.

New Features

  • User Authentication & Authorization:
    • Added a robust authentication system allowing users to log in via local accounts, Plex, Emby, or Jellyfin.
    • Implemented user roles (admin vs. regular user).
    • Added dedicated login (/login) and first-run setup (/setup) pages.
    • Protected most routes, requiring users to be logged in.
    • Added CSRF protection for relevant actions.
    • Added Flask Secret Key implementation.
  • User-Specific Experience:
    • Movie lists, watched status, and service interactions (Plex, Emby, Jellyfin) are now tailored to the logged-in user.
    • Implemented user-specific caching for Plex unwatched movies, improving performance for individual users.
    • Added an admin interface (/user_cache_admin) to view and manage user caches.
    • A new theme as test on the user_cache_admin page.
  • Filtering Enhancements:
    • The filter dropdown now shows the count of movies matching the selected criteria before applying the filter.
    • The count updates live as filter options (genre, year, rating, watch status) are changed.
  • UI & Performance Improvements:
    • Added asynchronous loading for movie details (cast, crew, links, trailer, logo, collection info) after the main poster/title appears, improving initial page load speed.
    • Added support for displaying movie logos (fetched from TMDB) via the ENABLE_MOVIE_LOGOS setting.
    • Added a setting (LOAD_MOVIE_ON_START) to control whether a movie loads immediately or requires clicking a "Get Random Movie" button.
    • Improved description truncation (shows 2 lines on desktop before expanding).
    • Added placeholder text ("Loading...") for asynchronously loaded content.

Backend & Technical Changes

  • Refactored Core Logic (movie_selector.py): Major overhaul to handle user sessions, context switching (g.user, g.plex_service, g.cache_manager), and service interaction based on the logged-in user.
  • Cache Management: Reworked CacheManager to support both a global cache (for admin/unauthenticated) and user-specific caches. Cache paths are now user-dependent.
  • Dependencies: Added Flask-WTF for form handling and CSRF protection.
  • Security: Improved Flask secret key handling (uses FLASK_SECRET_KEY environment variable or generates a temporary one).

Frontend Changes

  • Implemented logic for the new LOAD_MOVIE_ON_START setting and the "Get Random Movie" button.
  • Integrated the filtered movie count display and live updates into the filter UI.
  • Added CSRF token handling to relevant fetch requests.
  • Updated service switching logic to hide the button if only one service is available to the user.
  • Refactored event listener setup for better reliability.

Bug Fixes

  • Fixed a bug in trakt where the token wouldn't update.
  • Fixed an issue in emby where the Genre filter would not work.
  • Backend bug fixes.
  • CSS bug fixes.

Full Changelog: v3.4...v4.0

Don't miss a new Movie-Roulette release

NewReleases is sending notifications on new releases.