Notifikationer
Libre WebUI har en vedvarende notifikationsindbakke pr. bruger, så teamaktivitet — omtaler, direkte beskeder, delinger, mislykkede automatiseringer og kalenderpåmindelser — når frem til personer, selv når den relevante side er lukket.
Indbakken
Notifikationer er først og fremmest databaserækker: titel og tekst krypteres ved lagring, der gemmes højst 500 pr. bruger (de ældste fjernes), og en valgfri kildenøgle deduplikerer, så en gentagen publicering samles i én post i stedet for at oversvømme klokken. REST-grænsefladen viser, tæller ulæste, markerer som læst (én eller alle) og sletter.
Direkte levering bruger den vedvarende hændelsesstream pr. bruger
notify:<userId> over GET /api/notifications/events (SSE). Streamens identitet
kommer fra den godkendte session — aldrig fra klientinput — og SQL-indbakken
forbliver sandhedskilden. En mistet hændelse gendannes ved at læse listen, ikke ved
at afspille streamen igen.
Hvad der skaber notifikationer
| Type | Oprettes når |
|---|---|
channel-dm | Nogen sender dig en direkte besked |
channel-mention | Nogen @mentions dig i en kanal eller svarer på din besked |
channel-invite | Du føjes til en kanal |
share | Nogen deler en ressource med dig |
automation-failed | En af dine automatiseringer mislykkes (medmindre notifikation er fravalgt) |
calendar-reminder | En begivenhed med påmindelsesforskydning når påmindelsestidspunktet |
work-run-finished | En af dine hyrede Work-agenter fuldfører en kørsel |
work-run-attention | En hyret agent stopper for input eller rammer en fejl |
work-takeover | En Work-agent beder dig overtage dens skærm |
work-approval | En Work-kørsel venter på, at du godkender en handling med sideeffekt |
system | Meddelelser på instansniveau |
Notifikationer publiceres altid kun til den berørte bruger. En omtale af et brugernavn, som ikke er medlem af kanalen, skaber intet.
Udgående webhooks
Administratorer kan registrere webhookmål, der modtager teamhændelser.
- Beskyttet udgående trafik. Mål følger samme destinationspolitik som
værktøjsservere: nøjagtig URL, ingen omdirigeringer og ingen private eller
link-lokale adresser, medmindre administratoren eksplicit har tilladt en vært via
TOOLS_PRIVATE_NETWORK_ALLOWLIST. Værtsnavne slås op og kontrolleres igen ved hver levering. - Signeret. Med en konfigureret hemmelighed indeholder hver levering
X-Libre-Signature: sha256=<hmac>, beregnet over den nøjagtige body. - Fortrolighedsfiltreret. Indpakningen indeholder hændelsestype, notifikationstype, titel, identifikatorer og tidsstempler. Notifikationstekst, beskedindhold, prompter og dokumenter forlader aldrig instansen.
- Vedvarende. Leveringer kører som vedvarende jobs med et afgrænset antal genforsøg. Et 5xx-svar fra modtageren forsøges igen; et 4xx-svar behandles som modtagerens afgørelse og afslutter leveringen.
- Afgrænset. Hvert mål abonnerer på bestemte notifikationstyper (eller
*).
Browser-push
Settings → Notifications registrerer denne browser til Web Push, så omtaler, delinger, påmindelser og afsluttet arbejde når enheden, selv når fanen er lukket. Implementeringen er standardbaseret og selvstændig:
- VAPID (RFC 8292). Serveren signerer hver levering med et ES256-nøglepar,
der genereres én gang og gemmes krypteret, eller låses med
VAPID_PUBLIC_KEY/VAPID_PRIVATE_KEY(VAPID_SUBJECTangiver kontaktpåstanden). Intet tredjeparts-pushbibliotek eller nogen tjenestekonto bruges ud over browserleverandørens push-slutpunkt. - Krypteret payload (RFC 8291). Hver besked krypteres med aes128gcm til enhedens egne nøgler, før den forlader instansen. Push-tjenesten videresender chiffertekst, den ikke kan læse.
- Pr. enhed, sessionsbundet. Et abonnement tilhører browseren, der oprettede det, og den pågældende browsers godkendelsessession. Hvis sessionen logges ud (eller "sign out other sessions" bruges), fjernes push-registreringen også. Slutpunkter gemmes krypteret med en nøglebaseret opslagstoken og skal være offentlige HTTPS-destinationer — samme hygiejne for udgående trafik som webhooks.
- Vedvarende. Push-leveringer kører som vedvarende jobs med afgrænsede genforsøg. Hvis en push-tjeneste rapporterer, at abonnementet er væk (404/410), fjernes det.
- Payloaden indeholder notifikationens titel, valgfri tekst, type og destinationslink — samme fortrolighedsfiltrering som indbakken.
Push kræver produktionsappen (service worker registreres kun dér) og en sikker origin. Den samme service worker leverer offline-skallen og muligheden for installation: appmanifestet gør Libre WebUI installerbar, navigation falder tilbage til den cachede skal offline, og hash-baserede build-ressourcer caches uforanderligt. API-trafik caches aldrig.
Grænser
- Brugerpræferencer pr. type er endnu ikke implementeret. Automatiseringer følger deres egen notifikationsindstilling, og notifikationerne stopper, når brugeren forlader en kanal.