feat(daemon): grab pipeline for wanted movies #77

Merged
naps62-yolo merged 3 commits from issue/22-grab-pipeline into main 2026-08-22 22:38:31 +01:00
3 Commits
Author SHA1 Message Date
Miguel Palhas acda6c5d5e Merge remote-tracking branch 'origin/main' into issue/22-grab-pipeline
ci / rust (pull_request) Successful in 1m46s
ci / web (pull_request) Successful in 33s
e2e / e2e (pull_request) Successful in 1m54s
# Conflicts:
#	crates/arr-api/src/roots.rs
2026-08-22 22:30:38 +01:00
Miguel Palhas 4502abbb04 Merge remote-tracking branch 'origin/main' into issue/22-grab-pipeline
ci / rust (pull_request) Successful in 1m34s
ci / web (pull_request) Successful in 37s
e2e / e2e (pull_request) Successful in 2m5s
# Conflicts:
#	.sqlx/query-6e988f7e8d8ac2167c589a35626b11ab88e1fdcc28c432da4c3debf1202eee7a.json
#	crates/arr-api/src/search.rs
2026-08-22 22:27:13 +01:00
Miguel Palhas 23f06d429f feat(daemon): grab pipeline for wanted movies
ci / web (pull_request) Successful in 41s
ci / rust (pull_request) Successful in 2m21s
e2e / e2e (pull_request) Successful in 2m22s
Closes the "wanted movie, no file" gap: search every indexer, cache each
candidate with its verdict and score, send the best eligible one to
Transmission with its label and both seeding limits, and record the Grab.

Restarting mid-flight cannot double-grab. A title with a live grab is not
a gap, selection is a total order over the candidate set, and the add is
keyed on the infohash, so a crash between the add and the insert heals on
the next tick instead of leaving a second torrent.

The policy row to arr-core mapping moves into arr-db, where both the
manual-search API and the daemon read it, instead of being copied.
2026-08-22 22:15:05 +01:00