Zum Hauptinhalt springen

Benachrichtigungen

Libre WebUI führt einen dauerhaften Benachrichtigungseingang je Benutzer, damit Teamaktivitäten – Erwähnungen, Direktnachrichten, Freigaben, fehlgeschlagene Automatisierungen und Kalendererinnerungen – Menschen auch bei geschlossener Seite erreichen.

Der Eingang

Benachrichtigungen sind zuerst Datenbankzeilen: Titel und Text werden verschlüsselt gespeichert, auf 500 je Benutzer begrenzt (älteste werden entfernt) und können mit einem optionalen Quellschlüssel dedupliziert werden. Wiederholtes Veröffentlichen wird so zu einem Eintrag statt zu Klingelspam. Die REST-Oberfläche listet, zählt Ungelesene, markiert eine oder alle als gelesen und löscht.

Live-Übertragung nutzt den dauerhaften Benutzerstrom notify:<userId> über GET /api/notifications/events (SSE). Die Identität stammt aus der authentifizierten Sitzung, nie aus Clienteingaben. Der SQL-Eingang bleibt die Wahrheitsquelle: Ein verpasstes Ereignis wird durch Lesen der Liste wiederhergestellt, nicht durch Wiederholung des Stroms.

Auslöser

TypAuslöser
channel-dmJemand sendet dir eine Direktnachricht
channel-mentionJemand macht ein @mentions oder antwortet auf deine Nachricht
channel-inviteDu wirst zu einem Kanal hinzugefügt
shareJemand gibt eine Ressource für dich frei
automation-failedEine deiner Automatisierungen schlägt fehl (sofern nicht abbestellt)
calendar-reminderDer Erinnerungszeitpunkt eines Ereignisses wird erreicht
work-run-finishedEiner deiner eingestellten Work-Agenten schließt eine Ausführung ab
work-run-attentionEin eingestellter Agent hält für Eingabe an oder stößt auf einen Fehler
work-takeoverEin Work-Agent bittet dich, seinen Bildschirm zu übernehmen
work-approvalEin Work-Lauf wartet auf deine Freigabe einer wirksamen Aktion
systemInstanzweite Mitteilungen

Benachrichtigungen gehen immer nur an den betroffenen Benutzer. Die Erwähnung eines Benutzernamens, der nicht Mitglied ist, erzeugt nichts.

Ausgehende Webhooks

Administratoren können Webhook-Ziele für Teamereignisse registrieren.

  • Ausgang geschützt. Ziele unterliegen derselben Richtlinie wie Werkzeugserver: exakte URL, keine Umleitungen und keine privaten oder linklokalen Adressen, sofern ein Host nicht ausdrücklich über TOOLS_PRIVATE_NETWORK_ALLOWLIST freigegeben wurde. Hostnamen werden bei jeder Übertragung neu aufgelöst und geprüft.
  • Signiert. Mit konfiguriertem Geheimnis trägt jede Übertragung X-Libre-Signature: sha256=<hmac>, berechnet über den exakten Body.
  • Redigiert. Der Umschlag enthält Ereignisart, Benachrichtigungstyp, Titel, Kennungen und Zeitstempel. Texte, Nachrichteninhalte, Prompts und Dokumente verlassen die Instanz nie.
  • Dauerhaft. Übertragungen laufen als dauerhafte Jobs mit begrenzten Versuchen; 5xx wird wiederholt, 4xx gilt als Urteil des Empfängers und wird abgeschlossen.
  • Begrenzt. Jedes Ziel abonniert bestimmte Typen (oder *).

Browser-Push

Einstellungen → Benachrichtigungen registriert den Browser für Web Push, sodass Erwähnungen, Freigaben, Erinnerungen und abgeschlossene Arbeit das Gerät auch bei geschlossener Registerkarte erreichen. Die Implementierung ist standardisiert und eigenständig:

  • VAPID (RFC 8292). Der Server signiert jede Übertragung mit einem ES256- Schlüsselpaar, das einmal erzeugt und verschlüsselt gespeichert oder mit VAPID_PUBLIC_KEY/VAPID_PRIVATE_KEY festgelegt wird (VAPID_SUBJECT setzt den Kontakt-Claim). Abgesehen vom Push-Endpunkt des Browseranbieters sind keine Drittbibliothek oder Dienstkonten beteiligt.
  • Verschlüsselte Nutzlast (RFC 8291). Jede Nachricht wird mit aes128gcm für die Geräteschlüssel verschlüsselt, bevor sie die Instanz verlässt. Der Push-Dienst leitet nicht lesbaren Chiffretext weiter.
  • Pro Gerät und sitzungsgebunden. Ein Abonnement gehört dem erstellenden Browser und dessen Authentifizierungssitzung. Abmelden (oder „andere Sitzungen abmelden“) entfernt die Registrierung. Endpunkte werden verschlüsselt mit einem schlüsselgebundenen Suchtoken gespeichert und müssen öffentliche HTTPS-Ziele sein.
  • Dauerhaft. Push-Übertragungen sind dauerhafte Jobs mit begrenzten Versuchen. Meldet der Dienst ein verschwundenes Abonnement (404/410), wird es gelöscht.
  • Die Nutzlast enthält Titel, optionalen Text, Typ und Ziellink mit derselben Redaktionsgrenze wie der Eingang.

Push erfordert die Produktionsanwendung (der Service Worker registriert sich nur dort) und einen sicheren Ursprung. Derselbe Service Worker liefert Offline-Hülle und Installierbarkeit: Das Manifest macht Libre WebUI installierbar, Navigation greift offline auf die gespeicherte Hülle zurück und gehashte Build-Ressourcen werden unveränderlich zwischengespeichert. API-Verkehr wird nie gecacht.

Grenzen

  • Benutzereinstellungen pro Typ sind noch nicht implementiert. Automatisierungen beachten ihre eigene Einstellung, und das Verlassen eines Kanals stoppt dessen Benachrichtigungen.