Repository navigation
v1.14.0 — o projeto de origem inteiro chega ao cliente
Adicionado
-
A IA pode ser limitada a atender só leads de origem conhecida Num número de WhatsApp que também é usado para falar com clientes, fornecedores
e contatos pessoais, a IA respondia todo mundo assim que um agente era
publicado. Agora dá para ligar, por canal, o modo "só atende quem eu autorizei":
a IA fica em silêncio por padrão e só assume a conversa quando o lead veio de
uma origem elegível — uma submissão nova de formulário, uma campanha
identificada, ou uma liberação manual pela tela. Histórico antigo, existência do
contato, conversa anterior ou reinício de um worker nunca autorizam sozinhos.Esse limite vale para TODOS os caminhos de resposta automática — o motor do
agente, o follow-up, o texto fixo de fluxo, o worker de resposta legado e a
passagem para humano por sentimento. Não há atalho: nenhum deles envia mensagem
de IA para uma conversa não autorizada.Além disso, e independentemente desse modo: quando você responde um cliente à
mão pelo próprio WhatsApp (celular, ou outra plataforma na mesma conta), a IA
para naquela conversa para não responder junto.
Essa pausa dura uma hora, e se renova a cada mensagem sua.
Enquanto você estiver atendendo, a IA continua calada; quando você para, a hora
corre e ela volta a atender aquela conversa sozinha. Você não precisa lembrar de
religar nada.Se quiser a IA de volta antes da hora, é o botão "devolver ao automático" na
conversa. E se quiser que ela fique parada por tempo indeterminado, é o mesmo de
sempre: assumir a conversa pela tela — aí ela só volta quando você devolver.
Nenhuma dessas coisas apaga a origem do lead.Quem não ligar o modo "só atende quem eu autorizei" mantém o comportamento de
antes para todo o resto. -
Importar leads de uma planilha A lista de clientes que já está no Excel agora entra no funil sem digitação. Em
Funis, o botão "Importar planilha" pede um arquivo CSV e cria um negócio por
linha, na primeira etapa do funil escolhido.O importador reconhece os cabeçalhos usuais — nome, telefone, e-mail, valor,
origem, tags, observação — em português, com ou sem acento, e aceita o
ponto-e-vírgula que o Excel brasileiro usa. Valor escrito como "R$ 1.200,00"
entra certo.Quando a planilha traz telefone, o contato é criado junto e ligado ao negócio —
e o mesmo número repetido em várias linhas vira um contato só, não vários.Nada é aceito no escuro: ao terminar, a tela mostra quantos negócios entraram,
quantos contatos foram criados, quais colunas o importador não reconheceu e
quais linhas foram recusadas, com o motivo e o número da linha como você a vê na
planilha. Uma linha com erro não derruba as outras.Há uma planilha modelo para baixar, para quem prefere começar do formato certo.
Isto veio da contribuição de James, da Clínica Centro do Sorriso
(@clinicacentrodosorrisosc-code).
Corrigido
-
A chave da OpenRouter passa a ser conferida de verdade antes de a tela dizer que está validada Ao cadastrar uma chave da OpenRouter em Agente de IA › Credenciais, o sistema conferia
a chave contra o catálogo de modelos do provedor — um endereço que responde a
qualquer um, com chave errada ou sem chave nenhuma. Na prática, qualquer texto
colado ali era gravado como credencial validada, e o cartão passava a mostrar
"Validada" com o final da chave ao lado.O erro só aparecia depois, na primeira mensagem que o agente tentava responder,
e aparecia como "User not found." — um texto que não fala em chave nem em
credencial. Quem procurava a causa olhava o modelo, o provedor, o próprio
atendimento; a tela, enquanto isso, afirmava que a peça quebrada estava boa.Agora a prova é feita contra o endereço que exige a credencial. O catálogo
continua sendo lido em seguida, porque é dele que sai a lista de modelos que a
tela mostra — ali ele é dado, não prova. E catálogo fora do ar não recusa mais
uma chave que já provou ser válida: seria trocar um erro de credencial por um de
indisponibilidade, e mandar quem opera caçar defeito na chave certa.Uma ressalva sobre em que versão isto entrou: a correção já está no ar desde a
1.13.0. O que chega atrasado é esta nota — a mudança foi publicada sem ela,
e por isso não apareceu na lista daquela versão.Chave boa continua sendo aceita do mesmo jeito, e não há passo de atualização.
A única coisa que vale conferir é o que foi cadastrado antes: se a sua chave da
OpenRouter é anterior à 1.13.0 e o atendimento falha sem motivo aparente, abra
Agente de IA › Credenciais e use o botão de revalidar — as setas em círculo, no
cartão da credencial. A resposta que ele dá agora é real.Isto veio da contribuição de @Elevstudio-Dev.
-
O aviso de erro da importação de planilha volta ao raio de borda do produto A caixa de aviso da tela de importar leads estava com o canto arredondado pela
metade — 4px em vez dos 8px que o resto do produto usa. É pequeno e é visível:
ela fica ao lado de outros blocos com o raio certo.A causa é da migração para o Tailwind 4, que mudou o significado de
rounded
puro. Quem escreveu a tela usou o nome que valia antes. -
A troca de senha pela linha de comando volta a encontrar o usuário Quem perde o acesso a uma instalação sem SMTP — o estado normal de um self-host
recém-instalado — só tem um caminho de volta: oreset-password.shdo kit. Ele
não funcionava para ninguém. Não era intermitente nem dependia do e-mail:
qualquer endereço, existente ou não, recebia a mesma resposta seca de "usuário
não encontrado", e a pessoa ficava trancada do lado de fora do próprio sistema.A causa era uma consulta escrita na sintaxe errada. O script pedia ao servidor de
autenticação um filtro no formato do banco (email.eq.<endereço>), e esse
servidor não fala esse formato — ele usa a expressão inteira como texto de busca.
Como nenhum e-mail contém o pedaçoemail.eq., a busca não achava nada, sempre.Agora a consulta vai no formato que o servidor entende. E, como a busca dele é por
trecho do endereço, o script passou a exigir o e-mail inteiro antes de aceitar
o resultado: pedirana@empresa.comtambém trazmariana@empresa.com, e entregar
a pessoa errada a um comando que TROCA SENHA seria pior que não achar ninguém. Na
dúvida ele não devolve nada — quem chama vê "não encontrado", que é ruim mas se
resolve; a senha de outra pessoa trocada, não.Quem opera uma VPS não precisa fazer nada além de atualizar. Nenhuma configuração
muda, nenhum arquivo precisa ser editado à mão. -
Anonimizar um contato retoma de onde parou, em vez de dizer que já foi A anonimização de um contato remove os dados pessoais em três lugares: o
cadastro do contato, os títulos dos negócios dele e o histórico de atividades.
Se a operação era interrompida no meio — o navegador desistindo, o servidor
reiniciando —, o primeiro lugar ficava pronto e os outros dois não.E não havia como terminar: clicar em "Anonimizar" de novo respondia "já anonimizado"
e não fazia mais nada. O contato ficava para sempre com nome de
cliente visível dentro dos negócios e do histórico — que é exatamente o dado que
a anonimização existe para remover, e que a lei dá prazo para remover.Pior: nesse estado a tela não mostra botão nenhum — assim que o contato
consta como anonimizado, o botão dá lugar a um aviso. Não havia como pedir a
retomada nem sabendo que ela era necessária.Agora a verificação diária do sistema encontra sozinha as anonimizações que
ficaram pela metade e termina o serviço, sem ninguém precisar procurar contato
por contato. Como a lei dá prazo, esse conserto não podia depender de alguém
lembrar de clicar. Rodar de novo num contato já inteiro não escreve nada, e o
registro de auditoria mostra o que foi realmente feito, em qual contato e em que
dia — separado da execução original, para a data em que o titular exerceu o
direito não ser sobrescrita. -
A proteção de envio volta a aceitar a data de hoje Em Conexões › Proteção de envio, informar hoje em "este número é usado
desde" era recusado durante a manhã inteira: até as 9h no relógio de quem
opera no Brasil, salvar devolvia "Campos inválidos." e não gravava nada — nem
a janela de horário, nem o intervalo entre envios, nem o teto diário que você
tinha acabado de mudar na mesma tela.O motivo: o campo pergunta um DIA, mas a verificação o comparava com a hora
exata em Londres. Um dia não tem hora — ele começa em horários diferentes em
cada parte do mundo —, e por isso "hoje" só era aceito depois do meio-dia
londrino. Agora a verificação compara dias com dias, e só recusa a data que
ainda não chegou em canto nenhum do planeta.O calendário do campo também parou de oferecer o dia errado: depois das 21h ele
mostrava amanhã como escolha possível.Data futura continua recusada, e data antiga continua sendo o caso normal — é
informando a data antiga que um número usado há meses deixa de ser tratado como
recém-criado e sai do teto de 20 envios por dia. -
O painel de IA para de avisar que um modelo não enxerga imagens quando ele enxerga Duas informações erradas no painel de provedores, e as duas faziam quem opera
tomar decisão contra o que o sistema realmente faz.A primeira: o painel avisava que um modelo "não enxerga imagens" e que fotos
e comprovantes do cliente seriam ignorados — sobre modelos que enxergam, e num
sistema onde a leitura estava funcionando. Na mesma instalação em que o aviso
aparecia, o print que o cliente enviou virou descrição correta para o atendente.O painel lia uma tabela de catálogo; o atendimento lia outra coisa. Agora os
dois respondem pela mesma fonte, e o painel não pode mais discordar do que
acontece de verdade. Onde o sistema não conhece o modelo — o seu, ou um de um
serviço próprio —, o catálogo continua sendo a resposta, e a falta de informação
continua sendo dita como falta de informação, não como "não funciona".A segunda: quem usa a OpenRouter tinha o problema INVERTIDO — e ele é pior,
porque não tem sintoma. Ali o sistema não sabia dizer se um modelo enxerga: ele
olhava só o começo do nome. Comoopenai/gpt-4oenxerga eopenai/gpt-3.5-turbo
não, e os dois começam igual, um palpite pelo começo do nome erra metade das
vezes — e a OpenRouter já informa a resposta certa, modelo por modelo, quando o
catálogo é sincronizado na instalação.O efeito prático era duplo. O painel deixava de avisar quando o aviso era
verdadeiro, então quem opera achava que o comprovante do cliente estava sendo
lido e não estava. E o atendimento chegava a enviar a imagem para um modelo que
não a aceita, o que fazia a resposta daquela mensagem falhar. Agora, quando a
OpenRouter informa a capacidade, é ela que vale — e quando não informa, o
sistema volta a dizer que não sabe, em vez de afirmar.A terceira: o ponto "Ouvir o áudio do cliente" mostrava um modelo de
conversa, com "usando o padrão da organização" — ao lado do próprio texto do
ponto, que diz que a transcrição usa o padrão da OpenAI. A mesma tela afirmava
duas coisas incompatíveis, e modelo de conversa não transcreve áudio.Agora ele mostra o que de fato transcreve. Trocar o modelo de conversa nunca
mudou nada ali; o que muda é a tela parar de sugerir que mudaria.Para quem opera uma instalação, nada muda no dia a dia: nenhuma configuração
nova, nenhum passo de atualização. O que muda é que o painel volta a descrever
o sistema que está rodando. -
Salvar o rascunho de um agente para de escrever por cima de um rascunho antigo Na tela de um agente, "Salvar rascunho" podia gravar numa versão diferente
da que estava aberta na tela — e apagar, no caminho, um rascunho antigo que a
própria tela prometia estar guardado.O estado que produzia isso é comum e tem um gatilho conhecido: quem tinha
trabalho em andamento num rascunho e usou o botão Reverter, na aba
Histórico. Reverter cria uma versão nova e a publica na hora; o rascunho que
existia fica, a partir dali, "atrás" da versão publicada. A tela sabe disso e
avisa, no selo ao lado do nome do agente: "o rascunho v5 é anterior a esta
versão e foi superado por ela — ele continua no Histórico."Só que o servidor não sabia. Ele procurava "o rascunho de maior número" e
gravava ali. Duas consequências, nenhuma delas com mensagem de erro:- O trabalho parecia sumir. O aviso verde dizia "Rascunho v5 salvo.", a
página recarregava, e a tela voltava a mostrar o texto anterior — porque ela
não reabre um rascunho superado, e o botão de publicar também não o oferece.
Quem estava editando via "salvo" e nada mudando, sem ter o que fazer a
respeito. - O Histórico perdia conteúdo, em silêncio. Aquele rascunho v5 é um
retrato: a linha dele no Histórico existe para mostrar o que estava escrito
ali. Regravá-lo trocava esse conteúdo por um texto que ninguém rascunhou
naquele momento, sem aviso e sem volta.
Agora o servidor decide em qual versão escrever pela mesma regra que a tela
usa para decidir qual versão abrir. Quando o rascunho existente está superado,
a gravação nasce numa versão nova — que é a que a tela reabre e o botão publica
— e o rascunho antigo fica intacto no Histórico, como estava prometido.Junto vem um cuidado que não aparece na tela mas decide o resultado: quem é a
versão publicada passa a ser sempre o ponteiro que o atendimento executa, e
não o rótulo "publicada" gravado na linha da versão. Os dois já se contradizem
em instalações reais, e a resposta otimista era a errada.Para quem opera uma instalação, nada muda no dia a dia: nenhuma configuração
nova, nenhum passo de atualização, nenhuma mudança no banco. O que muda é que
"salvei" volta a significar "está salvo onde você está vendo". - O trabalho parecia sumir. O aviso verde dizia "Rascunho v5 salvo.", a
-
Os e-mails de acesso deixam de apontar para um endereço que não existe Numa instalação feita pelo caminho documentado, os e-mails de recuperação de
senha, de confirmação de cadastro e de aceite de convite chegavam com um link
paralocalhost:3000— um endereço que só existe na máquina de quem programa.
O e-mail chegava, a pessoa clicava, e o navegador dizia que a página não existe.
Na prática, ninguém conseguia redefinir a própria senha.O endereço certo mora no painel do Supabase, e o instalador já sabia configurá-lo
sozinho — só que precisava de um token que ele nunca pedia. O aviso existia, mas
saía no meio de um registro de dez minutos, logo antes de uma tela verde dizendo
"Instalação concluída". Ninguém voltava para ler.Agora o instalador pergunta esse token. Ele é opcional e não fica salvo —
abre a conta inteira do Supabase, então é usado uma vez e descartado, e nem
sequer entra no rascunho que guarda suas respostas para o caso de a instalação
ser interrompida. Por isso, se você recomeçar uma instalação, ele é a única
pergunta que volta a ser feita; a tela diz isso na hora, e apertar Enter pula.Quem preferir pular continua podendo: a instalação termina repetindo o passo que
falta, com o seu domínio já preenchido, em vez de deixar a descoberta para o dia
em que alguém esquecer a senha. E quando o passo automático roda mas o endereço
não fica como este sistema precisa — porque o seu projeto já tinha outro
endereço escolhido, por exemplo —, ele passou a dizer isso em vez de terminar
com um "pronto" verde.Se você já tinha instalado antes desta versão, a próxima atualização mostra
esse mesmo passo uma vez, com o seu domínio preenchido, e não repete depois.
Do projeto de origem
Esta versão traz junto a 1.13.0 do DeskcommCRM, o projeto do qual o Elev CRM
deriva — 229 mudanças de código. Os itens abaixo estão em uma linha cada; a
explicação longa de cada um está no CHANGELOG daquele projeto.
Alterado
- O CRM instala em Postgres 15, não só em 17.
Corrigido
- A busca do Inbox passa a achar pelo nome e pelo telefone do cliente.
- A inteligência artificial não se cala mais por três horas depois de responder.
- A proteção de envio volta a salvar sem a data do número.
- A atualização volta a chegar quando alguém aprova outra coisa durante o fechamento da versão.
- Áudio que demora para transcrever não faz mais o agente dizer "não entendi".
- Uma instabilidade passageira do provedor de IA deixa de matar o atendimento na primeira rajada.
- O endereço interno do seu servidor deixa de aparecer na página pública de saúde.
- Instalar pelo canal padrão não mistura mais versões entre os serviços.
- Loja com catálogo grande volta a achar o próprio produto.
- Fechar um negócio parou de avisar duas vezes, e o card não some mais numa coluna arquivada.
- O atendente de IA passa a enxergar os compromissos já marcados do cliente.
- O agente para de dizer que o cliente não tem nada marcado quando tem.
- O agente para de repetir uma pergunta que o cliente já respondeu.
- Os avisos coloridos do sistema voltam a ter cor.
- Um fluxo de retorno publicado não abre mais vazio na tela.
- O limiar de sentimento passa a vir do agente que atende aquela conversa.
- O nome, a descrição e a ordem do agente passam a ser salvos de verdade.
- "Quero 2 iPhone 15" volta a encontrar o iPhone 15.
- O prompt que você salva passa a ser o que o agente realmente executa.
- Título de novidade com aspas no meio chega inteiro à tela de atualização.
- Um WhatsApp fora do ar deixa de pendurar a tela até o navegador desistir.
- Planilha exportada do Excel com acento entra inteira, sem virar caractere estranho.
- Quem não é administrador volta a ver a lista de credenciais de IA.
- A tela de chaves de IA explica o que deu errado e mostra quantos modelos a chave alcança.