generated from Dicken/dickendock
Commit 8: Plugin-System (Scanner erweitern, Geräte importieren, Icons)
This commit is contained in:
@@ -92,7 +92,38 @@ Grundgerüst aus Commit 1.
|
||||
> Docker-Build-Simulation durchlaufen. Die tatsächliche "Zum Homescreen hinzufügen"-
|
||||
> Installation konnte mangels Browser in dieser Umgebung nicht getestet werden.
|
||||
|
||||
## Commit 8 — Plugin-System
|
||||
## ✅ Commit 8 — Plugin-System (erledigt)
|
||||
|
||||
- Plugin-Schnittstelle zum Registrieren von Scannern, Import von Geräten,
|
||||
Erweitern von Menüs, Bereitstellen von Icons
|
||||
- Plugins liegen als Ordner unter `apps/backend/plugins/*`, jeweils mit einer
|
||||
`index.js` (reines ESM, kein Build-Schritt). Werden beim Backend-Start
|
||||
geladen (`apps/backend/src/plugins/loader.ts`) und per Docker-Volume
|
||||
eingebunden – neue Plugins brauchen nur einen Container-Neustart, kein
|
||||
Image-Rebuild
|
||||
- Plugin-Vertrag (`apps/backend/src/plugins/types.ts`): `setup(ctx)` zum
|
||||
Registrieren zusätzlicher Softwareerkennung (inkl. Icon), `importDevices()`
|
||||
für eigene Geräte-Importquellen
|
||||
- Zwei funktionierende Beispiel-Plugins: `example-signatures` (Homebridge,
|
||||
Uptime Kuma) und `static-import` (Geräte aus lokaler `devices.json`)
|
||||
- `GET /api/plugins`, `POST /api/plugins/:name/import` – Import läuft wie
|
||||
Scans ausschließlich manuell per Knopfdruck
|
||||
- Frontend-Plugins-Seite zeigt echte geladene Plugins mit Capabilities und
|
||||
Import-Button (ersetzt den ehrlichen Platzhalter aus Commit 6)
|
||||
- Von neuen Plugins erkannte Software liefert ein Icon, das – wie `category`
|
||||
seit Commit 5 – nur beim erstmaligen Anlegen eines Dienstes als Startwert
|
||||
übernommen wird, nie nachträglich überschrieben
|
||||
|
||||
> Verifiziert: beide Plugins laden nachweislich beim Start; ein echter Scan
|
||||
> gegen einen Test-Server mit "Homebridge" im Response-Body wurde über die
|
||||
> Plugin-Signatur erkannt, inkl. korrekt übernommenem Icon; Geräte-Import per
|
||||
> Plugin getestet (`source: "plugin"`); Fehlerfälle (unbekanntes Plugin → 404,
|
||||
> Plugin ohne Import-Fähigkeit → 400) geprüft; Docker-Build-Simulation
|
||||
> bestanden, dabei auch verifiziert, dass ein fehlendes Plugin-Verzeichnis
|
||||
> nicht zum Absturz führt, sondern nur zu einer leeren Liste.
|
||||
|
||||
> **Bewusst nicht umgesetzt:** eigene Admin-Routen/Menüpunkte pro Plugin
|
||||
> (alle Plugins erscheinen gesammelt auf einer Seite) und Sandboxing
|
||||
> (Plugin-Code läuft mit vollem Zugriff im Backend-Prozess – nur Plugins aus
|
||||
> vertrauenswürdiger Quelle einbinden, siehe `apps/backend/plugins/README.md`).
|
||||
|
||||
Damit ist die komplette in der ursprünglichen Projektübergabe beschriebene
|
||||
Funktionalität umgesetzt.
|
||||
|
||||
Reference in New Issue
Block a user