Skip to content

Releases: Techify-one/whatsbot-pro

v0.10.0 — IA religada automaticamente, atribuição automática nos times e GOWA 9.6.0

Choose a tag to compare

@Thiago-cz Thiago-cz released this 21 Oct 20:02

A IA pode ser religada automaticamente nas conversas esquecidas, a atribuição automática dos times ganha interruptor e rodízio por time, e o WhatsApp embutido sobe para o GOWA 9.6.0 — com atualizador de binário no próprio painel.

Destaques

  • Religar a IA automaticamente. A IA para de responder por vários caminhos (transferir para um humano, atribuir a uma pessoa, pausar no painel) e só voltava por ação manual — uma conversa transferida e esquecida ficava sem IA para sempre. Em Configurações de IA → Automações você define quando ela volta: depois de X minutos/horas/dias de silêncio, ou em dias e horário fixos, podendo filtrar por quem falou por último. Vem desligado, nunca religa grupo, conversa arquivada, canal com a IA desligada nem o número de provisionamento, e tem permissão própria, porque religar tira o responsável humano da conversa.
  • Atribuição automática do time, mais clara e com rodízio por time. O seletor "Distribuição" do cadastro do time virou um interruptor "Atribuir conversas automaticamente": desligado, a conversa fica no time sem responsável; ligado, você escolhe a estratégia — Round-robin (padrão ao ligar), Atendente fixo ou Agente de IA. No round-robin, a rodada agora percorre o time inteiro: antes havia um cursor por time e caixa, o que repartia a rodada; agora a caixa da conversa só filtra quem pode receber, e quem não pertence a ela é pulado. Além disso, a tela Usuários ganhou sub-abas (Usuários, Grupos de permissão, Times), cada uma com a sua permissão — quem só gerencia times vê só a aba Times.
  • GOWA 9.6.0 embutido (era 8.11.0) e atualizador de binário no plugin (gowa 1.5.0). Em Plugins → Configurar dá para ver a versão em uso, verificar no GitHub, atualizar e reverter. Só instala com o SHA-256 publicado conferido, prova que o binário executa antes de trocar e volta sozinho ao anterior se o novo falhar; em troca de versão maior, copia antes a sessão do WhatsApp.

Corrigido

  • Link "Reconectar agora" do alerta de desconexão (Telegram) apontava para uma tela que o painel não tem e caía na caixa de conversas. Agora há um link por caixa caída, que abre direto o QR daquele canal.
  • Nome do contato sobrescrito por um nome velho. Ao chegar uma mensagem, o nome de exibição do WhatsApp (~Fulano) podia substituir um nome real já corrigido no painel ou trazido por outro canal ou plugin, porque a decisão era tomada sobre um cache desatualizado. Agora lê o nome atual do banco.

Também nesta versão

  • Catálogo de agentes do time envia "habilitado" de forma explícita; o editor deixava de oferecer a opção quando o campo faltava.
  • O alerta de desconexão fica mudo durante a troca do binário do GOWA e por cerca de 90 s depois.
  • A versão do GOWA passa a vir de um único arquivo (GOWA_VERSION) para o Dockerfile e os launchers; os launchers baixam de novo quando o binário local não bate com ela.

Ações de atualização

  1. Suba a versão; as três migrações novas rodam sozinhas no boot:
    • 0072 reduz o cursor do rodízio a uma linha por time (fica a mais recente);
    • 0073 acrescenta atendimentos.ai_disabled_at (conversas já desligadas ficam sem data e a regra usa a última mensagem);
    • 0074 cria a permissão agent.reactivation.manage e a copia para quem já tem settings.manage, inclusive grupos e usuários com permissões personalizadas. Depois você concede ou retira por usuário ou grupo.
  2. Nova dependência: tzdata. No Docker, o rebuild resolve. Em instalação nativa, rode pip install -r requirements.txt — sem ela o horário da regra por agenda cairia no fuso do servidor (UTC), em silêncio.
  3. ⚠️ Salto de major no GOWA (8.11.0 → 9.6.0). Subir a imagem ou rodar os launchers passa a usar o binário novo, e esse caminho não copia a sessão do WhatsApp (a cópia existe só no atualizador do painel). Faça backup da pasta storages/ antes e confira depois se os números continuam conectados.
  4. O plugin gowa embutido sobe para a 1.5.0 e substitui a cópia instalada: edições manuais em storages/plugins/gowa/ são perdidas.
  5. O religamento automático da IA vem desligado — nada muda até você ativar. Antes de ligar, lembre que ele tira o responsável de conversas atribuídas a uma pessoa.

