v0.7.0
Monitoring, per episode: the release where you choose which episodes
Transpondarr chases, not just which series. Unmonitor a recap, an episode you
already have, or a thousand-episode back catalogue, and automation stops looking
for it β and every progress count now reads against what you actually asked for
rather than against every episode a series will ever have. Activity also gains a
view of the downloads nothing is waiting on.
Added
- Per-episode monitoring. Monitoring was all or nothing per series: once an
episode existed, the sweep chased it until a file landed β forever. Every
episode now carries its own flag, so unmonitoring a recap, an episode you
already have, or 1,038 episodes of a back catalogue takes them out of
automation for good. Adding a series asks which episodes to monitor β all,
or future only from the next broadcast onwards β and the answer keeps
applying to episodes announced months later. The Episodes table gains row
checkboxes and a bulk monitor/unmonitor toolbar; Wanted gains a per-row toggle
and anunmonitoredreason, with those rows behind the existing Unmonitored
chip rather than removed, so the click is undoable. A manual search and a
manual grab still work on an unmonitored episode, and a pack grabbed for its
monitored episodes still imports every file it carries. Adds migration 00021.
Closes #188. - Downloads nothing is waiting on are now visible in Activity. A torrent
could be left in the download client with nothing pointing at it β after a
second grab replaced the first, or after deleting a series and choosing to keep
its downloads β where it kept downloading, took up disk, and could not be seen
or stopped from Transpondarr. Activity gains an Unmatched downloads section
listing them with their size, age and state, each removable by hand with the
option to delete its data too. Nothing is removed automatically, and only
Transpondarr's own download category is ever listed β torrents outside it are
yours and are never touched.
Closes #131.
Changed
- A series' progress is now measured against what it is pursuing, not against
every episode it will ever have. The denominator counts episodes that are
monitored and already broadcast, following Sonarr, with the raw total kept
beside it: a 12-episode show three episodes in reads3 / 3 (12 total)
instead of3 / 12. A series with nothing aired yet says "Nothing aired yet
(12 total)" and one with nothing monitored says "Nothing monitored",
rather than0 / 0; "Search all wanted" is disabled in both cases, because
there is nothing to search for. The episode table's summary strip splits the
same three groups β tracked, not yet aired, not monitored. - The item status
haveis nowin_library, and so is the field it derives
from.havewas the odd one out in a vocabulary ofdownloading/stuck/
deferred/wanted, and the web UI has always rendered it as "In library"
anyway, so this is a rename in the API, not in what you see. The target is
deliberately notimported: adopting a pre-existing library would put an
episode in the library without the importer touching it. The
wanted_items.havecolumn moves with it (migration 00019). No behaviour
changes. Closes #84. - A tracked title is now identified by which provider it came from and its id
there, not by an AniList id column.series.anilist_idbecomes the pair
(provider, provider_id)β the same shape the metadata cache has always used.
AniList remains the only provider and every existing row migrates to it, so
nothing about behaviour changes; what changes is that the database no longer
names its upstream in a column. Rebuilds theseriestable (migration 00020).
Closes #74.
Fixed
- An episode you already have can now be searched from the Episodes tab. The
row's Search button appeared only on wanted and deferred episodes, so an
episode already in your library could not be searched from the series page at
all β even though Cutoff Unmet linked to the same view and the server had
always accepted the request. It is now on every row, in-flight grabs included.
Closes #195.
Upgrade notes
-
Every series card's progress changes on upgrade, including ones with nothing
unmonitored. Nothing is recalculated or written β the denominator is simply
counted differently, and the old number stays visible as the total in
parentheses. The API keepstotalunchanged and addstrackedand
monitored_itemsbeside it, so a client reading the old field still gets the
old number.in_librarydoes change: it now carries the same
monitored-and-aired filter, so a held unaired or unmonitored episode cannot
push a series past its own denominator. -
API clients using
X-Api-Keyneed one search-and-replace; the web UI needs
nothing. Three fields change on the JSON responses:Endpoint Before After GET /api/v1/serieshave: 12(count)in_library: 12GET /api/v1/series/{id},POST /api/v1/serieshave: true(per item)in_library: trueGET /api/v1/series/{id},GET /api/v1/calendar,GET /api/v1/wanted/cutoff-unmetstatus: "have"status: "in_library"The other status values are untouched. The migration renames the column in
place, so no data moves and a downgrade to 0.6.x needsgoose downfor
migration 00019 as usual. -
Breaking API change: adding a series takes a provider pair.
POST /api/v1/seriesnow expects{"provider": "anilist", "provider_id": 123, "monitored": true}.anilist_idis gone, with no compatibility alias, and
provideris required rather than defaulted β a default would hide which id
space the caller meant, which is the ambiguity this change exists to remove. A
request in the old shape is rejected with 422.The series responses change to match:
GET /api/v1/series/{id}, the add
response,GET /api/v1/metadata/searchandGET /api/v1/browse/seasonall
emitproviderandprovider_idin place ofanilist_id. The web UI ships
inside the server binary and is updated in lockstep, so this only affects
scripts and third-party clients calling the API directly. -
The migration rebuilds the
seriestable. It is applied automatically on
first start and preserves every row, including everything hanging off a series
β wanted items, grabs, grab history and blocklist entries. As with any
schema-changing release, back uptranspondarr.dbbefore upgrading;
downgrading to 0.6.x is supported and converts the pair back.