Skip to content

Release v0.1.3

Choose a tag to compare

@github-actions github-actions released this 29 Sep 07:57
· 152 commits to master since this release

0.1.3 - 2026-09-29

🚀 Features

  • (codeid,javdb) Implement multi-tier candidate resolution for catalogue scraping - (00c813f)
  • (javbus) Enable adaptive reachability probing and remove manual switch - (72f9fb3)
  • (subscriptions) Decouple subscription targets cache and add paginatio - (51818c0)

📝 Other Changes

🐛 Bug Fixes

  • (api) Abort library local scan handler when JSON binding fails - (991138a)
  • (catalogue) Ignore route persistence errors in cached JavDB queries - (edd3470)
  • (codeid) Add FC2- provider search query variant for FC2-PPV candidates - (3b58fb7)
  • (domain) Mask unexpected and internal error details in public message - (7074f5c)
  • (drive) Bind account cache to credential version - (d9b133f)
  • (emby) Remove unused receiver from translatePath and fix escape check - (9c38b30)
  • (emby) Use atomic single-flight and negative cache for actor avatars - (3a36df5)
  • (emby) Resolve absolute media paths and trigger library refresh on update - (f79e501)
  • (export) Sanitize EmbyMovieDir with nfo.FileStem to prevent illegal paths - (6d65005)
  • (javbus) Strip unsupported pb unit from magnet size regex - (54211f6)
  • (magnet) Distinguish skipped sources and bypass cache on partial failures - (349e1ac)
  • (monitor) Return normalized config upon subscription settings update - (431a334)
  • (monitor) Mark actor cursor initialized to avoid dropping debut works - (fd06c32)
  • (monitor) Eliminate recursive calls on subscription constraint error - (9916221)
  • (monitor) Resume subscription batch from processed count on restart - (5691485)
  • (netx) Explicitly set transport.Proxy to nil in newTransport - (b034764)
  • (netx) Permit local proxy connections in safe transport dialer - (1778d57)
  • (netx,app) Make proxy updates atomic and synchronize database persistence - (b7a2b91)
  • (pan) Restrict retry policy for non-idempotent requests and remove unused upload logic - (de87784)
  • (scan) Normalize local NFO code with fallback and handle ignored errors - (0150471)
  • (scan) Clean up local Emby movie directory and notify Emby on movie deletion - (28dd654)
  • (scrape) Sort multi-part videos naturally and consolidate Emby export - (f26863a)
  • (strm) Only fallback to play URL when direct download is unavailable - (9fdc7bb)
  • (strm) Unify user-agent across download, play, and probe requests - (1171f30)
  • (strm) Regenerate STRM files on rewrite to support token rotation - (985577f)
  • (strm) Support empty user-agent downstream relay and override media content-type - (3e499ad)
  • (strm) Bind 115 raw download url to player user-agent and default public_url - (851a6c1)
  • (subtitle) Delete orphan pending subtitle records during export - (a1feba6)
  • (tasks) Handle JavDB rate limits and retry failed workflow items - (574d600)
  • (tasks) Retry Claim and Finish on transient database errors - (7722fd3)
  • (web) Prevent duplicate beacon POST and clear pending in browse history - (8ab436c)
  • (web) Rename clear cache button to clarify only unused cache is removed - (a885c55)
  • (web) Track pan login qr auto-refresh by session id - (6d55da1)
  • (web) Handle 401 unauthorized on SSE terminal closure - (5f2f14c)
  • (web) Use placeholderData for movie state cache and prevent premature ingestion - (b3ccfaa)
  • (web) Only clear auth token and dispatch unauthorized event on UNAUTHORIZED error code - (abcce48)
  • Prevent Emby settings flicker with optimistic updates - (531bfa6)
  • Separate throttle waits from I/O timeouts and reload uncached recommendations - (fd8e915)
  • Centralize 115 retry-after backoff and recheck deadlines - (5111f35)
  • Preserve scan callbacks and reject invalid GFriends indexes - (49f0228)
  • Avoid blocking GFriends lookups and retry failed index refreshes - (f7d15e2)
  • Rewrite STRM on directory changes and retry incomplete magnet lookups - (c533e85)
  • Centralize API error handling and account state refresh - (d965493)
  • Persist discovery and subscription browsing state in URL - (7a1fd29)
  • Unify error classification and return 429 for login rate limits - (6d27657)
  • Unify web JWT authentication through HttpOnly cookies - (40b03ca)
  • Automatically queue scans for the configured Emby directory - (38e3d10)
  • Resolve audit regressions in exports, scans, playback, and subscriptions - (5e45f6a)
  • fix(scan): persist scanID across checkpoints to prevent resume deletion - (6dd6aa5)

