5c7cc7badd065c6cfef46358ac41e7ca6e6c6da6
tags are how the marketplace is browsed rather than scrolled: a list of them on the left, the plugins that carry one on the right. a closed vocabulary (PLUGIN_TAGS in the platform) because free text becomes homelab, home-lab, Home Lab and selfhosted inside a month, and a filter list of synonyms is worse than no filter at all. declared here rather than curated in the catalogue, so a plugin can say what it is and nobody edits a table when one ships. the marketplace caches it on sync, exactly as it already does for label and summary.
Transmission
Your torrent daemon, driven from Officer.
Transmission does not install or supervise the daemon and holds no torrents of its own. You point it at a daemon's RPC endpoint; it speaks that protocol for you and keeps the credentials server-side, so no device ever carries them.
What you get
- The queue, virtualised — thousands of torrents scroll without the list breaking a sweat.
- Per-torrent detail: general, files (with per-file priority and wanted/unwanted), peers, trackers.
- The usual verbs — add by magnet or file, remove with or without data, move, relabel, set options.
- Stats and speed limits, including the alternative-speed schedule.
What you need
A Transmission daemon you already run, with RPC enabled — its URL, the RPC path (usually
/transmission/rpc), and a username and password if it requires them.
Nothing else. No system packages, no host binaries.
Setup
- Install the plugin.
- Open /transmission → Connection and enter the daemon's address and credentials.
- It probes the RPC endpoint and stores the connection encrypted, server-side.
Worth knowing
- The connection is stored in a core table, not this plugin's.
service_connectionsis the app store's shared credential store, keyed by account and service. This plugin ships no schema of its own — see PLUGIN.md for why that is deliberate and what it costs. - It polls. A torrent client's whole value is live numbers, so the panels refresh on a timer while open. That is a real difference from, say, a bookkeeping app, and it is intentional.
- It is a client, not a supervisor. If the daemon stops, this reports that it cannot reach it. It will not start it for you.
Languages
TypeScript
100%