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ă.
Ferestre pop-up de stare
Mesajele scurte de stare, cum ar fi o modificare salvată sau o operație Git finalizată, apar în partea de sus a paginii. Folosiți butonul Închide pentru a elimina o fereastră pop-up cu mouse-ul sau de la tastatură. Când țineți cursorul deasupra, mesajul rămâne vizibil ca să îl puteți citi; închiderea lui elimină doar mesajul, iar operația de dedesubt își păstrează starea curentă.
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
| Tip | Când se produce |
|---|---|
channel-dm | Cineva trimite mesaj direct |
channel-mention | Cineva vă @mentions sau răspunde mesajului |
channel-invite | Sunteți adăugat într-un canal |
share | Cineva partajează o resursă |
automation-failed | O automatizare eșuează, dacă nu a renunțat la notificare |
calendar-reminder | Un eveniment ajunge la momentul mementoului |
work-run-finished | Un agent Work angajat termină |
work-run-attention | Agentul cere input sau întâlnește o eroare |
work-takeover | Agentul cere preluarea ecranului |
work-approval | O execuție Work așteaptă aprobarea unei acțiuni cu efect secundar |
system | Anunț la nivel de instanță |
Se publică numai utilizatorului afectat. O mențiune pentru cineva care nu este membru nu produce nimic.
Notificările pot și declanșa automatizări: o automatizare cu un declanșator
event rulează de fiecare dată când o notificare de tipul ales ajunge la proprietarul ei,
limitată de o perioadă de răcire de un minut per automatizare.
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_SUBJECTpentru 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ă.
E-mail
E-mailul este al treilea canal de livrare și singurul care necesită configurare de către un
administrator. Settings → Gestionarea utilizatorilor → Acces și politici → Notificări prin
e-mail păstrează un singur server SMTP de ieșire: gazdă, port, securitate a conexiunii
(STARTTLS, TLS implicit sau none pentru o rețea de încredere), credențiale opționale, adresa
expeditorului și URL-ul public folosit pentru linkuri. Variabilele de mediu SMTP_* din
Variabile de mediu inițializează aceleași câmpuri pentru
implementările în container; o valoare salvată în UI are prioritate. Parola este stocată
criptat și nu este returnată niciodată browserului. Send test livrează un mesaj la propria
adresă a administratorului (sau la orice adresă introdusă) astfel încât rundul complet este
dovedit înainte ca utilizatorii să se bazeze pe el.
Administratorii aleg și un șablon de e-mail Luminos sau Întunecat și îl previzualizează înainte de salvare. Luminos este implicit. Presetarea salvată se aplică fiecărei notificări și fiecărui e-mail de test din această instanță, inclusiv rezultatelor Markdown; este independentă de tema interfeței fiecărui utilizator. Previzualizarea redă conținut de exemplu fără a contacta SMTP, fără a trimite e-mail și fără a pune o lucrare în coadă. Doar administratorii pot citi sau schimba presetarea ori cere o previzualizare. Presetările integrate păstrează lizibile textul, linkurile, blocurile de cod și butoanele; șabloanele HTML personalizate nu sunt acceptate. Clienții de e-mail pot totuși ajusta culorile conform propriilor setări de afișare.
Odată ce comutatorul este activ, fiecare utilizator alege ce ajunge în inboxul propriu sub Settings → Notificări → Notificări prin e-mail:
- Mențiuni în canale: un mesaj care vă menționează într-un canal, cu previzualizarea și un link către canal.
- Rezultate automatizări: rezultatul fiecărei execuții a automatizărilor dumneavoastră, succes sau eșec. O execuție de chat poartă chiar răspunsul asistentului (până la câteva mii de caractere); o execuție Work poartă linia de stare a sarcinii; un eșec poartă eroarea. Link-ul deschide chatul sau sarcina rezultată.
Ambele comutatoare rămân dezactivate până când utilizatorul le activează și funcționează
numai pentru conturile care au o adresă de e-mail, pe care titularul contului o stabilește la
înregistrare sau pe care un administrator o adaugă la Users. Mesajele pleacă prin același
runtime durabil de job-uri ca Web Push, cu reîncercări limitate pentru eșecuri tranzitorii de
releu, iar clientul SMTP este o implementare proprie mică (EHLO, STARTTLS, AUTH PLAIN sau
LOGIN) care nu trimite niciodată credențiale pe o conexiune necriptată decât dacă modul este
explicit none. Fiecare mesaj are o parte text simplu și o alternativă HTML în aspectul
site-ului: wordmark-ul Libre WebUI, un card cu conținutul, un buton corai către țintă și un
subsol care trimite înapoi la Settings → Notificări. Un rezultat de automatizare este randat
din Markdown (titluri, liste, accent, cod, linkuri numai către ținte http(s)); orice altceva
este escapat, iar singura imagine externă este logo-ul servit de pe librewebui.org. Fără
urmărire.
Limite
- Preferințele per tip nu sunt încă implementate. Automatizările își respectă setarea, iar ieșirea din canal oprește notificările sale.