- L1 (core, offline): release names with kinds (episode, movie, extra:
OP/ED/Opening/Ending/NC/PV/OVA…), folder hints (season and name from
parentheticals, ranges), one show across folders, gaps and next with
skipped numbers, junk ignored, stable keys.
- L2 (app, device-owned cache): AniList match with synonyms and
sequel walking, episode mapping across cours (AnimeFlow runs when
signed in), art and episode titles, "Wrong show?" pins per show or
folder, episode offsets; lazy, spaced requests, works offline.
- Files tab as a library: poster cards, show pages with banner, gap
prompt, extras, movies, Wrong show? and Episode numbers.
- media.ref produced for local files, Jellyfin (provider ids) and links,
carried in swaps and Up next; receivers name media from it.
- Hosting relays each Jellyfin item through its own server's login.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
lib/src/files/ for the 1.0 Files source (UI comes with the library
round; ARCHITECTURE gets its section then):
- parseReleaseName: series/season/episode/group/year/extras from release
names (fansub, scene, batch, NCOP/OVA markers); seriesKey for grouping.
- scanFolder (isolate): videos only, samples/trailers and other files
counted as hidden, sidecar subtitles paired by name (+ language/flag
suffixes), 20 000-file cap; groupBySeries -> series + loose videos.
- FolderStore: watched folders and recent files in Hive, as signals.
- thumbnailFor: a 480 px JPEG at 25% via a hidden mpv player
(screenshot-to-file, vo=null), cached by path+size+mtime, 2 at a time,
cancellable, never throws. No ffmpeg needed (Windows ships only libmpv).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>