Ir para o conteúdo
KAMOUniverse

Changelog

O que há de novo.

Cada melhoria para a plataforma, como ele envia.

  1. · SecurityService

    Add AccountSettingsController + Service for phone + security questions (SP3)

    Allows logged-in users to set/verify phone and configure 3 security questions. Routes to /api/account/* (session-authenticated via KSESSION_DATA).

  2. · SecurityService

    Add BulkTextSmsClient + EmailTemplateServiceClient + PasswordRecoveryController (SP3)

    Full password recovery flow: email-link, SMS OTP, security questions, seed phrase. Routes to /api/recover/* (unauthenticated). Uses SP1 email pipeline + VOIPService SMS.

  3. · VOIPService

    Add InternalAuthFilter + POST /api/bulktext/send for service-to-service SMS (SP3)

  4. · kamo-shared-library

    Adicionar entidades de recuperação + acordos de recompra; aumento para 1.3.0 (SP3)

    Adiciona senhaResetToken, SmsOtp, RecoverySession, AccountVerificationCode Entidades JPA com repositórios correspondentes para o fluxo de recuperação SP3.

  5. · kamo-shared-library

    Adicionar SegurançaQuestionCatalog enum + sq1/2/3 + seedPhraseHash to User (SP3)

  6. · InitializerService

    Add SP3 recovery table DDL + User column additions to SchemaCleanupRunner

  7. · kamo-internal

    Previsão da rota através do modal renderizado pela infra- estrutura do navegador (parte de SP2)

    O E-mailTemplateBrowser agora possui o modo de visualização diretamente, então o O gestor já não precisa de interceptar pedidos de antevisão em linha e redirecionar para o modo de edição.

  8. · kamo-internal

    Email de FioTemplateEdit para API real

    Hidrata do templateApi.get, salva via templateApi.update. Categoria dropdown é baseado em API com categoria inline-criar affordance. Variáveis Selector lê de variableContracts.ts (contratos declarados para REQUIRIDOS chaves de modelo; conjunto comum para CUSTOM). Edição de linha requerida / SISTEMA mostra a bandeira de aviso adequada. O botão de visualização abre o E-mail renderizado por backendTemplatePreview modal. Parte de SP2.

  9. · kamo-internal

    Email de FioTemplateBrowser para API real + adicionar guia Padrão de Sistema

    Substitui ~140 linhas de dados simulados por chamadas templateApi.list(). Condicional quinta aba 'System Defaults' aparece apenas para administradores e renderizadores de nível superior de resposta.sistemaTemplates. Filtro de categoria povoado da categoriaApi.list(). Todas as ações da linha * * * * * * * * * Acertei a sério Endpoints de infraestrutura. Erros roteados através do manipuladorApiError toather. Parte de SP2.

  10. · kamo-internal

    Adicionar EmailTemplateDuplicateDialog (parte de SP2)

  11. · kamo-internal

    Adicionar e-mailTemplateCategoryManager modal (parte de SP2)

  12. · kamo-internal

    Adicionar e- mailTemplatePreview modal

    Abre na antevisão da acção da linha. Renderização da infra-estrutura via templateApi.preview(); resultado exibido em um iframe sandboxed para isolamento de estilo. Corresponde à o caminho exato do código que o envio usa, então o que você pré-visualiza é o que os destinatários recebem. Parte de SP2.

  13. · kamo-internal

    Adicionar modeloApi + categoriaApi + variávelContrata módulos do cliente

    Embrulha o SP1 /api/email/templates/* e ************************* endpoints com helpers TypeScript digitados. variávelContratos espelhos SP1 TemplateKeys Javadoc para que o seletor de variáveis do editor seja declarado Contratos para modelos exigidos. Parte de SP2.

  14. · SecurityService

    Wire EmailTemplateSeedClient into ****************

    Thin RestTemplate client that POSTs to EmailService's **************** after an org + owner TeamMember are persisted. Retries twice with backoff; failure throws OrgProvisioningException and rolls back the surrounding @Transactional so the org + owner-TeamMember save is undone (per SP1 spec). Mirrors the existing TranslateServiceClient X-Internal-Auth pattern. k8s/configmap.yaml adds: email.service.url (EmailService internal URL) internal.auth.secret (cluster-wide X-Internal-Auth header value) pom.xml bumps kamo-shared-library 1.1.0 → 1.2.0. Part of SP1.

  15. · EmailService

    Add EmailTemplateCategoryController REST endpoints

    **************** CRUD. Delete response includes reassignedCount — the number of templates that became uncategorized as a result of removing the category. Session context read via the same **************** pattern as other EmailService controllers. Part of SP1.

  16. · EmailService

    Add EmailTemplateController REST endpoints + DTOs

    Exposes /api/email/templates/* CRUD + preview + duplicate + reset-to-default + service-to-service /send + /seed-org/{orgId}. Top-level orgs (no parent) additionally see systemTemplates in the list response. Service-to-service endpoints are protected by the existing InternalAuthFilter. Session context (orgID, memberID) read from OTKPreAuthFilter's REQ_ATTR_SESSION attribute — the same pattern already used by AliasController / MailboxController. Part of SP1.

  17. · EmailService

    Add InternalAuthFilter for service-to-service endpoints

    Validates X-Internal-Auth header on /api/email/templates/send and /api/email/templates/seed-org/* paths. Other paths bypass this filter (user session auth handles them). Secret comes from INTERNAL_AUTH_SECRET env var. Also adds transactional.smtp.user / transactional.smtp.pass config stubs consumed by EmailTemplateService — all three are sourced from the k8s configmap in production. Part of SP1.

  18. · EmailService

    Adicionar o EmailTemplateCategoryService — CRUD para categorias de org-scoped

    Nome único por org aplicado na camada de serviço (combina o índice único parcial no DB). Supressão nula categoria id nos modelos afetados antes de remover a linha de categoria. Parte de SP1.

  19. · EmailService

    Adicionar EmailTemplateService — CRUD + send + seed + reset-to-default

    Orquestrador principal para e-mail transacional. SendToUser resolve o modelo, torna sujeito/corpo, escolhe o domínio primário da organização. domínios, e entrega para EmailSmtpService com NoReply@{org.domain} como do endereço. Inclui seedForOrg para novo-org gancho de ciclo de vida e resetToDefault que copia o conteúdo de uma linha do SISTEMA sobre uma linha por-org EXIGIDA. Autenticação para o envio usa credenciais de serviço SMTP transacionais em cluster (transactional.smtp.user / transational.smtp.pass) em vez do per-member resolvedor do prestador — os envios transacionais não têm membro atuante. Parte de SP1.

  20. · EmailService

    Adicionar NoReplySenderService para 'NoReply@ {domain}' do endereço

    Fonte única de verdade para e-mail transacional de endereços. Aceita uma string de domínio, minúscula-normaliza-lo, retorna "NoReply@<domínio>". Os ouvintes devem resolver o domínio do org (através da pesquisa do Organization.domains ou similar) e passe-o para dentro. Parte de SP1.

  21. · EmailService

    Adicionar Renderador de Modelos para substituição {{var}}

    Renderizador de regex sem estado. Faltam vars para substituir o texto vazio e emite um registro WARN com templateKey + orgId para atribuição. Sem fuga de HTML em v1 — os valores são controlados pelo servidor. Parte de SP1.

  22. · InitializerService

    Add EmailTemplateSeedRunner for SYSTEM + per-org seeding

    Runs at @Order(20) on KamoInitializerService startup. Loads canonical templates from kamo-shared-library resources; upserts SYSTEM rows (no clobber); backfills per-org rows for every org that doesn't yet have them. Idempotent — safe to re-run on every startup. Part of SP1.

  23. · InitializerService

    Add partial unique indexes + CHECK constraints for email_templates

    Hibernate ddl-auto can't generate partial unique indexes or computed-CHECK constraints. This commit adds them via the existing idempotent DDL runner pattern after Hibernate creates the base tables from the new entities. Part of SP1.

  24. · kamo-shared-library

    Adicionar CanonicalTemplateLoader + CanonicalTemplate record

    Lê os três modelos exigidos (WELCOME, PASSWORD RESET, EMAIL VERIFICAÇÃO) de recursos de caminhos de classe em **************************** Consumido por KamoInitializerService for SYSTEM-row semeando. Parte de SP1.

  25. · kamo-shared-library

    Adicionar HTML canônico + JSON para WELCOME, PASSWORD RESET, EMAIL VERIFICAÇÃO

    Conteúdo da fonte de verdade para linhas do SISTEMA. Carregado no KamoInitializerService inicialização por CanonicalTemplateLoader e upsertado em e-mail templates. Parte de SP1.

  26. · kamo-shared-library

    Adicionar E-mailTemplate entity + repositório

    Armazena uma linha do SISTEMA por modelo chave (org id NULL, is system TRUE) mais um clone por org por template key. Soft-reference org id/category id. DB... timestamps; JSONB para body blocks e tags. O repositório fornece pesquisa de org, incremento do contador de uso atômico e remoção de categoria limpeza via nullifyCategoryForOrg. Parte de SP1.

  27. · kamo-shared-library

    Adicionar EmailTemplateCategory entity + repositório

    Categorias org-scoped para modelos de email. Soft BIGINT org id (sem FK) corresponde aos padrões existentes. Caso-insensível nome unicidade per-org é aplicado através de um índice parcial adicionado no KamoInitializerService. Parte de SP1.

  28. · kamo-shared-library

    Adicionar TemplateStatus enum + TemplateKeys constantes para modelos transacionais

    Declara os estados de ciclo de vida requeridos/aDUANEIRO/ARCHIVED e os três chaves de modelo exigidas (WELCOME, PASSWORD RESET, EMAIL VERIFICAÇÃO). Contratos variáveis para cada modelo EXIGIDO documentado como Javadoc em as constantes classe; SP3 e SP4 fazem referência a estas. Parte de SP1.

  29. · InitializerService

    Seed KamoCRM with ALL_WORK_ELIGIBLE on fresh installs

    The createOrg() helper applies this single argument to both ageReqTypeMember and ageReqTypeTeamMember; consistent with platform convention. Pairs with KamoCRMAgeReqUpdateRunner which handles existing deployments via a conditional UPDATE. Completes SP5.

  30. · InitializerService

    Add one-time runner to migrate KamoCRM agereq to ALL_WORK_ELIGIBLE

    Conditional idempotent UPDATE runs on service startup; WHERE clause checks the expected old value so re-runs are no-ops. Errors are logged and swallowed — startup must not block on this non-critical migration. Part of SP5. Pairs with the DataLoader edit in the next commit that makes fresh installs seed the new value directly.

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