Miguel Palhas 0fa422e170
ci / web (pull_request) Successful in 6s
ci / rust (pull_request) Successful in 46s
feat(meta): TMDB search and movie lookup
Search and detail lookup, carrying the two fields the policy engine
needs and that are easy to lose at the edge.

`original_language` arrives as bare ISO 639-1, which has one code for
both Portuguese variants, so the dub rule in §5.2 cannot be expressed
against it alone. `Movie` therefore also carries `origin_countries`,
from `origin_country` where TMDB has it and `production_countries`
otherwise, which is what separates a Brazilian film from a Portuguese
one.

Digital release dates come back appended to the detail call rather than
costing a second round trip, reduced to the earliest type-4 entry across
every country: a release existing in one region is a release that exists
on the indexers. `Movie::is_digitally_released` puts the §6.2 gate in
one tested place.

Responses are cached in process for a day, matching the metadata refresh
tick. Failures are never cached, so an outage cannot pin a title into a
bad state until tomorrow.

Tests are wiremock-backed, per §12.
2026-08-22 19:39:21 +01:00
2026-08-22 19:20:47 +01:00
2026-08-22 19:20:47 +01:00

arr

One service that replaces Radarr and Sonarr, and later Bazarr, for a single household.

Five .NET services idle at 600-900 MB to run a loop with four steps in it: decide what you want, find it, fetch it, put it where Jellyfin can read it. Each has a configuration surface an order of magnitude larger than the subset anyone uses, and none of them share a model.

This is that loop, once, in Rust.

  • Prowlarr stays — it owns tracker auth, Cloudflare bypass and the indexer definitions, and replacing it buys nothing.
  • Transmission stays.
  • Jellyseerr stays, talking to a thin Radarr-compatible shim.

Status

Design complete, implementation not started. See DESIGN.md for the contract and the issue tracker for the work.

Documents

  • DESIGN.md — the contract. Domain model, policy engine, sourcing, import, crate layout, build order.
  • CLAUDE.md — repository conventions, label taxonomy, and how an autonomous driver session should sequence the work.
S
Description
No description provided
Readme
17 MiB
Languages
Rust 83.4%
TypeScript 11.5%
CSS 1.9%
Python 1.4%
HTML 1%
Other 0.8%