Sari la conținutul principal

Notificări

Libre WebUI păstrează un inbox persistent per utilizator, astfel încât activitatea echipei — mențiuni, mesaje directe, partajări, automatizări eșuate și mementouri — să ajungă chiar dacă pagina relevantă este închisă.

Inbox-ul

Notificările sunt rânduri de bază de date: titlu și corp criptate, limită 500 per utilizator (cele vechi eliminate) și cheie sursă opțională pentru deduplicare. Suprafața REST listează, numără necitite, marchează una/toate și șterge.

Livrarea live folosește fluxul persistent notify:<userId> prin GET /api/notifications/events (SSE). Identitatea vine din sesiunea autentificată, niciodată din client, iar inbox-ul SQL rămâne sursa adevărului. Un eveniment ratat se recuperează citind lista, nu reluând fluxul.

Surse de notificări

TipCând se produce
channel-dmCineva trimite mesaj direct
channel-mentionCineva vă @mentions sau răspunde mesajului
channel-inviteSunteți adăugat într-un canal
shareCineva partajează o resursă
automation-failedO automatizare eșuează, dacă nu a renunțat la notificare
calendar-reminderUn eveniment ajunge la momentul mementoului
work-run-finishedUn agent Work angajat termină
work-run-attentionAgentul cere input sau întâlnește o eroare
work-takeoverAgentul cere preluarea ecranului
work-approvalO execuție Work așteaptă aprobarea unei acțiuni cu efect secundar
systemAnunț la nivel de instanță

Se publică numai utilizatorului afectat. O mențiune pentru cineva care nu este membru nu produce nimic.

Webhook-uri de ieșire

Administratorii pot înregistra ținte pentru evenimente de echipă.

  • Ieșire protejată. Aceeași politică precum serverele de unelte: URL exact, fără redirect și fără adrese private/link-local, exceptând host-uri permise explicit prin TOOLS_PRIVATE_NETWORK_ALLOWLIST. DNS se rezolvă și verifică la fiecare livrare.
  • Semnate. Cu secret, fiecare livrare are X-Libre-Signature: sha256=<hmac> calculat pe corpul exact.
  • Redactate. Învelișul conține tipul, titlul, ID-uri și timestamp-uri. Corpurile, mesajele, prompturile și documentele nu părăsesc instanța.
  • Persistente. Job-uri durabile cu retry limitat; 5xx se repetă, 4xx este verdict final.
  • Limitate. Fiecare țintă se abonează la tipuri specifice sau *.

Push în browser

Settings → Notifications înregistrează browserul pentru Web Push, astfel încât mențiunile și mementourile ajung cu fila închisă.

  • VAPID (RFC 8292). Serverul semnează cu o pereche ES256 creată o dată și criptată sau fixată prin VAPID_PUBLIC_KEY/VAPID_PRIVATE_KEY (VAPID_SUBJECT pentru contact).
  • Payload criptat (RFC 8291). Fiecare mesaj se criptează aes128gcm pentru cheile dispozitivului; serviciul retransmite ciphertext ilizibil.
  • Per dispozitiv și sesiune. Abonamentul aparține browserului și sesiunii. Logout sau "sign out other sessions" elimină înregistrarea. Endpoint-urile sunt criptate cu token de căutare și trebuie să fie HTTPS publice.
  • Persistent. Livrarea are retry; 404/410 elimină abonamentul.
  • Payload-ul include titlu, corp opțional, tip și link, cu aceeași redactare.

Push necesită aplicația de producție și origin sigur. Același service worker oferă offline shell și instalare: manifestul face Libre instalabil, navigarea offline folosește shell-ul din cache și asset-urile hash sunt imuabile. Traficul API nu se cachează.

Limite

  • Preferințele per tip nu sunt încă implementate. Automatizările își respectă setarea, iar ieșirea din canal oprește notificările sale.