v0.0.3
Pre-release
Pre-release
Changelog
0.0.3 - 2026-08-29
Scan/ingest are isolated per request. Title-finding is back to the August 17 loop (one child, one instruct call, match kicked immediately), plus a title folder path.
Breaking
POST /v1/scanreturns202 {"session","files"}.POST /v1/ingestreturns202 {"session","jobs"}(jobs are no longer a bare array).GET/DELETE /v1/jobs,GET /v1/scan/status,GET /v1/match/log,POST /v1/match,POST /v1/retry, select/catalog-on-job, and catalog reads require?session=. Missing id is400; unknown or expired is404.- Jobs persist as
{data_dir}/jobs-{session}.json, notjobs.json. - Scan no longer attaches video files to jobs or maps them onto catalog episodes (that 0.0.2 experiment is reverted).
Changed (title-finding realignment)
Restored the August 17 grouping engine (bb1cdb1 / 0692b2d), not the later Units / batched Group / LLM SxxExx experiments.
- Immediate children only (
scan.Children). Onematch.Groupper child. Compact listing, ~5 filename samples,max_tokens: 256. Append+Kickinside the child loop so matching overlaps later grouping.- Prompt is the August 17 rules again (folder as title, one object per series, no SxxExx, extras are not shows).
- Added
Path:on the listing and{title,year,path}so a mixed folder can use{Path}/{child}(movie/OVA next to seasons). Parent:on folder listings; fallback title prefers Parent whenFolder:is Season N.- Same title from two children is still two jobs (no end-of-scan merge).
Added
- Server-minted session ids:
<UTC 20060102T150405Z>-<16 hex>. GET /v1/sessions— unexpired ids, newest first.session.ttl_ms(default and max 24h). Expired job files are purged; catalog on disk is not.GET /v1/catalog?session=lists only titles that session matched.DELETE /v1/catalogandDELETE /v1/catalog/{provider}/{id}— no session;409if any live session still has that match.- Admin UI stores the last session and sends
?session=on job/scan/catalog calls.
Fixed
- Image
Fetchno longer shares the provider API pacer (tvmaze/posterno longer queues for minutes behind search). - Admin scan poller no longer dies on the previous session while
POST /v1/scanis in flight; poller restarts aftersetSession. POST /v1/scandoes not walk the whole tree before202;filesis the sum of each child’s video count.ListVideos/ samples follow symlink library roots.
Removed
Units/FolderClass/ batchedGroupUnit/ LLM file S/E labels.- Unused
MergeJobs/ emptyGrouped.Filesleftovers.