Lidar com strings ordinais legadas para o CountryType via AttributeConverter
As linhas DB tinham o país armazenado como inteiros ordinais (por exemplo, "186" para UNITED STATES) em vez de enum nomes, causando IlegalArgumentException em f...
Cancelar as tarefas de tradução instantaneamente ao executar o tsx em segundo plano
Quando Forgejo cancela um fluxo de trabalho, bash espera por qualquer filho em primeiro plano terminar antes de processar o sinal — então uma tarefa tsx locale ...
Mover o ASTERISK CDR DSN para config.json local, não para segredos CI/CD
CDR credenciais são locais para cada servidor FreePBX e não têm negócios no gasoduto CI/CD. Operadores adicionam ASTERISK CDR DSN diretamente ao seu config.json...
Permitir acesso elevado nos terminais getDomainById e check-dns
Donos de org de topo e membros do sistema estavam recebendo 403 no getDomainBy ID e verificar-dns porque esses endpoints verificados é Org directamente. Adicion...
Show existing org domain instead of entry form when no custom domain
Fall back to the org's platform subdomain as the display domain so DnsProgressView renders rather than DomainEntryForm when no custom external domain exists. Al...
Surface imaging fallback when provider has no call history
KamoPBXProvider.getCallHistory now returns null instead of throwing **************** so the 501 response no longer bypasses the imaging fallback. The provider c...
Correct account list member/teamMember fallback labels and trigger redeploy
Restore NavPri panel labels and LeadHistory column headers
NavPri: salvage-keys grabbed href URLs as label values and swapped label/description pairs for Accounts, KB, and Notes nav panels. LeadHistoryPanel: MUI bgcolo...
Show platform domain context when no custom domain is set
Surface the active *.kamocrm.com hostname in the domain entry form so users can see their current platform domain instead of a blank entry screen. Also fixes ve...
Checkpoint translations per chunk and per locale on main
Persist locale JSON after each API chunk so cancellation loses at most one batch. CI translates one locale per process and commits/pushes after each so finished...
Checkpoint translations per chunk and per locale on main
Persist locale JSON after each API chunk so cancellation loses at most one batch. CI translates one locale per process and commits/pushes after each so finished...
Disable Docker BuildKit cache so every pipeline run does a full rebuild
Sets no-cache on both image build steps so npm ci and npm run build always run, even when the source tree is unchanged.
Bust Docker BuildKit cache per commit so npm run build runs every push
Identical checkout trees (e.g. empty commits) reused cached layers and skipped a real Next build. Pass GIT_COMMIT from the workflow and label the image revision...
Suprimir a saída de grep não-match na captura OLD PID para evitar abortar pipefail
Permitir que proprietários de orgs de alto nível e membros do sistema gerenciem os domínios de qualquer org
Sincronize members.email quando a caixa de correio primária é atribuída, alterada ou removida
Quando uma caixa de correio foi atribuída a um membro em uma org KAMO MAIL, members.email nunca foi actualizado, fazendo com que o EmailCredentialService não re...
Evitar domínios de raiz duplicados e corrigir a exibição de domínio primário
Verificação ONE DOMAIN PER ORG incorretamente excluída .kamocrm.com web-alias domínios, permitindo que uma org acumular múltiplos domínios raiz (e 10 aliases ca...
Serialize a segurança dos membros e os membros colocam chamadas para evitar o conflito do BarataDB
Duas gravações simultâneas para a mesma linha de 'membros' causaram uma serialização conflito de isolamento — segurança dos membros ler a linha enquanto os memb...
Reduza a latência da criação de org e corrija falhas em cascata de tradução
- OrganizationController: substitua os membros da equipeForAllOrgs (org completo) scan de tabela) com a garantiaTeamMemberForOrg (single org) — elimina o ~400ms...
Widen commit log translations.title to TEXT to match DB column
A coluna foi VARCHAR(512) tanto na anotação quanto no DB, causando translation inserts to fail for long translated titles. A coluna DB é agora STRING (aplicado ...
Desembrulhar o catálogo e o cálculo do envelope de resposta da infra- estrutura
getSubscriptionCatalog retornado { catalog: {...} } mas foi lançado diretamente como SubscriptionCatalog, deixando catalog.plans indefinidos e o plano passo de ...
Adicionar @JsonProperty to is*-prefixed boolean DTO fields
Lombok gera is-getters isXxx() para campos booleanos chamados isXxx. Jackson tira o principal 'é' de is-getters e serializa-los como 'xxx' em vez de 'isXxx', as...
Usar o 'ss' em vez do fuseador para matar o porto velho (o fuser não está no k0m1)
o fuseador e o lsof não são instalados no host corredor. Utilizar ss - tlnp com Grep para extrair o PID segurando porto 18080 e matá-lo diretamente. Também muda...
Limpar porta-avançada para que o trabalho de tradução cancelado não bloqueie a próxima execução
Bash não envia sinais para processos de fundo, então kubectl as operações de fluxo de trabalho canceladas port-forward, e a porta 18080 mantida, bloqueando cada...
Restaurar todos os valores de placeholder quebrados em páginas
O script de chaves de salvação tinha agarrado os nomes de classes CSS, estilos em linha e JS literais de modelo em vez do texto original em inglês para 114 mens...
Restaurar o título e legenda do herói da página do git history
heroTitle foi 'Hero Title' (placeholder), heroSubtítulo foi 'flex gap-2' (chaves de salvação acidentalmente pegou o nome de classe CSS adjacente). Valores corre...
Activar o botão Terminar através da votação widget.getState() e da mudança para auto=onload
O ouvinte de eventos de mudança de estado não estava a activar de forma fiável o botão Terminar após *** verificação. Duas causas raiz: 1. A lógica de drenagem...
Incluir contas-alvo de subscrição na lista de org
listForOrg agora também retorna contas cujas assinaturas visam o Pedido de org — não apenas as contas directamente detidas por ele. No multi-org modelar a conta...
Adicionar statusEspaço de nomes das etiquetas Window e corrigir todas as opções de espaços
- Adicione ************* (50 chaves) para as configurações nav sidebar mostra texto real em vez de caminhos chave - Fix branchTypesLabel UTI format: \${branchLa...
Coincidir com o tamanho de outras janelas de ferramentas + esquema de cores
- defaultSize and minSize now 320x650, redimensionável: false (correspondências Softphone, Chat, Calculator, SMS, AI Chat) - Alternado do gradiente de ardósia e...
Estreite colunas de primeiro e último nome para que o apelido permaneça em uma linha
Forward Range header so audio playback can scrub
Without this the VOIPService recording-streaming endpoint always returns the full file (Range header is dropped by buildForwardHeaders), which works for play-fr...
Rewrite /etc/odbc.ini to point at $MARIADB_HOST on every boot
The escomputers/freepbx:17 image bakes /etc/odbc.ini with Server=db (the docker-compose link target). On this Kubernetes deployment MariaDB lives at \$MARIADB_H...
Resolve member→extension before VM/CDR provider lookup
CallController was passing memberId where FreePBX (and other PBX-style providers) expect an extension number — voicemail listing returned empty because no PBX e...
Auto-atribuir primeiro assento, livre como piso, mais ampla org invalidação
BillingSetupService agora ativa o primeiro slot de licença aberto para o criador Quando semeia uma subscrição de sub-org (e o mesmo para o proprietário da promo...
Membros de org de topo obter plano de plataforma-proprietário, bypass billing gates
Os membros das organizações KamoCRM (de nível superior) não estão sujeitos ao sistema de facturação — eles obter a matriz de características do plano ONDER UNIM...
Bypass de org de nível superior + Retalho de base gratuito para orgs sem subs
O controlo de direitos de org. anda assinaturas visando uma org. Com o novo modelo target org, orgs que ainda não tem um alvo AccountSubscription viu todos os a...
Remover o título do histórico de campos redundante do painel de histórico
A etiqueta tab já transmite o contexto — título e legenda estavam desperdiçando espaço na tela. O botão de recarga foi movido em linha para a barra de ferrament...
Remover as referências do Account.notes da janela de edição do AccountViewClient
Remover o suporte de layout causando o corpo de e- mail saltando
O movimento exterior. 'layout' do div suporte lutou com o interior AnimatePresence altura: animação 'auto', criando um loop de feedback FLIP em e-mails com altu...
Resolver o mapeamento de colunas duplicadas sobrepondo colunas de endereços incorporados ao MAILING *
Atualizar RetailService e adaptadores de provedores para remoção de Account.notes e conversão de tipo de moeda
Mostrar sempre o botão Criar Documento na página do gestor de documentos
Removeu o getMemberId() > 0 guard que estava escondendo o botão durante a janela de carregamento useUserInfo. A página já está por trás do Auth então não a veri...
Restaurar a importação da organização removida por acidente
organization.id ainda é necessário na solicitação do handleCreateDocument corpo; somente o isDocsEditor condição deve ter sido removido.
Como o que vês no transporte?
Cada uma dessas atualizações pousa automaticamente em seu espaço de trabalho. Comece grátis e veja crescer semana após semana.