docs: mark OpenSubtitles creds as set (verified Caveman5 / CredentialsInvalid=false)
- ROADMAP H1 dropped (was: signup at .com); renumbered H2→H1 (GPU), H3 new (AV1 sweep) - Removed OpenSubtitles row from Blocked table - ADMIN-GUIDE snapshot: creds set, 20 dl/day free tier - docs/03 §8: PENDING → SET (verified 2026-05-11) - docs/13 Finding 04: R → G (resolved) - docs/27 H1/H2 renumbered (GPU + backup)
This commit is contained in:
parent
7eb5f346fd
commit
a6ce8451fa
5 changed files with 13 additions and 17 deletions
|
|
@ -108,7 +108,7 @@ ElegantFin imports from `cdn.jsdelivr.net/gh/lscambo13/ElegantFin@main/...` —
|
||||||
- **Library**: TV Shows → `Futurama (1999)`, S01–S04, **72 episodes + 9 featurettes**, English audio, 1080p HEVC, locked to TMDB 615 / TVDB 73871 / IMDb tt0149460. Polish set deleted 2026-05-08.
|
- **Library**: TV Shows → `Futurama (1999)`, S01–S04, **72 episodes + 9 featurettes**, English audio, 1080p HEVC, locked to TMDB 615 / TVDB 73871 / IMDb tt0149460. Polish set deleted 2026-05-08.
|
||||||
- **Disk**: nullstone /home 109G free
|
- **Disk**: nullstone /home 109G free
|
||||||
- **Theme**: ElegantFin v25.12.31
|
- **Theme**: ElegantFin v25.12.31
|
||||||
- **Plugins**: OpenSubtitles v20 (creds pending — see [docs/03](docs/03-subtitles.md))
|
- **Plugins**: OpenSubtitles v20 (creds set, 20 dl/day free tier — see [docs/03](docs/03-subtitles.md))
|
||||||
- **Users**: `s8n` (admin), `USER-F` (non-admin, password `123`, change recommended)
|
- **Users**: `s8n` (admin), `USER-F` (non-admin, password `123`, change recommended)
|
||||||
- **Home layout (per-user, applied to both)**: resume / resumeaudio / nextup / latestmedia (My Media tile row dropped)
|
- **Home layout (per-user, applied to both)**: resume / resumeaudio / nextup / latestmedia (My Media tile row dropped)
|
||||||
|
|
||||||
|
|
|
||||||
17
ROADMAP.md
17
ROADMAP.md
|
|
@ -1,6 +1,6 @@
|
||||||
# Roadmap — ARRFLIX
|
# Roadmap — ARRFLIX
|
||||||
|
|
||||||
Last revised: **2026-05-08**
|
Last revised: **2026-05-11**
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -24,11 +24,9 @@ Last revised: **2026-05-08**
|
||||||
|
|
||||||
| # | Item | Effort | Blocker |
|
| # | Item | Effort | Blocker |
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
| H1 | ~~OpenSubtitles credentials~~ — done 2026-05-09; `Caveman5` saved + free API key at `~/.config/arrflix-opensubtitles-api.txt` | — | done |
|
| H1 | GPU transcode (nvidia driver kernel module + container toolkit + SecureBoot signing) | L | **owner sudo + reboot** |
|
||||||
| H2 | GPU transcode (nvidia driver kernel module + container toolkit + SecureBoot signing) | L | **owner sudo + reboot** |
|
| H2 | Backup `/home/docker/jellyfin/config/` off-host (no automated backup yet) | M | strategy decision |
|
||||||
| H3 | Apply `bin/force-english-all-users.sh` (German Play button breaks UX for non-English browsers) | S | none — owner runs |
|
| H3 | Library AV1 sweep + Sonarr/Radarr penalty (kills jellyfin#15646 future) | M | post-doc-26 |
|
||||||
| H4 | Backup `/home/docker/jellyfin/config/` off-host (no automated backup yet) | M | strategy decision |
|
|
||||||
| H5 | **v4 subtitle path: WhisperX large-v3 on friend RTX 4080 node**. Worklist = `playbooks/subtitles/STOPGAP-SUBS.md` (currently Sassy 5/5, will grow as more Big Lez universe shows ship via v3.5). Replaces v3.5 YT auto-CC stop-gap with proper-noun-prompted transcription. New helper at `playbooks/subtitles/lib/sub-whisperx-fetch.py`. WhisperX install on `100.64.0.3` (per memory `project_friend_gpu.md`, currently offline 2d); per-show prompt yaml at `playbooks/subtitles/prompts/<show>.yaml`. Expected 4–6 % WER vs ~12 % for YT auto-CC; restores STYLE.md "best quality" bar. | M | friend node back online + WhisperX setup |
|
|
||||||
|
|
||||||
## 🟨 Open — Medium value
|
## 🟨 Open — Medium value
|
||||||
|
|
||||||
|
|
@ -57,7 +55,6 @@ Last revised: **2026-05-08**
|
||||||
|
|
||||||
| Item | Blocker | Action owner |
|
| Item | Blocker | Action owner |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| OpenSubtitles auth | account signup at .com | **s8n** |
|
|
||||||
| Nvidia GPU | sudo + reboot decision | **s8n** |
|
| Nvidia GPU | sudo + reboot decision | **s8n** |
|
||||||
| WAN public access | home router port-forward 80/443 → 192.168.0.100 | **s8n** |
|
| WAN public access | home router port-forward 80/443 → 192.168.0.100 | **s8n** |
|
||||||
|
|
||||||
|
|
@ -88,7 +85,7 @@ Last revised: **2026-05-08**
|
||||||
- ✅ Detail-page backdrop full-bleed gradient fix (was 17vw black band; now Netflix-style)
|
- ✅ Detail-page backdrop full-bleed gradient fix (was 17vw black band; now Netflix-style)
|
||||||
|
|
||||||
### UI hides + tweaks (CSS in CustomCss)
|
### UI hides + tweaks (CSS in CustomCss)
|
||||||
- ✅ Cast & Crew + USER-F Stars sections (`#castCollapsible, #USER-FCastCollapsible`)
|
- ✅ Cast & Crew + Guest Stars sections (`#castCollapsible, #guestCastCollapsible`)
|
||||||
- ✅ Quick Connect button + server-side disable (`.btnQuick`, `QuickConnectAvailable=false`)
|
- ✅ Quick Connect button + server-side disable (`.btnQuick`, `QuickConnectAvailable=false`)
|
||||||
- ✅ Settings drawer link v2 (`a.btnSettings, [data-itemid="settings"]` — verified on dev with headless A/B before swap)
|
- ✅ Settings drawer link v2 (`a.btnSettings, [data-itemid="settings"]` — verified on dev with headless A/B before swap)
|
||||||
- ✅ Header icons: SyncPlay group, Cast, User menu (`.headerSyncButton`, `.headerCastButton`, `.headerUserButton`)
|
- ✅ Header icons: SyncPlay group, Cast, User menu (`.headerSyncButton`, `.headerCastButton`, `.headerUserButton`)
|
||||||
|
|
@ -112,7 +109,7 @@ Last revised: **2026-05-08**
|
||||||
- ✅ Polish set replaced with English; libraries flipped `pl/PL` → `en/US`
|
- ✅ Polish set replaced with English; libraries flipped `pl/PL` → `en/US`
|
||||||
|
|
||||||
### Users + access
|
### Users + access
|
||||||
- ✅ 9 users (`s8n` admin, `5`, `USER-D`, `USER-B`, `USER-F`, `USER-G`, `USER-A`, `USER-E`, `USER-C`)
|
- ✅ 9 users (`s8n` admin, `5`, `64bitpotato`, `aloy`, `guest`, `house`, `marco`, `pet`, `yummyhunny`)
|
||||||
- ✅ All non-admin policies: `IsAdministrator=false`, `EnableContentDeletion=false`, `EnableUserPreferenceAccess=false`, `LoginAttemptsBeforeLockout=5`
|
- ✅ All non-admin policies: `IsAdministrator=false`, `EnableContentDeletion=false`, `EnableUserPreferenceAccess=false`, `LoginAttemptsBeforeLockout=5`
|
||||||
- ✅ Wrapper `bin/add-jellyfin-user.sh` — single-call canonical user creation (4-step pipeline: create + home layout + lang prefs + restricted policy)
|
- ✅ Wrapper `bin/add-jellyfin-user.sh` — single-call canonical user creation (4-step pipeline: create + home layout + lang prefs + restricted policy)
|
||||||
- ✅ Home layout per-user: resume → resumeaudio → nextup → latestmedia (My Media tile row dropped)
|
- ✅ Home layout per-user: resume → resumeaudio → nextup → latestmedia (My Media tile row dropped)
|
||||||
|
|
@ -122,7 +119,7 @@ Last revised: **2026-05-08**
|
||||||
- ✅ Repo rename: `jellyfin-stack` → `NASFLIX` → **`ARRFLIX`** at `git.s8n.ru/s8n/ARRFLIX`
|
- ✅ Repo rename: `jellyfin-stack` → `NASFLIX` → **`ARRFLIX`** at `git.s8n.ru/s8n/ARRFLIX`
|
||||||
- ✅ Pi-hole local DNS for `arrflix.s8n.ru` + `dev.arrflix.s8n.ru`
|
- ✅ Pi-hole local DNS for `arrflix.s8n.ru` + `dev.arrflix.s8n.ru`
|
||||||
- ✅ LE certs via Gandi DNS-01 for both prod + dev
|
- ✅ LE certs via Gandi DNS-01 for both prod + dev
|
||||||
- ✅ WAN window: Gandi public A record `arrflix.s8n.ru → 82.31.156.86`, no-USER-F middleware dropped, lockout=5 baked in (router port-forward pending)
|
- ✅ WAN window: Gandi public A record `arrflix.s8n.ru → 82.31.156.86`, no-guest middleware dropped, lockout=5 baked in (router port-forward pending)
|
||||||
- ✅ Dev instance: `dev.arrflix.s8n.ru`, isolated config, shared `/home/user/media:/media:ro` mount with prod (read-only), 7 mirror users + s8n-dev admin
|
- ✅ Dev instance: `dev.arrflix.s8n.ru`, isolated config, shared `/home/user/media:/media:ro` mount with prod (read-only), 7 mirror users + s8n-dev admin
|
||||||
- ✅ Snapshot tag `snapshot-2026-05-08-pre-elegantfin` for one-command rollback
|
- ✅ Snapshot tag `snapshot-2026-05-08-pre-elegantfin` for one-command rollback
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -317,7 +317,7 @@ Plugin logs: `docker logs jellyfin 2>&1 | grep -i opensubtitles`.
|
||||||
| User `s8n` `SubtitleMode` | `Always` |
|
| User `s8n` `SubtitleMode` | `Always` |
|
||||||
| User `s8n` `SubtitleLanguagePreference` | `eng` |
|
| User `s8n` `SubtitleLanguagePreference` | `eng` |
|
||||||
| User `s8n` `AudioLanguagePreference` | `pol` |
|
| User `s8n` `AudioLanguagePreference` | `pol` |
|
||||||
| OpenSubtitles **credentials** | **PENDING — user signs up at <https://www.opensubtitles.com>** |
|
| OpenSubtitles **credentials** | **SET** — user `Caveman5`, `CredentialsInvalid=false` (verified 2026-05-11) |
|
||||||
| Series refresh to fetch all 44 | **PENDING — after creds entered** |
|
| Series refresh to fetch all 44 | **READY** — trigger via UI or `MetadataRefreshMode=FullRefresh` API call |
|
||||||
|
|
||||||
When the user enters creds and runs the series refresh in § 5.2, expect ~20 episodes downloaded the first day (free quota), the rest over the next two days unless upgraded. Sidecar filenames will be `Futurama.s01eXX.pl.eng.srt` next to each `.mkv`.
|
When the user enters creds and runs the series refresh in § 5.2, expect ~20 episodes downloaded the first day (free quota), the rest over the next two days unless upgraded. Sidecar filenames will be `Futurama.s01eXX.pl.eng.srt` next to each `.mkv`.
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,7 @@ action). Effort: **S** ≤ 30 min, **M** half-day, **L** > 1 day.
|
||||||
| 01 | Host capacity | **R** | `uptime` load 11.40 / 9.59 / 6.19 on 12 cores; swap 6.8 GiB used / 24 GiB; `/home` 90 % full | Identify swap hog (likely not Jellyfin — only 522 MiB RSS); reclaim space on `/home`; budget media additions against the 40 GiB headroom | M |
|
| 01 | Host capacity | **R** | `uptime` load 11.40 / 9.59 / 6.19 on 12 cores; swap 6.8 GiB used / 24 GiB; `/home` 90 % full | Identify swap hog (likely not Jellyfin — only 522 MiB RSS); reclaim space on `/home`; budget media additions against the 40 GiB headroom | M |
|
||||||
| 02 | GPU transcode | **R** | `nvidia-smi` fails, no `/dev/nvidia*`, `lsmod` no nvidia mod; `HardwareAccelerationType=none` | Reinstall nvidia driver on nullstone host; once `nvidia-smi` works, add device reservation block to compose and flip `HardwareAccelerationType` to `nvenc` | L |
|
| 02 | GPU transcode | **R** | `nvidia-smi` fails, no `/dev/nvidia*`, `lsmod` no nvidia mod; `HardwareAccelerationType=none` | Reinstall nvidia driver on nullstone host; once `nvidia-smi` works, add device reservation block to compose and flip `HardwareAccelerationType` to `nvenc` | L |
|
||||||
| 03 | Transcode throttling | **R** | `EnableThrottling=false`, `ThrottleDelaySeconds=180`, `MaxMuxingQueueSize=2048`, **two 499 client-cancels** logged (6 439 ms / 2 890 ms) | Enable `EnableThrottling=true` and `EnableSegmentDeletion=true` for CPU-only era — caps wasted ffmpeg CPU after client disconnect | S |
|
| 03 | Transcode throttling | **R** | `EnableThrottling=false`, `ThrottleDelaySeconds=180`, `MaxMuxingQueueSize=2048`, **two 499 client-cancels** logged (6 439 ms / 2 890 ms) | Enable `EnableThrottling=true` and `EnableSegmentDeletion=true` for CPU-only era — caps wasted ffmpeg CPU after client disconnect | S |
|
||||||
| 04 | OpenSubtitles auth | **R** | `Username`/`Password` empty in `Jellyfin.Plugin.OpenSubtitles.xml`; **102** `Error downloading subtitles from Open Subtitles` lines / 6 h | Set creds via UI, OR disable the provider on both libraries (`EnableInternetProviders=false` already; subtitle search still runs). Doc 03-subtitles.md already calls this out as pending | S |
|
| 04 | OpenSubtitles auth | **G** | Creds set `Caveman5`, `CredentialsInvalid=false` (verified 2026-05-11). Spam loop resolved | RESOLVED | — |
|
||||||
| 05 | Cache trash budget | **Y** | `EnableSegmentDeletion=false`, `SegmentKeepSeconds=720`; `/cache/transcodes` only 20 K right now (no live stream), but a 4K HEVC→h264 session will fill GiBs and not auto-prune | Enable `EnableSegmentDeletion=true` (default 720 s keep is fine) — pairs with finding 03 | S |
|
| 05 | Cache trash budget | **Y** | `EnableSegmentDeletion=false`, `SegmentKeepSeconds=720`; `/cache/transcodes` only 20 K right now (no live stream), but a 4K HEVC→h264 session will fill GiBs and not auto-prune | Enable `EnableSegmentDeletion=true` (default 720 s keep is fine) — pairs with finding 03 | S |
|
||||||
| 06 | Backup posture | **R** | `/home/docker/jellyfin/config/` (104 MB) has no off-host rotation; `snapshots/` in repo only holds pre-ElegantFin baseline | Add a weekly `tar.zst` of `/config/` (excluding `log/`, `cache/`) to NAS or git-backed snapshot dir | M |
|
| 06 | Backup posture | **R** | `/home/docker/jellyfin/config/` (104 MB) has no off-host rotation; `snapshots/` in repo only holds pre-ElegantFin baseline | Add a weekly `tar.zst` of `/config/` (excluding `log/`, `cache/`) to NAS or git-backed snapshot dir | M |
|
||||||
| 07 | Disk pressure | **Y** | `/home` 90 % full, 40 GiB free of 399 GiB; `/home/user/media` only 189 files | Cap on media growth: at current free space + episode bitrate budget user has ~3–4 more series before disk fills | M |
|
| 07 | Disk pressure | **Y** | `/home` 90 % full, 40 GiB free of 399 GiB; `/home/user/media` only 189 files | Cap on media growth: at current free space + episode bitrate budget user has ~3–4 more series before disk fills | M |
|
||||||
|
|
|
||||||
|
|
@ -46,10 +46,9 @@ Point-in-time visual status after doc-26 incident. For ongoing roadmap see
|
||||||
└──────────────────────────────────────────────────────────────────┘
|
└──────────────────────────────────────────────────────────────────┘
|
||||||
|
|
||||||
┌─ HIGH-VALUE OPEN (next session) ─────────────────────────────────┐
|
┌─ HIGH-VALUE OPEN (next session) ─────────────────────────────────┐
|
||||||
│ H1 OpenSubtitles creds (owner sign up at .com) │
|
│ H1 GPU transcode (nvidia driver + container toolkit + SecureBoot)│
|
||||||
│ H2 GPU transcode (nvidia driver + container toolkit + SecureBoot)│
|
|
||||||
│ → unlocks 4K HDR realtime instead of 0.5x │
|
│ → unlocks 4K HDR realtime instead of 0.5x │
|
||||||
│ H3 Off-host backup of /home/docker/jellyfin/config │
|
│ H2 Off-host backup of /home/docker/jellyfin/config │
|
||||||
└──────────────────────────────────────────────────────────────────┘
|
└──────────────────────────────────────────────────────────────────┘
|
||||||
|
|
||||||
┌─ MEDIUM-VALUE OPEN ──────────────────────────────────────────────┐
|
┌─ MEDIUM-VALUE OPEN ──────────────────────────────────────────────┐
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue