Changelog
O que há de novo.
Cada melhoria para a plataforma, como ele envia.
· kamo-shared-library
LOCAL INTERNAL CALL, consentimento dos membros, nome da empresa falada, linha da equipe, aprovações ON REQUEST
Tarefa 4 do SP95 (spec §5.2, D1, D4, D10, D15, D24): - AiActionClass ganha PLACE INTERNAL CALL (AUTONOMO), anexado por último. Resolução de Cartas resolve um FORBÍDIDO PLAK INTERNAL CALL sem nome, com a fonte PLAK CALL, quando place call resolvido forbidden. A tampa da secção da HOMOLOGAÇÃO segue a contagem de classes (19). - AiVoiceConsentVia ganha MEMBRO PROFILE; - OrgSpokenName: o nome curto, caso contrário o nome de exibição, caso contrário o nome legal. - Está bem. (DEFAULT@ netcabo. pt) - AiCallEventType ganha CONSENT BASIS. - AiAprovalMode ganha ON REQUEST; AiAproval.requestRef (request ref VARCHAR(200)). As duas novas colunas devem existir (SP95 Task 3's DDL) antes que isso chegue ao principal.
· AIService
A voz lembrada de um membro da IA por modelo de fala, e o solucionador que mantém ou re-escolha
A loja ai member voices (JDBC, TransientDbRetry, compare-and-set re-picks, um toque de hora em hora, o upsert CHOSEN e a bandeira preferida de uma declaração), os factos de que necessita (AI, sexo, língua) e o resolvedor puro da especificação SP96 Secção 5.4: PASS, USO, MANTER ou PICK por candidato, por idioma e por gênero, ancorado na voz preferida
· VOIPService
O ficheiro DDL da linha de equipa do servidor telefónico
SP95 Tarefa 2. VARCHAR(20) nullable que detém a extensão de uma transferência sem nome de IA anéis (a linha de equipa, 8200 no k1m1 FreePBX). Aplicado à mão pela Tarefa 3 antes da compilação que o mapeia; Sp95DdlContract Testa o arquivo para o Spec é uma declaração re-runnable, aditivo, nulável.
· SecurityService
Opções de contratação da SP96 para deixar de fora a extensão do telefone e a estação de trabalho
O corpo de criação de uma IA contrata aiPhoneExtension e aiWorkstation (JSON booleans, veraz quando ausente). Um passo deixado de lado é criado com NOT REQUESTED AT HIRE, assim que o contrato ainda atinge COMPLETE, e a rota de repetição reabri-lo como configurar agora. A visualização da lista de verificação marca tal linha puladaAtHire e reexperimentável. Uma reforma de rótulos com a razão de reformado, para que nunca possa ser montado em uma IA aposentada.
· AIService
O gênero de uma voz, a partir de seu registro, uma mesa com curadoria ou seu estilo, e os gêneros de fornecedores mantidos pela sonda
SP96 Tarefa 7. e VoiceGenders.of(tipo, modelo, registro) aplicando especificação 5.3 em ordem: o convenção, Piper norman, Deepgram Thalia), um estilo exatamente feminino/macho, Mais desconhecido. VoiceInfo ganha gênero: OnzeLabs mapeia etiquetas. género, nenhum. ProbeRunner armazena gênero com os outros campos de voz. Nada lê o gênero ainda (Tarefa 8).
· SecurityService
SP96 sexo no perfil do membro e na criação, fechado como dados pessoais
GET /api/security/members/{id} nomes sexo (FEMALE, MALE ou null) apenas para um pessoa que pode lê-lo (MembroSexAccess, spec D3); a chave está ausente para Qualquer outra pessoa. PUT recusa um valor ruim (400 sexo em campo) e um não o escreva (403 NOT ALLOWED field sex) antes de tudo é escrito, conjuntos Ele, e auditoria uma mudança por alguém que não seja o membro: uma IA está com Os valores, uma pessoa sem eles. Criação de membros lê sexo do corpo para qualquer registro através do mesmo MemberSexWire.
· kamo-shared-library
SP96 MemberSex, Member.sex e um gênero no registro de voz
membros. sexo é uma coluna de STRING nullable (FEMÁLIA, MALE, null = not especificado), para que um membro de IA possa falar com uma voz correspondente. O TTS e REALTIME AUDIO o registro de vozes aceita um campo de gênero opcional.
· AIService
A tabela ai member voices e a migração de pinos de voz charter, como SQL aplicado manualmente
Tarefa SP96 2. A tabela lembra a voz de um membro de IA por modelo TTS (spec 5.1); a migração move cada alfinete de VOZ para uma linha escolhida, migrada, preferida e limpa apenas um pino cuja voz exata é agora lembrada (spec 5.9). É executado. uma vez por Tarefa 11, depois da Tarefa 10 ser implantada. Sp96VoiceDdlContractTest mantém ambos arquivos re-runnable, aditivo e exatamente o contrato.
· SecurityService
SP96 DDL para membros. sexo, preso por um teste de contrato
O sexo de um membro é um VARCHAR nullable(16) (FEMÁLIA, MALE, NULL = não especificado), aplicado à mão na tarefa SP96 3. O teste de contrato mantém o arquivo Re-runnable, sem NOT NULL faltando um DEFAULT e sem verificação, JSON ou DROP.
· kamo-internal
A lista de mensagens de voz atualiza ao vivo (SP98-Q-3)
Nada no navegador subscrito para /topic/voip/voicemail/<member>, onde MediaService retransmite o novo quadro de correio de voz do VOIPService, por isso o cartão chegou e o a lista não mudou. Cada aba agora escuta lá no soquete de chat já detém (o socket de chamada só está aberto na aba que possui a linha, e apenas para org que pode atender chamadas), e dobra a primeira página da caixa de correio na lista, mantendo as páginas já roladas. A reconexão alcança-se da mesma forma. A voicemail deposited branch no tópico SMS desapareceu.
· TranslateService
Enviar en->ta para Kamo IndicTrans, e log que motor respondeu
Nenhum fornecedor alegou en->ta (LibreTranslate lists no Tamil, Bergamot serve Apenas alemão), então o roteador devolveu a fonte inglesa para cada Tamil request, e a sincronização do dicionário escreveu como o valor: kamo-internal's ta.json igualou o inglês em 35.549 de 34.779 chaves. IndicTransProvider reivindica exatamente en->ta, o par o klusterservices indictrans/ pod serve; ta->en necessitaria do modelo indic->en, que é Não está implantado, por isso não é reclamado. Fala o motor. LibreTranslate em forma de API atrás do mesmo proxy de autenticação, com LibreTranslateProvider's retry policy (uma 4xx que não 429 é final; a 503 ocupado é tentado novamente dentro de um orçamento de 100 s). O roteador tenta depois Bergamot e antes de LibreTranslate. ProviderRouter agora registra uma linha por tradução: o par, o provedor que realmente respondeu, os tamanhos e o tempo, nunca o texto ("translated en->ta provider=indictrans chars=21->34 ms=412"). translate.indictrans.base-url entra em application.yml e no k8s ConfigMap, que o substitui na produção.
· KlusterServices
Um motor inglês-tamil, assim Tamil deixa de ser inglês
LibreTranslate não lista Tamil e Bergamot serve apenas alemão, então cada requisição en->ta (sincronização do dicionário, artigos da Central de Ajuda, chat) provedor e voltou como sua fonte inglesa: ta.json de kamo-internal igualado Inglês em 35.549 de 34.779 chaves. Kamo IndicTrans serve o modelo 200M destilado en->indic da IndicTrans2 (MIT); a variante de posição rotativa por seus autores, convertida em CTranslate2) na CPU no k3m1, atrás do mesmo proxy de autenticação Kamo como bergamota e libretranslate (kamo-traduzir-auth). Fala API da LibreTranslate e serve apenas en->ta; qualquer outro par é um 400, nunca um eco inglês. - scripts/server.py: IndicTransToolkit's IndicProcessor for an English fonte, portado; KMPH de Kamo<n> passeios sentinelas como o próprio <ID n> entidades (150 de 150 mantidas); e quatro reparações de saída medidas em strings kamo-internal: traços espaçados mantidos, o vistorga-for-colon do modelo (Tamil aytham) voltou a ser um cólon, o carácter de elipse mantido, e nenhuma paragem completa adicionada a um rótulo. Registra tamanhos e horários, nunca texto. SIGTERM termina os pedidos em voo. - scripts/fetch models.py: Job indictrans-models obtém o modelo por revisão e SHA-256 e os pacotes por requirements.txt com --require-hashes em um PVC local-path; um arquivo que não verifica nunca Fica com o nome servido. O pod de serviço monta somente leitura e não tem egresso (CiliumNetwork Policy); apenas translateservice atinge o proxy. - Tamanho (medido): 0,9 GB pico RSS, 0,5-0,6 GB servindo; p50 0,16 s por string em 4 linhas. Solicita 2 CPU / 1Gi, limite 2Gi, sem limite de CPU. - Passo do fluxo de trabalho Implantar o IndicTrans (K3M1), antes da auditoria; uma alteração a configuração do script ou proxy reinicia um servidor em execução. O SECRETS.md enumera o novo consumidor de kamo-traduzir-auth. Testes: python3 -m unittest find -s indictrans/testes (70; os dois testes de modelo real executados com o conjunto INDICTRANS MODEL DIR).
· kamo-register
Um visitante entregue de outro ápice como ?vid= mantém sua identidade
www.kamocrm.com já abre registro.kamouniverse.com (proprietário, 2026-09-28). Seu cookie kdsc vid é escopo para .kamocrm.com e não pode seguir, então o kamo-marketing carrega o GUID como ?vid= próximo ao ?discount= (app/lib/register-link.ts). resolveMarketing Rastreamento agora adota um bem-formado carregou GUID, e persiste com o código neste ápice, em vez de nova identidade. A inscrição então pousa na mesma linha do tempo do visitante a referência membro vê. É adotado apenas ao lado de um código, uma identidade de cookie neste ápice Ainda ganha, e um valor mal formado nunca é adotado.
· kamo-marketing
Www.kamocrm.com assina e assina nas portas KamoUniverse
O proprietário pediu isso em 2026-09-28: os botões de login e de inscrição em www.kamocrm.com open login.kamouniverse.com e register.kamouniverse.com. www.kamocrm.com permanece um site de produtos KamoCRM ao vivo; as portas da plataforma deslocadas para a marca KamoUniverse. - rehostAuthLink: um link de autenticação de plataforma (register./login. em qualquer plataforma apex) vai para a porta do apex PRIMARY quando o site é servido em uma plataforma o apex, e para a própria porta do inquilino de outra forma, inalterado para inquilinos de marca branca. Os hrefs cozidos, os rastreadores de marcação e cliques pré-hidratação seguir, nome kamouniverse.com. Os links que nomeiam o ápice legado ainda são reconhecidos. - A atribuição de referência sobrevive ao salto para outro domínio registrável. A os cookies kdsc * são visualizados para .kamocrm.com e não podem seguir, então os passeios de código como ? discount= (como antes) e o visitante GUID como ?vid=. kamo-register adota em vez de criar uma nova identidade. O GUID só é adicionado em uma hop de domínio cruzado, e um mal formado nunca é refletido em um link. - CSP connect-src ganha as portas kamouniverse e mantém as portas kamocrm (somente em adição). - check-register-links: o inquilino invariante (o link permanece sob o cookie domínio) mais os casos da plataforma, 35 verificações.
· VOIPService
Equipes chamando conexões envie o redirecionamento api.kamouniverse.com
O dono adicionou o seu nome ao plataforma Microsoft app, mantendo o api.kamocrm.com um. Ambos os anfitriões servem o caminho. Completa aa7b608, que moveu RingCentral.
· EmailService
Conexões de caixa de correio pessoal enviam o redirecionamento api.kamouniverse.com
O dono acrescentou: para a plataforma Google e consoles Microsoft, mantendo o api.kamocrm.com um. Ambos os anfitriões servem o caminho.
· VOIPService
RingCentral conecta envia o redirecionamento api.kamouniverse.com
O dono acrescentou o seu nome ao plataforma RingCentral app e manteve o api.kamocrm.com um; ambos os hosts servem o caminho. Chamadas de equipes usam o mesmo caminho na plataforma Microsoft app, cuja console detém apenas o host legado, então seu DEFAULT REDIRECT URI permanece em api.kamocrm.com.
· MediaService
Conexões reunião-fornecedor enviar o api.kamouniverse.com redirecionamento
O dono acrescentou que... o aplicativo Microsoft plataforma e manteve o api.kamocrm.com um. Ambos os anfitriões servem caminho, então uma conexão iniciada sob ambas as completas.
· EmailService
Gmail, Microsoft 365 e Zoho da plataforma conectam enviar redirecionamentos api.kamouniverse.com
O dono acrescentou: (Google) E... (Microsoft, Zoho) para os aplicativos da plataforma' consoles e manteve os api.kamocrm.com, então ambos são válidos. A plataforma agora envia a nova máquina. api.kamocrm.com continua servindo ambos os caminhos, então qualquer coisa já Registado ou em voo completo. Personal-mailbox conecta fica em api.kamocrm.com até que seu redirecionamento seja adicionado para os consoles Google e Microsoft também.
· kamo-shared-library
A plataforma API host é api.kamouniverse.com
Os aplicativos OAuth da plataforma agora mantêm o api.kamouniverse.com redirecionando URIs. O proprietário adicionado a cada console (Google, Microsoft Entra, Zoho, RingCentral) e mantido os api.kamocrm.com, para que a plataforma possa enviar o novo host. Ambas as máquinas servem Cada caminho de retorno de chamadas, então um fluxo começou sob ambos os completos. Sem orgs existentes próprio aplicativo dependia deste backback: o um org com seu próprio aplicativo tem um verificado domínio e é enviado api.<seu domínio>.
· EmailService
As cartas da organização da plataforma são assinadas KamoUniverse, não seu nome legal
O título da plataforma org é o nome legal da empresa, "KamoCRM Inc.", e fica no texto legal. Suas cartas agora carregam a marca, seu título curto "KamoUniverse", no nome de exibição. Apenas a organização da plataforma é afetada; Cada outra org mantém o seu título. O proprietário decidiu isso em 2026-09-28.
· SecurityService
Pastas de temas que ainda mostram o placeholder do KamoCRM aposentado mover para o KamoUniverse
A pasta de temas de cada nova org é semeada do public/default/. Até hoje está cheio logo foi o sinal de palavra KamoCRM. A semente é agora o KamoUniverse wordmark, construído como Um RasterSvgStand do proprietário. A Os bytes antigos são mantidos em: nada foi apagado. ThemeSvgStandInBackfillService encontra sementes intocadas comparando bytes com o Sementes atuais, por isso, por si só, a nova semente teria feito cega para cada pasta fornecida antes de hoje. A semente aposentada é agora conhecida pelo seu SHA-256 (LEGACY SEED LOGO SHA256, os mesmos bytes que... - Uma org com um logotipo raster cujo .svg ainda é a semente aposentada recebe o seu Como antes. - Uma org sem logotipo próprio (ext em branco ou svg) cujo .svg é exatamente o semente aposentada agora recebe a semente atual, então seu espaço de trabalho pára de usar o Marca reformada. - Um .svg que não é um byte de semente aposentado para byte nunca é tocado, e nada move-se enquanto a semente em si ainda é o aposentado. O backfill é executado em cada bota, então isso faz efeito no próximo lançamento. A o segundo construtor existe para testes, então o Spring one é @Autowired. A teste de contexto de aplicação inteira está desativado (precisa de Redes), então um Spring-built O teste agora protege a escolha do construtor.
· kamo-apps
As páginas da aplicação voltam para o host de tema kamouniverse.com
kamouniverse.com é agora o ápice primário da plataforma (kamocrm.com permanece totalmente serviu o ápice do legado). A máquina de aplicativos da plataforma que realmente resolve é apply.kamouniverse.com — apply.kamocrm.com não tem registro DNS. - Theme.tsx: PLATFORM APEX, o host do tema usado antes que o navegador saiba o seu host, é kamouniverse.com. Uma página em qualquer máquina real ainda pergunta tema.< seu próprio ápice>. - O widget de suporte carrega a partir de theme.kamouniverse.com. Seu carregador obtém o pacote hashed em relação à sua própria URL, e MinIO serve o idêntico loader sob ambos os hosts de tema (verificado byte-for-byte); theme.kamocrm.com continua a servir cada incorporação que o nomeie. - O comentário médico do ThemeLogo corresponde ao seu verdadeiro padrão ("Logo"). Kept: o api.kamocrm.com do BFF (o host API da plataforma compartilhada permanece, e é uma chamada servidor-servidor).
· SecurityService
Novas inscrições de autenticadores são chamadas de KamoUniverse
O emissor de otpauth era o literal "KamoCRM". Apenas novas inscrições mudam. An a entrada existente do autenticador mantém o seu rótulo e continua a funcionar, porque o código vem do segredo, não do rótulo.
· EmailService
EmailService envia, links e nomes da plataforma como kamouniverse.com
O ápice primário da plataforma é kamouniverse.com; kamocrm.com permanece servido na íntegra. O quê? EmailService escreve hoje agora nomeia o ápice primário, e o que reconhece ainda aceita As duas coisas. Remessa e retrocessos (C1, C3) - platform.mail.domain defaults to PlatformDomains. PRIMARY APEX (k8s já configurados kamouniverse.com; o padrão de código já não discorda dele). A auditoria NoReply padrão para o mesmo. - O último recurso para logotipos de cartas é... (theme.kamouniverse.com serve a pasta de cada org byte-for-byte como theme.kamocrm.com). - Teste-enviar do HostTester De e MessageIds sem domínio use o ápice primário. - A organização da plataforma detém ambos os apexes; com compartilhamento de lib 0e8cf90f sua raiz preferida (OrgPrimaryDomain -> OrgApiHosts.preferred) é kamouniverse.com, então suas letras saem de NoReply@kamouniverse.com com Responder-Para NoReply@kamouniverse.com — nunca o ápice legado. Testes atualizados de "a plataforma mantém kamocrm.com" para o ápice primário, e fixados. Ligações (C2) - Campanha/partilha de artigos opt-out e links de rastreamento aberto/clique são cunhados em api.kamouniverse.com (k8s/configmap.yaml + application.yml). api.kamocrm.com serve o mesmos caminhos, então cada link já enviado continua funcionando (GET, um clique POST e rastreamento verificada idêntica em ambas as máquinas); as assinaturas nunca incluíram a máquina. - O link de inscrição do article-share está registrado.<apex primário>/member. Seu link de artigo permanece em www.kamocrm.com: o artigo compartilhável só existe lá (www.kamouniverse.com: 404). O reconhecimento permanece apenas para adicionar (K4) - TrackingLinks.isNossa exclusão de opt-out do compositor reconhece sua base em EVERY plataforma apex (novo util PlatformUrls), então um legado-apex rastreou ou opt-out link colado de uma campanha anterior não é encerrada uma segunda vez. - O NoReply audit registra NoReply@ em qualquer apex da plataforma, não apenas o configurado. - Enviando domínios: um inquilino não pode adicionar um domínio em kamouniverse.com, bem como kamocrm.com **************** rótulos inteiros — notkamouniverse.com está bem). - KamoMailDomainValidator's apex list is PlatformDomains. Apexes. Nome da marca (C4): as mensagens de domínio de envio e de saída voltadas para o usuário dizem KamoUniverse. Kept: OAuth redireciona URIs em api.kamocrm.com (K1); hello.kamocrm.com, contact.kamocrm.com, aubscribe@hello.kamocrm.com, mail.kamocrm.com (K2); Feedback-ID "campaign:kamocrm" e o pasta de temas kamocrm-com (K8); legacy-apex test fixtures (K7). Verificado: mvn teste limpo contra origem/main (0e8cf90f): 2863 testes, 0 falhas. A mesma suíte na origem/principal tinha exatamente 3 falhas — os testes do compartilhamento-lib primary-apex mudança quebrada (ComporAssetUrls, host logotipo da página de preferência, OrgPrimaryDomain) — atualizado aqui para o ápice primário, com casos legado-ápex mantidos ao lado deles.
· kamo-internal
A fonte do centro de ajuda fala como KamoUniverse
ferramentas/centro de ajuda/conteúdo: "KamoCRM" torna-se "KamoUniverse" em 70 artigos — 105 lugares, três de eles títulos (O que KamoUniverse é, Como pesquisar através KamoUniverse, Como KamoUniverse é construído). Slugs e nomes de arquivos não são tocados: são endereços públicos dos artigos e do importador chave, e renomear um iria publicar uma segunda cópia. Também intocado: "KamoCRM Platform", o nome de um lead market um leitor encontra no dropdown, e "KamoCRM" em citações, o nome de um vendedor em uma lista. clean-source.mjs ganha rebrand(), executado por cleanBody após as referências cruzadas, então reconstruindo os artigos dos rascunhos mantêm o novo nome; "kamouniverse" junta-se às paradas de relações e Cápsulas de título. Os artigos ao vivo mudam apenas quando o import.mjs é executado contra o KBService, o que isto o commit não faz. Corrida a seco: 307 artigos, 181 referências cruzadas, 73.432 palavras — como antes.
· kamo-internal
A fonte do centro de ajuda fala como KamoUniverse
ferramentas/centro de ajuda/conteúdo: "KamoCRM" torna-se "KamoUniverse" em 70 artigos — 105 lugares, três de eles títulos (O que KamoUniverse é, Como pesquisar através KamoUniverse, Como KamoUniverse é construído). Slugs e nomes de arquivos não são tocados: são endereços públicos dos artigos e do importador chave, e renomear um iria publicar uma segunda cópia. Também intocado: "KamoCRM Platform", o nome de um lead market um leitor encontra no dropdown, e "KamoCRM" em citações, o nome de um vendedor em uma lista. clean-source.mjs ganha rebrand(), executado por cleanBody após as referências cruzadas, então reconstruindo os artigos dos rascunhos mantêm o novo nome; "kamouniverse" junta-se às paradas de relações e Cápsulas de título. Os artigos ao vivo mudam apenas quando o import.mjs é executado contra o KBService, o que isto o commit não faz. Corrida a seco: 307 artigos, 181 referências cruzadas, 73.432 palavras — como antes.
· kamo-internal
Links da plataforma no ápice primário, e a plataforma chamada KamoUniverse
Links que o aplicativo gera para a plataforma são construídos a partir de PLATFORM APEX, então eles seguem o principal apex (kamouniverse.com). Cada link kamocrm.com já distribuído continua funcionando, porque ambos os apexes servem a mesma coisa — verificados: Etag idêntico para o APK e o carregador de chat em ambos os temas hosts, o mesmo DAV 401 ("Calendar Kamo") em ambos os hosts api: - o KamoMobile instalar QR e link, o web-chat embed snippet, o CalDAV/CardDAV servidor URL e Alvo SRV, e os valores de exemplo nos editores de acordo-template e email-template. Onde o aplicativo fala para a plataforma em vez de um inquilino, o nome da plataforma é KamoUniverse, realizada uma vez em app/lib/platformBrand.ts: a organização de backback do layout root, o carregamento e /validate logo alts, o editor de e-mail-template org-name fallbacks, a rota outbound-host diagrama, a predefinição do relé em massa e o agente-utilizador do proxy da imagem. A entidade jurídica permanece "KamoCRM Inc." (linha da empresa em vendas de contato, o "<org> Inc." template fallbacks). Criação da organização pré-visualiza KamoUniverse.com/o/<alias>, e um teste mantém esse formulário de exibição para O verdadeiro ápice. Contato Nomes de vendas Vendas@KamoUniverse.com: kamouniverse.com correio é ao vivo e terras na caixa de correio kamocrm.com (RCPT sales@kamouniverse.com respondeu 250; nada foi enviado).
· kamo-internal
Links da plataforma no ápice primário, e a plataforma chamada KamoUniverse
Links que o aplicativo gera para a plataforma são construídos a partir de PLATFORM APEX, então eles seguem o principal apex (kamouniverse.com). Cada link kamocrm.com já distribuído continua funcionando, porque ambos os apexes servem a mesma coisa — verificados: Etag idêntico para o APK e o carregador de chat em ambos os temas hosts, o mesmo DAV 401 ("Calendar Kamo") em ambos os hosts api: - o KamoMobile instalar QR e link, o web-chat embed snippet, o CalDAV/CardDAV servidor URL e Alvo SRV, e os valores de exemplo nos editores de acordo-template e email-template. Onde o aplicativo fala para a plataforma em vez de um inquilino, o nome da plataforma é KamoUniverse, realizada uma vez em app/lib/platformBrand.ts: a organização de backback do layout root, o carregamento e /validate logo alts, o editor de e-mail-template org-name fallbacks, a rota outbound-host diagrama, a predefinição do relé em massa e o agente-utilizador do proxy da imagem. A entidade jurídica permanece "KamoCRM Inc." (linha da empresa em vendas de contato, o "<org> Inc." template fallbacks). Criação da organização pré-visualiza KamoUniverse.com/o/<alias>, e um teste mantém esse formulário de exibição para O verdadeiro ápice. Contato Nomes de vendas Vendas@KamoUniverse.com: kamouniverse.com correio é ao vivo e terras na caixa de correio kamocrm.com (RCPT sales@kamouniverse.com respondeu 250; nada foi enviado).
· kamo-internal
Reconhecer ambos os ápices de plataforma onde quer que o aplicativo diz a um anfitrião de plataforma de um inquilino
kamouniverse.com é agora o ápice primário da plataforma e kamocrm.com permanece totalmente servido, então cada verificar que pergunta "é este um dos anfitriões da plataforma?" tem que responder sim para ambos, por rótulo inteiro: - proxy.ts: em uma plataforma host o tema de nomes img-src da página.<apex> e *.<apex> para EVERY platform apex. internal.kamouniverse.com (viver hoje) bloqueou cada imagem armazenada theme.kamocrm.com, e internal.kamocrm.com iria bloquear o theme.kamouniverse.com URLs servidores build on the primary É o ápice. O próprio ápice de um inquilino ainda só se chama a si próprio. - networkModel.isCustomDomain, que o FirstOrgCta agora reutiliza em vez de uma cópia: acme.kamouniverse.com Leia como um domínio personalizado, então Enter abriu ******************* — nenhum hospedeiro. - OrgOAuthAppSection: um callback no api.kamouniverse.com foi descrito como o próprio domínio do org. - LeadVendorManager: SecurityService builds apply.<apex primário> para uma org sem um domínio, e O cheque só sabia aplicar-se. kamocrm.com, então a forma da plataforma é lida como host da própria org. - /api/org/[...domínio]: a entrada cliente-credenciais da plataforma existe sob cada ápice da plataforma. - next.config allowedDevOrigins e o CSP image-host guard também aceitam kamouniverse.com. Construído em isPlatformHost / PLATFORM APEXES de app/lib/platformApex.ts; nenhuma nova lista de apexes.

Seu universo está esperando.
Comece gratuitamente em minutos.Adicione produtos sempre que estiver pronto — sem migração, sem novos logins.
Gratuito para sempre — não é necessário cartão de crédito