Skip to content

Release 1.10.0 - Machhapuchhre-Continuum

Choose a tag to compare

@github-actions github-actions released this 29 May 06:42
385c20b

Release Notes

Summary

This milestone delivers a substantial modernization of the platform, focusing on architectural improvements, richer localization, smarter media assets, and deeper integrations with external services. Users will experience more accurate and language-aware media representations, more resilient authentication and token handling, and richer, personalized watch history data for smarter recommendations. The changes also consolidate and simplify numerous internal services for better maintainability and performance.

Features

  • Language-aware media assets: posters and logo backgrounds are now retrieved in the user language from TMDB for a more cohesive localization experience.
  • Catalog metadata enhancements: added logo support and normalized IMDb ratings to ensure consistent catalog presentation.
  • User-centric cache controls: introduced opt-out flags for token negative caches and rate limiting to give users and administrators finer control over caching behavior.
  • Per-user caching improvements: bound Redis caches to 90 days with refresh-on-read to improve responsiveness while keeping data fresh.
  • Automatic token refresh: Trakt and Simkl access tokens now refresh automatically when expired, reducing interruptions.
  • Watch history integrations: added seamless integration with Trakt and Simkl to enrich user history data used for recommendations.
  • New profile and scoring models: introduced enhanced data handling and scoring models to improve personalization.
  • User context service: new service for managing user data and settings in a centralized way.
  • Dynamic content rows: added new row-building functions to support dynamic content generation in the row_generator service.
  • Simplified sampling logic: replaced SmartSampler with a standalone sample_items function for clearer and more maintainable code.
  • Authentication enhancements: introduced a dedicated auth service and refactored token endpoints for a cleaner authentication workflow.
  • Opt-out capabilities: additional opt-out flags for token negative cache and rate limiting provide better control for edge cases.

Improvements & Refactors

  • Core service modernization: migrated Trakt and Simkl services to a common BaseClient for improved testability, consistency, and performance.
  • Catalog data model improvements: watchly.item display name is now visible and read-only; merged watchly.loved and watchly.watched into watchly.item for a unified data model.
  • Profile and integration consolidation: refactored profile section and merged profile service with integration components to streamline user data handling.
  • Front-end modularization: broke down frontend components into separate files for easier maintenance and evolution.
  • Translation and localization: refactored translation module with better fallbacks and caching behavior; added static regex values to correct German translations; avoided caching failed translation fallbacks.
  • Recommendation system refinements: clarified item-based candidate fetching, improved diversity handling, and adjusted year-era bucketing logic for more meaningful recommendations.
  • Library and ingestion improvements: library ingestion now respects IMDb prefix consistently and can rebuild from Trakt/Simkl sources when configured.
  • Cleanup and modernization: removed obsolete migration scripts, tightened token-related regex and startup logging, and performed various low-severity cleanup tasks to improve stability.

Bug Fixes

  • Model compatibility: replaced deprecated gemma3 model with gemma4 to align with current APIs.
  • Token and caching fixes: removed unnecessary negative token cache to prevent stale decisions; reduced token TTL and improved security around token handling.
  • Translation fixes: avoid word-for-word title translations in certain cases and reuse the meta language; improved German translation handling and removed problematic caching on API failures.
  • API and webhook fixes: token DELETE endpoints now return JSON objects; OAuth callback pages are properly HTML-escaped to prevent injection issues; CSRF state validation added to OAuth callbacks.
  • Watch history and data integrity: ensured Simkl provides accurate watch counts; cleaned up token refresh flows and 401/403 handling by clearing revoked tokens.
  • Ingestion and catalog fixes: ensured IMDb prefix presence during ingestion; guard against malformed cinemeta values; fall back gracefully when seed item has no title.
  • Performance and reliability: differentiation of 404 vs 5xx errors in TMDB lookups to improve logging accuracy; reuse of AsyncClient instances across calls for efficiency.
  • Privacy and security: ensured catalog responses are privately cached where appropriate; eliminated exposure of raw exception details in catalog 500 responses.
  • Miscellaneous fixes: corrected library construction from configured sources and improved overall error handling and resilience across services.

Deprecations & Migrations

  • Gemma model upgrade: deprecated gemma3 model in favor of gemma4 to align with updated external APIs and data structures.

Known Considerations

  • The refactors introduce architectural changes that may require configuration alignment in some deployments. Review related docs for any changes to BaseClient usage and auth endpoints.

Notes for Developers

  • This release focuses on stability, localization quality, and scalable architecture. If you customize catalog metadata or translation behavior, review the new integration points and token handling policies.