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.

Statusbeskeder​

Korte statusbeskeder, for eksempel om at en ændring er gemt, eller at en Git-handling er fuldført, vises øverst på siden. Brug knappen Luk til at fjerne en besked med markør eller tastatur. Når du holder markøren over beskeden, bliver den stående, så du kan nå at læse den. Når du lukker den, forsvinder beskeden, men den underliggende handling bevarer sin aktuelle tilstand.

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.

Notifikationer kan også udløse automatiseringer: en automatisering med en event-udløser kører, hver gang en notifikation af den valgte type når dens ejer, begrænset af en køletid på ét minut pr. automatisering.

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.

E-mail​

E-mail er den tredje leveringskanal og den eneste, der kræver opsætning af en administrator. Indstillinger → Brugeradministration → Adgang og politikker → E-mailnotifikationer rummer én udgående SMTP-server: host, port, forbindelsessikkerhed (STARTTLS, implicit TLS eller ingen for et betroet netværk), valgfrie legitimationsoplysninger, afsenderadressen og den offentlige URL brugt til links. Miljøvariablerne SMTP_* i Miljøvariabler sår de samme felter til containerudrulninger; en værdi gemt i brugerfladen går forud. Adgangskoden gemmes krypteret og returneres aldrig til browseren. Send test afleverer en besked til administratorens egen adresse (eller en hvilken som helst indtastet adresse), så rundturen er bevist, før brugerne stoler på den.

Administratorer vælger også en Lys eller Mørk e-mailskabelon og ser den som forhåndsvisning, før de gemmer. Lys er standard. Den gemte forudindstilling gælder for alle notifikationer og test-e-mails på denne instans, også Markdown-resultater; den er uafhængig af hver brugers grænsefladetema. Forhåndsvisningen viser eksempelindhold uden at kontakte SMTP, sende mail eller sætte et job i kø. Kun administratorer kan læse eller ændre forudindstillingen eller bede om en forhåndsvisning. De indbyggede forudindstillinger holder tekst, links, kodeblokke og knapper læsbare; egne HTML-skabeloner accepteres ikke. E-mailklienter kan stadig justere farver efter deres egne visningsindstillinger.

Når kontakten er slået til, vælger hver bruger, hvad der når deres indbakke, under Indstillinger → Notifikationer → E-mailnotifikationer:

  • Omtaler i kanaler: en besked, der nævner dig i en kanal, med forhåndsvisningen og et link til kanalen.
  • Automatiseringsresultater: resultatet af hver af dine automatiseringskørsler, succes eller fejl. En chatkørsel bærer selve assistentens svar (op til et par tusind tegn); en Work-kørsel bærer opgavens statuslinje; en fejl bærer fejlen. Linket åbner den resulterende chat eller opgave.

Begge kontakter er slået fra, indtil brugeren selv slår dem til, og de virker kun for konti, der har en e-mailadresse, som kontohaveren angiver ved tilmelding, eller en administrator tilføjer under Brugere. Beskeder sendes gennem samme vedvarende jobruntime som Web Push, med afgrænsede genforsøg ved forbigående relay-fejl, og SMTP-klienten er en lille indbygget implementering (EHLO, STARTTLS, AUTH PLAIN eller LOGIN), der aldrig sender legitimationsoplysninger over en ukrypteret forbindelse, medmindre tilstanden eksplicit er none. Hver besked har en ren tekstdel og et HTML-alternativ i webstedets look: Libre WebUI-ordmærket, ét kort med indholdet, en koralfarvet knap til målet og en fod, der peger tilbage til Indstillinger → Notifikationer. Et automatiseringsresultat gengives fra Markdown (overskrifter, lister, fremhævning, kode, links kun til http(s)-mål); alt andet escapes, og det eneste eksterne billede er logoet, der leveres fra librewebui.org. Ingen sporing.

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.