7.5 KiB
7.5 KiB
Roadmap — ARRFLIX
Last revised: 2026-05-08
Snapshot
| Metric | Value |
|---|---|
| Prod URL | https://arrflix.s8n.ru → 302 ✓ |
| Dev URL | https://dev.arrflix.s8n.ru → 302 ✓ |
| Theme | Cineplex v1.0.6 (rolled back from NeutralFin) |
| Repo | git.s8n.ru/s8n/ARRFLIX |
| Library | 6 series + 2 movies, 175 eps + 9 featurettes |
| Disk | nullstone /home — 156G free (60% used) |
| Users | 9 (1 admin + 8 non-admin) |
| Snapshot tag | snapshot-2026-05-08-pre-elegantfin (rollback) |
| Docs | 17 in docs/ + ADMIN-GUIDE + ROADMAP |
🟥 Open — High value (do first)
| # | Item | Effort | Blocker |
|---|---|---|---|
| H1 | OpenSubtitles credentials (auth fixes log spam too — doc 13 win 2) | S | owner signs up at opensubtitles.com |
| H2 | GPU transcode (nvidia driver kernel module + container toolkit + SecureBoot signing) | L | owner sudo + reboot |
| H3 | Apply bin/force-english-all-users.sh (German Play button breaks UX for non-English browsers) |
S | none — owner runs |
| H4 | Backup /home/docker/jellyfin/config/ off-host (no automated backup yet) |
M | strategy decision |
🟨 Open — Medium value
| # | Item | Effort | Notes |
|---|---|---|---|
| M1 | Tune detail-page backdrop gradient stops if text contrast off | S | doc 14 §7 |
| M2 | EnableThrottling + EnableSegmentDeletion (kills wasted ffmpeg-after-disconnect) | S | doc 13 win 1 |
| M3 | KnownProxies + LocalNetworkSubnets in network.xml (fixes session origin on WAN endpoint) | S | doc 13 win 3 |
| M4 | PWA manifest bind-mount — kills "Jellyfin" name on Android/iOS install | M | doc 16 phase 1 |
| M5 | Logo-screensaver disable + i18n DOM-rewrite shim | M | doc 16 phases 2+3 |
| M6 | Extract bin/cleanup-import.sh + normalize.py from doc bodies into runnable files |
S | docs 07/08 |
| M7 | Per-library themes (JS injector plugin + body class shim) | M | doc 06 — "tinted, not pixel-perfect" |
🟩 Open — Low value (nice-to-have)
| # | Item | Effort | Notes |
|---|---|---|---|
| L1 | Forgejo Actions CI (lint compose, shellcheck bin/, render docs) | M | not started |
| L2 | High-res ARRFLIX wordmark for desktop splash variant (currently 235×85, looks soft on 1080p+) | S | doc 14 finding |
| L3 | Hide lone "User" h3 header above Sign Out (cosmetic) | S | open Q from settings-fix agent |
| L4 | Rotate dev admin password (currently same as prod for parity) | S | open Q from settings-fix agent |
🚫 Blocked / waiting
| Item | Blocker | Action owner |
|---|---|---|
| OpenSubtitles auth | account signup at .com | s8n |
| Nvidia GPU | sudo + reboot decision | s8n |
| WAN public access | home router port-forward 80/443 → 192.168.0.100 | s8n |
🔒 Deferred (with reason)
| Item | Reason |
|---|---|
| Pixel-perfect Netflix/Crunchyroll/Spotify per-lib themes | requires 3 separate Jellyfin instances on subdomains; ~100× maintenance cost. Doc 06 |
| Custom Jellyfin Docker image (FROM jellyfin + COPY index.html) | bind-mount works; defer until ≥3 web-bundle overrides needed |
| Subdomain split for friend-only access | non-admin user policies + EnabledFolders ACL already do this on a single instance |
| Move to Jellyfin-Vue alt web client | replaces UI, breaks current branding stack |
| 4 TB HDD activation | wait until library exceeds 500 GB; currently 50G |
✅ Done
Branding + theme
- ✅ Theme: ElegantFin → Cineplex → ElegantFin → NeutralFin → Cineplex v1.0.6 (final), snapshot tag for rollback
- ✅ ARRFLIX logo data-URL injected — overrides Cineplex's logo on
.adminDrawerLogo img+.pageTitleWithLogo(split-rule per element type, no overlap) - ✅ Browser tab title
ARRFLIX+ favicon = ARRFLIX wordmark (via index.html bind-mount) - ✅ Pre-bundle splash → ARRFLIX wordmark (no more Jellyfin logo on first paint)
- ✅ LoginDisclaimer "Welcome to ARRFLIX - Private invite only service"
- ✅ Critical-path inline
<style>in index.html eliminates pre-bundle theme flash - ✅ JS shim in index.html: title-lock + favicon-lock + nukeSettings + SW unregister
- ✅ Detail-page backdrop full-bleed gradient fix (was 17vw black band; now Netflix-style)
UI hides + tweaks (CSS in CustomCss)
- ✅ Cast & Crew + Guest Stars sections (
#castCollapsible, #guestCastCollapsible) - ✅ 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) - ✅ Header icons: SyncPlay group, Cast, User menu (
.headerSyncButton,.headerCastButton,.headerUserButton) - ✅ Unwatched-count badges (
.countIndicator) - ✅ Settings menu page access (
EnableUserPreferenceAccess=falseper non-admin) - ✅ Slider thumbs blue → white (scrubber + volume on player OSD)
- ✅ Pure-black background
Library
- ✅ Cleanup playbook: 17-doc set including pre-import strip rules + filename normalization
- ✅ Imports applied via cleanup → normalize pipeline:
- Futurama (1999) S01–S04, 72 eps + 9 featurettes (TMDB 615)
- American Dad! (2005) S01–S04, 58 eps (TMDB 1433)
- Rick and Morty (2013) S01, 11 eps (TMDB 60625)
- Star Wars: Maul – Shadow Lord (2026) S01, 10 eps (TMDB 289219)
- Obi-Wan Kenobi (2022) S01, 6 eps + 4 featurettes (TMDB 92830)
- The Incredible Hulk (2008) (TMDB 1724)
- Idiocracy (2006) (TMDB 7512)
- ⏳ The Mandalorian (2019) S01–S03 — 18/24 mkv on disk, scrape in flight
- ✅ Futurama season posters re-locked to highest-res TMDB (was low-res)
- ✅ Polish set replaced with English; libraries flipped
pl/PL→en/US
Users + access
- ✅ 9 users (
s8nadmin,5,64bitpotato,aloy,guest,house,marco,pet,yummyhunny) - ✅ 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) - ✅ Home layout per-user: resume → resumeaudio → nextup → latestmedia (My Media tile row dropped)
Infra
- ✅ Domain rename:
tv.s8n.ru→nasflix.s8n.ru→arrflix.s8n.ru - ✅ Repo rename:
jellyfin-stack→NASFLIX→ARRFLIXatgit.s8n.ru/s8n/ARRFLIX - ✅ Pi-hole local DNS for
arrflix.s8n.ru+dev.arrflix.s8n.ru - ✅ LE certs via Gandi DNS-01 for both prod + dev
- ✅ 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:romount with prod (read-only), 7 mirror users + s8n-dev admin - ✅ Snapshot tag
snapshot-2026-05-08-pre-elegantfinfor one-command rollback
Docs (17 + 2 indexes + bin/)
- ✅
ADMIN-GUIDE.md(entry point) - ✅
ROADMAP.md(this file) - ✅
docs/01..16covering: artwork, metadata, subtitles, theming-and-users, file-structure, per-library-themes, cleanup, normalization, WAN exposure, SPA shim, NeutralFin audit, dev instance, optimization audit, theme audit, force English, Jellyfin-branding leaks, dev mirror + settings fix - ✅
bin/add-jellyfin-user.sh,bin/inject-shim.py,bin/force-english-all-users.sh
Conventions
When marking an item:
- Move Open → Done when shipped + verified
- Move to Blocked when waiting on owner / external
- Move to Deferred with one-line reason
- Update Snapshot stats on every revision