Major Improvements: UI, Security, Media Integration and AI Enhancements
This PR introduces a large set of improvements across the project, including UI refactoring, security fixes, media client improvements, and AI-related enhancements.
To make the changes easier to review, they are grouped into logical sections below.
🎨 UI & Design System Improvements
Significant improvements to frontend consistency and accessibility:
- Introduced design tokens for consistent styling
- Implemented a modal redesign with improved structure
- Refactored BaseCard component
- Added surface hover effects
- Improved focus handling and accessibility
- Fixed dropdown focus behavior
- Updated status badge styling
- Improved modal rendering using Vue Teleport
These changes aim to provide a more consistent and maintainable UI foundation.
🔐 Security Improvements
Resolved multiple GitHub Advanced Security alerts:
- Removed clear-text logging
- Fixed potential information exposure
- Implemented a timing-safe dummy bcrypt hash to prevent username enumeration
- Improved authentication-related logging behavior
👥 User Permissions & UI Access Control
Introduced improvements to user management and UI permissions:
- Implemented the ability to hide specific UI tabs for non-admin users
- Improved handling of role-based UI access
- Enhanced overall user management system
This allows administrators to better control which parts of the interface are visible to different users.
🎬 Media Integration Improvements
Enhancements to media client integrations:
- Implemented credential-based media account linking
- Improved Jellyfin client authentication
- Added better error handling for API connectivity
- Refactored media client code for better testability
- Improved library fetching logic
- Fixed Fails to request without explanation. #278
🔁 Refactor: Jellyseer → Seer
Refactored the codebase to replace references to Jellyseer with Seer for better abstraction and maintainability.
🤖 AI & Recommendation Improvements
Enhancements to AI-powered features:
- Implemented AI-generated rationales for search results
- Added
_extract_json_objectto safely parse JSON objects from LLM outputs - Improved multi-language AI search handling
- Fixed AI Search fails on multi-language queries #264
- Added Native LM Studio support without LiteLLM proxy #265
- Fixed AI Search fails on multi-language queries #264
🧠 Automation & Recommendation Fixes
- Fixed year range filter not being applied in recommendation jobs #271
- Improved filter normalization
- Enhanced TMDb discover integration
- Fixed IMDB rating requirement is ignored if OMDB doesn't supply it #279
- Fixed Wizard setup fails to save Jellyseerr integration to database
📦 Dependencies
Updated several dependencies via Dependabot.
📝 Notes for Reviewers
This PR accumulates several improvements that were developed together on the nightly branch.
Changes have been logically grouped by feature area to make the review easier. Future updates will be split into smaller PRs where possible.