ROADMAP owner column 's8n' (was 'claude'). Audit-run-by lines in
docs/{11,14,16} reattributed to s8n. Removed CLAUDE.md memory ref
from docs/04 hosts-pin note.
110 lines
5.7 KiB
Markdown
110 lines
5.7 KiB
Markdown
# 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
|
||
|
||
- [x] **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
|
||
- [x] **Theme**: ElegantFin v25.12.31 applied via `/System/Configuration/branding`
|
||
- [x] **Cast & Crew + Guest Stars**: hidden globally via CustomCss (`#castCollapsible, #guestCastCollapsible`)
|
||
- [x] **Library**: TV Shows → `/media/tv/Futurama (1999)/`, 72 eps + 9 featurettes, locked to TMDB 615
|
||
- [x] **Cleanup**: Polish set deleted, junk-stripped English set imported, source + staging deleted
|
||
- [x] **Plugins**: OpenSubtitles v20 installed (v21+ needs JF 10.11 ABI)
|
||
- [x] **Users**: `s8n` (admin), `guest` (non-admin, pw `123`)
|
||
- [x] **Wrapper**: `bin/add-jellyfin-user.sh` for canonical user creation
|
||
- [x] **Home layout**: My Media tile row dropped per user (resume / resumeaudio / nextup / latestmedia)
|
||
- [x] **Docs**: 01–08 (artwork, metadata, subs, theming, file-structure, per-lib themes, cleanup, naming) + ADMIN-GUIDE.md
|
||
- [x] Imported: The Incredible Hulk (2008)
|
||
- [x] Imported: Idiocracy (2006)
|
||
- [x] Imported: American Dad! (2005) S01-S04 (58 eps)
|
||
- [x] Imported: Star Wars - Maul - Shadow Lord (2026) S01 (10 eps)
|
||
- [x] Imported: Rick and Morty (2013) S01 (11 eps, 4K HDR upscale)
|
||
- [x] Imported: Obi-Wan Kenobi (2022) S01
|
||
|
||
---
|
||
|
||
## Open — actionable now
|
||
|
||
### High value
|
||
|
||
- [ ] **OpenSubtitles credentials**
|
||
- Owner signs up at opensubtitles.**com** (NOT .org)
|
||
- I POST creds to `/Plugins/<id>/Configuration` per [docs/03 § 3.4](docs/03-subtitles.md)
|
||
- 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-smi` fails — driver kernel module not loaded
|
||
- SecureBoot enabled → DKMS module signing required
|
||
- Steps in `README.md § Transcoding` and 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)
|
||
|
||
- [ ] **Loading-splash rebrand**
|
||
- Replace Jellyfin pre-bundle logo with `arrflix.s8n.ru` wordmark + 4-bar pulse spinner
|
||
- Approach: bind-mount patched `/jellyfin/jellyfin-web/index.html` per the plan in this session's history
|
||
- Doc to write: `docs/09-loading-splash.md` (pre-bundle vs CustomCss timing, regen-on-upgrade)
|
||
|
||
### Medium value
|
||
|
||
- [ ] **Extract `bin/cleanup-import.sh` and `bin/normalize.py`** from docs 07 + 08 into runnable repo files (currently embedded in markdown only)
|
||
- [ ] **Per-library themes (doc 06)**
|
||
- Install `n00bcodr/Jellyfin-JavaScript-Injector` plugin
|
||
- Ship 30-line shim that mirrors `topParentId` + `collectionType` from URL hash to body class
|
||
- Add three scoped CSS blocks (`body.lib-movies` Netflix, `body.lib-anime` Crunchyroll, `body.lib-music` Spotify)
|
||
- 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
|
||
|
||
- [ ] **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/*.sh` with 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.sh` with `EnabledFolders` ACL. 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 | s8n |
|
||
| Extract bin/ scripts | open-actionable | 2026-05-08 | s8n |
|
||
| Per-library themes | open-actionable (decision pending) | 2026-05-08 | s8n |
|
||
| Library scaffolding | open-low-value | 2026-05-08 | s8n |
|
||
| Backup strategy | open-low-value | not-started | s8n |
|
||
| Forgejo CI | open-low-value | not-started | s8n |
|