Перейти к основному содержимому

Уведомления

Libre WebUI хранит ящик каждого пользователя, чтобы упоминания, DM, общий доступ, ошибки автоматизации и календарь доходили при закрытой странице.

Всплывающие сообщения о состоянии​

Короткие сообщения о состоянии, например о сохранённом изменении или завершённой операции Git, появляются в верхней части страницы. Кнопка Закрыть убирает сообщение, как указателем, так и с клавиатуры. Пока курсор наведён на сообщение, оно остаётся на экране, чтобы его можно было прочитать; закрытие убирает сообщение, а сама операция сохраняет своё текущее состояние.

Ящик​

Уведомления — прежде всего строки базы: заголовок/текст шифруются, максимум 500 (старые удаляются), необязательный ключ дедуплицирует повтор. RESTful показывает, считает, отмечает одно/все и удаляет.

Живая доставка через notify:<userId> и GET /api/notifications/events (SSE). Идентичность из сессии, не клиента, SQL — источник истины: пропуск восстанавливается списком, не проигрыванием.

Источники уведомлений​

ТипКогда
channel-dmЛичное сообщение
channel-mentionВас @mentions или отвечают
channel-inviteДобавляют в канал
shareДелятся ресурсом
automation-failedВаша автоматизация падает, если не отключила уведомление
calendar-reminderНаступает время напоминания
work-run-finishedНанятый агент завершает
work-run-attentionНужны данные или ошибка
work-takeoverАгент просит перехватить экран
work-approvalЗапуск Work ждёт одобрения действия с побочными эффектами
systemОбъявление инстанции

Публикуется только затронутому пользователю; упоминание неучастника ничего не создаёт.

Уведомления также запускают автоматизации: автоматизация с триггером event срабатывает при каждом уведомлении нужного типа, не чаще раза в минуту на автоматизацию.

Исходящие вебхуки​

Администратор регистрирует цели:

  • Защищённый выход. Точная URL, без перенаправлений и частных или link-local-адресов, если имя хоста не разрешено через TOOLS_PRIVATE_NETWORK_ALLOWLIST. Имя повторно разрешается при доставке.
  • Подпись. С секретом X-Libre-Signature: sha256=<hmac> от точного тела запроса.
  • Редакция. Оболочка содержит вид, тип, заголовок, ID и время. Тексты, сообщения, промпты, документы не выходят.
  • Долговечность. Ограниченные повторы; 5xx повторяется, 4xx считается решением.
  • Область. Конкретные типы или *.

Push браузера​

Настройки → Уведомления регистрируют Web Push, чтобы события дошли при закрытой вкладке:

  • VAPID (RFC 8292). Сервер подписывает ES256-парой, созданной раз и зашифрованной, либо VAPID_PUBLIC_KEY/VAPID_PRIVATE_KEY (VAPID_SUBJECT — контакт). Нет сторонней библиотеки/аккаунта кроме точки браузера.
  • Шифрование (RFC 8291). aes128gcm ключами устройства до выхода; сервис видит шифротекст.
  • Для каждого устройства и сессии. Выход (или «выйти из других сессий») удаляет регистрацию. Точки зашифрованы с ключевым токеном поиска и должны быть публичными HTTPS с той же защитой.
  • Долговечность. Ограниченные повторы; 404/410 удаляет подписку.
  • Полезная нагрузка содержит заголовок, текст, тип и ссылку с той же редакцией.

Push требует производственного приложения и безопасного источника. Сервис-воркер также обеспечивает установку и автономную оболочку: манифест делает приложение устанавливаемым, автономная навигация использует кэш, а хешированные ресурсы считаются неизменными. API не кэшируется.

Почта​

Третий канал доставки, единственный, что требует настройки администратором. Настройки → Управление пользователями → Доступ и политики → Уведомления по почте хранит один сервер исходящей SMTP-почты: хост, порт, защита соединения (STARTTLS, TLS или без шифрования для доверенной сети), необязательные учётные данные, адрес отправителя и публичный URL для ссылок. Переменные SMTP_* в Переменных окружения задают те же поля для контейнерных развёртываний; значение, сохранённое в интерфейсе, имеет приоритет. Пароль хранится зашифрованным и не возвращается браузеру. Отправить тест доставляет сообщение на адрес администратора (или любой введённый адрес), подтверждая работоспособность до того, как на неё положатся пользователи.

Администраторы также выбирают шаблон письма Светлый или Тёмный и просматривают его перед сохранением. По умолчанию используется Светлый. Сохранённый пресет применяется ко всем уведомлениям и тестовым письмам этого экземпляра, включая результаты в Markdown; он не зависит от темы интерфейса каждого пользователя. Предпросмотр отображает пример содержимого без подключения к SMTP, отправки почты и постановки задания в очередь. Читать и менять пресет или запрашивать предпросмотр могут только администраторы. Встроенные пресеты сохраняют читаемость текста, ссылок, блоков кода и кнопок; собственные HTML-шаблоны не принимаются. Почтовые клиенты всё равно могут менять цвета по своим настройкам отображения.

Когда переключатель включён, каждый пользователь сам выбирает, что попадёт в его почту, в разделе Настройки → Уведомления → Уведомления по почте:

  • Упоминания в каналах: сообщение, упоминающее вас в канале, с превью и ссылкой на канал.
  • Результаты автоматизаций: итог каждого запуска автоматизации, успешного или нет. Запуск чата несёт сам ответ ассистента (до нескольких тысяч символов); запуск Work несёт строку статуса задачи; сбой несёт текст ошибки. Ссылка открывает итоговый чат или задачу.

Оба переключателя по умолчанию выключены и работают только для учётных записей с адресом почты, который владелец задаёт при регистрации или администратор добавляет в разделе «Пользователи». Сообщения уходят через ту же долговечную очередь заданий, что и Web Push, с ограниченными повторами при временных сбоях ретранслятора; SMTP-клиент — небольшая встроенная реализация (EHLO, STARTTLS, AUTH PLAIN или LOGIN), которая никогда не передаёт учётные данные по незашифрованному соединению, если режим явно не none. Каждое сообщение содержит текстовую часть и HTML-версию в стиле сайта: вордмарк Libre WebUI, одна карточка с содержимым, коралловая кнопка перехода и подвал со ссылкой обратно на «Настройки → Уведомления». Результат автоматизации рендерится из Markdown (заголовки, списки, выделение, код, ссылки только на http(s)-адреса); всё остальное экранируется, единственное внешнее изображение — логотип с librewebui.org. Без отслеживания.

Границы​

  • Настроек по отдельным типам пока нет; автоматизация соблюдает своё, выход из канала останавливает его уведомления.