Ga naar hoofdinhoud

Meldingen

Libre WebUI houdt per gebruiker een duurzame meldingeninbox bij, zodat teamactiviteiten — vermeldingen, privéberichten, gedeelde bronnen, mislukte automatiseringen en agendaherinneringen — mensen ook bereiken wanneer de betreffende pagina is gesloten.

De inbox

Meldingen zijn allereerst databaserijen: titel en hoofdtekst worden versleuteld opgeslagen, het maximum is 500 per gebruiker (de oudste worden verwijderd) en een optionele bronsleutel ontdubbelt ze, zodat herhaald publiceren tot één vermelding wordt samengevoegd in plaats van de bel vol te spammen. Het RESTful-oppervlak vermeldt meldingen, telt ongelezen meldingen, markeert één of alle als gelezen en verwijdert ze.

Live levering gebruikt de duurzame gebeurtenissenstroom per gebruiker notify:<userId> via GET /api/notifications/events (SSE). De identiteit van de stroom komt uit de geverifieerde sessie, nooit uit clientinvoer, en de SQL-inbox blijft de bron van waarheid: een gemiste gebeurtenis wordt hersteld door de lijst te lezen, niet door de stroom opnieuw af te spelen.

Wat meldingen voortbrengt

TypeWordt geproduceerd wanneer
channel-dmIemand je een privébericht stuurt
channel-mentionIemand je in een kanaal @mentions of op je bericht antwoordt
channel-inviteJe aan een kanaal wordt toegevoegd
shareIemand een bron met je deelt
automation-failedEen van je automatiseringen mislukt, tenzij meldingen zijn uitgezet
calendar-reminderEen gebeurtenis met herinnering het herinneringstijdstip bereikt
work-run-finishedEen van je ingehuurde Work-agenten een uitvoering voltooit
work-run-attentionEen ingehuurde agent stopt voor invoer of een fout tegenkomt
work-takeoverEen Work-agent je vraagt het scherm over te nemen
work-approvalEen Work-uitvoering wacht tot je een actie met neveneffecten goedkeurt
systemEr een aankondiging op instantieniveau is

Meldingen worden altijd alleen voor de getroffen gebruiker gepubliceerd; een vermelding van een gebruikersnaam die geen lid van het kanaal is, levert niets op.

Uitgaande webhooks

Beheerders kunnen webhookdoelen registreren die teamgebeurtenissen ontvangen.

  • Uitgaand verkeer bewaakt. Doelen volgen hetzelfde bestemmingsbeleid als toolservers: exacte URL, geen omleidingen en geen privé- of link-local-adressen, tenzij de beheerder een host expliciet toestaat via TOOLS_PRIVATE_NETWORK_ALLOWLIST. Hostnamen worden voor elke levering opnieuw bepaald en gecontroleerd.
  • Ondertekend. Met een ingesteld geheim bevat elke levering X-Libre-Signature: sha256=<hmac>, berekend over de exacte body.
  • Geredigeerd. De envelop bevat gebeurtenissoort, meldingstype, titel, ID's en tijdstempels. Hoofdteksten van meldingen, berichtinhoud, prompts en documenten verlaten de instantie nooit.
  • Duurzaam. Leveringen worden uitgevoerd als duurzame taken met begrensde pogingen; een 5xx van de ontvanger wordt opnieuw geprobeerd, een 4xx geldt als het oordeel van de ontvanger en wordt afgehandeld.
  • Afgebakend. Elk doel abonneert zich op specifieke meldingstypen of *.

Browserpush

Instellingen → Meldingen registreert deze browser voor Web Push, zodat vermeldingen, gedeelde bronnen, herinneringen en voltooid werk het apparaat ook bereiken wanneer het tabblad is gesloten. De implementatie is standaard en zelfstandig:

  • VAPID (RFC 8292). De server ondertekent elke levering met een ES256-sleutelpaar dat eenmaal wordt gegenereerd en versleuteld opgeslagen, of wordt vastgezet met VAPID_PUBLIC_KEY/VAPID_PRIVATE_KEY (VAPID_SUBJECT stelt de contactclaim in). Naast het push-eindpunt van de browserleverancier is geen externe pushbibliotheek of serviceaccount betrokken.
  • Versleutelde payloads (RFC 8291). Elk bericht wordt met aes128gcm voor de eigen sleutels van het apparaat versleuteld voordat het de instantie verlaat; de pushservice stuurt versleutelde tekst door die deze niet kan lezen.
  • Per apparaat, aan sessie gebonden. Een abonnement behoort tot de browser die het heeft gemaakt en tot de verificatiesessie van die browser. Afmelden bij de sessie (of „andere sessies afmelden”) verwijdert ook de pushregistratie. Eindpunten worden versleuteld opgeslagen met een op een sleutel gebaseerd opzoektoken en moeten openbare HTTPS-bestemmingen zijn, met dezelfde beveiliging voor uitgaand verkeer als webhooks.
  • Duurzaam. Pushleveringen draaien als duurzame taken met begrensde pogingen; als een pushservice meldt dat het abonnement verdwenen is (404/410), wordt het verwijderd.
  • De payload bevat de meldingstitel, optionele hoofdtekst, het type en de doellink, met dezelfde redactiehouding als de inbox.

Push vereist de productie-app (de serviceworker wordt alleen daar geregistreerd) en een veilige oorsprong. De offlineshell en installeerbaarheid komen van dezelfde serviceworker: het appmanifest maakt Libre WebUI installeerbaar, navigatie valt offline terug op de gecachte shell en buildmiddelen met hash worden onveranderlijk gecachet. API-verkeer wordt nooit gecachet.

Grenzen

  • Gebruikersvoorkeuren per type zijn nog niet geïmplementeerd; automatiseringen volgen hun eigen meldingsinstelling en een kanaal verlaten stopt de bijbehorende meldingen.