Skip to content

Module DE

Domekologe edited this page Jul 26, 2026 · 2 revisions

Module

🌐 English · Deutsch

Der Modul-Manager (/extensions, nur Admin) installiert und verwaltet Module, die MediaForge erweitern — mit eigenen Seiten, Einstellungs-Karten, Sidebar-Links oder Providern. Sidebar-Einträge, die von einem Modul stammen, tragen ein kleines „M“-Badge (Tooltip: „Module: <Name>“), sodass eingebaute Funktionen immer von Modul-Funktionen unterscheidbar bleiben. Die Seite ist vollständig für Mobilgeräte optimiert.

Modul-Store

Der Store ist direkt in die /extensions-Seite integriert: Der Katalog lädt automatisch im Browser, der Button Aktualisieren umgeht den ~15-Minuten-Cache. Die Store-URL und die vertrauenswürdigen Signaturschlüssel sind fest in den Build kompiliert und lassen sich nicht über die Oberfläche ändern (nur lesend angezeigt). Admins können jedoch zusätzliche Repository-URLs hinterlegen — eine http(s)-URL pro Zeile.

Vertrauensstufen

Die Vertrauensstufe wird durch kryptografische Signaturprüfung bestimmt — nicht durch die Angabe im Store-Index:

Stufe Bedeutung
Official Mit dem Schlüssel des MediaForge-Teams signiert
Verified Drittanbieter-Code, der von einem Maintainer geprüft, neu paketiert und signiert wurde
Unverified Unsigniert, mit unbekanntem Schlüssel signiert oder nach dem Signieren verändert

Zusätzlich markiert ein Unreviewed-Badge Einreichungen, die noch niemand gelesen hat. Unverifizierte und ungeprüfte Module sind standardmäßig ausgeblendet und erscheinen erst, wenn der Schalter „Unverifizierte und ungeprüfte Module erlauben“ aktiviert ist.

⚠️ Ein Modul läuft innerhalb von MediaForge mit vollem Zugriff auf deine Daten. Aktiviere unverifizierte/ungeprüfte Module nur, wenn du der Quelle vertraust.

Installation und Updates

  • Das Paket wird zunächst in einen Staging-Bereich heruntergeladen und dort signaturgeprüft — Pakete, die die Prüfung nicht bestehen, erreichen den Live-Ordner nie.
  • Neue Module gehen sofort, ohne Neustart live: Blueprint, Einstellungs-Karte, Sidebar-Einträge und Übersetzungen stehen ab der nächsten Anfrage bereit.
  • Ein Upgrade eines bereits geladenen Moduls bleibt im Staging und zeigt ein Banner „Neustart erforderlich“; die Oberfläche bietet einen eingebauten Selbst-Neustart.

Abhängigkeiten

Module können eigene Python-Abhängigkeiten deklarieren. Der Button Abhängigkeit installieren (Admin) installiert ausschließlich die deklarierten Anforderungen von PyPI nach ~/.mediaforge/module_deps/ — MediaForges eigene Abhängigkeiten haben beim Import stets Vorrang. Derselbe Button funktioniert auch für Store-Module vor deren Installation.

Sensible Einstellungen

Module können Einstellungs-Schlüssel deklarieren, deren Werte verschlüsselt in der Datenbank abgelegt werden. Felder vom Typ secret in Einstellungs-Karten werden automatisch verschlüsselt.

Backup

Module können eigene Backup-Kategorien registrieren, die dann im Export/Import-Dialog erscheinen — siehe Backup.

Theme-Pakete

Derselbe Store verteilt auch Theme-Pakete — reine CSS-Skins für die gesamte UI (Index-Einträge mit "type": "template", markiert mit einem Theme-Badge und im Katalog filterbar). Sie werden live installiert und deinstalliert, ganz ohne Neustart. Siehe Theme-Pakete.

Eigene Module oder Themes schreiben

Der Store ist offen für Dritte, und die /extensions-Seite sagt das auch: Oberhalb der Store-Einstellungen liegt eine Karte Baue dein eigenes Modul oder Theme, die direkt auf das nötige Material verlinkt.