📦 O WhatsBot é distribuído enxuto: núcleo + canal WhatsApp (QR Code). Telegram, WhatsApp Cloud API, Messenger, Instagram, widget de site, protocolos de atendimento e follow-up automático entram por Gerenciar Plugins → Importar (.zip).

Changelog completo: v0.9.0...v0.10.0

v0.9.0 — Times privados, cofre de credenciais para a IA e tempo real consertado

Choose a tag to compare

@Thiago-cz Thiago-cz released this 10 Oct 19:14

Times ganham acesso privado e roteamento, as tools de IA ganham um cofre de credenciais, o tempo real do painel foi consertado e o painel ficou mais leve sob carga.

Destaques

  • Times de atendimento, segunda parte. Um time agora tem três modos de acesso: aberto, lista oculta (a conversa some da listagem para quem não é do time, mas abre por link) e privado (a conversa some de tudo — link, detalhe, busca, tempo real e mídia respondem como se não existisse). Cada canal pode definir um time padrão para conversas novas e reabertas, a conversa mostra o time na barra lateral, e a IA ganha uma tool com trava para transferir a conversa a um time. Quem precisa enxergar tudo ganha uma permissão própria (conversation.team.read_any); o administrador a recebe automaticamente.
  • Cofre de credenciais para as tools de IA. Uma tool de código que chama uma API externa não precisa mais ter a chave colada no próprio código (que fica no histórico de versões). Cadastre a credencial na aba Tools — vários campos por credencial — e libere para as tools que podem usá-la. O valor entra pela API, chega à tool de forma isolada e é trocado por *** em tudo que a tool devolve. A listagem nunca mostra o valor; um "olho", auditado e re-ocultado em 30 s, revela um campo por vez.
  • Contador da janela do cliente. Nos canais com janela de resposta (Meta), um chip ao lado do seletor Responder/Mensagem Privada mostra quanto tempo falta, e fica âmbar abaixo de 1 hora.
  • Grupos: popup Ver membros (clicar num membro leva ao "Novo contato" já preenchido), filtro de conversas por tipo (grupo/individual) e avisos de "entrou/saiu do grupo" com link. A lista de participantes passou a ser pedida ao número certo quando a instalação tem mais de um canal GOWA.
  • Menos peso em picos. Mensagens de grupos que não são permitidos no canal agora são descartadas logo na entrada — antes um disparo em massa em grupos esgotou os descritores de arquivo do servidor em produção. As permissões do usuário passam a ser calculadas uma vez por requisição, e a checagem de quem recebe cada evento do tempo real é feita em lote.

Corrigido

  • A barra lateral só atualizava com F5. Uma mudança de segurança no tempo real descartava em silêncio o evento que reordena a lista de conversas. Corrigido, e o contrato de roteamento do WebSocket foi documentado.
  • "Mídia indisponível" até recarregar a página. Mídia enviada pelo atendente e mídia recebida do cliente ao vivo chegavam sem identificador na bolha e não carregavam; só o F5 resolvia.
  • A IA respondia com letras de outro alfabeto (armênio, japonês…) por engano. Agora a resposta é conferida e, se vier suja, é regerada uma vez sem tools.
  • Transferência entre agentes especialistas não acontecia. Um especialista que pedia outro especialista recebia um erro e o turno terminava sem passar a conversa. O pedido agora é redirecionado ao roteador.
  • Card de tool assinado pelo agente errado, e turnos de IA fora do webhook (nota privada, plugins) que não deixavam nenhuma execução registrada para investigar.
  • Transcrição de áudio chegando ao painel com horário e identificador errados.
  • Áudios .opus, .mp3, .aac e .amr baixavam em vez de abrir em instalações em container (o tipo de mídia não era reconhecido).
  • Chave checkout_api_key mascarada na trilha de auditoria.