📖 Documentation

  • (audit) Mark lockfile synchronization checklist item as resolved - (197a67c)
  • Prune resolved audit items and refresh remaining recommendations - (ef65c7f)
  • Add full-stack code audit checklist - (d814237)
  • Add categorized frontend and backend code audit - (dbe781b)

⚡ Performance

  • Avoid refreshing browse history after every view - (167759b)

🚜 Refactor

  • (codeid) Replace hardcoded catalogue aliases with verified candidates - (1c25b27)
  • (export) Unify export config and manage strm rewrites - (1321532)
  • (library) Store metadata snapshots on movie records - (d92c46b)
  • (offline) Persist downloads independently of tasks - (30db8a2)
  • (scan) Remove premature fast STRM export to prevent dirty prefix directories - (04d513a)
  • (subtitle) Remove 115 pan subtitle indexing and download to eliminate pan burden - (d6a8a0c)
  • (tasks) Isolate subscription batches from library workers - (38ab502)
  • Simplify magnet aggregator configuration - (dadc146)
  • Simplify library card hover state - (5a60ac1)
  • Use router link state for navigation highlighting - (c4ad680)
  • Simplify access gate and JWT interfaces - (bc622b4)
  • Replace runtime configuration with local constants - (1c837bf)
  • Centralize the empty user-agent sentinel - (2f65392)
  • Remove test-only safe download options - (7d66e0c)
  • Replace drive mount event bus with a single listener - (0264e0d)
  • Consolidate pan login polling options and tests - (e1e5939)
  • Simplify recommendation caching while preserving detail loading - (923000e)
  • Simplify scan persistence and type export configuration - (4eeb7e6)
  • Simplify task handlers and completion callbacks - (d1956ff)
  • Extract library scan button from page - (91d18f4)
  • Extract QR login state machine from drive - (6eb4887)
  • Separate scan orchestration and directory indexing - (5d31e8e)
  • Separate Emby HTTP client and actor sync lifecycle - (22820d6)
  • Separate pan wire models from API and persistence formats - (cbb000b)
  • Initialize service dependencies before starting workers - (b8cafc4)
  • Move network settings service out of app - (12d8aa2)
  • Centralize database migrations with versioned transactions - (8615a5d)
  • Separate live JavDB route state from persistence - (e39d3f1)
  • Clarify catalogue sources and unify magnet aggregation - (e224b71)
  • Remove redundant JavBus detail cache - (d16768d)
  • Share proxied fingerprint client lifecycle management - (867b788)
  • Centralize HTTP transports and simplify streaming clients - (fd9598d)
  • Move scan and subscription workflows out of tasks - (78baae5)
  • Enforce package boundaries and extract shared subtitle metadata - (5e2d6f9)
  • Remove web player, playback session, and watch history - (7fe1cba)

🧪 Testing

  • Migrate Vitest tests to TypeScript with shared tsconfig - (c0559d1)
  • Migrate frontend tests from node:test to Vitest - (dc88d5b)
  • Add javdb title and number test - (30708d6)

⚙️ Miscellaneous Tasks

  • Bump package version to 0.1.3 - (b297fe3)
  • Remove minimal node version - (c41d532)
  • Bump deps - (0235ad9)