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.
Status-Popups
Kurze Statusmeldungen, etwa zu einer gespeicherten Änderung oder einem abgeschlossenen Git-Vorgang, erscheinen oben auf der Seite. Mit der Schaltfläche Schließen entfernst du ein Popup per Zeiger oder Tastatur. Solange der Zeiger darüber liegt, bleibt die Meldung sichtbar, damit du sie lesen kannst. Beim Schließen verschwindet die Meldung, während der zugrunde liegende Vorgang seinen aktuellen Zustand behält.
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
| Typ | Auslöser |
|---|---|
channel-dm | Jemand sendet dir eine Direktnachricht |
channel-mention | Jemand macht ein @mentions oder antwortet auf deine Nachricht |
channel-invite | Du wirst zu einem Kanal hinzugefügt |
share | Jemand gibt eine Ressource für dich frei |
automation-failed | Eine deiner Automatisierungen schlägt fehl (sofern nicht abbestellt) |
calendar-reminder | Der Erinnerungszeitpunkt eines Ereignisses wird erreicht |
work-run-finished | Einer deiner eingestellten Work-Agenten schließt eine Ausführung ab |
work-run-attention | Ein eingestellter Agent hält für Eingabe an oder stößt auf einen Fehler |
work-takeover | Ein Work-Agent bittet dich, seinen Bildschirm zu übernehmen |
work-approval | Ein Work-Lauf wartet auf deine Freigabe einer wirksamen Aktion |
system | Instanzweite Mitteilungen |
Benachrichtigungen gehen immer nur an den betroffenen Benutzer. Die Erwähnung eines Benutzernamens, der nicht Mitglied ist, erzeugt nichts.
Benachrichtigungen können auch Automatisierungen auslösen: eine
Automatisierung mit einem event-Auslöser läuft, sobald
eine Benachrichtigung des gewählten Typs bei ihrem Eigentümer eintrifft,
begrenzt durch eine Abklingzeit von einer Minute je Automatisierung.
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_ALLOWLISTfreigegeben 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_KEYfestgelegt wird (VAPID_SUBJECTsetzt 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.
E-Mail
E-Mail ist der dritte Zustellweg und der einzige, der von einem Administrator
eingerichtet werden muss. Einstellungen → Benutzerverwaltung → Zugriff und
Richtlinien → E-Mail-Benachrichtigungen hält einen ausgehenden SMTP-Server:
Host, Port, Verbindungssicherheit (STARTTLS, implizites TLS oder keine für
ein vertrauenswürdiges Netzwerk), optionale Zugangsdaten, die Absenderadresse
und die für Links verwendete öffentliche URL. Die SMTP_*-Umgebungsvariablen
in Umgebungsvariablen setzen dieselben Felder für
Container-Bereitstellungen vor; ein in der Oberfläche gespeicherter Wert hat
Vorrang. Das Passwort wird verschlüsselt gespeichert und nie an den Browser
zurückgegeben. Test senden liefert eine Nachricht an die eigene Adresse
des Administrators (oder eine eingegebene Adresse), sodass der Rundweg
bewiesen ist, bevor sich Benutzer darauf verlassen.
Administratoren wählen außerdem eine Hell- oder Dunkel-E-Mail-Vorlage und sehen sie vor dem Speichern in der Vorschau. Hell ist die Standardeinstellung. Die gespeicherte Vorgabe gilt für jede Benachrichtigung und Test-E-Mail dieser Instanz, einschließlich Markdown-Ergebnissen; sie ist unabhängig vom Oberflächendesign jedes Benutzers. Die Vorschau rendert Beispielinhalte, ohne SMTP zu kontaktieren, E-Mails zu senden oder einen Job einzureihen. Nur Administratoren können die Vorgabe lesen oder ändern oder eine Vorschau anfordern. Die integrierten Vorgaben halten Text, Links, Codeblöcke und Schaltflächen lesbar; eigene HTML-Vorlagen werden nicht akzeptiert. E-Mail-Clients können Farben dennoch gemäß ihren eigenen Anzeigeeinstellungen anpassen.
Sobald der Schalter an ist, wählt jeder Benutzer unter Einstellungen → Benachrichtigungen → E-Mail-Benachrichtigungen, was sein Postfach erreicht:
- Erwähnungen in Kanälen: eine Nachricht, die dich in einem Kanal erwähnt, mit Vorschau und einem Link zum Kanal.
- Automatisierungsergebnisse: das Ergebnis jedes deiner Automatisierungsläufe, Erfolg oder Fehlschlag. Ein Chat-Lauf trägt die Antwort des Assistenten selbst (bis zu einigen Tausend Zeichen); ein Work-Lauf trägt die Statuszeile der Aufgabe; ein Fehlschlag trägt den Fehler. Der Link öffnet den entstandenen Chat oder die Aufgabe.
Beide Schalter bleiben aus, bis der Benutzer sie einschaltet, und sie
funktionieren nur für Konten mit einer E-Mail-Adresse, die der Kontoinhaber
bei der Anmeldung festlegt oder ein Administrator unter Benutzer hinzufügt.
Nachrichten verlassen die Instanz über dieselbe dauerhafte Job-Laufzeit wie
Web Push, mit begrenzten Wiederholungen bei vorübergehenden Relay-Fehlern,
und der SMTP-Client ist eine kleine eingebaute Implementierung (EHLO,
STARTTLS, AUTH PLAIN oder LOGIN), die Zugangsdaten nie über eine
unverschlüsselte Verbindung sendet, außer der Modus ist ausdrücklich none.
Jede Nachricht hat einen Nur-Text-Teil und eine HTML-Alternative im Look der
Website: das Libre-WebUI-Wortzeichen, eine Karte mit dem Inhalt, eine
korallenfarbene Schaltfläche zum Ziel und eine Fußzeile, die zurück zu
Einstellungen → Benachrichtigungen führt. Ein Automatisierungsergebnis wird
aus Markdown gerendert (Überschriften, Listen, Betonung, Code, Links nur zu
http(s)-Zielen); alles andere wird escaped, und das einzige externe Bild ist
das von librewebui.org ausgelieferte Logo. Kein Tracking.
Grenzen
- Benutzereinstellungen pro Typ sind noch nicht implementiert. Automatisierungen beachten ihre eigene Einstellung, und das Verlassen eines Kanals stoppt dessen Benachrichtigungen.