Também nesta versão

  • "Selecionar todos" nos filtros de lista (um botão por grupo nos filtros agrupados).
  • Cards de sistema passam a exibir a mensagem citada.
  • Lista de modelos de IA usa o endpoint do proxy que já exclui os modelos bloqueados, com fallback para o anterior.
  • Monitor de atraso do servidor: registra um aviso no log quando o processamento trava por mais de 1 s.
  • Botão Resolver/Reabrir mostra um indicador enquanto a requisição está em andamento.
  • Para quem desenvolve plugin: a API de plugins avançou de 1.9.0 para 1.10.0 (aditiva — o método Channel.should_drop_inbound tem valor padrão, nenhum plugin existente precisa mudar). Changelog em docs/PLUGIN_API_CHANGELOG.md.

Ações de atualização

  1. Suba a versão; as duas migrações novas (times e cofre de credenciais) rodam sozinhas no boot.
  2. Times continuam como estavam. Quem já usava um time restrito permanece no modo lista oculta; o modo privado só vale se você ligar.
  3. ⚠️ Credenciais do cofre ficam em texto puro no banco (sem cifra em repouso). Um dump ou backup do Postgres as carrega em claro — proteja o acesso ao banco e aos backups como protegeria uma senha.
  4. Se o executor agêntico usa os papéis whatsbot_ro/whatsbot_rw, a migração já revoga o acesso deles às tabelas do cofre. Nada a fazer.
  5. Quem tem a permissão de gerenciar tools passa a receber a de gerenciar credenciais automaticamente.
  6. Se você mantém plugin próprio, confira o docs/PLUGIN_API_CHANGELOG.md.

📦 O WhatsBot é distribuído enxuto: núcleo + canal WhatsApp (QR Code). Telegram, WhatsApp Cloud API, Messenger, Instagram, widget de site, protocolos de atendimento e follow-up automático entram por Gerenciar Plugins → Importar (.zip).

Changelog completo: v0.8.0...v0.9.0

v0.8.0 — Times de atendimento, e a instalação ganha uma API

Choose a tag to compare

@LuisaTechify LuisaTechify released this 11 Sep 19:04

Atendimento ganha times, a instalação ganha uma API pra integrar por fora, e dois bugs que perdiam mensagem de cliente sem deixar rastro foram fechados.

Destaques

  • Times de atendimento. Agrupe atendentes em times e filtre/atribua conversas por time — independente de quem está atribuído individualmente (os dois campos convivem, um não limpa o outro). Um time pode ficar restrito: a conversa some da listagem pra quem está na caixa mas não é do time (abrir por link continua funcionando sempre), com uma exceção pontual pra quem foi atribuído àquela conversa específica.
  • API pública /api/v1, com chave por usuário. Integre sistemas externos sem senha compartilhada: cada integração ganha sua própria chave (X-Api-Key), com o mesmo RBAC e a mesma auditoria de uma sessão normal. Vem junto uma tela própria (API e Webhooks), webhooks de saída com fila e re-tentativa, e agora também envio de mídia (imagem, áudio, vídeo, documento) por upload ou por URL.
  • Atendente padrão do canal aceita um agente de IA. Antes só uma pessoa podia nascer dona de uma conversa nova; dá pra apontar um agente de IA específico também.
  • Janela própria da IA nos canais Meta. Com a tag de atendimento ligada, o humano podia responder por até 7 dias enquanto a IA já tinha parado às 24h — mas o painel seguia oferecendo os toggles de nota privada da IA nesse intervalo, e a instrução do atendente era descartada sem aviso nenhum. Corrigido. Canal sem template aprovado passa a bloquear o envio no compositor em vez de deixar a mensagem falhar depois.
  • Descrição de imagem por direção. Dá pra escolher se a IA descreve foto recebida, enviada pelo atendente e/ou em nota privada, separadamente — o mesmo controle que já existia pra áudio.

Corrigido — mensagens que sumiam sem aviso

  • Mensagem do cliente que desaparecia sem deixar rastro. O horário da mensagem chega do GOWA como texto, não como número; um valor no formato errado quebrava a gravação depois que a mensagem já tinha saído da fila — ela sumia sem bolha, sem erro, sem retentativa. Ficou 6 dias em produção antes de ser notado. A conversa parecia só um cliente que abriu o chat e não digitou nada.
  • Citação órfã quando o cliente manda várias mensagens seguidas. Só a última do grupo guardava um id; responder (clique direito) a qualquer uma anterior gravava uma citação pra um id que não existe, e a bolha mostrava "Mensagem original indisponível". Media 33 casos em ~2.100 citações, cerca de 1 por dia. Cada mensagem passa a gravar o próprio id.
  • A IA parava de se despedir ao transferir pra um atendente. Uma correção anterior fez a IA calar a resposta assim que a transferência era decidida — inclusive a própria frase de despedida daquele turno. 226 transferências mudas em produção; a IA volta a se despedir antes de sair de cena.
  • Mensagem manual que falhava ao enviar passava a assinar como "IA" na conversa; volta a assinar como o atendente que tentou.
  • Foto sem legenda mandada em grupo perdia o nome de quem mandou — a bolha assinava com o nome do grupo.

