Theme-System
Die aktuelle Produktionsversion öffnet nur Theme-Pakete. Ein Administrator lädt ein ZIP über die Seite Themes im Panel hoch; das System validiert das ganze Paket, bevor es in den Theme-Speicher geschrieben wird, und ein neues Paket startet deaktiviert. Es gibt keine Plugin-Upload-API, keine Plugin-Verwaltungsseite und keinen Plugin-Runtime.
Erweiterungstyp wählen
| Typ | Anwendungsfall | JavaScript | Datenzugriff | Höhenbereich |
|---|---|---|---|---|
| CSS-Theme | Verhalten behalten, nur Farben, Schriften, Abstände und Optik | nicht erlaubt | nutzt das Host-DOM | die Seite selbst |
| Canvas-Theme | öffentliche Seite in Layout, Interaktion und Charts komplett neu | Sandbox-Iframe | Zustands-Snapshot + eingeschränkte Historien-Anfragen | 400-12000 |
Für vollständige Seitenanpassung ein Canvas-Theme; für rein visuelle Anpassung ein CSS-Theme. Ein separates Panel baut gegen die öffentliche v1-API und läuft auf eigener Domain.
Installations- und Aktivierungsablauf
- Der Autor baut ein sauberes
dist/aus dem Quellcode. manifest.jsonliegt im ZIP-Root.- Der Autor berechnet und veröffentlicht das ZIP-SHA-256.
- Der Administrator lädt über den Theme-Einstieg hoch.
- Browser und Worker prüfen jeweils das SHA-256.
- Nach der Validierung bleibt das Paket deaktiviert, bis ein Administrator es prüft und manuell aktiviert.
- Deaktivieren stellt sofort die Original-UI wieder her.
Berechtigungsgrenze
CSS-Themes führen keine Skripte aus. Canvas-Themes laufen in einer Iframe mit sandbox="allow-scripts" und ohne allow-same-origin; die CSP verbietet direktes Netz, Formulare und Top-Level-Navigation. Daten kommen über das eingeschränkte Nachrichtenprotokoll vom Host, und nur status:read darf deklariert werden. Admin-Sessions, Passwörter, TOTP, das Agent-Master-Token und Scoped Tokens von Knoten erreichen nie ein Theme.
Theme-ZIPs werden auf Größe, Dateianzahl, Pfade, Typ, Manifest und SHA-256 geprüft. Konkrete Limits im Sicherheits- und Release-Leitfaden.
Dokumentation
- CSS-Themes: minimales Manifest, Feldregeln, Scoping und Barrierefreiheit.
- Canvas-Themes: vollständiges Layout, Berechtigungen und Abnahmeszenarien.
- Nachrichtenprotokoll:
postMessage-Typen, Anfrage/Antwort und Lebenszyklus. - Sicherheit und Release: Plattform-Validierungsgrenzen, Supply Chain und Release-Abnahme.
- Plugin-Status: warum Plugin-Fähigkeiten nicht offen sind, und die Alternativen.