Link Ziel
Modul-Beispiele .examples/thirdparties/ — funktionierende Beispielmodule (eigene Seiten, Tabs, Menüs, Provider, Hooks, UI-Komponenten), jeweils mit eigener README
Theme-Beispiele .examples/themes/ — ein komplettes Beispiel-Theme-Pack samt README
Entwickler-Doku diese Seite und der Entwickler-Bereich des Wikis
Im Entwicklerportal veröffentlichen mediaforge.softarchiv.com — fertiges Modul oder Theme hochladen, damit es im Store erscheint

Geteilte UI-Bausteine

Ein Modul muss sich kein eigenes Aussehen ausdenken. Das Kern-CSS von MediaForge wird auf jeder Seite geladen und die Klassennamen sind stabil — ein Modul, das sie nutzt, sieht ohne Zusatzaufwand nativ aus: Badges, Toggles, die chb-main-Checkbox, Segmented Buttons, Multi-Selects, Token-Felder, Chips, Pagination, KPI-Karten, die MFCharts-Diagramm-Primitive und das geteilte TMDB-Detail-Modal (MFDetailModal), das dir eine Poster-/Inhalts-/Metadaten-Ansicht für alles liefert, was sich über eine TMDB-ID benennen lässt.

Zwei Stylesheets teilen sich das Vokabular. forms.css hält die Formular-Bausteine — die chb-main-Checkbox, Segmented Buttons, Multi-Selects, Token-Felder, Chips, Pagination — und wird überall geladen. mf_components.css hält die Layout- und Inhalts-Bausteine des Relaunches vom Juli 2026 und braucht ein eigenes <link> auf deiner Seite:

Baustein Was es ist
.mf-search Suchfeld mit vorangestelltem Icon und Löschen-Button
.mf-toolbar Seiten-Toolbar mit einer Zeile pro Aufgabe — Zeile 1 findet, Zeile 2 formt die Ansicht
.mf-poster-grid / .mf-poster-card Responsives 2:3-Posterraster; Status im Eckband, Attribution in einer dauerhaft sichtbaren Fußzeile
.mf-avatar Initialen-Kreis für „wer hat das angefragt“
.mf-timeline Durchgehende Zeitschiene mit Stopps, leuchtendem „Jetzt“-Punkt und benannten Lücken („3 Tage ohne Termin“)
.mf-progress Benannte Stufen eines Vorgangs (angefragt → angenommen → geladen)
.mf-empty Inline-Leerzustand „nichts passt zu diesen Filtern“, im Gegensatz zum seitenfüllenden .empty-state

Kalender und Seerr sind aus genau diesen Bausteinen gebaut — ein Modul, das sie nutzt, sieht deshalb nicht nur nativ aus, sondern bleibt auch im Takt, wenn diese Seiten überarbeitet werden. Alle Farben kommen aus den Theme-Tokens, ein Theme Pack des Nutzers stylt die Modulseite also kostenlos mit um.

Aktiviere das Modul Example: UI Components für eine klickbare Live-Galerie aller Bausteine mit kopierbarem Markup; die Referenztabelle steht im Abschnitt „Reusable UI components“ von .examples/thirdparties/README.md.

Was der Modulmanager dir sagt

Jede Modulkarte trägt genau einen Zustand — Läuft, Aus, Übersprungen oder Fehler — und die Liste stellt Probleme nach oben, weil das die interessanten sind. Unter dem Namen steht, was das Modul in MediaForge tatsächlich registriert hat: Menüpunkte und Einstellungs-Karten, aber auch Inhaltsquellen, Hoster, Event-Hooks und Hintergrund-Worker — die eingreifenden davon farblich hervorgehoben. Bei einem Modul, das du nicht selbst geschrieben hast, ist das die nützlichere Auskunft als die Frage, wer es signiert hat. Ein Import-Fehler lässt sich vollständig aufklappen und mit einem Klick kopieren, fertig für den Fehlerbericht.

Beim Deinstallieren werden die Routen eines Moduls jetzt wirklich von der laufenden App entfernt und nicht nur blockiert — ein Modul kann damit ohne Neustart deinstalliert und wieder installiert werden.

Ein neu eingereichter Eintrag ist zunächst ungeprüft und wird daher nur angezeigt, solange Ungeprüfte und nicht überprüfte Module erlauben aktiv ist. Ein Modul aus einem Fremd-Repository oder eine unsignierte Einreichung ist deshalb nicht zweitklassig — es trägt lediglich keine Signatur, der dieser Build vertraut.

Clone this wiki locally