Pular para o conteúdo principal

Notificações

O Libre WebUI mantém uma caixa de entrada de notificações persistente por usuário para que atividades da equipe — menções, mensagens diretas, compartilhamentos, falhas de automações e lembretes de calendário — cheguem às pessoas mesmo quando a página correspondente estiver fechada.

Pop-ups de status​

Mensagens curtas de status, como uma alteração salva ou uma operação do Git concluída, aparecem perto do topo da página. Use o botão Fechar para dispensar um pop-up com o ponteiro ou o teclado. Passar o mouse por cima mantém a mensagem visível para que você consiga lê-la; fechar o pop-up dispensa a mensagem, enquanto a operação em si mantém o estado atual.

A caixa de entrada​

As notificações são primeiro linhas do banco de dados: título e corpo criptografados em repouso, limite de 500 por usuário (as mais antigas são removidas) e desduplicação por uma chave de origem opcional, para que publicações repetidas sejam consolidadas em uma só entrada em vez de lotarem o sino. A interface RESTful lista, conta as não lidas, marca uma ou todas como lidas e exclui.

A entrega ao vivo usa o fluxo persistente de eventos por usuário notify:<userId> por meio de GET /api/notifications/events (SSE). A identidade do fluxo vem da sessão autenticada — nunca de dados fornecidos pelo cliente — e a caixa de entrada SQL continua sendo a fonte da verdade: um evento perdido é recuperado pela leitura da lista, não pela reprodução do fluxo.

O que gera notificações​

TipoQuando é gerada
channel-dmAlguém envia uma mensagem direta a você
channel-mentionAlguém usa @mentions para mencionar você em um canal ou responde à sua mensagem
channel-inviteVocê é adicionado a um canal
shareAlguém compartilha um recurso com você
automation-failedUma de suas automações falha (a menos que tenha desativado a opção)
calendar-reminderUm evento com lembrete atinge o horário definido
work-run-finishedUm dos agentes do Work que você contratou conclui uma execução
work-run-attentionUm agente contratado para e aguarda dados ou encontra um erro
work-takeoverUm agente do Work pede que você assuma o controle da tela
work-approvalUma execução do Work aguarda sua aprovação de uma ação com efeito colateral
systemComunicados no nível da instância

As notificações sempre são publicadas somente para o usuário afetado; mencionar o nome de usuário de alguém que não é membro do canal não gera nada.

Notificações também podem disparar automações: uma automação com um gatilho event executa sempre que uma notificação do tipo escolhido chega ao seu dono, limitada a um intervalo mínimo de um minuto por automação.

Webhooks de saída​

Administradores podem cadastrar destinos de webhook para receber eventos da equipe.

  • Saída protegida. Os destinos seguem a mesma política aplicada a servidores de ferramentas: URL exata, sem redirecionamentos e sem endereços privados ou link-local, a menos que o administrador inclua explicitamente um host na lista de permissões por meio de TOOLS_PRIVATE_NETWORK_ALLOWLIST. Os nomes de host são resolvidos e verificados novamente em cada entrega.
  • Assinados. Quando há um segredo configurado, toda entrega inclui X-Libre-Signature: sha256=<hmac>, calculado sobre o corpo exato.
  • Com dados suprimidos. O envelope contém o tipo de evento, o tipo e o título da notificação, identificadores e carimbos de data e hora. Corpos de notificações, conteúdo de mensagens, prompts e documentos nunca saem da instância.
  • Persistentes. As entregas são executadas como tarefas persistentes com tentativas limitadas; uma resposta 5xx do destinatário gera uma nova tentativa, enquanto uma resposta 4xx é tratada como a decisão do destinatário e encerra a entrega.
  • Com escopo. Cada destino assina tipos específicos de notificação (ou *).

Push no navegador​

