v0.8.0
Films: the release where Transpondarr tracks both anime formats as themselves.
Add a film from AniList and it is searched on its title and release year,
grabbed, and filed into a Movies library of its own; episodes keep going where
they went before, and gain a flat filing option for the scanners that prefer it.
The REST resource series is also now titles, which API clients need to know
about.
Quality profiles are now chosen when you add a title rather than reassigned
afterwards, and the controls around them hold up β the chip survives a slow or
failed load, and names no longer collide only by case.
Added
- Anime films can be added, searched and grabbed. A film in AniList search
or on the Discovery chart is no longer reserved and greyed out: adding one
tracks it like any other title, and the same pipeline searches, grades, grabs
and imports it. A film's releases are matched on its title and release year,
which is what they are named for, so a manual search lists what is available
and a monitored film joins the scheduled search queue and the recent-feed poll
alongside your series, backing off the same way when nothing turns up. Format
decides and episode count never does, so a one-episode OVA or special is a
series and stays one. Two things to expect: automation waits for a release
year rather than guessing at one β a film whose year AniList has not
published yet is listed as ineligible until a metadata refresh fills it in,
and a release naming a different year is listed with that mismatch as its
reason β and a batch or season pack is held back for the same kind of reason,
being as likely to be the parent series' pack as a multi-part release of the
film. Searching and grabbing by hand work throughout, in both cases. Adds
migration 00022. - Films import into their own library directory. Plex and Jellyfin want a
Movies library separate from Shows, so Settings β Library now takes a
movies directory alongside the existing one, and a film places into it as
Placeholder Film (2019)/Placeholder Film (2019).mkv, with the year left out
of the name when the provider publishes none. Until that directory is set, a
grabbed film waits in the Activity queue and says so rather than landing in
the wrong library; setting one imports it on the next scan, and adding a film
with no movies directory configured says so on the add form, so it is clear
before the download finishes rather than after. A download that ships the
feature alongside deleted scenes, an interview or a making-of imports the
feature β the largest video in the payload. When two videos are the same size
nothing is guessed: the import waits in the Activity queue for you to say
which is the film. - Films read as films across the web UI. A film's page carries a status card
β wanted, downloading or in the library β with the release year in its header,
and its add form asks only whether to monitor it. The library list reports what
a film is doing: Downloading, Downloaded, not imported, Import
blocked, In library, Wanted, or Not monitored when nothing is
pursuing it. The calendar shows a film's premiere as a premiere, and places far
more of them β the release date AniList publishes now fills in where a
broadcast schedule never existed, so a dated film leaves the No schedule
data footer and lands on its day, while one announced with only a year stays
in the footer rather than being placed on a date nobody published. A film's
Releases tab lists everything the search returned, and its Search button on
the Wanted page links straight there. Wanted says Not released yet and
states the date plainly; the Activity queue, the import notifications, the
delete confirmation and the release-match reasons all name the film. Series
screens keep their wording throughout, single-episode OVAs and specials
included. - Episodes can be filed without season folders. Settings β Library now
takes a Series layout: keep the default season folders, or choose flat and
have episodes land inPlaceholder Saga/Placeholder Saga - S01E05.mkvfor the
scanner configurations that prefer it. Films are unaffected, and so are
single-episode OVAs and specials, which stay series-shaped as before.
Changed
- A title's page has moved from
#/series/:idto#/titles/:id, and the web
UI calls it a title. The URL now matches what the rest of the product calls
it. There is no redirect from the old address, so a saved link or a
browser-history entry pointing at#/series/:idwill not resolve β open the
title from the Titles list instead. Every link inside the app already points at
the new address. The sidebar and page title now read Titles to match, while
genuinely episodic screens keep their wording. - A title page's link parameters now do one job each.
?tab=releasesopens
the Releases tab and?item=Nfilters it to one episode, where a single
?item=Nused to do both. A saved link or bookmark carrying only?item=N
now opens the title on its usual landing tab rather than on Releases; a
series' Search button on the Wanted page sends both, so it is unaffected. - The REST resource is now
titles, notseries. An endpoint called
seriesthat returns films would be a wart the 1.0 stability promise freezes
in place. Every/api/v1/series...route is now/api/v1/titles..., and the
fields that name or reference one follow β in the webhook payload as well as
the REST API, so the two agree. Discord and ntfy now announce Title added
rather than "Series added". Nothing else changes β same behaviour, same data,
same database, and your notification settings carry over untouched. - Adding a title now opens a form for it, carrying both add-time
decisions. The monitor choice was a single control above the whole result
list, and the quality profile was not asked for at all β an added series took
the default and had to be re-assigned from its own page afterwards. Clicking
Add on a result now opens a form for that title with Monitor and
Quality profile on it, defaulted for the common case, so a seasonal show is
still one confirmation and a long-runner is narrowed before its first search.
The global "Monitor on add" control and theAdd Β· future onlybutton
annotation are gone, and Discovery opens the same form.
Fixed
- The quality-profile chip on a title's page no longer vanishes while it loads
or when it fails. The picker rendered nothing until the profile list
arrived, so the chips row shifted on every visit, and a failed fetch left no
trace at all β just a missing control. It now holds its place while loading,
shows a Profile unavailable chip you can click to try again, and links to
Settings when there are no profiles to pick. - Profile names no longer collide only by case. Saving a profile named
Animewhileanimeexists is refused with the same conflict a duplicate name
has always given, matching how group names within a profile are compared.
Internal
- Built with Go 1.26.6. The 1.26.5 standard library carries six
vulnerabilities the release binary reaches β innet/http,crypto/tls,
net/url,encoding/xmlandencoding/asn1β all fixed upstream. - Duplicate-name detection reads SQLite's result code instead of matching on
the error message, so a driver that rewords its errors can no longer turn a
conflict into a 500. - The profiles list reads groups and usage counts in bulk.
GET /api/v1/profilesfetched both one profile at a time, so every profile cost a
full scan of the series table. Groups and counts now come back in one query
each, leaving the endpoint at three queries whatever the profile count.
Upgrade notes
-
Set a movies directory before a film can import. Settings β Library
takes one alongside the existing library directory (or
TRANSPONDARR_LIBRARY_MOVIES_DIR); with it unset, films are still added,
searched and grabbed, but a completed film waits in the Activity queue instead
of being placed. Point it at a root your media server has as a Movies library,
under the same mount your downloads use so the hardlink works. Nothing about
episodes changes if you never set it. -
Saved links into a title's page need re-making.
#/series/:idhas no
redirect to#/titles/:id, and a bookmark carrying only?item=Nnow opens
the title on its landing tab rather than on Releases. Links inside the app are
already updated; only your own bookmarks and browser history are affected. -
The new series layout setting defaults to season folders, so nothing moves
on upgrade. If you switch it later, it applies to future imports only:
episodes already in your library stay where they are, and an upgrade of one of
them lands in the new shape and leaves the old file behind, which the log
warns about. API clients that write library settings must now send
series_layoutwith the rest of the body: omitting it is refused rather than
quietly resetting the layout to season folders. The web UI needs nothing. -
API clients using
X-Api-Keyneed one search-and-replace; the web UI needs
nothing. The UI ships inside the binary and is already updated, so only
machine clients notice. Every route under/api/v1/seriesmoved to
/api/v1/titlesβ including{id},{id}/search,{id}/grab,
{id}/grabs,{id}/blocklist,{id}/blocklist/{entryId},
{id}/pinned-groupand{id}/profileβ and these JSON fields were renamed:Before After Where series_idtitle_idactivity queue and history, calendar, wanted groups, discovery entries, pinned-group and profile-assign responses series_titletitleactivity queue and history, calendar, wanted groups series(list)titlesGET /api/v1/titlesseries(name)titletitle search, grab history, title blocklist series(count)titlesGET /api/v1/blocklistseries_idstitle_idsPOST /api/v1/wanted/searchseries_queuedtitles_queuedPOST /api/v1/wanted/search,PATCH /api/v1/wanted/itemsseries_counttitle_countGET /api/v1/profileson_series_addedon_title_addednotification settings series_titletitlewebhook payload event: "series_added"event: "title_added"webhook payload Generated clients also see renamed operation ids (
list-seriesβ
list-titles, and so on) and schema names (SeriesDTOβTitleDTO,
AddSeriesInputBodyβAddTitleInputBody, and so on); regenerate against the
new spec. Nothing is dropped alongside the renames β theseriesdatabase
table keeps its name and its columns, and saved notification toggles are read
under their existing keys, so nothing needs reconfiguring.Films add fields rather than changing any: titles carry
formatandyear,
the calendar, wanted and activity rows carryformatso a client can word a
film as one, library settings takemovies_dir, and adding a title accepts
quality_profile_id. All are optional on the way in, so a client that ignores
them behaves as it did.One rename fails quietly rather than loudly, so check it if you script your
settings: aPUT /api/v1/settings/notificationsthat still sends
on_series_addedturns that notification off, because the toggles are
plain booleans with no unset encoding and a save replaces all of them. Every
other rename here reports itself β an old route 404s, andseries_idsis a
required field, soPOST /api/v1/wanted/searchreturns 422 rather than
resetting your whole library's search backoff.