Hop til hovedindhold

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

TypeOprettes når
channel-dmNogen sender dig en direkte besked
channel-mentionNogen @mentions dig i en kanal eller svarer på din besked
channel-inviteDu føjes til en kanal
shareNogen deler en ressource med dig
automation-failedEn af dine automatiseringer mislykkes (medmindre notifikation er fravalgt)
calendar-reminderEn begivenhed med påmindelsesforskydning når påmindelsestidspunktet
work-run-finishedEn af dine hyrede Work-agenter fuldfører en kørsel
work-run-attentionEn hyret agent stopper for input eller rammer en fejl
work-takeoverEn Work-agent beder dig overtage dens skærm
work-approvalEn Work-kørsel venter på, at du godkender en handling med sideeffekt
systemMeddelelser 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_SUBJECT angiver 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.