Add SABnzbd client and Downloads view (M4)

SABnzbd client (queue, history, pause/resume, delete, retry) with lenient
number decoding and API-key-safe errors. Downloads view polls while
visible, shows queue and history, and supports pause, delete (with
confirmation) and retry. Add dev/ with pinned Radarr/Sonarr/SABnzbd
containers wired together for manual testing.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-20 17:58:32 +02:00
co-authored by Claude Sonnet 5.5
parent 2dd7c17737
commit aeeb2c5f50
12 changed files with 1261 additions and 9 deletions
+7 -5
View File
@@ -6,7 +6,7 @@ A terminal UI to search for movies and series, add them to Radarr / Sonarr, and
- **TUI library:** [tview](https://github.com/rivo/tview) (on top of tcell)
- **License:** MIT
- **Module:** `git.stinnesbeck.com/nils/arr-tui`
- **Status:** M3 done
- **Status:** M4 done
## 1. Goals
@@ -106,8 +106,10 @@ Keybindings (initial proposal):
| `Enter` | Search / open details / confirm |
| `a` | Add selected result |
| `m` / `s` | Switch to movies / series search |
| `p` | Pause/resume SABnzbd |
| `d` | Delete selected download (with confirm) |
| `p` | Pause/resume SABnzbd (Downloads view) |
| `d` | Delete selected download or history entry (with confirm) |
| `t` | Retry the selected failed download (history) |
| `h` | Downloads view: switch between queue and history |
| `i` | Interactive release search for the selected item |
| `g` | Grab the selected release |
| `r` | Refresh |
@@ -177,7 +179,7 @@ The file should be created with mode `0600`; warn if it is more permissive. API
- Unit tests for each client using `httptest.Server` with recorded JSON fixtures.
- Config parsing / validation tests.
- UI logic (formatting, state) kept out of tview widgets so it can be tested without a terminal.
- Manual testing against real Radarr/Sonarr/SABnzbd instances (ideally a docker-compose file for local dev).
- Manual testing against real Radarr/Sonarr/SABnzbd instances (`dev/up.sh` starts pinned Radarr/Sonarr/SABnzbd containers, see `dev/README.md`).
## 9. Milestones
@@ -185,7 +187,7 @@ The file should be created with mode `0600`; warn if it is more permissive. API
- [x] **M1** — Radarr client: system status, lookup, quality profiles, root folders, add movie.
- [x] **M2** — Movie search + add flow in the UI.
- [x] **M3** — Sonarr client and series search + add flow.
- [ ] **M4** — SABnzbd client and Downloads view (queue + history) with live updates and pause/resume/delete.
- [x] **M4** — SABnzbd client and Downloads view (queue + history) with live updates and pause/resume/delete.
- [ ] **M5** — Radarr/Sonarr queues merged into the Downloads view.
- [ ] **M6** — Interactive release search (movies, then series seasons/episodes) and grab.
- [ ] **M7** — Polish: help screen, error handling, README, release builds.