Segurança

  • Senha do banco ficava em claro na tela de auditoria. Um provedor específico (identificado internamente como nexus_dsn) não estava na lista de campos mascarados e apareceu sem proteção em /audit por semanas. Corrigido, e a lista de nomes sensíveis ficou mais abrangente.
  • Token do Telegram podia vazar no log ou na resposta de erro quando uma chamada à API do Telegram falhava; agora é mascarado.

Também nesta versão

  • Descrição de imagem deixava de respeitar nota privada e virava resposta pública pro cliente.
  • Cabeçalho de mídia de um template aprovado passa a aparecer como bolha no histórico da conversa.
  • Etiquetas da lista de conversas passam a ser da conversa, não do contato — duas conversas do mesmo contato não compartilham mais etiqueta.
  • F5 nas telas API e Webhooks e Sons parava de achar a página.
  • Arrastar a barra do áudio pra trás (retroceder) voltou a funcionar.
  • Cursor do texto no compositor caindo fora do lugar depois de certas edições.
  • Contador das abas da lista piscava entre o total e o tamanho da página carregada.
  • Mensagem que chega atrasada volta a cair no lugar certo do histórico, não jogada no fim.
  • .jfif, .ogg, .oga e .m4a registrados como tipos de mídia válidos — arquivos nesses formatos paravam de abrir.
  • Para quem desenvolve plugin: a tela de configuração pode declarar largura wide/full (antes toda configuração ficava espremida numa coluna de ~672px, não importa quanto conteúdo tivesse); a versão da API de plugins avançou de 1.1.0 para 1.9.0 — changelog completo em docs/PLUGIN_API_CHANGELOG.md.

Atualizando

  1. Suba a versão; as migrações novas (times, chaves de API, webhooks de saída) rodam sozinhas no boot.
  2. Times, API pública e webhooks de saída são recursos opcionais — nada muda pra quem não usa.
  3. Se você mantém plugin próprio, confira o docs/PLUGIN_API_CHANGELOG.md: a versão da API pulou bastante desde a última release.

📦 O WhatsBot é distribuído enxuto: núcleo + canal WhatsApp (QR Code). Telegram, WhatsApp Cloud API, Messenger, Instagram, widget de site, protocolos de atendimento e follow-up automático entram por Gerenciar Plugins → Importar (.zip).

Changelog completo: v0.7.0...v0.8.0

v0.7.0 — Conversa sob controle

Choose a tag to compare

@Thiago-cz Thiago-cz released this 07 Aug 17:08

Quando um atendente assume, a IA cala — na hora. E o histórico deixou de ser uma janela presa no fim.

Destaques

  • Humano no comando cala a IA. Atribuir a conversa, desligar a IA ou simplesmente responder você mesmo interrompem uma resposta já em andamento: a permissão passou a ser reavaliada no instante antes de cada mensagem sair. O que já foi entregue fica; o resto é abortado.
  • Atendente digitando segura a IA — segura, não cancela, porque você pode desistir do texto.
  • Buscar dentro da conversa. A lupa no cabeçalho lista as ocorrências e pula para cada uma; um calendário leva direto a uma data.
  • Pular para uma mensagem antiga funciona mesmo fora do trecho carregado. Antes esse salto falhava em silêncio: nada acontecia e nenhum erro aparecia.
  • Cabeçalho da conversa desafogado. A barra ficou com a ação principal (Resolver / Reabrir) e o resto foi para um menu ⋮ — o nome do contato não trunca mais.
  • Alertas da conta Meta. Template pausado, qualidade do número caindo, limite de mensagens cortado, conta restrita: o painel não via nada disso. Agora chega num grupo do Telegram, com agregação e intervalo mínimo.

