- EnableUserPreferenceAccess=false on guest + 5 (hides Display, Home, Playback, Subtitles pref pages — owner controls UX centrally). - Wrapper bin/add-jellyfin-user.sh updated to bake this into all future non-admin user creations. - ROADMAP entries (added by sibling import agents): - Imported: The Incredible Hulk (2008), TMDB 1724, 4 images - Imported: Idiocracy (2006), TMDB 7512 (NOT 1542 = Office Space) - Imported: American Dad! (2005) S01-S04, 58 eps, TMDB 1433 - WAN exposure docs added (doc 09, 256 lines): Gandi A record live, no-guest middleware dropped, lockout=5 baked in. Owner still must port-forward 80/443 on home router for actual public access.
5.6 KiB
5.6 KiB
Roadmap — ARRFLIX
What's done, what's open, what's deferred. Update on every commit that lands or moves an item between buckets.
Last revised: 2026-05-08
Done
- Deploy: Jellyfin 10.10.3 on nullstone, LAN-only at
arrflix.s8n.ru, file-provider Traefik route, LE cert via Gandi DNS-01, Pi-hole local DNS pin, userns_mode=host - Theme: ElegantFin v25.12.31 applied via
/System/Configuration/branding - Cast & Crew + Guest Stars: hidden globally via CustomCss (
#castCollapsible, #guestCastCollapsible) - Library: TV Shows →
/media/tv/Futurama (1999)/, 72 eps + 9 featurettes, locked to TMDB 615 - Cleanup: Polish set deleted, junk-stripped English set imported, source + staging deleted
- Plugins: OpenSubtitles v20 installed (v21+ needs JF 10.11 ABI)
- Users:
s8n(admin),guest(non-admin, pw123) - Wrapper:
bin/add-jellyfin-user.shfor canonical user creation - Home layout: My Media tile row dropped per user (resume / resumeaudio / nextup / latestmedia)
- Docs: 01–08 (artwork, metadata, subs, theming, file-structure, per-lib themes, cleanup, naming) + ADMIN-GUIDE.md
- Imported: The Incredible Hulk (2008)
- Imported: Idiocracy (2006)
- Imported: American Dad! (2005) S01-S04 (58 eps)
Open — actionable now
High value
-
OpenSubtitles credentials
- Owner signs up at opensubtitles.com (NOT .org)
- I POST creds to
/Plugins/<id>/Configurationper docs/03 § 3.4 - Test by triggering subtitle search on one Futurama episode
- Free tier = 20 dl/day; full library will take ~3 days unless VIP
-
GPU transcode (nvidia driver)
- GTX 1660 Ti present on nullstone,
nvidia-smifails — driver kernel module not loaded - SecureBoot enabled → DKMS module signing required
- Steps in
README.md § Transcodingand one earlier diagnosis turn - Blocks: anyone watching on a low-power client (phone, fire TV) currently CPU-transcodes
- Estimated wall: 30 min + reboot (nullstone hosts traefik, forgejo, matrix — ~2 min downtime)
- GTX 1660 Ti present on nullstone,
-
Loading-splash rebrand
- Replace Jellyfin pre-bundle logo with
arrflix.s8n.ruwordmark + 4-bar pulse spinner - Approach: bind-mount patched
/jellyfin/jellyfin-web/index.htmlper the plan in this session's history - Doc to write:
docs/09-loading-splash.md(pre-bundle vs CustomCss timing, regen-on-upgrade)
- Replace Jellyfin pre-bundle logo with
Medium value
-
Extract
bin/cleanup-import.shandbin/normalize.pyfrom docs 07 + 08 into runnable repo files (currently embedded in markdown only) -
Per-library themes (doc 06)
- Install
n00bcodr/Jellyfin-JavaScript-Injectorplugin - Ship 30-line shim that mirrors
topParentId+collectionTypefrom URL hash to body class - Add three scoped CSS blocks (
body.lib-moviesNetflix,body.lib-animeCrunchyroll,body.lib-musicSpotify) - Source CSS hunt: 5 Netflix-flavoured bases listed in doc 06; Crunchyroll + Spotify must be hand-built (no existing theme)
- Verdict per doc 06: "tinted, branded, recognisable" — NOT pixel-perfect
- Install
-
Audit-vs-rules pass on current state
/home/user/media/tv/Futurama (1999)/already conforms post-import- But: subtitle sidecars absent (waiting on OpenSubtitles creds)
- Featurettes folder is lowercase ✓
- Year in parens ✓
- SXXEXX zero-padded ✓
- Episode title separator
-✓
Low value
- Library scaffolding: empty
/media/{movies,anime,musicvideos}/libraries exist; no content yet - Backup strategy for
/home/docker/jellyfin/config/(DB + watched-state). Currently zero backups. Tie into existing nullstone backup chain. - Forgejo Actions CI for the repo (lint compose, validate
bin/*.shwith shellcheck, render docs)
Blocked / waiting on owner
- OpenSubtitles creds → owner has not signed up yet
- nvidia driver fix → owner needs to run sudo commands or approve disable-SecureBoot path
- Decision on per-library themes (doc 06): green-light or skip
Deferred
- Pixel-perfect Netflix/Crunchyroll/Spotify per-library: would require 3 separate Jellyfin instances on subdomains. ~100× maintenance cost. Doc 06 § 5. Don't do.
- Custom Jellyfin Docker image:
FROM jellyfin/jellyfin + COPY index.html. Cleaner than bind-mount for splash + JS injector but extra build pipeline. Defer until ≥3 web-bundle overrides needed. - Subdomain split for friend-only access: friend already gets non-admin Jellyfin user via
bin/add-jellyfin-user.shwithEnabledFoldersACL. Subdomain not necessary. - Move to alternative web client (Jellyfin-Vue): replaces the whole UI, breaks ElegantFin + JS Injector. Owner explicitly wants Netflix-y, not vue-y. Don't do.
- Hardware change: 4 TB HDD on nullstone idle. Wait until library exceeds 500 GB before activating second-path library mounts (doc 05 § Architecture C).
Tracking
When an item moves to Done, link the commit hash. When it stalls, note the blocker date. Don't let entries rot — review on the first of each month.
| Item | Status | Last touch | Owner |
|---|---|---|---|
| OpenSubtitles creds | blocked-on-owner | 2026-05-07 | s8n |
| nvidia driver | blocked-on-owner | 2026-05-07 | s8n |
| Loading splash | open-actionable | 2026-05-08 | claude |
| Extract bin/ scripts | open-actionable | 2026-05-08 | claude |
| Per-library themes | open-actionable (decision pending) | 2026-05-08 | claude |
| Library scaffolding | open-low-value | 2026-05-08 | s8n |
| Backup strategy | open-low-value | not-started | claude |
| Forgejo CI | open-low-value | not-started | claude |