New features· 6 items

Version 1.59.0

The release notes are written in Portuguese, the language DeskcommCRM is built in. Your browser can translate them, or you can open this page already translated.

Open in Google Translate

Added2

Automação e follow-up ganham o lembrete interno, que cria tarefa para a equipe sem mandar mensagem ao cliente, e os gatilhos por tempo

As regras de automação têm uma ação nova, Criar tarefa. Ela aceita título com o nome do contato e do negócio, prazo em dias, responsável (o dono do negócio ou uma pessoa escolhida) e prioridade. O responsável recebe o aviso no navegador, e a tarefa aparece na linha do tempo do negócio. Os fluxos de follow-up ganham o nó Lembrete interno, que faz o mesmo sem enviar nada ao cliente. Também ganham a opção Somente interno, que impede a publicação de um fluxo com qualquer nó que mande mensagem. Há dois gatilhos novos: N dias sem mensagem (da equipe, do cliente ou de qualquer lado) e N dias na mesma etapa. Os dois disparam uma vez por episódio, voltam a valer quando chega mensagem nova ou o card muda de etapa, e podem ser configurados para respeitar um compromisso marcado na agenda. O aviso de data do funil volta a disparar quando a data do negócio muda e passa a olhar só negócios abertos. O que já foi avisado antes da atualização não é avisado de novo. Não é preciso fazer nada na instalação.

Contribuição de @webtecnica (#1683, fecha #1540).

O servidor pode falar com o Supabase por um endereço só dele

Quem tem o Supabase na mesma rede da instalação — Kong, Supabase self-host — passa a poder declarar SUPABASE_SERVER_URL=http://kong:8000 no .env. Aí o app, o middleware e o worker do agente falam com o banco pelo caminho curto, e o navegador continua na URL pública: o endpoint interno deixa de precisar estar publicado na internet só para o servidor chegar nele.

Vazio é o padrão, e vazio é o que toda instalação já faz — nada muda para quem não preencher. O valor tem de ser um endereço http(s) absoluto; se não for, o servidor avisa no log e volta a usar a URL pública, em vez de derrubar a instalação. É runtime puro: trocar o valor não pede rebuild da imagem.

Contribuição de @webtecnica (#1786, fecha #1082).

Changed2

README em inglês volta a acompanhar o português e o CONTRIBUTING ganha versão em inglês

A decisão do mantenedor de 16/09/2026 (#890) manda README.md e CONTRIBUTING.md serem mantidos em inglês ao lado das versões em português, e ela fecha dois buracos medidos: README.en.md estava atrás do README.md em dois lugares — o parágrafo dos guias do assistente de instalação (scripts/instalar-guias.sh, .agents/skills/) e a seção 📁 Estrutura —, e CONTRIBUTING.en.md não existia. Os dois parágrafos foram traduzidos para o inglês sem mudar o conteúdo: comandos, caminhos de arquivo e identificadores ficaram iguais, e a árvore de diretórios da seção 📁 Structure mantém os mesmos comentários por diretório. CONTRIBUTING.en.md é a tradução integral de CONTRIBUTING.md (234 linhas), e ambos ganharam o seletor de idioma no topo, no mesmo formato do README.md; os dois links para o CONTRIBUTING dentro do README.en.md passaram a apontar para a versão em inglês. Nenhum outro arquivo mudou: a seção 🧹 Desinstalar e o comentário das extensões do Postgres continuam fora do inglês — drift pré-existente, fora dos dois itens que a decisão nomeou.

Contribuição de @webtecnica (#1841, issue #890).

O lint da suíte passa a rodar o ESLint 10, e sai a versão que o registro do npm aposentou

O pnpm lint, executado pelo check obrigatório verify, rodava o ESLint 9.39.5, marcado como sem suporte pelo registro do npm. Agora roda o 10.11.0, que produz as mesmas mensagens, arquivo por arquivo, sem nenhuma regra mudada; o AGENTS.md declara a major nova e um teste passa a conferi-la. O ESLint não roda no produto: nada muda na imagem nem para quem opera a instalação.

Levantamento de @melgarafael (#297). Contribuição de @in100tiva (#1840).

Fixed2

No faturamento, cada moeda tem o seu bloco em vez de uma soma entre moedas

Quando o período tinha comandas ou lançamentos em moedas diferentes, a tela de Faturamento somava tudo e escrevia o resultado em real: R$ 150,00 e 200,00 € apareciam como "R$ 350,00" nos cartões Entrou e Saldo, no faturado e nas listas por forma de pagamento, serviço, cliente e comissão, e o ticket médio misturava as duas moedas. Agora cada moeda tem o seu bloco, com os seus cartões, o seu ticket médio e as suas listas, sem conversão, e a moeda da organização vem primeiro. Os lançamentos do período e os lançamentos recorrentes (Configurações › Financeiro) passam a mostrar cada valor na moeda da própria linha, em vez de sempre em real. A separação é preventiva: as comandas, os lançamentos e as recorrências criados pela tela ainda nascem em real, então no uso normal os valores continuam saindo em real, como antes; a mistura só aparece com dado gravado em outra moeda por fora das telas. Numa organização configurada em outra moeda, o período sem movimento mostra o zero na moeda dela. O relatório que a tela lê (/api/v1/reports/financeiro) ganha o campo por_moeda, com os mesmos totais separados por moeda, e os campos que já existiam não mudam. Não exige ação de quem opera a instalação.

Levantamento de @franceschini-lucas (#1531).

Contribuição de @in100tiva (#1839).

"Sair da lista de espera" e "meu filho não me liga mais" deixam de virar bloqueio

Duas frases de rotina gravavam is_blocked sem que a pessoa tivesse pedido descadastro. A primeira é o falso positivo que o freio do #1805 consertou em "me tira/remove da lista" — só que o irmão dela, "sair da lista", ficou de fora: "quero sair da lista de espera" é paciente querendo ser chamado, e "lista de presentes" é compra. As duas regras leem hoje a mesma lista de listas de envio, de modo que "sair da lista de transmissão" continua bloqueando.

A segunda é liga, que é imperativo informal ("não me liga mais" = ordem) e também 3ª pessoa do indicativo ("meu filho não me liga mais" = relato). O que separa as duas é o sujeito, e ele vem antes de "não me": havendo sujeito explícito de 3ª pessoa — pronome (ele), ou nome com determinante (meu filho, a doutora, meu antigo chefe) — a frase deixa de ser tratada como pedido. Sem sujeito, a ordem continua bloqueando como antes, e "a partir de amanhã não me mande mais" também, porque ali vem uma preposição, não um sujeito. O sujeito precisa abrir a mensagem ou a frase: numa mensagem sem pontuação como "vou bloquear o numero não me liga mais", o pedido continua bloqueando.

Contribuição de @webtecnica (#1825).

← Back to all releasesView on GitHub