0.11.0 (2026-05-29)
Bug Fixes
- add aria-label to FilterDrawer backdrop for a11y (ace1b2b)
- add missing previewTimeout declaration in naming page (2536209)
- add Space key support to ActivityStatusPopover for a11y (42658d0)
- add Zod validation to 9 routes missing server-side input validation (90734a8)
- address code review findings - separate enhanced cache, interactive-only caching, variant burst cap, indexer creation dedup, timeout 20s (8fd4bc1)
- align metadata refresh task ID to kebab-case (4dd9826)
- auto-blocklist releases when downloads stall due to no seeders (b29dab3)
- avoid doubling category info in compact status labels (7a06264)
- build errors from API migration — ApiError export, cancelEpgSync rename, data reactivity, @const placement (76c702e)
- calendar page error handling, validation, race conditions, and locale (21095d0)
- ci: formatting fix (14a5597)
- clear in-flight settings promise on TMDB cache invalidation (11d3c17)
- clear stalledSince map on service stop and add requireAdmin to settings GET (df99bb8)
- complete media-link dedup in dashboard and i18n BlocklistTable headers (06ec092)
- correct activity_history_days30 translation from '14 days' to '30 days' (3b54538)
- correct Content-Length after PNG wrapper stripping and Uint8Array types (99b5596)
- correct HLS playlist rewriting for fMP4 streams with audio renditions (23135bd)
- dashboard: prevent tv size pill in storage card from overflowing on smaller screens (1144595)
- deduplicate blocklist entries on insert to prevent re-grab loops (7e949d9)
- Don't expose saved passwords (35778b4)
- guard against NaN from parseInt in blocklist API query params (3efbcae)
- guard against undefined seasonNumber in episode title formatting (b7cda2f)
- i18n activity tags and locale-aware date formatting, refactor BlocklistTable (0688d22)
- i18n ActivityStatusPopover hardcoded strings (3b07a9b)
- i18n ActivityTable missing closing tag and formatting (10b99fa)
- i18n ActivityTable remaining hardcoded strings (4a170ff)
- i18n blocklist components hardcoded strings (6fb202f)
- i18n blocklist settings page hardcoded strings (ec2dc45)
- i18n MediaExplorerTable hardcoded strings (721fdec)
- i18n MediaHero hardcoded strings (2000109)
- i18n remaining component hardcoded strings (7e5aec5)
- i18n SearchResultRow hardcoded strings (e9c32c7)
- indexers: use fallback capability-aware criteria in EZTV test generation to resolve "No test request could be generated" failures (9e95bd4)
- integrations: unify secret-field preserve behavior and required markers across integrations (ffaefc3), closes MoldyTaint/Cinephage#351
- lint: adjust scrollbar visibility and layout in FilterDrawer, SectionRow, and SettingsTabNav components (779142e)
- lint: remove unsafe html error rendering (0b6b0b0)
- livetv: fix stalker endpoint probing, add channel fallback, TS fallback, and health dashboard (857b5c2)
- livetv: fix stalker portal endpoint detection and channel parsing for subpath and dict-format portals (3dda9ea)
- merge activity type into status label for compact views (dashboard, mobile) (2ab662d)
- move stalled download settings to left column in client modal (de61efc), closes #331
- populate releaseDate column on movie add (700df2b)
- qBittorrent v5.2.0 authentication compatibility (Closes #341) (11a829d)
- remove unused randomUUID import from test-yaml-indexers script (1cdea06)
- remove unused variables and fix formatting from activity status changes (d79e176)
- repair broken subtitle providers (subf2m, gestdown, yify) and remove subscene (1e3f9ab), closes #downloadButton
- replace $page. with page. in $app/state migrations (4d08339)
- replace hardcoded strings with i18n message keys (d713628)
- resolve 132 type errors, consolidate duplicate types, clean up codebase (0459326), closes #if
- resolve typecheck errors and lint issues from code review fixes (515fb61)
- restore deleted state declarations in logs page, fix state_referenced_locally warnings (d1addea)
- restore Name to left column, wrap Path Mapping in mt-6 container (d19a7d5), closes #331
- scope monitor/unmonitor all to current library, cascade to seasons/episodes, add 3-state select toggle (56ba9d5)
- show explicit "not linked" state instead of misleading open link when provider mapping unresolved (9e95bd4)
- settings: resolve smartlist editor client crash and improve duplicate profile-name validation UX (f8afd03)
- test: use testable interface type to resolve SubtitleSearchService type check errors (1d0515a)
- ui: keep active route section correctly highlighted on navigation (9e95bd4)
- ui: improve collapsed sidebar alignment across header, nav, and footer (9e95bd4)
- update SceneTime selectors for new HTML layout (table.movehere -> table#torrenttable, updated selectors for bw-torrent-link, date format, freeleech tag) (b63648d), closes table#torrenttable
- use crypto.randomBytes for token generation in StalkerPortalClient (56c2ac7)
- use node: prefix for all crypto imports (926f2f0)
- use Paraglide locale instead of hardcoded en-US in series header (b80b173)
- use SQL COUNT() in blocklist count query instead of loading all rows (825d2c4)
- use SvelteKit router for navigation after movie deletion (ea71ffe)
- use tmdb.getRegion() as fallback instead of hardcoded DEFAULT_REGION (5ef2302)
- workflows: enhance validation for stable source tags in GHCR retag workflow (e0fa68d)
- wrap blocklist dedup-delete-insert in transaction to prevent data loss (891768b)
Features
- add activity type tags and status popovers to ActivityTable (7fd1ca4)
- add activity type tags and status popovers to dashboard sidebar (182458e)
- add ActivityStatusPopover component (f66f7f8)
- add apiGetStream and apiPostStream for non-JSON responses (501d4c6)
- add Blocklist nav entry to settings sidebar (832c395)
- add blocklist query/count methods and API endpoint (d2d4d6c)
- add blocklist settings page with table, filters, and bulk actions (f71fccd)
- add getActivityCategoryTag helper and ActivityTypeTag component (22b5fd3)
- add retry-with-backoff for TMDB 429 rate limits (12e6c9e)
- add season/episode, batch scan, worker API functions; migrate 17 fetch() calls (920e226)
- add slide-out drawer for library sort/filter/display options (a5df8e1)
- add typed frontend API service layer (c5c0f51)
- anime-metadata: add AniList/MAL providers with provider-aware enrichment for series and movies (9e95bd4)
- anime-metadata: add provider links on detail/header views with fallback when provider IDs are missing (9e95bd4)
- anime-metadata: add metadata provider override support for anime items (9e95bd4)
- anime-metadata: scope anime metadata controls to anime contexts only (9e95bd4)
- indexers: add explicit compatibility messaging when indexers don't support current search type (9e95bd4)
- auto-detect stalker portal endpoint from URL pattern (8915a92)
- auto-fail stalled downloads after configurable timeout (de2e8b0)
- blocked media — metadata-level blocklist with 3-layer guard architecture (16b836a)
- blocklist: manual release blocking from search + editable block durations (4162f2f)
- client components use configured region for display (6229195)
- dashboard: replace progress col with size, truncate status labels on mobile (2dfdfe3)
- discover: fallback to /discover when filters applied to trending (5e7be4f)
- dynamic country/language lists in settings and FilterBuilder (038397f)
- expose defaultRegion via layout data (6231e38)
- extend tmdb.fetch() region injection and add getCountries() (7c78fa8)
- indexers: apply global language preference to indexer search results (48dd8d1)
- login: add app logo, password toggle; fix no-useless-escape lint error in
StalkerPortalManager.ts(96e7e4a) - normalize HDR format labels across Plex, Jellyfin, and Emby providers (be88745)
- resolve missing IMDB/TVDB IDs from TMDB before provider searches (54ec61d)
- Stalker portal endpoint probing and 404 fallback (b97bd7a)
- strip CDN PNG wrapper from obfuscated TS segments (f28eede)
- ui: Improve library collection controls and layout (7c0d6c5)
- ui: persist desktop sidebar expand/collapse preference across sessions (9e95bd4)
- ui: single-open submenu behavior — opening one closes the previous (9e95bd4)
Performance Improvements
- add ReleaseCache support to searchEnhanced path (1ea6f34)
- batch library existence checks in autoAddMovies/autoAddSeries (c093c79)
- batch library lookups in SmartListService.updateLibraryStatus (aafa2cc)
- batch subtitle existence checks in SubtitleScannerService (d884012)
- lower interactive timeout to 15s, parallelize indexer creation, throttle cookie refresh, non-blocking title refresh, bounded Levenshtein (4b99a16)
- parallelize title/format variant searches within each indexer (5d3314a)
- parallelize TMDB enrichment with indexer filtering (b734ba3)
- remove batch concurrency cap, fire all indexers in parallel (ce52d10)
- remove interactive movie text supplementation after successful ID search (b0672de)
- remove TEMP DEBUG logs, downgrade per-indexer logging to debug (970e9ec)