Segurança

  • Campo secreto de canal não aceita mais a senha do painel. O gerenciador de senhas do navegador a injetava, por heurística, em campos como token do bot ou proxy de saída, e o número parava de funcionar. O campo agora bloqueia o preenchimento automático, tem botão de mostrar/ocultar e recusa formato inválido — citando o campo, nunca o valor.
  • Canal WhatsApp novo nasce sem "Grupo / Comunidade" marcado. Um número de atendimento individual materializava todo grupo de que participava; num caso real, 118 contatos indesejados de uma vez. A opção continua a um clique, e canais existentes não mudam de comportamento.

Também nesta versão

  • Com o histórico ancorado no passado, mensagens novas viram um contador "N novas" no botão Voltar ao fim, em vez de serem coladas no fim e criarem um buraco invisível. E abrir janeiro não zera as não lidas de hoje.
  • A engrenagem saiu de cima da conversa e foi para a barra da lista.
  • Ctrl+clique e clique do meio abrem em nova guia em toda a navegação do painel.
  • Menu da mensagem: copiar ou abrir link, e-mail e telefone direto do texto.
  • Para quem desenvolve plugin: um barramento de tempo real autenticado substitui o WebSocket aberto na mão, que era desconectado em silêncio. Os testes do núcleo e os dos plugins deixaram de ser um bloco só.

Atualizando

  1. Suba a versão; as migrações rodam sozinhas.
  2. Se você usa a tela de Atendimentos, instale o plugin de protocolos pela loja — ela saiu do núcleo, e /atendimentos passa a redirecionar para a lista de conversas.
  3. Se você usa a API oficial do WhatsApp (Cloud) e quer os alertas de conta, edite o canal preenchendo WABA ID e App Secret e assine os eventos no painel da Meta. Sem isso os alertas ficam mudos por segurança; as mensagens normais continuam funcionando.

📦 O WhatsBot é distribuído enxuto: núcleo + canal WhatsApp (QR Code). Telegram, WhatsApp Cloud API, Messenger, Instagram, widget de site, protocolos de atendimento e follow-up automático entram por Gerenciar Plugins → Importar (.zip).

Changelog completo: v0.6.0...v0.7.0

v0.6.0 — Escala, mídia e canais novos

Choose a tag to compare

@Thiago-cz Thiago-cz released this 07 Aug 17:08

Versão retroativa — corresponde ao estado do projeto em 28/07/2026.

Busca sub-segundo em bases grandes, anexo validado antes do envio e dois canais novos da Meta.

⚠️ Base grande: aplique as migrações antes de subir a versão nova. Elas criam os índices de busca, e a versão nova consulta assumindo que eles existem.

Destaques

  • Busca de conversas em menos de um segundo, contra até 20 segundos em bases grandes. A causa não era o volume: era uma consulta que remontava o histórico inteiro para descobrir a última mensagem de cada conversa. Vieram junto índices novos e paginação que não relê o que já foi lido.
  • Arrastar e soltar arquivos no chat ou na própria lista de conversas, com prévia de vários de uma vez, fila de envio e vídeo direto na conversa.
  • Anexo incompatível é barrado na hora, com o motivo, em vez de virar uma bolha "falhou" depois que o provedor recusa. Cada canal declara seus limites de tamanho e formato.
  • Instagram Direct e Facebook Messenger entraram como canais completos, e a base compartilhada da API da Meta foi arrumada de uma vez para os dois.
  • Rascunho por conversa, e por usuário. O texto não enviado fica guardado e sobrevive à troca de conversa; dois atendentes no mesmo navegador não veem o rascunho um do outro.
  • "Fulano está digitando". Você vê quando outro atendente está escrevendo naquela conversa — na lista e dentro do chat.

Segurança

  • Arquivos enviados pelo operador passaram a ser servidos com Content-Disposition, fechando um XSS armazenado: um arquivo malicioso enviado por um cliente podia executar script no navegador do atendente.

Também nesta versão

  • Áudio fora do padrão do canal é recodificado em vez de falhar; vídeo anexado como "documento" segue pelo caminho de vídeo.
  • Atendente padrão por canal — a conversa já nasce atribuída a quem cuida daquele canal.
  • Trilha de auditoria para plugins e canais: um filtro por canal devolve a história inteira dele. Conversa nunca entra na trilha.
  • Tema escuro recalibrado, com uma verificação automática que impede uma cor nova de entrar ilegível.

Atualizando

  1. Aplique as migrações antes de subir a versão nova, especialmente em base grande (índices de busca).
  2. Nada mais é necessário — os limites de mídia e os canais novos são opcionais.

