Commit graph

7 commits

Author SHA1 Message Date
soulis-1256
0115f9d648
Standardize quality profiles to 4K/1080p, disable recycle bin, add migration 003, and update API docs 2026-08-20 18:29:09 +03:00
soulis-1256
f5e7d18edf
Cancel qB grabs when a Seerr request is deleted.
Drain the *arr queue before title delete, trust queue and history hashes,
and match leftover torrents by title and year so an in-progress release
name is removed instead of left downloading.
2026-08-18 23:57:18 +03:00
soulis-1256
edac50f8a2
Fix specials wipe, leftover torrent dirs, and default-stack pins
Keep TV specials when a request covers only regular seasons. Encode
first-run passwords, default missing config-show fields, and strip
Windows CRLF on Python, Dockerfiles, and migrations. Pin express-stack
images. After Sonarr title delete, remove leftover torrents/ dirs even
when qB already dropped the torrent. Document that only the default
stack is supported.
2026-08-16 21:19:15 +03:00
soulis-1256
9ac07caf12
Scope TV request-delete to requested seasons
Seerr's DELETE /api/v1/media/:id/file is title-scoped and would wipe
every remaining season. For a TV request that is only a subset, the
gateway now deletes those Sonarr episode files and unmonitors them,
then drops the request. Movies and last remaining seasons still use
the title-level cascade.

media-purge --seasons and the inotify watcher match that: a season
path never title-purges (other seasons may only be monitored). qB
cleanup requires a season token, refuses multi-season and S01-03
packs, and uses the same title-boundary rules as title-level. *arr
recycle bin is /data/media/.recycle with 7-day cleanup.

Sonarr uncertainty (missing key, failed episodefile list, empty TV
season list) returns 502 and leaves the request. The gateway mounts
config/sonarr/ as a directory so first install cannot replace
config.xml with a Docker-created directory.
2026-08-16 12:04:27 +03:00
soulis-1256
0696a83e2d
Fix fresh-install stalls and harden default-on sidecars
qBittorrent 5.x does not bind WireGuard's tun0 unless told to, so tracker
and DHT packets left via eth0 and Gluetun dropped them (stalledDL). Bind
the session to tun0 on VPN installs. Build sidecar images on the host
instead of apk at start, move vpn-watchdog off Gluetun's netns, ignore
non-video inotify events, and stop start/upgrade from aborting or
re-prompting.
2026-08-13 01:25:20 +03:00
soulis-1256
c2920808eb
Harden media-purge qB matching and refresh Jellyfin on delete.
Prefer history hashes filtered by library folder key, then exact folder-key
match only (no sequel prefix hits). Refuse ambiguous multi-matches. Ignore
partial file-delete events. Best-effort Jellyfin library refresh after purge.
2026-08-12 14:26:27 +03:00
soulis-1256
7339d1b8b4
Add seerr-gateway so delete request fully purges media.
Stock Seerr only drops the request row; intercept DELETE /api/v1/request/:id
to cascade media file delete (*arr + purge hooks) before removing the request.
2026-08-12 14:06:49 +03:00