- Add Redis caching (2h TTL) to categories, collections, and pinned collections in video, library, article, podcast, and dobodbi_calendar (6h TTL)
- Implement conditional_cached_view (30m TTL) for list endpoints (books, podcasts, articles, videos, playlists) that caches public queries and bypasses caching when is_bookmark=true or is_bookmarked=true
- Remove bookmark/user count queries from pinned collection list views to avoid user-specific cache pollution
- Prevent user bookmark/rate leakage into public catalog cache in BookListView via AnonymousUser context wrapper
- Fix video bookmark filtering bug in VideoPlaylistListAPIView and VideoListAPIView to accept both is_bookmark and is_bookmarked, and query both VIDEO_PLAYLIST and VIDEO bookmarks
- Add assign_random_videos_to_playlists management command
- Make slug optional in AdminArticle serializers with auto-generation fallback
- Support unicode and URL-encoded slugs with case-insensitive lookup in ArticleDetailAPIView
- Count only active books (status=True) in library Category.books_count and CategoryListView
- Introduced a new `DownloadedBooksListView` to retrieve books downloaded by the current user.
- Updated `urls.py` to include the new endpoint `/books/downloaded/`.
- Removed the `is_downloaded` parameter from the `BookListView` to streamline the book listing process.
- Simplified the bookmark creation process by using request data directly in the serializer.
- Introduced a new `perform_create` method to save the user context during bookmark creation.
- Enhanced the book listing functionality to filter books by download status for the current user, using a new query parameter `is_downloaded`.