📦 O WhatsBot é distribuído enxuto: núcleo + canal WhatsApp (QR Code). Os demais canais e recursos — Instagram e Messenger inclusive — entram por Gerenciar Plugins → Importar (.zip).

Changelog completo: v0.5.0...v0.6.0

v0.5.0 — Login só por identidade, e um IP por número

Choose a tag to compare

@Thiago-cz Thiago-cz released this 07 Aug 17:08

Versão retroativa — corresponde ao estado do projeto em 16/07/2026.

⚠️ Mudança incompatível — leia antes de atualizar

A "Senha do Painel" acabou. O acesso passa a ser exclusivamente por e-mail + senha de usuário.

A senha única global contornava as permissões: quem a tivesse entrava como se pudesse tudo. A partir desta versão, assim que existir um usuário cadastrado, a API e o WebSocket exigem sessão. Com zero usuários a instalação continua aberta — é o que impede alguém de se trancar do lado de fora antes de criar a primeira conta.

Antes de atualizar: confirme que existe pelo menos um administrador com e-mail e senha que você saiba usar. Se a sua instalação só era acessada pela Senha do Painel, crie esse administrador antes.

Destaques

  • Um IP de saída por número. Cada canal WhatsApp pode rotear a conexão por um proxy próprio, útil para quem opera vários números. ⚠️ Ligar ou desligar exige ler o QR Code de novo, e o IP precisa ser fixo e dedicado — endpoint rotativo é padrão de banimento.
  • Aviso de disco não persistente. Em container, o WhatsBot detecta armazenamento efêmero no início e avisa no log. Antes, um redeploy apagava os plugins instalados e a sessão do WhatsApp sem causa óbvia.
  • Agente padrão unificado. A marcação "Padrão para novas conversas" passou a valer também como fallback em tempo de execução; antes, uma conversa reaberta voltava para um agente antigo.
  • Conversa que nasce com a IA desligada não recebe agente — fica de fato "Não atribuída", em vez de parecer atendida por um robô que não vai responder.
  • Trocar a própria senha pelo painel, sem depender de um administrador.

Também nesta versão

  • GOWA atualizado para a 8.11.0 (a ponte com o WhatsApp).

Atualizando

  1. Garanta um administrador com e-mail e senha antes de atualizar (veja o aviso acima).
  2. Suba a nova versão; a migração 0052 limpa as chaves da senha antiga sozinha.
  3. Em container, confirme o armazenamento persistente para /app/storages e /app/statics — a nova checagem avisa no log se estiver faltando.

📦 O WhatsBot é distribuído enxuto: núcleo + canal WhatsApp (QR Code). Os demais canais e recursos entram por Gerenciar Plugins → Importar (.zip).

Changelog completo: v0.4.0...v0.5.0

v0.4.0 — Cada canal no seu lugar

Choose a tag to compare

@Thiago-cz Thiago-cz released this 07 Aug 17:08

Versão retroativa — corresponde ao estado do projeto em 14/07/2026.

Para quem atende por mais de um canal: o WhatsBot passa a saber de onde cada pessoa veio e para de misturar conversas do mesmo cliente.

Destaques

  • Tipo de contato por canal. Cada contato carrega a marca de origem — WhatsApp, Telegram, outro. Ela aparece na lista e no painel do contato, vira filtro e sai na exportação.
  • O mesmo cliente em dois canais vira duas conversas. A identidade passa a considerar o canal de origem, e a leitura de uma conversa não vaza para a outra.
  • Não lida é por conversa, não mais por contato.
  • Filtro de histórico por expressão regular. Em Configurações → IA, liste padrões de mensagem que não devem entrar no contexto da IA — corta avisos automáticos que só poluem o raciocínio e gastam token.
  • Tela de execuções reformulada. Cada resposta da IA fica rastreável do começo ao fim: quanto custou, quais ferramentas chamou e qual agente respondeu.

Também nesta versão

  • Ordenação combinável da lista de conversas (por leitura e por recência).
  • Filtros novos: IA ligada/desligada e início de conversa (quem começou).
  • Menção a um colega em nota privada, com notificação e contador de não lidas.
  • O recurso "Gerar melhoria" saiu do núcleo e virou plugin.

Atualizando

Nenhuma ação manual. As migrações rodam sozinhas no início, inclusive a que marca os contatos antigos como WhatsApp.


