Agregado2
O ícone da aba do navegador pode ser uma imagem sua
Em Marca (/admin/marca), logo abaixo do logo, há um campo novo para subir o ícone da aba (favicon): uma imagem quadrada em PNG ou JPG, até 512 KB. Ele vale na hora para todas as telas da instalação, inclusive o login, sem reiniciar nada. Sem ícone próprio, a aba continua mostrando a inicial do nome sobre a cor da marca, e remover o ícone volta a esse desenho. Crédito: @Draven9.
Contribuição de @Draven9 (#1826).
O webhook de saída passa a levar id de entrega, número da tentativa e assinatura com carimbo de tempo
A ação "Avisar outro sistema (webhook)" das automações passa a mandar, em toda chamada, quatro cabeçalhos novos: X-Webhook-Delivery, um id que é o mesmo em todas as tentativas da mesma entrega e também no botão Reenviar; X-Webhook-Attempt, o número da tentativa, que no Reenviar continua a contagem; X-Webhook-Timestamp, a hora do envio; e X-Webhook-Signature, uma assinatura que cobre a hora e o id da entrega além do corpo. Com eles, o sistema que recebe consegue recusar uma requisição capturada e repetida e reconhecer uma retentativa como a mesma entrega. O cabeçalho X-Deskcomm-Signature continua saindo exatamente como antes, então quem confere a assinatura não precisa mudar a conferência. Quem passar a conferir o X-Webhook-Signature deve, a partir daí, recusar a requisição que chega sem ele, em vez de cair para o legado: o legado só cobre o corpo, e uma requisição capturada com a assinatura nova apagada seria aceita a qualquer tempo. No corpo entram dois campos: delivery_id, o mesmo id do cabeçalho, e happened_at, a hora em que o fato aconteceu, que é a mesma no Reenviar. O occurred_at não muda: segue sendo a hora em que o sistema montou a entrega, como antes. Para medir a idade da requisição, a medida certa é o t de dentro do X-Webhook-Signature, que é a hora de cada tentativa e é coberto pela assinatura. O X-Webhook-Timestamp leva o mesmo número mas é só informativo: nenhuma assinatura o cobre, assim como o X-Deskcomm-Event e o X-Webhook-Attempt, e medir a idade por ele deixa passar uma requisição velha repetida com esse cabeçalho trocado. O guia de verificação, com exemplos em Node e Python, está em docs/integracao/webhooks-de-saida.md. Proposta de @franceschini-lucas (#1529).
Contribuição de @in100tiva (#1830).
Corregido2
O inbox não abre mais barra de rolagem lateral com texto longo na memória do contato
Um fato durável registrado em "Memória do contato" (painel lateral da conversa) com uma URL ou chave longa, sem espaços, não tinha onde quebrar a linha: o texto passava da largura do painel e abria uma barra de rolagem horizontal dentro do painel lateral. Agora o texto do fato quebra em qualquer ponto e cabe na coluna.
A coluna do CRM também ganhou min-w-0, igual à coluna da conversa, como defesa uniforme. Um teste novo prende a quebra forçada em todo whitespace-pre-wrap do inbox, no fato e nesse min-w-0. Nenhuma tela mudou de estrutura e nenhuma configuração pede ação.
O #1802 (rolagem com Shift + Scroll na conversa) segue aberto: este conserto não alcança aquele sintoma.
Refs #1802
Contribuição de @webtecnica (#1827).
No quadro do funil, o total da etapa separa as moedas em vez de somá-las
Quando uma etapa do funil tinha negócios em moedas diferentes, o total no alto da coluna e a linha "ponderado" somavam todos os valores e escreviam o resultado na moeda do primeiro negócio: R$ 5.000 e 5.000 € apareciam como "R$ 10.000,00", um valor que não existe. Agora cada moeda tem o seu total, lado a lado e sem conversão ("R$ 5.000,00 + 5000,00 €"), com a moeda mais frequente da etapa primeiro. Quando duas moedas usam o mesmo símbolo, como o peso mexicano e o dólar, cada total leva o código da moeda ("$1,500.00 MXN + $100.00 USD"). Etapa com uma moeda só continua exatamente igual. Não exige ação de quem opera a instalação.
Levantamento de @franceschini-lucas (#1531).
Contribuição de @in100tiva (#1829).