Configurações → Notificações cadastra este navegador para Web Push, permitindo que menções, compartilhamentos, lembretes e trabalhos concluídos cheguem ao dispositivo mesmo quando a aba estiver fechada. A implementação é padrão e autocontida:

  • VAPID (RFC 8292). O servidor assina cada entrega com um par de chaves ES256, gerado uma vez e armazenado de forma criptografada, ou fixado com VAPID_PUBLIC_KEY/VAPID_PRIVATE_KEY (VAPID_SUBJECT define a declaração de contato). Nenhuma biblioteca de push de terceiros nem conta de serviço participa além do endpoint de push do fornecedor do navegador.
  • Cargas criptografadas (RFC 8291). Toda mensagem é criptografada para as chaves do próprio dispositivo com aes128gcm antes de sair da instância; o serviço de push retransmite um texto cifrado que não consegue ler.
  • Por dispositivo e vinculada à sessão. Uma assinatura pertence ao navegador que a criou e à sessão de autenticação desse navegador: encerrar a sessão (ou “sair de outras sessões”) também remove seu cadastro de push. Os endpoints são armazenados criptografados com um token de consulta com chave e devem ser destinos HTTPS públicos — a mesma higiene de saída aplicada aos webhooks.
  • Persistentes. As entregas push são executadas como tarefas persistentes com tentativas limitadas; se um serviço de push informar que a assinatura não existe mais (404/410), ela será removida.
  • A carga contém o título da notificação, corpo opcional, tipo e link de destino — a mesma postura de supressão de dados da caixa de entrada.

O push exige o aplicativo de produção (o service worker é cadastrado somente nele) e uma origem segura. O shell offline e a possibilidade de instalação vêm do mesmo service worker: o manifesto do aplicativo torna o Libre WebUI instalável, as navegações usam o shell em cache quando estão offline e os ativos de build com hash são armazenados de forma imutável. O tráfego da API nunca é armazenado em cache.

E-mail​

O e-mail é o terceiro canal de entrega, e o único que precisa de configuração por um administrador. Configurações → Gerenciamento de Usuários → Acesso e políticas → Notificações por e-mail guarda um único servidor SMTP de saída: host, porta, segurança da conexão (STARTTLS, TLS implícito ou nenhuma para uma rede confiável), credenciais opcionais, o endereço do remetente e a URL pública usada nos links. As variáveis de ambiente SMTP_* em Variáveis de ambiente alimentam os mesmos campos para implantações em contêiner; um valor salvo na interface tem prioridade. A senha é armazenada de forma criptografada e nunca é devolvida ao navegador. Enviar teste envia uma mensagem para o próprio endereço do administrador (ou qualquer endereço digitado) para comprovar o funcionamento antes que os usuários dependam dele.

Administradores também escolhem um modelo de e-mail Claro ou Escuro e o visualizam antes de salvar. Claro é o padrão. A predefinição salva vale para todas as notificações e e-mails de teste desta instância, incluindo resultados em Markdown; ela independe do tema de interface de cada usuário. A prévia renderiza conteúdo de exemplo sem contatar o SMTP, enviar e-mail ou enfileirar um job. Somente administradores podem ler ou alterar a predefinição ou solicitar uma prévia. As predefinições integradas mantêm texto, links, blocos de código e botões legíveis; modelos HTML personalizados não são aceitos. Clientes de e-mail ainda podem ajustar as cores conforme suas próprias configurações de exibição.

Depois que a chave é ativada, cada usuário escolhe o que chega à sua caixa de entrada em Configurações → Notificações → Notificações por e-mail:

  • Menções em canais: uma mensagem que menciona você em um canal, com a prévia e um link para o canal.
  • Resultados de automações: o resultado de cada execução de suas automações, com sucesso ou falha. Uma execução de chat traz a própria resposta do assistente (até alguns milhares de caracteres); uma execução do Work traz a linha de status da tarefa; uma falha traz o erro. O link abre o chat ou a tarefa resultante.

Ambas as chaves ficam desativadas até o usuário ativá-las, e só funcionam para contas que têm um endereço de e-mail, definido pelo titular da conta no cadastro ou adicionado por um administrador em Usuários. As mensagens saem pelo mesmo mecanismo de tarefas duráveis do Web Push, com novas tentativas limitadas para falhas passageiras do servidor de retransmissão, e o cliente SMTP é uma implementação própria e simples (EHLO, STARTTLS, AUTH PLAIN ou LOGIN) que nunca envia credenciais por uma conexão sem criptografia a menos que o modo seja explicitamente none. Toda mensagem tem uma parte em texto simples e uma alternativa em HTML com a aparência do site: o logotipo do Libre WebUI, um cartão com o conteúdo, um botão coral para o destino e um rodapé apontando de volta para Configurações → Notificações. Um resultado de automação é renderizado a partir de Markdown (títulos, listas, ênfase, código, links apenas para destinos http(s)); todo o resto é escapado, e a única imagem externa é o logotipo servido a partir de librewebui.org. Sem rastreamento.

Limites funcionais​

  • Preferências de usuário por tipo ainda não estão implementadas; as automações respeitam sua própria configuração de notificação, e sair de um canal interrompe suas notificações.