📦 O WhatsBot é distribuído enxuto: núcleo + canal WhatsApp (QR Code). Os demais canais e recursos entram por Gerenciar Plugins → Importar (.zip).

Changelog completo: v0.3.0...v0.4.0

v0.3.0 — Só PostgreSQL, e a IA multiagente com freio

Choose a tag to compare

@Thiago-cz Thiago-cz released this 07 Aug 17:08

Versão retroativa — corresponde ao estado do projeto em 02/07/2026.

⚠️ Mudança incompatível — leia antes de atualizar

O SQLite foi removido. O WhatsBot agora exige PostgreSQL.

Sem a variável de ambiente DATABASE_URL o programa não sobe. O override storages/database.json, a tela Configurações → Banco e o botão de migrar SQLite→Postgres deixaram de existir.

DATABASE_URL=postgresql+psycopg://usuario:senha@servidor:5432/whatsbot

Se você ainda estava no SQLite: migre os dados antes de atualizar, usando a versão anterior — ela ainda tem o botão de migração. Depois de atualizar não existe caminho de volta.

Por quê: um banco em arquivo não aguenta duas pessoas atendendo ao mesmo tempo, não sobrevive a um redeploy de container e não tem os índices que a busca precisa.

A IA multiagente — vários agentes com personalidades diferentes e um roteador que decide quem atende — ganhou os freios que faltavam.

Destaques

  • Um roteador só. O painel impede marcar dois; antes dava para criar um laço em que dois agentes se empurravam a conversa.
  • Teto de repasses. Estourado o limite, a conversa vai para um humano, com o motivo registrado.
  • Teto de ferramentas por resposta, para uma IA em laço não consumir crédito indefinidamente.
  • O motivo do repasse viaja junto — o próximo agente recebe por que a conversa chegou nele.
  • Só o roteador transfere para humano, e o painel avisa quando a configuração está ao contrário.

Também nesta versão

  • Cargos e permissões gerenciáveis pelo painel (criar, duplicar, excluir).
  • A URL do navegador passa a refletir a tela aberta — dá para salvar e compartilhar link direto.
  • Atribuir atendente em várias conversas de uma vez.
  • Notas de áudio privadas e transcrição de várias mensagens selecionadas.
  • A lista de conversas atualiza sozinha, sem recarregar a página.
  • Cada mensagem registra quem a enviou.

Atualizando

  1. Providencie um PostgreSQL e configure a DATABASE_URL (obrigatório — veja o aviso acima).
  2. Suba a nova versão; as migrações rodam sozinhas no início.
  3. Se você já importou dados manualmente, rode uma vez POST /api/admin/repair-sequences.

📦 O WhatsBot é distribuído enxuto: núcleo + canal WhatsApp (QR Code). Os demais canais e recursos entram por Gerenciar Plugins → Importar (.zip).

Changelog completo: v0.2.0...v0.3.0

v0.2.0 — A plataforma de atendimento

Choose a tag to compare

@Thiago-cz Thiago-cz released this 07 Aug 17:08

Versão retroativa — corresponde ao estado do projeto em 29/06/2026.

O WhatsBot deixa de ser "um bot que responde" e passa a ser uma plataforma de atendimento em equipe: conversas com dono, permissões por pessoa e plugins que estendem até a interface.

Destaques

  • Atendimento em equipe. Conversas ganham dono, status e histórico próprios. Uma conversa fechada reabre sozinha quando o cliente volta a escrever.
  • Permissões por pessoa. Cada endpoint do painel passa a checar permissão — você decide quem vê custos, edita canais ou exclui conversas.
  • Plugins que estendem a interface. Um plugin pode acrescentar peças à tela, reagir a eventos e substituir uma rota inteira, sem que o núcleo saiba que ele existe.
  • Atributos personalizados de contato, com importação e exportação por CSV.
  • "Gerar melhoria". Selecione uma resposta da IA e peça uma análise do que poderia ter sido melhor.

Também nesta versão

  • O núcleo foi reorganizado em serviços de responsabilidade única — mensagens, conversas, canais e agente. Sem efeito visível, mas é o que sustenta as versões seguintes.

Atualizando

Nenhuma ação necessária.


📦 O WhatsBot é distribuído enxuto: núcleo + canal WhatsApp (QR Code). Os demais canais e recursos entram por Gerenciar Plugins → Importar (.zip).

Commits desta versão: v0.2.0