Changelog
O que há de novo.
Cada melhoria para a plataforma, como ele envia.
· kamo-signer-monorepo
Formatação local e metadados por local
· kamo-signer-monorepo
Adicionar o interruptor de idioma à barra superior do sinalizador
Menu marcado com endonym sobre os 22 locais suportados. Preserva a consulta string on switch — ?t= é a única credencial do assinante.
· kamo-signer-monorepo
Disposição do espelho para locais RTL via stylis-plugin-rtl
A direção do tema MUI sozinho muda a lógica do componente, mas deixa física Propriedades CSS intocadas, então em árabe com espaçamento LTR. Troca a Chave de cache de emoção e plugins na direção. Também adiciona stylis como uma dependência direta (anteriormente apenas transitivo via Emoção) e @types/stylis, desde que este repo's isolado pnpm nó-linker não resolve dependências fantasma e stylis 4.2.0 navios sem pacote declarações de tipo.
· kamo-signer-monorepo
Roteie o sinalizador em /{locale} com o middleware do próximo- intl
Adiciona i18n/routing.ts (localePrefix sempre), i18n/navigation.ts, e middleware.ts, e move a árvore de rota sob src/app/[locale]/. request.ts agora resolve a partir do URL em vez do cookie kamo-locale, A manter a fusão inglesa. Links assinantes notáveis continuam trabalhando: o middleware 307-redirects URLs desprefixadas e preserva o token ?t=.
· kamo-internal
Blink o ícone de e- mail enquanto um indicador não lido está mostrando
O crachá não lido sozinho foi fácil de perder no bar superior. NavItemButton ganha um blinkIcon prop que pulsa o ícone (e seu crachá) — mantido distinto do 'blink' existente, que apenas pulsa o ponto lead-alert — e MailButton gira ele ligado desde que não lidoContar > 0. Honras preferem movimento reduzido.
· kamo-marketing
Iniciação com 5 usuários, Negócios com 25
Reposiciona as tampas de assento publicadas sobre /pricing (e a calculadora, JSON-LD oferece, e resumos llms.txt) para corresponder à assinatura catálogo: Starter 25 -> 5 usuários, Business 100 -> 25 usuários.
· kamo-internal
Clarify MeridianLink market secret é a credencial de serviço de sincronização de entrada (ingressos por LO no perfil de membro)
· kamo-internal
MeridianLink cartão de crédito de escritório-empréstimo no perfil de membro + botão de comando LO pré-warn
Fase L3 do mapeamento LOS empréstimo-oficial MeridianLink (por §3.4-3.6 do especificação de projecto: - Novo proxy LOS-credencial **************************** e cliente digitado **************************** tipos em app/lib/los/types.ts) encaminhando GET/PUT/DELETE/POST para SecurityService. - Novo Cartão de Seção "Acesso de Empréstimo MeridianLink" **************************** colocado logo após o estado-baseado Licenciamento. Visível apenas quando o membro tem um ID NMLS E pelo menos um O mercado de org tem uma ligação MeridianLink activa; Os direitos. Uma linha por mercado (nome de utilizador/secreto/activado/chip de estatuto/teste); o segredo é apenas escrita e Nunca retribuído. - Lead-view Create Application button pre-warns: quando um lead não tem LOS pedido ainda e seu loan officer atribuído não está ligado a MeridianLink, o botão está desativado com uma dica que nomeia a LO em vez disso de apenas falhar no clique. Extende o MarketConfig com o losLoName/losLoLinked (defensivos defaults for older SecurityService builds). A infra- estrutura 422 continua a ser a verdadeira garantia.
· SecurityService
Criar LO-scoped (bloquear se não mapeado) + membro MeridianLink credencial API + status de link LO de configuração de mercado
Fase L2 do projeto de mapeamento empréstimo-oficial MeridianLink (kamo-internal **************************** §3.3-3.6), construído sobre o esquema/resolver de lib partilhado L1 (MarketLosUserCredencial, **************************** Todos os SOAP zombados (vendor a bordo Ainda pendente). Agora cria o empréstimo como o principal é atribuído loan officer via resolveForMember em vez do serviço compartilhado da conexão identidade (decisão bloqueada B: bloco, não recuar). Não atribuído LO -> 422; um LO atribuído sem um utilizador MeridianLink ligado -> 422 com um accionável Mensagem. A verificação já ligada 409 agora é executada antes da ligação/ LO verifica, por uma revisão anterior, para que uma tentativa de criação duplicada não possa voltar 403/422 à frente do 409. - Novo... **************************** (GET/PUT/{marketId}/ DELETE/{marketId}/POST /{marketId}/test), fechado como Controlador de Licenciamento dos Estados-Membros (STATE LICENSING VIEW/EDIT OWN/ ALL, Deus bypass). Criptografar- em- escrita via PlatformSecretCipher, mantém em branco o segredo o texto cifrado, tem somente visão Credencial, soft-delete, nunca-jogar Ação de teste. - LeadController market-config ganha losLoName/losLoLinked para o lead-view botão pode pré-alertar antes de bater no 422. - Adiciona BaseLosController#inprocessável (422 helper). TDD: 54 testes em LeadLosControllerTest (estendido), **************************** (novo), e Controlador de chumboMarketConfigTest (extendido) — todos verdes. L3 (IU kamo-interna + proxy) é um trabalho de acompanhamento separado.
· kamo-shared-library
Credencial MeridianLink por membro (MarketLosUserCredencial) + resoluçãoForMember + LO-scoped outbound push
· kamo-internal
Campanhas de e-mail em massa UI — grid, editor, guia provedor, leads action
Adiciona a superfície de marketing de e-mail de nível org sob /marketing/email: - Guia de e-mail em massa (após Social Media) + campanhas AG Grid workspace com live status/enviar-vs-total contagens sobre STOMP (/tópico/campanhas/{orgId}); corrige o Jogo de marketing / lógica ativa para rotas aninhadas. - Editor de campanha (/marketing/email/campaign): Quill compõe reutilizando o cabeçalho/sistema de rodapé da assinatura + tokens de mesclagem, destinatários do upload de arquivos (mapa da coluna de correio electrónico), IDs de chumbo/conta/aplicação (resolver o ponto final) ou manual entrada, um painel pré-voo (skip/opt-out/masked/inválida desagregação + CAN-SPAM guardas), e envio/draft/agenda + acelerador (todos em uma vez / uniforme / naturalizado + aquecimento). Aceita a entrega dos leads a granel. - Guia de configurações do provedor de e-mail em massa (separar SMTP config + real Send Test Email). - Leads: "Bulk email (N)" ação no editor de campanha multi-selecionado →. - Departamentos: e-mail + telefone/campos de extensão; marcação de comportamento: e-mail da empresa. - APIs do cliente (emailCampaignApi, bulkEmailProviderApi, recetorResolveApi), useEmailCampaignsWebSocket hook e a rota proxy de resolução de segurança.
· SecurityService
Resolução do destinatário em massa-email + campos de contato do departamento
- Está bem. POST /api/segurança/marketing-email/ destinatários/resolver transforma IDs de lead/conta/aplicação em destinatários de email. Gated on MANAGEM BULK EMAIL; aplica mascaramento de contato de chumbo sob o remetente Conta. aceitaMarketing opt-in gate, mutuário e-mail para aplicações, validação sintática, dedupe cross-source + repartição pulada/contada. - DepartmentController: coloque os novos campos de pedido de e-mail/telefone/extensão Serviço de Departamento criar/atualizar.
· kamo-shared-library
Suporte de compartilhamento de lib para resolução de destinatário de e-mail + email de contato da empresa
- Está bem. contactEmail branch (contato da empresa Editável por e-mail via PUT /api/security/org, usado como campanha company-scope De) - ApplicationRepository: localizador de lote polimórfico (findByUidInAndOrganização Id) para resolver o e-mail de mutuário de um aplicativo para destinatários de campanha - AccountBorrowerPartyRepository: findByAccount UidIn batch finder (sem N+1) Apenas aditivos; pacotes já cobertos por..
· EmailService
Infraestrutura de campanha de email em massa — fornecedor, expedidor, conformidade, em tempo real
Infra- estrutura para campanhas de e-mail em massa em nível de org, totalmente separada do dia a dia provedor de e-mail para que ele não pode ser estrangulado / blocklisted ao lado do correio comercial: - Fornecedor de SMTP em massa (BulkEmailProviderService + BulkProviderController): configuração de org criptografada reutilizando EmailProviderEncryptionService; real Send Test Email (abre uma sessão SMTP ao vivo e envia). - Campaign CRUD + máquina de status (CampaignService/Controller): rascunho, programação, send-now, pausar, retomar, cancelar, duplicar; dedupe, marcação de supressão, fichas de cancelamento de subscrição por destinatário; portão CAN-SPAM (sujeito + endereço físico + >= 1 destinatário obrigado a deixar rascunho). - Despachador entortado (CampaignDispatcher @Scheduled): all-at-one/ uniformemente-sobre-janela / naturalizado-rondom pacing via per-recipiente próximoReleaseAt (reset-safe), rampa de aquecimento no maxPerHour, hard-bounce -> auto-supress. - Compliance: SupressãoService, público de um clique RFC 8058 UnabscribeController (+ Lista-Dessubscrever cabeçalhos), supressão verificada novamente no envio. - Em tempo real: STOMP directo para /topic/campaigns/{orgId} + hora de inscrição org ChannelInterceptor (fecha exposição tópica de cross-tenant). - EmailSmtpService: extraHeaders additive send() sobrecarga (List- Unsubscribe).
· kamo-shared-library
Andaimes de aviso de ação adversa ECOA/FCRA + temporizador de satisfação
A metade do mecanismo de emissão é compartilhada. ComplianceTimerGanhos de serviço ******************* SATISFIED (deixa OFERTA/INCOMPLETE NOA e já satisfeito intocado), para que um aviso de ação adversa SENT possa fechar o relógio Reg B enquanto Um não-enviado permanece ARMED para a varredura. Dois modelos de correio eletrónico canónicos — ADVERSE ACTION NOTICE (ECOA/Reg B + FCRA § 615(a)) e RISCO BASED PRICING NOTICE (FCRA § 615(h)/Reg V) — registados em CanonicalTemplateLoader. Ambos são andaimes ESTRUTURAIS apenas: [APROVADO POR SUA CONFORMIDADE ... ]] placeholder o advogado do credor preenche em, mais variáveis de dados estruturados (aplicante, data, razões principais / gatilho). O Kamo não fornece nenhuma prosa de aviso legal.
· kamo-internal
Adicionar máquina mestre lançador remoto-desktop (god-gated)
Terceiro desktop de um clique ao lado do Linux/Windows: entrada navRegistry (ComputerIcon), meta 'master' através do openKamoDesktop + rota proxy SSO, e despacho em todos os três manipuladores de ação.
· SecurityService
Adicionar "master" alvo para Master Machine SSO deep-link
buildAutoConnectUrl agora menta uma conexão Master Machine (KAMO GUAC MASTER HOSTNAME, padrão 192.168.4.46); incluído em cada token para reutilização de sessão. Mantido em sincronia com o SQL inicial do KlusterServices.
· KlusterServices
Adicionar o dispositivo "Master Machine" (kamo-dev-1) RDP ao Guacamole
A estação de trabalho local do Kubuntu compartilha sua sessão de Plasma/Wayland ao vivo sobre o RDP via KRdp. Adiciona uma conexão de bootstrap SQL idempotent (192.168.4.46:3389, sage/shared pw, security=any, ignore-cert, color-profunde 24) e LED submit. Inclui especificação de design.
· kamo-shared-library
Entidades de fundação de campanha em massa-email + campos de contato departamento/org
Adiciona a base bibliotecária compartilhada para campanhas de e-mail de nível org: - OrgBulkEmailProviderEntity (separar do provedor diário; UNIQUE org id) - EmailCampaignEntity / EmailCampaignRecipientEntity (+ status/scope/trottle/ source enums) modelando a fila de envio durável por destinatário - EmailSuppressionEntity (lista de supressão CAN-SPAM) - Departamento: e-mail + telefone / extensão (número de telefone) campos de contato - Organização: contatoEmail (campanha do escopo da empresa Default) - RoleRightType: View BULK EMAIL(175), MANAGEM BULK EMAIL(176) no âmbito do COMERCIALIZAÇÃO Todos os novos pacotes estão em com.kamo.z.shared.email.* (já abrangidos por KamoInitializer **************************** Compila perfeitamente.
· kamo-shared-library
Modelo canônico STEWARD TASK ROUTED
A notificação de administrador de decisão roteado precisa de um modelo de email canônico. Registos STEWARD TASK ROUTED em CANONICAL KEYS com seu par json/html; corpo carrega o empréstimo / contexto decisão/exceção e um link steward-queue. O conteúdo é autorizado por org O sistema de modelos existente.
· SecurityService
Relé Gateway para cunhar uma MERS MIN para um pacote de fechamento
* ******************************* propriedade-checked (requerPackageOrg) assim um mordomo mentas apenas para o seu próprio inquilino. A a montante lê-se a ID MERS Org de 7 dígitos da conexão fornecedora MERS do inquilino na integrations tab; um 400 significa MERS não configurado ou o empréstimo não tem número de empréstimo.
· kamo-internal
Data de nascimento na visualização do lead + criar formulário
Adiciona um campo "Data de Nascimento" em Contato Primário em /leades/view/[id] usando um MUI DatePicker que abre para a grade de ano primeiro (openTo=year, desactivarFuture, min 1900) — o fluxo intuitivo para datas de nascimento — mais o mesmo Forma de nova liderança. Data de ida e volta via data-fns processamentoISO/formato (local, sem UTC Off-by-one). O display é fechado pela privacidade no campo canViewContact; é opcional. Data do fioOfBirth através de tipos, leadsApi criar / atualizar guardas, e o lista de campos do wizard de importação.
· SecurityService
Data de nascimento (DOB)
Mapas `dateOf Nascer no campo de importação manual e vendador com um analisador multiformato leniente (ISO mais formas comuns de M/d/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; os valores deixam o DOB desactivado em vez de lançar). Conta o DOB como contacto PII em requestTouchesContactInfo para editá-lo na liderança de outro membro requer EDIT LEAD CONTACT INFO OTHERS. Apoiado pela nova Libra compartilhada Lead.dateOfBirth.
· kamo-shared-library
Adicionar a data de nascimento do contacto nulo ao chumbo
Adiciona um nível de contato `dateOfBirth` (java.time. Data Local, coluna DATA) Lead base: entidade + Criar/Atualizar/LeadDTO (deLead), copiado no LeadService criar/atualizar e ambos subclasse hipoteca converter helpers para que ele sobrevive a Troca de mercado. Rastreado no registro de história (Contato) e mascarado como PII em máscaraContatoInfoDeOutros. Nulable, nenhum padrão — cofre ALTER ADD COLUNN.
· kamo-internal
Regras de sobreposição do documento-requisito do autor da consola de gestão
A matriz de regras "que documentos este empréstimo precisa" não tinha superfície de autoria. Isto adiciona Seção de regras de exigência do documento para a tela Documentos & Condições (dobrado no possuindo tela, não uma nova aba) onde um mordomo lista, autores, e se aposenta de seu inquilino Regras de sobreposição. A cópia de ajuda é honesta sobre o escopo: uma sobreposição no topo da linha de base da plataforma e o AUS/agência constatações (DU/LP/GUS), que permanecem a fonte da verdade; uma regra não pode aprovar Emprestar ou limpar uma condição, e nada aqui é um mandato legal. O formulário oferece o 23 RequisitosDriverType values and a free-text doc-type code (the backend validals it contra o catálogo de imagens da org e retorna um 400 em linha clara se a org não pode coletar — sem lista de documentos codificada). Um emblema de parede legal e bloqueios-avanço vs emblema consultivo renderizar em cada regra; Aposentadoria confirma primeiro.
· SecurityService
Reencaminhar a autoria da regra de substituição do documento
Releases POST/GET/aposentadoria em ********** para MLOSDocService, com organizationId server-stamped from the operator session so a steward autores and lists only As regras de sobreposição do inquilino.
· kamo-internal
Autor condicional LLPAs do painel de catálogo
Os ajustes não podiam variar por mutuário: MlosAdjustmentCondition não tinha escritor, e o preço motor trata um ajuste sem condições como sempre-aplica, então cada LLPA Demitido por cada mutuário e um mutuário 780-FICO levou o mesmo golpe que um 620. Este formulário autores um ajuste junto com as condições que o prendem. Modelado no formulário de política de bloqueio no mesmo painel: um ID de taxa-folha-versão, o preço delta e etiqueta, e uma lista repetitiva de linhas de condições (atributo + operador + numlow, com NumHigh mostrado apenas para BETWEEN). O cliente espelha os guardas do servidor — pelo menos um condição, um limite em todas as condições, ambos os limites para BETWEN com baixo <= alto — tão ruim A regra é apanhada em linha em vez de numa viagem de ida e volta.
· kamo-internal
Confirmar o e- mail ao reatribuir um lead a partir da visão principal
O cartão de atribuição agora reatribui via leadsApi.reassignLead, que server's assigneeNotificado flag. Em uma mudança para um novo membro o brinde lê-se "Atribuição salva - {nome} foi notificada por e-mail"; em um no-op ou auto- atribuição (onde o servidor não envia nada) permanece a confirmação simples.
· SecurityService
Enviar um e- mail ao novo proprietário quando um único lead for transferido
Espelha o caminho para a placa de atribuição de visão de lead. Quando PUT /leades/ {id} move um lead para um membro diferente, esse membro agora recebe o mesmo LEADS ASSIGNED e-mail (conte 1) o fluxo em massa envia. Melhor esforço — o envio é executado após o atualizar commits e nunca falha. Dispara apenas numa reatribuição real: salta o no- op salva onde o assignee está inalterado (então editar informações de contato não envia nada), e ignora a auto- atribuição — um oficial que reclame uma pista atribuindo-a a si próprio não tem razão para enviar um e-mail eles mesmos. A resposta carrega a atribuiçãoNotificada para que a UI possa confirmar a nova O dono foi enviado por e-mail. O lead pré-atualizado agora é obtido uma vez e reutilizado tanto para authz quanto para o captura anterior-assignee, em vez de apenas dentro do ramo não-deus authz.
· SecurityService
Retransmissão de autoria condicional-LLPA
Relés POST * ******************* através do assistente de escrita de estampagem de org, então Os autores de um administrador só podem proceder a ajustamentos condicionais para o seu próprio inquilino.

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