Skip to content

feat(transmission): add Transmission torrent client integration - #84

Open
jeromelefeuvre wants to merge 1 commit into
Shoshuo:mainfrom
jeromelefeuvre:feature/transmission-integration
Open

feat(transmission): add Transmission torrent client integration#84
jeromelefeuvre wants to merge 1 commit into
Shoshuo:mainfrom
jeromelefeuvre:feature/transmission-integration

Conversation

@jeromelefeuvre

Copy link
Copy Markdown

Summary

  • New download-client page for Transmission (setup wizard step, admin settings entry, sidebar badge/poll, health circuit breaker), modeled on the existing qBittorrent conventions.
  • Transmission's RPC session handshake is handled transparently: the first request without a valid X-Transmission-Session-Id gets an expected HTTP 409 carrying the real token, which the client caches and retries with — the setup wizard's Test button and the dashboard health check both treat that 409 as "reachable," while a genuine 401 (bad RPC password) is reported as an auth failure.
  • Covers list/table/compact torrent views, filtering, search, sort, pagination, bulk actions (pause/resume/delete/recheck, pause-all/resume-all), a per-torrent detail modal (general/files/trackers/peers) and add-by-URL / add-by-file, with a read-only category filter derived from Transmission's own labels.
  • User/password fields are optional, matching qBittorrent's reverse-proxy-friendly config shape.

Test plan

  • Full PHPUnit suite passes (688 tests, 1634 assertions)
  • lint:twig clean on all modified/new templates
  • lint:yaml clean on both translation files
  • Manual spot-check: /, /transmission, /setup/downloads, /admin/settings all respond without error after a container restart + cache clear
  • Diff verified scope-clean against unrelated fork features (Deluge/Unraid/UniFi/Houndarr/dashboard-layout/themes)

🤖 Generated with Claude Code

New download-client page (setup wizard step, admin settings entry,
sidebar badge/poll, health circuit breaker) alongside qBittorrent,
modeled on the same conventions. Transmission's RPC session handshake
is handled transparently: the first request without a valid
X-Transmission-Session-Id gets an expected HTTP 409 carrying the real
token, which the client caches and retries with — the setup wizard's
Test button and the dashboard health check both treat that 409 as
"reachable," while a genuine 401 (bad RPC password) is reported as an
auth failure.

Covers list/table/compact torrent views, filtering, search, sort,
pagination, bulk actions (pause/resume/delete/recheck, pause-all/
resume-all), a per-torrent detail modal (general/files/trackers/peers)
and add-by-URL / add-by-file, with a read-only category filter derived
from Transmission's own labels.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant