Release 0.2.0 #8

Merged
thibault merged 12 commits from 0.2 into main 2026-10-08 18:53:00 +02:00
Owner

Merges 0.2 into main: search (TMDB/AniList catalog, indexer engine with JSON and RSS definitions, release filters, Search screen), free space per disk, and the move to the Forgejo forge (CI on the PC runner, image on the forge registry).

🤖 Generated with Claude Code

Merges 0.2 into main: search (TMDB/AniList catalog, indexer engine with JSON and RSS definitions, release filters, Search screen), free space per disk, and the move to the Forgejo forge (CI on the PC runner, image on the forge registry). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
`docker image prune -f` removed every dangling image on the Pi, including
old Jellyfin and Vaultwarden ones (969 MB on the first release). Filter on
the org.opencontainers.image.source label the Dockerfile sets.

Co-authored-by: Thibault Magnin <316742538+thbmagnin@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
GET /api/catalog/search?q= asks TMDB (movies and shows) and AniList
(anime) at once and merges them, exact title matches first. TMDB's
Japanese animation is left to AniList. A failing source is reported in
`errors` next to the other's results. GET /api/catalog/{kind}/{id} gives
what finding releases will need: IMDb id, seasons, other names.

TMDB needs PLANKTON_TMDB_API_KEY; without it, only anime are searched.
Answers are cached 10 minutes in memory.

Co-authored-by: Thibault Magnin <316742538+thbmagnin@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Definitions are JSON files in PLANKTON_INDEXERS_DIR (default {data_dir}/indexers), checked when loading: kinds, search URLs and their variables, results type, levels resolved into a single chain, field paths and templates parsed. Broken files are reported, never fatal. GET /api/indexers lists them, POST /api/indexers/reload reads the folder again and swaps the set. Searching comes next.

Co-authored-by: Thibault Magnin <316742538+thbmagnin@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Run the json definitions: pick the first strategy whose variables the
title has, fetch with a 15 s timeout and a 5 MB cap, walk the levels and
read the fields, inferring sizes, dates and infohashes. GET /api/releases
asks every enabled indexer of a kind at once, merges by infohash and
reports each indexer's status; results are cached 2 minutes per URL.
POST /api/indexers/check searches a known title on each indexer.


Claude-Session: https://claude.ai/code/session_01947SGTYxD1CJLsk2PcULRA

Co-authored-by: Thibault Magnin <316742538+thbmagnin@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
feat(api): parse release names and keep season packs (#45)
Some checks failed
CI / test (push) Has been cancelled
CI / web (push) Has been cancelled
86b9167ac9
Release names are read for their quality (resolution, source, codec, HDR,
Dolby Vision, languages), season and whether they are a pack. Each
indexer's releases are filtered before the merge: shows keep only the
packs holding the season asked (now required), anime drop single
episodes, and releases found by title must name the title (and, for a
movie, its year within one). Each indexer reports how many it lost in
`filtered`, and the answer carries the filing `target`.


Claude-Session: https://claude.ai/code/session_01947SGTYxD1CJLsk2PcULRA

Co-authored-by: Thibault Magnin <316742538+thbmagnin@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
ci: run the checks on the Forgejo forge (#4)
All checks were successful
CI / web (push) Successful in 9s
CI / test (push) Successful in 27s
652a3496c8
feat(api): read rss results from indexers (#1)
All checks were successful
CI / web (push) Successful in 7s
CI / test (push) Successful in 36s
29ae954933
fix(api): keep the season an anime entry is about (#2)
All checks were successful
CI / web (push) Successful in 7s
CI / test (push) Successful in 25s
8b53e1b205
feat(web): search titles and pick a release (#3)
All checks were successful
CI / web (push) Successful in 6s
CI / test (push) Successful in 24s
4d560b4c25
ci: publish the release image on the forge's registry (#5)
Some checks failed
CI / web (push) Successful in 7s
CI / test (push) Has been cancelled
3f0b002302
feat: show the disks' free space (#6)
All checks were successful
CI / web (push) Successful in 6s
CI / test (push) Successful in 24s
61b512fd66
chore: release 0.2.0 (#7)
All checks were successful
CI / web (push) Successful in 6s
CI / test (push) Successful in 25s
CI / web (pull_request) Successful in 7s
CI / test (pull_request) Successful in 44s
Image / image (pull_request) Successful in 5m35s
Image / deploy (pull_request) Has been skipped
6151ded7a0
thibault referenced this pull request from a commit 2026-10-08 18:53:02 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
thibault/plankton!8
No description provided.