- Add request-level user bookmark memoization in BookmarkStatusSerializer to eliminate redundant queries across all lists
- Optimize BookReferenceSyncView and BookReference.authors caching (reduced queries from 185 to 10)
- Add multi-level prefetch_related for references and images in HadisMainListView (reduced queries from 109 to 6)
- Add incremental sync support (updated_after/since) in HadisSyncView
- Add select_related for language in BookListView (reduced queries from 35 to 18)
- Annotate episode count and cache effective_thumbnail in podcast and video playlist views (reduced queries from 22/17 to 4)
- Prefetch categories with annotated article counts in ArticleListAPIView (reduced queries from 41 to 3)
- Scale Gunicorn workers/threads to 4w/4t (16 concurrency) with gthread in docker-compose.prod.yml
- Return raw, unlocalized translation list in HadisSyncSerializer for Flutter offline multi-language support
- Enable hadis signals in HadisConfig.ready() to load cache invalidation listeners
- Add ContentRelease to TARGET_MODELS and implement invalidate_hadis_cache helper
- Trigger explicit cache invalidation in AdminContentReleaseViewSet upon version increment and CRUD
- Update HadisSyncView swagger documentation example
- Sort narrator chains in reverse order so each branch leads from first narrator to primary narrator/hadith
- Add support for uncertain transmitters with candidate details in xmind tree
- Localize reliability titles using get_localized_text
- Disable caching on category xmind endpoint and add no-cache response headers
- Eliminate N+1 queries in hadis serializers by using in-memory prefetch cache instead of .first() and .order_by()
- Add select_related for hadis and category in HadisSyncView prefetches
- Apply cached_view (Redis 2h + Accept-Language) to HadisSyncView and public hadis endpoints
- Enable GZipMiddleware in Django settings to compress large API responses
- Create reusable watermark utility in utils/watermark.py supporting PIL, UploadedFile, bytes, and DRF serializer fields
- Default position set to bottom-left with responsive 32% width scaling and alpha blending
- Auto-resolve SVG watermark to high-resolution PNG
- Integrate automatic watermarking into Article thumbnails, Hadith/Book Reference images, Corrections, Original Texts, and Interpretations
- auto-extract YouTube duration and thumbnail on Video save using yt-dlp
- filter out empty playlists and playlists with inactive items in video and podcast public/app views
- dynamically calculate number_of_volumes for BookEditionV2 based on assigned volumes
- Add is_root query param filter defaulting to true (parent__isnull=True) in CategoriesBySectView
- Ensure pagination count returns total count of root categories for the sect