Releases: giuseppe99barchetta/SuggestArr
v2.4.3
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.
v.2.4.2
A stability-focused release improving Seer connectivity, Jellyfin/Plex reliability, LLM filtering logic, and internal code quality.
🔗 Seer & Jellyseer Improvements
- 🔄 Updated Seer API endpoints
- 🧩 Fixed Seer connection issues
- 🧪 Removed unstable Seer test files
- 📤 Fixed intermittent payload delivery to backend
🎬 Plex & Jellyfin Fixes
- 🧠 Persisted Plex client identifier
- 🔌 Fixed no-connection edge cases with Plex
- 🧪 Fixed Jellyfin API endpoint issues
- 🔎 Improved version checking system
- 🚦 Added rate limiting to
/setupendpoint
🧠 LLM & Secret Handling Improvements
- ♻️ Refactored duplicated code across services
- 🧹 Enhanced LLM request filtering logic
- 🎯 Better validation before job execution
🎨 Frontend & Client Improvements
- ⚙️ Proper initialization of Vue 3 + TypeScript client
- 👤 Fixed admin not loading correctly after page change
- 🔔 Restored toast messaging behavior
- 🧩 Minor UI and state consistency fixes
- 🔐 Improved secret extraction strategy
🧪 Testing & Maintenance
- 🗑 Removed unstable Seer test files
- 🧼 Minor test fixes
- 🔄 General internal refactoring and cleanup
❤️ Thank You
Thank you to everyone contributing fixes, reporting bugs, and improving SuggestArr.
v2.4.1
A major architectural and security upgrade introducing authentication, multi-user support, and a database-driven configuration system.
🔐 Authentication & Multi-User System
- 👥 Introduced full multi-user architecture
- 🔑 Implemented JWT authentication with refresh flow
- 🛡 Role-based access control (Admin / User distinction)
- 🆕 Allow/Disallow free user registration
- 🧾 First registered user automatically assigned as Administrator
- 🔒 Secrets visible only to Admin users
This lays the foundation for:
- 🎯 Account-based personalization
- 📂 Per-user configuration support
- 🎬 Isolated request visibility for each linked Jellyfin / Plex / Emby account
🗄 Database-Driven Configuration
Major internal configuration overhaul.
Highlights
- 📦 Migrated services & integrations from
config.yamlto database - 🔐 Migrated TMDb / OMDb API keys to DB
- 🧠 Migrated AI configuration & secrets to DB
- 📤 Secured and fixed import/export configuration flow
- 🛡 Added additional validation layer for config import/export
🎬 Streaming & TMDb Improvements
- 🔁 Proxied TMDb calls through backend (no frontend API key exposure)
- 🎯 Corrected streaming provider filtering (flatrate + optional rent/buy)
- 🆕 Default to flatrate-only streaming check
- 💳 Optional TVOD support
- 🌍 Added endpoints for watch regions & streaming providers
- ⚙️ Added endpoint for default job filter values
🧪 Dry-Run Mode (#236)
Full implementation and stability improvements.
Highlights
- 🧪 Complete Dry-Run execution mode
▶️ Force-run button now runs all jobs- ⚡ Improved batch speed and reliability
🧠 AI Improvements
- 📐 Introduced Pydantic-validated structured LLM responses
- 🔁 Automatic retry on validation failure
🎨 UI & UX Improvements
- 👤 Added Users & Profile tabs in dashboard
- 🧭 Redesigned wizard flow with monolithic architecture
- 🎓 Step-by-step onboarding tour
- 🖼 Upgraded service logos to SVG
- 🎨 Various UI fixes and visual improvements
🧪 Testing & Stability
- 🧩 Implemented test classes for every service
- 📈 Expanded and fixed test coverage
- 🧪 Added mock files and new test variables
- 🗓 Fixed MySQL date sanitization
- 🐘 Fixed Postgres
is_animecolumn operations #243 - ❤️ Health check blueprint (liveness & readiness endpoints)
- 📊 Queue status endpoint integrated into frontend
- 🔄 Persistent aiohttp session refactor
🐛 Fixes
- Fixed admin not being recognized after page reload
- Fixed logout under public routes
- Fixed configuration import/export edge cases
- Fixed loading variables from DB in auto-test
- Minor UI and stability fixes
⚠️ Stability Notice
This is a major release with significant internal changes.
While extensively tested, some instability may occur.
If you encounter any issues, please report them, fixes will be delivered as quickly as possible.
❤️ Thank You
A huge thank you to everyone for the support, testing, and contributions.
Reaching 1,000 stars on GitHub is an incredible milestone 🚀
v2.3.2
🤖 AI Provider Expansion
- 🧠 Added Google Gemini provider card
- 🪪 Clear provider-specific configuration details in the UI
🚦 Request Processing & Reliability
Major improvements to how requests are handled and processed internally.
Highlights
- 🔒 Submission lock mechanism to prevent duplicate media requests
- 🧵 Background Seer queue worker for processing pending requests
- 🔁 Retry logic with failure tracking
- 📦 Structured handling of queued / submitted / failed states
These changes significantly improve stability under load and prevent duplicate submissions.
🐛 Fixes
- Fixed copy button not working in non-secure contexts (#229)
- Fixed empty Plex username being displayed in the UI (#231)
♻️ Internal Improvements
- Improved queue architecture for better fault tolerance
- Cleaner request lifecycle management
- Better separation between submission and processing layers
v2.3.1
This update introduces a powerful new AI-driven search experience, along with security enhancements, routing fixes, and internal refactors.
🧠 AI Search
Describe what you want to watch and the AI will find it for you, also personalized to your viewing history.
A brand-new intelligent search system powered by LLM integration and TMDb.
Highlights
- 🔎 AI-powered natural language search
- 🎯 Personalized suggestions based on viewing history
- 🚫 Automatic exclusion of already requested TMDb IDs
- 🕘 Recent AI search history for improved contextual results
- 🎬 Full TMDb integration
🔒 Security Improvements
- API keys and tokens are now automatically redacted from logs to prevent sensitive data exposure.
🐛 Critical Fixes
- Improved subpath handling in router.
- Updated settings display consistency.
⚙️ Integration & Configuration
- Added new environment variables for OMDb and TMDb.
- Added unit tests covering the new integrations.
🎨 UI Enhancements
- Added toggle to use a static background color instead of dynamic images.
- Added option to disable background blur effect.
- Removed the General settings tab:
- Some functionalities have been moved into jobs.
- Subpath configuration has been relocated and is now configurable under Advanced Settings.
♻️ Internal Improvements
- Migrated LLM service to AsyncOpenAI client for improved async handling.
- Lazy initialization of the login lock in the Jellyseer client.
- Updated LLM "not configured" warning message.
- Removed deprecated General Settings component and updated configuration structure.
v2.2.1
✨ Added
- IMDb Rating Filtering (OMDb Integration): Added support for filtering content by IMDb rating in Discover and Recommendations using OMDb API.
- Minimum Runtime Filter: Introduced a configurable minimum runtime filter for automation and TMDb client searches (#145).
- Configurable Seer Request Delay: Added customizable wait time between Seer requests to better control automation timing and prevent rate limits (#118).
- User Attribution in Requests: Requests now include user information in DatabaseManager and the Requests page for improved tracking and clarity.
- Optional Blur Disable (Performance Mode): Added an option to disable blur effects for better performance on low-end devices.
🛠 Improved
- Plex Library Handling: Improved Plex library ID matching logic to prevent recently added items from being skipped.
- Library ID Consistency: Standardized Plex library IDs handling (consistent string format) for improved reliability.
- Subpath & Proxy Compatibility: Enhanced reverse proxy support with more robust asset rendering and improved subpath handling.
- Overall Stability: Refined filtering logic and internal request flow for better consistency across integrations.
🐛 Fixed
- TMDb Client TypeError: Resolved
TypeError: 'int' object is not subscriptableoccurring in TMDb filters. - Subpath Crashes: Fixed crashes related to subpath configurations.
- Proxy Blank Page Issue: Resolved blank page issues when running behind reverse proxy setups.
🙌 Contributors
Special thanks to @unsnow-iac for multiple fixes and performance improvements included in this release.
📌 Notes
This release focuses on:
- More precise and customizable content filtering
- Better Plex compatibility and reliability
- Improved performance on low-end hardware
- Stronger proxy/subpath stability
- More flexible automation timing
The new IMDb filtering feature requires OMDb configuration if rating-based filtering is desired.
Feedback and bug reports are always welcome ❤️
v2.2.0
✨ Added
- LLM Provider Integration: Added support for connecting external AI providers such as ChatGPT (OpenAI), Ollama, OpenRouter, LiteLLM or other OpenAI-compatible endpoints.
- AI-Powered Recommendations (Optional): Introduced an advanced recommendation engine that leverages configured LLM providers to generate contextual suggestions based on watch history.
- AI Rationale Display: Each AI-generated recommendation now includes a clear "AI Reasoning" section explaining why the content was suggested.
- Multi-Job Similarity Search: Implemented multi-job searching for content similar to previously watched media or based on selected criteria.
- Sonarr/Radarr Download Profile Sync: Added support for importing and distinguishing download profiles directly from Sonarr and Radarr.
- Enhanced AI Provider Configuration: Expanded AI provider settings with additional input fields, improved visibility, and support for custom base URLs.
- Granular WebUI Settings Management: Settings can now be edited more granularly directly from the WebUI.
- Cron Preset Validation: Added validation for cron presets in AdditionalSettings and SettingsGeneral components.
🛠 Improved
- Recommendation Filtering: Implemented strict duplicate detection to prevent already watched or existing content from being recommended.
- Metadata Handling: Improved TMDb ID matching flow and metadata preservation for Plex and Jellyfin/Jellyseer integrations.
- Configuration Persistence: Enhanced advanced settings persistence and updated configuration parameters for better stability.
- Code Quality: Improved type-hinting and internal structure for better maintainability.
🐛 Fixed
- Malformed Requests Handling: Improved handling of malformed requests to prevent unexpected failures.
- Missing TMDb Metadata: Fixed issues related to incomplete or missing TMDb metadata.
- Advanced Settings Persistence: Resolved issues where beta/advanced settings were not properly saved.
📌 Notes
This release introduces a major functional upgrade with optional LLM-based recommendations and contextual reasoning, while maintaining full backward compatibility.
The focus of this update is:
- Smarter and more transparent recommendations
- Better integration with Sonarr/Radarr and media servers
- Improved configuration flexibility
- Increased stability and reliability
LLM integration is fully optional and requires configuring a compatible provider in Settings.
Feedback and bug reports are always welcome ❤️
v2.1.8
🐛 Fixed
- Fixed an issue where new installations using SQLite could crash on first startup
- Fixed a bug where some successful media requests were not being properly registered
- Fixed a crash that could happen when requesting TV shows
- Improved stability when some request data (user or source) was missing or incomplete
✨ Enhancement
- Database is now automatically created and configured on first launch
- Improved overall reliability of media request handling
- Better compatibility with SQLite environments
🙏 Special thanks to @unsnow-iac for the contribution and PR that helped resolve these issues.
v2.1.7
🐛 Fixed
- Prevent docker-info timeout on slow systems