Uma barra de pergaminho, três vezes mais larga, em cada conversa
A barra ao lado das mensagens foi 8px no chat membro e SMS, 6px em tickets de suporte e social, e no bate-papo de IA não foi nada: essa lista declarou `scrollba...
Resolver o domínio em /org/current server-side
internal.kamocrm.com falhou em renderizar com "Invalid organization data: Falta 'id' ou 'domínio'". A organização não tem um campo de domínio -- tem um `domínio...
Dê /api/org/current o domínio que o cliente requer
internal.kamocrm.com falhou em renderizar com "Invalid organization data: Falta 'id' ou 'domínio'". Organização.deJSON recusa um registro sem um domínio, e a en...
Mover o salto para o novo com as outras ações da barra de ferramentas
A pesquisa agora possui toda a faixa esquerda da barra de ferramentas, porque a parte vazia dessa faixa é exactamente a sala onde o campo se abre. O controle de...
Refresque o favicon e solte os logotipos blueleven não utilizados
public/favicon.ico agora carrega 48x48 e 32x32 camadas em vez de 32x32/16x16. Os cinco PNGs logo-blu*/logo-bluleven* são referenciados do nada na aplicação, Ent...
Estenda o avô de mercado para o backfill da árvore de aplicativos
avô Existindo GatedMarkets já andou mercados ativos de cada org, resolveu getRequiredService () e ativou o aplicativo faltando — era apenas restrito a verticais...
Verificar o direito a cada vertical, não apenas os dois fechados
Cada CommerceType agora nomeia seu próprio aplicativo infantil em POS, de modo que o isGated () curto-circuito que acenou varejo, aluguel, serviço, assinaturas ...
Dar ao local de trabalho o mesmo trabalho pós- login que o caminho da máquina
Duas lacunas encontradas ao reler a cauda de login original contra a nova, antes de habilitar o coletor. O endpoint /login codificado por formulário construiu ...
A pesquisa da barra de ferramentas é um glifo que se abre em um campo
O chat do membro carregava uma caixa de pesquisa permanente através do topo da janela — a largura do barra de ferramentas inteira, gasta em um controle que está...
Uma mensagem enviada anima uma vez, não duas vezes
A lista de mensagens teclava cada linha no ID da mensagem, e o ID da mensagem enviada muda exatamente uma vez — a linha otimista é anexada sob um id local, e o ...
Cada nome vertical seu próprio aplicativo infantil
requiredService torna-se total agora que cada vertical tem um aplicativo infantil sob ServiceType.POS, que exclui o "null significa POS sozinho é suficiente" Ca...
Quartos de nome após o id org, não o nome da máquina
getOrgToken () levou a primeira etiqueta da máquina atual, e seu próprio comentário disse porque: "salas com nomes idênticos não podem colidir através de orgs"....
Deixe a configuração pública ser endereçada pelo org id, não apenas pela máquina
O sidecar meet procura a configuração de uma org para decidir se um hóspede precisa de uma senha de reunião. Perguntado pelo nome da máquina, que no encontro co...
Salas de escopo para sua organização no anfitrião do encontro compartilhado
O isolamento do quarto era o HOST. Um membro da org B não pôde apresentar uma *** cookie no meet.<org-A-domain>, então sabendo o nome do quarto de org A tem-los...
O recurso Cascade ativa/desativa em toda a árvore de aplicativos
Habilitar um filho habilita seu pai; desabilitar um pai desabilita cada filho; desabilitar o último filho desabilita o pai. Habilitando um pai deixa os filhos s...
Adicionar PhiCapabilityGuard para verificação da capacidade de chamada-tempo
PhiTenantGuard é executado em tempo realizável e em nenhum outro lugar — três chamadas sites, todos no serviço de recursos. Agora que a PhiModule tem capacidade...
Dividir PhiModule desde a aplicação em grão até à capacidade em grão
POS mapeado para ECOMMERCE SYNC (BLOCKED NO BAA) e todo o comércio superfície pendura fora POS, assim que uma org com alçasPhi=verdade não poderia mudar comérci...
Terreno dentro de uma org recém-criada em vez de na configuração DNS
Criando uma org roteou o criador para /setup/dns, e a razão foi real: entrar significava um redirecionamento OTK para interno.<novo domínio>, e um novo O org nã...
Dar o ServiçoType uma árvore pai/filho de dois níveis
Seis crianças do comércio em novos IDs 26-31, ligados a POS em um bloco estático em o padrão RoleRightType (uma constante de enum não pode referenciar outra de ...
Plano de implementação para SP1, a árvore pai/criança do catálogo do aplicativo
12 tarefas em toda a biblioteca compartilhada-kamo, KamoInitializerService, SecurityService, MediaService, VOIPService, kamo-internal e o dicionário de tradução...
Faça o auto-login guarda cross-tenant realmente executar
O guarda leu o id do org da máquina com /"id"\s*:\s*(\d+) / -- um dígito nu logo após o cólon. JsSafeLongSerializer do SecurityService escreve qualquer Muito ac...
Parar de entregar uma linha alias como domínio da org
********** *** *** anda org.getDomains() filtrando apenas em É Activo. Essa coleção possui o domínio raiz da org e suas linhas de alias -- api, login, tema e o ...
Corrija o sinal
O inventário chamado SignLinkBuilder's sign.sign.pink fallback a "foreign E eu gravei-o como um. Não é: sinal. rosa é um Kamo-proprietário organização (id 11743...
Desenhe o EHR/EMR vertical e o catálogo de aplicativos pai/filho
Duas especificações da análise pré-construção de ~30 acordos e o 2026 ambulatório Mercado de RHE. O projeto do programa registra as seis decisões que vinculam ...
Fazer uma org sem um domínio entrável
Entrar numa org significava navegar para... Sem domínio esse URL renderizado como literal **************************** assim Enter foi desativado e proprietário...
Deixar a shell obter a sua org da sessão, não a máquina
o layout raiz do kamo-internal lê o cabeçalho Host, tira "interno". e obtém /org/domain/<that>. Em um anfitrião servindo um inquilino que é o mesmo pergunta com...
Escreva uma descrição do suporte agendado como texto rico
A descrição de... Três linhas de texto. É a superfície de escrita /kb/nova agora, menos imagens e a biblioteca de mídia — aqueles que enviam para a mídia KB, qu...
Adicionar o selecionador de espaço de trabalho
Um sinal que nomeia nenhuma organização agora retorna com uma lista em vez de uma sessão. Esta é a metade do cliente: /api/login passa essa carga útil através (...
Carregar a descrição do tipo em ambas as suas formas
A descrição é um documento lexical agora, então o serviço armazena o texto simples espelhar o cliente envia ao lado dele e dá aos leitores a forma que puderem u...
Colunas de descrição de texto rico no tipo Webinar
Espelha a alteração da entidade de compartilhamento. Duas coisas que a mesa precisa antes MediaService mapeia-os. A coluna descrição tem de ser ilimitada: poss...
Armazenar a descrição do tipo como texto rico
A descrição sobre o que é, é um O editor lexical está agora em vez de uma linha de prosa, então a coluna tem que ser um TEXTO ilimitado encadernado como um varc...
Deixe um membro entrar sem uma máquina nomear sua org
Adiciona a segunda metade da divisão: um sinal que nomeia nenhuma organização autentica o usuário, então pergunta qual espaço de trabalho. POSTO /api/security/s...
Pegue o chat-core que para uma mensagem enviada mostrando duas vezes
@kamo/chat-core 0,1.6. O redutor de conversa agora adota a fila otimista pendente quando a mensagem do próprio membro volta sobre STOMP, em vez de adicionar o e...
Lembre- se da última área de trabalho em que um membro entrou
users.last org id suporta o coletor de espaço de trabalho. Uma organização é não mais tempo nomeado pelo nome da máquina, então um membro que pertence a várias ...
Separar a verificação credencial da autorização de org
A assinatura foi de duas perguntas fundidas em uma consulta. "São estas credenciais bom" é respondido pela linha de usuários -- a senha vive lá, então foi Nunca...
Pare de exigir verificação DNS para entrar
OrgHostResolver.resolveByDomain filtrado em od.is dns verified = TRUE, então uma linha de domínio que existia mas não tinha terminado a verificação resolvida pa...
Um arquivo pode ser deixado em qualquer lugar em uma janela de bate-papo, não só na faixa de entrada
O alvo da gota era a superfície do compositor sozinho — algumas dezenas de pixels no fundo de uma janela que de outra forma são todas as mensagens. Uma captura ...
Planeje a implantação do arrendamento independente do anfitrião
Seis fases, cada uma shippable independente, porque empurrando implementa: o O caminho da máquina continua a funcionar até que a Fase 6 o remova. Fase 1 é o cr...
Projetar a locação independente da máquina
Identidade Org vem do hostname hoje: OrgHostResolver.resolveByFqdn transforma <alias>.<domínio> em (orgId, provedorId), e seu SQL requer Od.is dns verified = VE...
Pare RingCentral OAuth assinando inquilinos de marca branca para fora
Dois defeitos, ambos no mesmo salto, e cada um esconde o outro. RingCentral rejeita todos os valores de escopo que este aplicativo pode pedir — "invalid reques...
Mostrar centavos em uma taxa adicional que os tem
Armazenamento adicional é de US $ 2,50 por 10 GB bloco, eo catálogo armazena que como um número — assim 2.50 chega como 2.5 e renderizado diretamente no cartão ...
Resolver armazenamento adicional em $2,50 por 10 GB bloco
Confirma o tamanho do bloco e taxa como $2,50 por 10 GB em vez dos $4 por 25 GB A linha de produção tinha-se desviado. A semeadora, a linha do catálogo, o preço...
Preço Armazenamento Adicional como $4 por unidade de 25 GB, FLAT não medido
Armazenamento adicional é comprado pela unidade, pertence a nenhum plano em qualquer nível, e é não baseado no banco. A semeadora ainda descreveu-o como $2,50 p...
Anexar traços de pilha para sua linha de log, e corrigir níveis que eu tenho errado
printStackTrace () escreve para o stderr diretamente, então 186 deles sobreviveram ao println varrer intocado — ainda incondicional, ainda sem atributos, e agor...
Terminar de tirar SecurityService off System.out/err
O restante 853 println chama em 43 arquivos, nenhum dos quais poderia ser desligado: println não tem nível, então cada um deles impresso em cada código caminho ...
Retire a verificação CNAME System.out
Com a sessão e Hibernate ruído se foi este foi o maior recorrente fonte esquerda no log do pod: cada pesquisa CNAME desenhou uma caixa de sete linhas sobre Está...
Retire a pesquisa da sessão do System.out e o seu *** ID com ele
Depois que o commit anterior removeu os blocos Hibernate session-metrics e O rastreamento por solicitação do MemberController foi de 88% do que restava: pesquis...
Parar o log do pod girando mais rápido do que pode ser lido
Aproximadamente 4.600 linhas em quatro minutos, então a janela de retenção foi um par de minutos: perseguindo um problema de certificado em 2026-08-22 a saída d...
Corrigir qual era a diferença de ligação adicional na produção
O raciocínio do commit anterior foi inferido do carregador, não medido. Ele reivindicou que cada linha adicional do KamoCRM tinha serviço tipo NULL e que o corr...
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.