Przejdź do głównej zawartości

Powiadomienia

Libre WebUI utrzymuje trwałą skrzynkę dla każdego użytkownika, dzięki czemu aktywność zespołu — wzmianki, wiadomości bezpośrednie, udostępnienia, błędy automatyzacji i przypomnienia kalendarza — dociera do ludzi nawet po zamknięciu strony.

Skrzynka

Powiadomienia są przede wszystkim wierszami bazy: tytuł i treść są szyfrowane w spoczynku, limit wynosi 500 na użytkownika (najstarsze są usuwane), a opcjonalny klucz źródła deduplikuje powtórne publikacje w jedną pozycję. Powierzchnia RESTful wyświetla, liczy nieprzeczytane, oznacza jedno lub wszystkie jako przeczytane i usuwa.

Dostarczanie na żywo korzysta z trwałego strumienia per użytkownik notify:<userId> przez GET /api/notifications/events (SSE). Tożsamość pochodzi z uwierzytelnionej sesji, nigdy z wejścia klienta, a skrzynka SQL pozostaje źródłem prawdy: pominięte zdarzenie odzyskuje się z listy, nie przez odtwarzanie strumienia.

Co tworzy powiadomienia

TypKiedy powstaje
channel-dmKtoś wysyła wiadomość bezpośrednią
channel-mentionKtoś @mentions Cię w kanale lub odpowiada na Twoją wiadomość
channel-inviteZostajesz dodany do kanału
shareKtoś udostępnia Ci zasób
automation-failedTwoja automatyzacja kończy się błędem, chyba że wyłączyła powiadamianie
calendar-reminderZdarzenie osiąga czas przypomnienia
work-run-finishedWynajęty agent Work kończy uruchomienie
work-run-attentionAgent zatrzymuje się po dane lub napotyka błąd
work-takeoverAgent Work prosi o przejęcie ekranu
work-approvalUruchomienie Work czeka na zatwierdzenie działania ze skutkami ubocznymi
systemOgłoszenia na poziomie instancji

Powiadomienie jest zawsze publikowane tylko do zainteresowanego użytkownika; wzmianka osoby spoza kanału nie tworzy niczego.

Wychodzące webhooki

Administratorzy mogą rejestrować cele webhooków odbierające zdarzenia zespołowe.

  • Chroniony ruch wychodzący. Cele podlegają tej samej polityce co serwery narzędzi: dokładny URL, brak przekierowań i adresów prywatnych/link-local, chyba że administrator jawnie dopuści host przez TOOLS_PRIVATE_NETWORK_ALLOWLIST. Nazwy są ponownie rozwiązywane i sprawdzane przy każdej dostawie.
  • Podpisane. Przy skonfigurowanym sekrecie każda dostawa ma X-Libre-Signature: sha256=<hmac> obliczony z dokładnej treści.
  • Zredagowane. Obwiednia zawiera rodzaj zdarzenia, typ powiadomienia, tytuł, identyfikatory i znaczniki czasu. Treść powiadomień, wiadomości, prompty i dokumenty nigdy nie opuszczają instancji.
  • Trwałe. Dostawy działają jako trwałe zadania z ograniczonymi próbami; 5xx jest ponawiany, a 4xx traktowany jako werdykt odbiorcy.
  • Ograniczone zakresem. Cel subskrybuje konkretne typy lub *.

Powiadomienia push przeglądarki

Ustawienia → Powiadomienia rejestruje przeglądarkę w Web Push, aby wzmianki, udostępnienia, przypomnienia i zakończona praca dotarły także przy zamkniętej karcie. Implementacja jest standardowa i samodzielna:

  • VAPID (RFC 8292). Serwer podpisuje dostawy parą kluczy ES256 wygenerowaną raz i zaszyfrowaną albo ustawioną przez VAPID_PUBLIC_KEY/VAPID_PRIVATE_KEY (VAPID_SUBJECT ustawia kontakt). Poza punktem push dostawcy przeglądarki nie uczestniczy zewnętrzna biblioteka ani konto usługi.
  • Szyfrowane ładunki (RFC 8291). Każda wiadomość jest szyfrowana aes128gcm dla kluczy urządzenia przed opuszczeniem instancji; usługa przekazuje nieczytelny szyfrogram.
  • Per urządzenie i sesję. Subskrypcja należy do przeglądarki i jej sesji uwierzytelniania; wylogowanie (lub „wyloguj inne sesje”) usuwa rejestrację push. Punkty są szyfrowane z kluczem wyszukiwania i muszą być publicznymi celami HTTPS, z taką samą ochroną ruchu jak webhooki.
  • Trwałe. Dostawy push są trwałymi zadaniami z ograniczonymi próbami; odpowiedź 404/410 usuwa wygasłą subskrypcję.
  • Ładunek zawiera tytuł, opcjonalną treść, typ i link docelowy — z taką samą redakcją jak skrzynka.

Push wymaga aplikacji produkcyjnej (service worker rejestruje się tylko tam) i bezpiecznego pochodzenia. Powłoka offline i instalowalność pochodzą z tego samego workera: manifest umożliwia instalację, nawigacja offline używa buforowanej powłoki, a zasoby z hashem są buforowane niezmiennie. Ruch API nigdy nie trafia do pamięci podręcznej.

Granice

  • Preferencje użytkownika per typ nie są jeszcze dostępne; automatyzacje respektują własne ustawienie, a opuszczenie kanału zatrzymuje jego powiadomienia.