- JavaScript 88.8%
- C# 9.3%
- CSS 1.4%
- HTML 0.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .idea | ||
| Controllers | ||
| Core | ||
| Hosting | ||
| img | ||
| Infrastructure | ||
| Properties | ||
| Resources/slider | ||
| RuntimeModules | ||
| Web | ||
| .gitignore | ||
| AGENTS.md | ||
| AssetVersioning.cs | ||
| CHANGELOG.md | ||
| EmbeddedAssetHelper.cs | ||
| IndexPatcher.cs | ||
| InMemoryRewriterFileProvider.cs | ||
| JMSFusion.csproj | ||
| JMSFusionConfiguration.cs | ||
| JMSFusionPlugin.cs | ||
| JMSFusionServiceRegistrator.cs | ||
| LICENSE | ||
| manifest.json | ||
| meta.json | ||
| MiddlewareExtensions.cs | ||
| package_release.sh | ||
| README.md | ||
| update_meta.sh | ||
Nexus PobreFlix Plugin (Jellyfin Edition)
Die visuelle Premium-Erfahrung fuer deinen Jellyfin-Server - mit Nexus-Purple-Theme und deutscher Oberflaeche.
Projekt Und Ursprung
Nexus PobreFlix ist eine visuelle Erweiterung fuer Jellyfin-Server und basiert auf dem urspruenglichen JMSFusion-Plugin.
Dieses Projekt ist ein Fork des von G-Grbz entwickelten JMSFusion-Plugins. Die Nexus-PobreFlix-Edition wird von ONeithan gepflegt und erweitert. Ziel ist eine kinoartige, Netflix-aehnliche Jellyfin-Oberflaeche mit Nexus-Purple-Branding, optimierter Darstellung, erweiterten Medienfunktionen und einer deutsch ausgerichteten Benutzeroberflaeche.
Technische Architektur
Das Plugin arbeitet mit einer hybriden Architektur aus C#-Backend-Injektion und JavaScript/CSS-Frontend-Modulen. Dadurch werden Anpassungen in den Jellyfin-Webclient eingebunden, ohne den Server dauerhaft zu veraendern oder die Standardinstallation unnoetig zu belasten.
flowchart TD
A[Jellyfin Server startet] --> B[JMSFusion C# Plugin wird geladen]
B --> C[IndexPatcher findet und verarbeitet index.html]
C --> D[Bootstrap-JS wird in den HTML-Head eingefuegt]
D --> E[storagePreload.js laeuft vor dem App-Start]
E --> F[Design-System-CSS und Theme-Variablen werden geladen]
E --> G[Logo-Schutz und zentriertes Login werden angewendet]
E --> H[Sitzungsstatus wird per MutationObserver ueberwacht]
1. Hybride Injektion (IndexPatcher.cs)
Das C#-Backend ueberwacht den Jellyfin-Start und findet die physische index.html des Webclients. Dort wird ein Script-Tag zum lokalen Bootstrap eingefuegt. So werden Theme, Splash-Screen und Runtime-Module frueh geladen und der typische kurze Wechsel vom Standardlayout zum angepassten Layout wird reduziert.
2. Login-Lebenszyklus (storagePreload.js)
Das Preload-Script beobachtet den Authentifizierungsstatus des Jellyfin-Webclients ueber einen schlanken MutationObserver am Element #loginPage.
- Abgemeldet: Die Klasse
jms-logged-outwird aufbodygesetzt, die Navigation (.skinHeader) wird ausgeblendet und das zentrale Login-Layout mit Hintergrund wird aktiviert. - Angemeldet: Die Klasse wird entfernt, der Header wird wiederhergestellt und das geschuetzte Nexus-PobreFlix-Logo wird angezeigt.
3. Offline-faehige Assets
Bilder, Logos, Runtime-Scripte und UI-Ressourcen werden als Embedded Resources in die Plugin-DLL kompiliert und lokal ueber ASP.NET-Core-Controller wie JMSFusionAssetsController.cs ausgeliefert. Dadurch funktioniert die Oberflaeche auch in lokalen Netzwerken ohne externe CDN-Abhaengigkeit.
Funktionen
Nexus-Purple-Designsystem
Die administrative Plugin-Konfiguration und viele sichtbare Jellyfin-UI-Komponenten wurden auf das Nexus-Purple-Theme (#7a5cff) umgestellt. Dazu gehoeren Slider, Buttons, Detailmodale, Fortschrittsleisten und weitere Oberflaechenelemente.
Geschuetztes Und Zentriertes Login
Das Login-Panel wird auf Desktop und Mobilgeraeten zentral dargestellt. Zusaetzliche CSS-Regeln entfernen stoerende Rest-Elemente der Login-Seite nach erfolgreicher Anmeldung.
PobreFlix-Logo-Schutz
Das PobreFlix-Logo wird mit besonders spezifischen CSS-Regeln gegen konkurrierende Theme-Regeln abgesichert. Native Jellyfin-SVGs werden ausgeblendet und durch das lokale Nexus-PobreFlix-Logo ersetzt.
Freier Header
Der obere Jellyfin-Header (.skinHeader) ist nicht fixiert, sondern scrollt natuerlich mit der Seite. Dadurch bleibt beim Navigieren mehr sichtbarer Raum fuer Inhalte.
Intelligenter Trailer-Manager
YouTube-Trailer und lokale HTML5-Player werden automatisch leiser abgespielt:
- Standardlautstaerke: maximal 5%.
- Hover-Absenkung: beim Ueberfahren aktiver Trailer-Karten sinkt die Lautstaerke auf 1% und kehrt danach zu 5% zurueck.
Deutsche Sprachfuehrung
Die zentralen Sprachvariablen sind auf Deutsch ausgerichtet. Auch gespeicherte oder automatisch erkannte Sprachcodes wie por, eng, tur, spa, fre, rus oder auto werden zur deutschen Label-Datei geleitet.
Installation Und Deployment
Methode 1: Repository Hinzufuegen (Empfohlen)
So erhaeltst du automatische Plugin-Updates direkt im Jellyfin-Dashboard:
- Oeffne das Jellyfin-Administrationsdashboard.
- Gehe zu Plugins -> Repositories und klicke auf Add bzw. Hinzufuegen.
- Trage im Feld URL folgenden Link ein:
https://forge.no404.eu/Fraggle/Nexus-PobreFlix/raw/branch/main/manifest.json
- Setze den Namen auf
Nexus PobreFlix Repository, speichere die Einstellung und installiere das Plugin aus dem Catalog bzw. Katalog.
Methode 2: Manuelle Installation
- Lade die ZIP-Datei der stabilen Version aus den Forge-Releases herunter, zum Beispiel
NexusPobreFlix-1.0.0.2.zip. - Oeffne den Jellyfin-Serverordner und suche das Verzeichnis
plugins. Unter Windows liegt es normalerweise unter%ProgramData%/Jellyfin/Server/plugins. - Erstelle einen Unterordner namens
NexusPobreFlix. - Entpacke die Plugin-DLL und
meta.jsonaus der ZIP-Datei in diesen Ordner. - Starte den Jellyfin-Server neu.
- Leere im Client den Browsercache, zum Beispiel mit
Ctrl + F5.
Methode 3: Desktop-Client (Windows-PC)
Fuer Windows-PCs oder TV-Setups mit Controller-Unterstuetzung kann der angepasste Launcher genutzt werden:
- Lade den Client herunter: Nexus-jellyfin-desktop.
- Der Client startet im Kiosk-Vollbildmodus, behandelt lokale HTTP-Kontexte passend fuer die Gamepad API und speichert die Anmeldung automatisch im Ordner
perfil-pobreflix.
Code-Struktur
Nexus-PobreFlix/
├── bin/Release/net9.0/ # Kompilierte Binaries
├── Controllers/ # API-Routen und lokale Ressourcencontroller
├── Core/ # C#-Logik, Trailer-Automation und Runtime-Hooks
├── img/ # Repository-Grafiken, Logo und Icon
├── Properties/ # Build-Definitionen
├── Resources/
│ └── slider/ # Slider-, Player-, Sprach- und Style-Dateien
│ ├── main.js # Zentrale JS-Initialisierung fuer UI-Injektion
│ └── src/ # Stylesheets (CSS)
├── RuntimeModules/ # Bootstrap-Scripte wie storagePreload.js und splash.js
├── Web/ # HTML/JS fuer die administrative Konfiguration
├── JMSFusion.csproj # MSBuild-Projektdatei
├── manifest.json # Auto-Update-Manifest
└── meta.json # Plugin-Metadaten fuer den Katalog
Entwicklung
Das Projekt zielt auf .NET 9 und Jellyfin 10.11.0.
dotnet restore JMSFusion.csproj
dotnet build JMSFusion.csproj -c Release
Neue Frontend-Assets sollten unter Resources/, RuntimeModules/ oder Web/ liegen, da diese Pfade in JMSFusion.csproj als Embedded Resources eingebunden sind.
Release-Hinweise
Bei neuen Releases muessen diese Stellen zusammenpassen:
JMSFusion.csproj: Version und Assembly-Versionmeta.json: Plugin-Version, ABI und Metadatenmanifest.json: Release-Version, Download-URL, Checksumme und Timestamp- Release-ZIP: Plugin-DLL und
meta.json
Die Release-ZIP kann mit dem lokalen Skript erstellt werden:
./package_release.sh 1.0.0.2
Das Skript erstellt dist_release/NexusPobreFlix-1.0.0.2.zip und gibt die MD5-Checksumme aus. Lade diese ZIP anschliessend in Forgejo/Gitea als Release-Asset zum Tag v1.0.0.2 hoch. Die Download-URL muss danach zur sourceUrl in manifest.json passen:
https://forge.no404.eu/Fraggle/Nexus-PobreFlix/releases/download/v1.0.0.2/NexusPobreFlix-1.0.0.2.zip
Lizenz Und Autorschaft
- Basiscode (JMSFusion): Entwickelt von G-Grbz, lizenziert unter MIT.
- Nexus-PobreFlix-Edition: Visuelle Anpassungen, Rebranding und Erweiterungen gepflegt von ONeithan, deutsche Fork-Anpassungen unter Fraggle/Nexus-PobreFlix.
Entwickelt fuer die Nexus-PobreFlix-Community.