Commit Graph
44 Commits
Author SHA1 Message Date
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
naps62-yolo b5413eef46 Use policy scoring weights in release search (#74)
ci / rust (push) Failing after 56s
ci / web (push) Successful in 37s
e2e / e2e (push) Successful in 1m51s
2026-08-22 22:12:17 +01:00
naps62-yolo bf526b9198 Unified search box (#30) (#75)
ci / rust (push) Failing after 1m26s
ci / web (push) Successful in 29s
e2e / e2e (push) Successful in 1m55s
2026-08-22 22:08:32 +01:00
naps62-yolo ac6ed8b798 feat(db): add series, season and episode model (#71)
ci / rust (push) Successful in 1m36s
ci / web (push) Successful in 34s
e2e / e2e (push) Successful in 1m41s
2026-08-22 22:04:27 +01:00
naps62-yolo e5f4e44925 Add reconcile loop scheduler (#69)
ci / rust (push) Successful in 1m42s
ci / web (push) Successful in 32s
e2e / e2e (push) Successful in 1m42s
2026-08-22 22:00:12 +01:00
naps62-yolo 403593cda1 test(probe): add HDR fixture coverage (#72)
ci / rust (push) Successful in 1m23s
ci / web (push) Successful in 29s
e2e / e2e (push) Successful in 1m33s
2026-08-22 21:50:13 +01:00
naps62-yolo 0b7565189e feat(api): owner tags and filtered movie views (#70)
ci / web (push) Successful in 52s
ci / rust (push) Successful in 1m21s
e2e / e2e (push) Successful in 1m41s
2026-08-22 21:43:03 +01:00
naps62-yolo 8444b6ebe5 test(parse): release name fixture corpus (#55)
ci / rust (push) Successful in 2m6s
ci / web (push) Successful in 36s
e2e / e2e (push) Successful in 1m45s
2026-08-22 21:37:42 +01:00
Miguel PalhasandClaude Fable 5 5a1cf999b6 fix(api): adapt search to arr-core scoring API
ci / web (push) Successful in 31s
ci / rust (push) Successful in 2m36s
e2e / e2e (push) Successful in 2m41s
PRs #63 and #65 were each green pre-merge but changed and consumed
the same arr-core surface; merging both broke main. Size bands are
now gibibytes with a points penalty, evaluate takes size_bytes, and
Policy carries score_weights (column wiring tracked in #68).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-22 21:31:45 +01:00
naps62-yolo e9c055675b test(e2e): cross-process harness over the §12 seams (#66)
ci / rust (push) Failing after 1m36s
ci / web (push) Successful in 26s
e2e / e2e (push) Failing after 59s
2026-08-22 21:26:16 +01:00
naps62-yolo c7b57b13e6 Design system tokens (#67)
ci / web (push) Successful in 58s
ci / rust (push) Failing after 1m3s
e2e / e2e (push) Successful in 1m33s
2026-08-22 21:26:10 +01:00
naps62-yolo de2a13060c Search API with classified releases (#65)
ci / rust (push) Failing after 1m1s
ci / web (push) Successful in 49s
e2e / e2e (push) Successful in 1m15s
2026-08-22 21:22:12 +01:00
naps62-yolo 29d6831c83 feat(core): score by distance from target size (#63)
ci / web (push) Successful in 48s
ci / rust (push) Successful in 1m13s
e2e / e2e (push) Successful in 1m15s
2026-08-22 21:15:26 +01:00
naps62-yolo 514628f089 feat(web): SPA skeleton embedded in the binary (#60)
ci / web (push) Successful in 33s
ci / rust (push) Successful in 57s
e2e / e2e (push) Successful in 1m7s
2026-08-22 21:07:40 +01:00
naps62-yolo 94c334ffe9 Radarr v3 shim for Jellyseerr (#62)
ci / web (push) Successful in 12s
ci / rust (push) Successful in 1m44s
e2e / e2e (push) Successful in 1m21s
2026-08-22 21:00:35 +01:00
naps62-yolo a0c2717549 Add per-indexer Torznab search client (#58)
ci / web (push) Successful in 9s
ci / rust (push) Successful in 1m37s
e2e / e2e (push) Successful in 1m32s
2026-08-22 20:56:31 +01:00
naps62-yolo 1cb7f1b2fa feat(probe): ffprobe wrapper (#59)
ci / rust (push) Successful in 1m20s
ci / web (push) Successful in 7s
e2e / e2e (push) Successful in 1m28s
2026-08-22 20:52:09 +01:00
naps62-yolo c7cb3652e5 Enforce Dolby Vision profile policy (#61)
ci / rust (push) Successful in 58s
ci / web (push) Successful in 8s
e2e / e2e (push) Successful in 1m23s
2026-08-22 20:52:06 +01:00
naps62-yolo 99ac79373d feat(api): add movie CRUD API (#56)
ci / web (push) Successful in 8s
e2e / e2e (push) Successful in 1m21s
ci / rust (push) Successful in 3m53s
2026-08-22 20:40:31 +01:00
naps62-yolo 302b7cfe72 Language rule: original language, dubs and pt-BR detection (#57)
ci / web (push) Successful in 8s
ci / rust (push) Successful in 1m5s
e2e / e2e (push) Successful in 1m51s
2026-08-22 20:33:02 +01:00
naps62-yolo 6a8051c70f Transmission RPC client (#52)
ci / web (push) Successful in 7s
ci / rust (push) Successful in 1m22s
e2e / e2e (push) Successful in 2m21s
2026-08-22 20:22:23 +01:00
naps62-yolo e02a9aa813 feat(indexer): enumerate Prowlarr caps (#51)
ci / rust (push) Successful in 1m3s
ci / web (push) Successful in 8s
e2e / e2e (push) Successful in 48s
2026-08-22 20:18:37 +01:00
naps62-yolo 45cd30ae69 Policy filter and verdict pipeline (#54)
ci / web (push) Successful in 5s
ci / rust (push) Failing after 12s
e2e / e2e (push) Successful in 1m5s
2026-08-22 20:18:28 +01:00
naps62-yolo 58827da647 feat(api): axum skeleton with health and OpenAPI (#53)
ci / web (push) Successful in 6s
ci / rust (push) Successful in 45s
e2e / e2e (push) Successful in 1m31s
2026-08-22 20:09:52 +01:00
naps62-yolo 03ca4a26e8 feat(meta): TMDB search and movie lookup (#49)
ci / rust (push) Successful in 1m26s
ci / web (push) Successful in 12s
e2e / e2e (push) Successful in 1m0s
2026-08-22 19:52:57 +01:00
naps62-yolo 3e57cf5bf8 Release name parser (#50)
ci / web (push) Successful in 19s
ci / rust (push) Successful in 56s
e2e / e2e (push) Successful in 1m21s
2026-08-22 19:49:05 +01:00
naps62-yolo 1529e9fdca Bootstrap configuration loading (#46)
ci / web (push) Successful in 14s
ci / rust (push) Successful in 39s
e2e / e2e (push) Successful in 1m15s
2026-08-22 19:44:50 +01:00
naps62-yolo 7b57c387fb feat(core): add movie domain types (#47)
ci / rust (push) Successful in 36s
e2e / e2e (push) Successful in 1m10s
ci / web (push) Successful in 6s
2026-08-22 19:40:48 +01:00
naps62-yolo 84777169d0 feat(db): SQLite schema and movie migrations (#48)
ci / web (push) Successful in 7s
ci / rust (push) Successful in 35s
e2e / e2e (push) Successful in 47s
2026-08-22 19:36:39 +01:00
Claude b42b70f062 docs: warn that aoe send races with launch
ci / web (push) Successful in 6s
ci / rust (push) Successful in 22s
e2e / e2e (push) Successful in 30s
2026-08-22 19:27:11 +01:00
ClaudeandClaude Opus 5 86f6ed44f8 ci: keep the e2e job honest on an empty crate
ci / web (push) Successful in 5s
ci / rust (push) Successful in 21s
e2e / e2e (push) Successful in 30s
nextest fails a zero-test run, which is the behaviour worth keeping — passing
--no-tests=pass would let a broken filter go green once real tests exist.
Placeholder test instead, same as arr-core.

The first e2e run proved the Transmission service container pulls and starts;
it failed only at the empty test run.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-22 19:24:17 +01:00
ClaudeandClaude Opus 5 bbe53bac80 ci: per-push gate, e2e and audit workflows
ci / web (push) Successful in 6s
e2e / e2e (push) Failing after 40s
ci / rust (push) Successful in 1m5s
Gate runs fmt, clippy with warnings denied, cargo-machete, and nextest.
nextest comes from a prebuilt binary rather than `cargo install` to keep the
run short. Cache covers ~/.cargo and target/, keyed on Cargo.lock plus the
toolchain file. Nothing builds --release.

e2e is a separate workflow, main plus PRs touching the crates whose seams it
covers. cargo-deny is weekly, off the push path.

Closes #2

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-22 19:20:47 +01:00
ClaudeandClaude Opus 5 f4e63f1ac5 chore: cargo workspace skeleton
Eleven empty crates per DESIGN.md §11, versions and lints pinned once in the
root manifest, Justfile carrying the §12 gate, nix dev shell.

The frontend steps in `just ci` no-op until web/ exists. arr-core carries one
placeholder test because `cargo nextest` fails a zero-test run, and relaxing
that would let a broken filter go green later.

Closes #1

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-22 19:20:47 +01:00
Claude de3e77537f docs: add driver cadence and stuck-session handling 2026-08-22 19:11:48 +01:00
ClaudeandClaude Opus 5 1e590e56c0 docs: add driver prompt and merge policy
Relaxes the concurrency rule to per-crate edits, records that the PR daemon
spawns land and review-pr sessions automatically, and makes the driver the
only thing that merges — skipping a stalled reviewer rather than blocking.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-22 19:09:47 +01:00
Claude 5cf4eecdc3 docs: verify model ids and worktree launch 2026-08-22 18:57:38 +01:00
Claude 18fc1d1d44 docs: pair two models per difficulty tier 2026-08-22 18:52:35 +01:00
Claude dfd8440e10 docs: put fable 5 at the top tier 2026-08-22 18:51:34 +01:00
Claude c78e9ca09d docs: fix model tier ordering 2026-08-22 18:51:06 +01:00
Claude 6294763497 docs: restrict driver model set to four 2026-08-22 18:50:23 +01:00
ClaudeandClaude Opus 5 af33b38c1b docs: require impeccable skill for design and frontend
Adds the design-system issue, scaffolds .impeccable/live/config.json against
web/index.html, and records the aoe spawn commands for the codex GPT-5.6
models in the driver table.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-22 18:48:44 +01:00
Claude 3804e62eea chore: add issue seeding script 2026-08-22 18:22:48 +01:00
ClaudeandClaude Opus 5 966f36bf09 docs: design contract and driver conventions
Design for a single-service replacement of Radarr/Sonarr: domain model,
policy engine, sourcing via Prowlarr Torznab, import pipeline, reconcile
loop, crate layout, CI gate and build order.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-22 18:19:03 +01:00