v0.313.0: media apps on every drive, drive events, a real restart, Plex without the race — release notes (MinAgent 0.155.0); golden next (bake → vouch → floor)
gates / gates (push) Successful in 44s

Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-10-15 10:48:58 +02:00
parent f327bc53a9
commit cac92a407e
4 changed files with 71 additions and 13 deletions
+23
View File
@@ -3307,6 +3307,29 @@ The household sees lost files (name, date taken) on the app page until dismissed
`app_repaired_after_crash` with counts only. Immich is the first user (`09` §3 decision 236: Immich's own job queue —
no key into the household's account). Code: `internal/stacks/after_unclean_boot.go`, `internal/aftercrash/`.
### 8c. Media apps on every drive and the drive events (v0.313.0, R-1023)
- **Every drive.** A template with `media_library:` (`folder:`, `read_only:`) gets one bind per PRESENT enrolled drive —
`<drive>/userdata/media[/<folder>]` at the same path — in `docker-compose.override.yml` (header-marked, ours),
rewritten before every `compose up`. An absent drive (not a mountpoint), a dead one (`shutdown` in
`/proc/self/mountinfo`) and a safely removed one are never bound. Network shares never. The wizard does not ask a
media app for a drive; its config goes on the default drive. `internal/stacks/media_library.go`.
- **A real restart.** `RestartStack` = `up -d --force-recreate` with the stack's env; start times before/after; an
error when nothing started again.
- **Wiring** (`internal/mediawire`): after a media app comes up (debounced 60 s), after the media restart, and on
„Bekötés most": qBittorrent categories + automatic management, Transmission's incomplete folder off, Sonarr/Radarr tag,
root folder, download clients, minimum free space, Prowlarr → Sonarr/Radarr, Plex libraries + „scan on change" (the
server's own token, read at use), Jellyfin libraries (the API key named „felhom", read at use from its database).
Idempotent; keys never stored or logged. Old Sonarr/Radarr installs (`/media/<kind>`) are repaired once, no file moved.
- **Drive events** (`internal/web/media_events.go`, `/api/storage/media/{status,restart,wire}`): added / removed /
returned are recorded on the drive; the storage page and the dashboard show the notice with „Újraindítás most"
(stream check first) and „Később" (03:30), and per drive „restarted since". A returned drive recreates the file
browser at once; a dead or removed drive is not bound into it. **Safe removal** with media apps: pause that drive's
torrents → recreate the apps and the file browser without it → unmount → keep it registered; its return needs no
household step, and the torrents resume after the restart.
- **Plex:** the claim code is an `after_start` field — asked on the Plex page once Plex runs (`POST /apps/plex/plex-claim`);
the gate opens only when Plex says claimed, and „Kész" is refused before that.
### 9. Central Hub Reporting
#### Operator actions (`internal/report/opactions.go`, `09` §3 decision 185)