Ir para o conteúdo
KAMOUniverse

Changelog

O que há de novo.

Cada melhoria para a plataforma, como ele envia.

  1. · kamo-shared-library

    DecisãoGate.aplicado Limiar expõe a barra de confiança real

    O portão aplica internamente max( sobreposição do inquilino, segurançaFloor, piso de palco) mas As chamadas só tinham a parede do inquilino. aplicado Limiar retorna o verdadeiro Para que uma decisão de registo possa persistir no limiar reprodutível) em vez de um valor que o portão eleva silenciosamente. Aditivo; assessment () inalterado. DecisãoGateTest 14/14 pass.

  2. · kamo-internal

    Área de trabalho de Materiais Empresariais (P0) — pastas, pesquisa, volume, visualização real, compositor de e-mail compartilhado

    Substitui a grade plana de 200 itens por um espaço de trabalho completo do documento sobre a imagem existente infra-estrutura (que já suporta pastas, lixo, partilha, histórico, volume para MATERIAIS): - Barra lateral da pasta (criar/ renomear/deletar, arrastar-para-pasta) + Todas as vistas / Lixo - Procurar, ordenar, quadrícula <->lista alternar, 'carregar mais' paginado (remove a 200 cap) - Selecção em massa + download a granel (ZIP) / e-mail / mover / excluir - Gaveta de detalhes à direita: visualização real, renomeação em linha + descrição, movimento-para-pasta, compartilhamento interno (membro, permitir-edit, expirar) e histórico de atividade - E-mail agora reutiliza o compositor MessageTool compartilhado através da ferramenta global:open event (From/mailbox, CC/BCC, rich body, assinaturas, rascunhos) em vez de um formulário sob medida - Novas rotas proxy de imagem: pasta create/[id] renomear+delete/move-doc, renomear, descrição, restauração, nível de acesso - Remove a biblioteca de materiais substituída; todas as funcionalidades do Canva (criar/importar/autofill/ calendários) transitados. imglds manipulados como sequências precisas.

  3. · kamo-internal

    Revisão /mensagens — renderização de iframe, menu de contexto da lista, threading, races, a11y

    Implementa a auditoria da página /mensagens de ponta a ponta. Questões relatadas: - Responder/Responder Os botões Todos/Avançar agora mostram as etiquetas de texto; removidas das mais- acções dropdown (eles são botões adjacentes) enquanto o novo menu lista os mantém. - As linhas da lista de mensagens agora abrem o menu de ação compartilhada no botão direito do mouse e toque long-press **************************** as linhas ganham a ring de foco (j/k), caixa de seleção (x), e rolagem-in-view. - E-mail agora renderiza em um iframe de altura automática sandboxed (srcdoc) em vez de inline perigosamenteSetInnerHTML. Isso isola o email CSS/layout, que corrige o leitura-paie "bounce" ea perda de seleção de texto mid-drag, fecha o app-wide CSS-leak, e adiciona um padrão "imagens externas bloqueadas" tracking-pixel gate. Correcção/insectos: - Resposta/Resposta completa-Tudo agora definido em-Resposta-Para/Referências (Relatório de mensagem unificado type) assim, as respostas permanecem em discussão; threads de resposta rápida Referências + id pai, HTML- escapa do corpo e envia da caixa de correio partilhada/membro activa. - Encaminhar carrega os anexos originais; responder/avançar resolver a mensagem completa (carregando corpo para ações lista-linha) em vez de citar o que está aberto. - Race Guards (latest-wins) em loadMensagens / mensagem selecionar / carga de thread / carregar conversação; pesquisa já não puxa usuários página 0; WS recarregar filtrado para a pasta ativa; o searchPage reinicia na alteração da consulta. - ThreadDetail expandir estado chaveado por pasta+uid (cross-folder colision); markRead somente quando não lido; tente novamente usar o suporte da pasta. - Compose: receptor descomprometido com tipo de flush no Send/Draft; anexo dedupe + Tampa agregado de 40MB + atualizações funcionais; solte o cliente redundante OTK. - Proxy: forward Range + validadores de caching para streaming anexo/inline; fechar a multiparte esculpir em caminhos de provisionamento vigiados. - E-mail WebSocket: parada real após repetições máximas, backoff exponencial, conexão estável tentar reset; valor de contexto memorizado para cortar o cliente re-render churn. Qualidade: unificada ************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************* a11y (marcadores dearia, linhas/toggles aria-pressão, operáveis por teclado); i18n (nomes da pasta, datas da lista, pagers, UTI plural); código morto removido e entradas de atalho de teclado fantasma.

  4. · kamo-internal

    Reprojeto do painel de instrumentos — famílias de sotaque, masthead, section-index nav, cartão de vidro unificado

    Redesenha as duas aterrissagens mais visitadas em um console em forma de permissão. Fundação - Ligar o Geist Sans/Mono (foi descartado por um recuo do Arial); tipografia de rota MUI através do Geist. - Adicionar white-label-safe --accent-* module-family tokens, uma escada de elevação, uma borda superior de vidro iluminado, utilitários Operator-Label + .tabular, e um token --ase-house. Fix --gradient-primary-transparent (foi codificado de azul → agora derivado de --color-primary). Característica Partilhada (um componente, correcto no teclado) - Agora uma âncora real (NextLink): Tab/Enter/middle-click trabalho e o anel foco-visível pode finalmente disparar. Adiciona usoReducedMotion guard, enquantoInView entrada sobre a facilidade da casa, chip iluminado família-acente, contagem de atenção pip, níveis de peso, e onClick passagem. Revive a intenção de cor por módulo que foi descartada na renderização. Apaga o cartão interno bifurcado. Principal - Masthead (mono kicker + tempo/nome saudando + faixa de status tabular) substitui o banner org-only; oklab Backdrop substitui a marca d'água cinza-multiplicada; launchpad de duas camadas em forma de permissão (usage-ordered primário + diretório agrupado) por uma tira de atenção "Precisa de você hoje" e "Jump back in" (new useHomeRecent + global RecentRouteTracker); estados adaptativos esparsos/vazios; real <h1> + marcos. Configurações - A renderização orientada pelo registro substitui 18 blocos de colapso com copypasted: trilho section-index pegajoso + IntersectionObserver rolagem-spy + contagens ao vivo, 4 super-grupos, divulgação progressiva (Aberta pessoal, recente, restauração de última seção, expansão/colapso tudo), linhas de instrumentos SectionHeader, e um acesso rápido fixo (corta correta MAX RECENT + tempo relativo + Iniciar aqui). Preserva exactamente todas as permissões/produtos. Corte transversal: esqueleto + Estado Vazio, prefere-reduzido-transparência + caminhos de movimento reduzido, por-locale Operador-Label tampas opt-out. Novas cordas de UI aterrissam no dicionário kamo-tradução (pt) em um commit companheiro.

  5. · kamo-shared-library

    * * * * * * * * * * *

    Conversão de assincronização (threads virtuais) e varreduras programadas mantêm um ImgDat separado; save()/merge () cascatas na coleção de imagens órfãs Removal=true «uma colecção com cascata=todos-delete-órfano deixou de ser referenciada pela propriedade instância de entidade». Uma atualização em massa de apenas as colunas de miniaturas evita o gráfico de entidade inteiramente e está a salvo de qualquer fio.

  6. · kamo-internal

    Adicionar resposta Tudo para a área de leitura de mensagens e visão de thread

    Responder Todos foram anunciados (selo teclado-curto + chave i18n), mas não tinham Traficante. Fio: novo computadorReplyAllRecipients helper coloca o remetente Para e todos os outros destinatários originais em Cc, excluindo auto e de-duping Case-insensível. Adiciona um botão, o atalho `a` e uma entrada do menu de contexto no MessageBrowser, além de um botão por mensagem no ThreadDetailView.

  7. · InitializerService

    Índice parcial único que impõe um pacote de encerramento ativo por empréstimo (eFechar backstop de fechamento duplo)

    CRIAR ÍNDICE UNICO ON mlos closing package (empréstimo file uid) Where status <> 'CANCELLED'. Encosto durável atrás do guarda de idempotência no aplicativo: um pacote de fechamento ativo duplicado conduzir o seu próprio registo MERS + financiamento (um duplo encerramento). Fechar o Pacote vive em compartilhamento-lib com apenas entradas não- únicas @Index e não pode expressar um restrição parcial-única via JPA, então é DDL escrito à mão aqui (KI possui esquema). Idempotente; aplica- se na próxima execução do KI.

  8. · MediaService

    Thumbnail materiais gerados programados em processo

    Uma varredura sem cabeça não pode conduzir o oleoduto de miniatura OTK do ConversionService, então gerar uma página-0 PNG thumbnail via ImageIO logo após armazenar a exportação — materiais programados agora renderizar na grade como qualquer outro, nenhum preenchimento necessário.

  9. · kamo-internal

    Programações de geração recorrentes UI

    ScheduleManager: criar/lista/eliminar horários (receita + diário/semanal/mês + hora/dia + alvos automáticos opcionais + legenda); lançado a partir de Materiais, fechado na capacidade Canva autofill (Enterprise). + canvaApi + /api/canva/agenda proxies.

  10. · MediaService

    Geração programada — varrer as receitas numa cadência

    - CanvaScheduleController: CRUD para horários de org (receita + cadência + hora/dia + alvos sociais opcionais), calcula nextRunAt - CanvaGeneration Serviço: sem cabeça ********************************* Material (em processo ImageService; sem miniaturas até ao enchimento) - CanvaScheduleSweep: @Scheduled sweep, atômico por-schedule reivindicação, gera e o melhor esforço auto-posts o resultado para as conexões sociais costura pública-URL assinada

  11. · kamo-shared-library

    CanvaSchedule entity + repo (geração recorrente)

    Programação recorrente (receita + cadência + metas sociais opcionais) com uma consulta de reivindicação atômica para que uma varredura MediaService execute cada horário devido uma vez.

  12. · kamo-internal

    Transcrição Sussurro expansível em linha no correio de voz softphone + chamadas-história linhas

    Cada linha gravada (correio de voz e histórico de chamadas) obtém um 'Transcript' comutando isso Obtém a transcrição Whisper da gravação a pedido e mostra-a em linha, então os membros podem lê-lo sem abrir o jogador. Cache por gravação.

  13. · kamo-internal

    Salvar + reutilizar receitas de preenchimento automático

    ModeloAutofill: "Receitas salvas" chips carregar um modelo + mapeamento pré-preenchido; "Salvar como receita" persiste o modelo atual + valores de campo org-wide. + canvaApi list/salve/delete + /api/canva/recipes proxies.

  14. · MediaService

    Receitas de preenchimento automático salvas CRUD (org- scoped)

    CanvaRecipeController: GET/POST /api/media/canva/recipes + DELETE /{id} — salvar/lista/soft-delete um mapeamento de campo chamado marca-template +, escopo para o Org de ouvinte.

  15. · kamo-shared-library

    CanvaAutofillRecipe entity + repo (receitas de preenchimento automático salvas)

    Org-shared chamado vinculação de um modelo de marca Canva para valores de campo (literal texto ou uma imagem de Materiais), para que os administradores possam executar novamente uma fusão de dados padrão.

  16. · kamo-internal

    Adicionar campo ID do material para criar formulário, página de detalhes e importações

    Threads a nullable materialId (max 40) através do tipo Lead, leadsApi (criar + atualizar solicitações de fio), e o campo de campo de leads compartilhado lista — que conduz tanto o assistente de importação manual como a API/vendor mapeamento de entrada UI (mais o modelo CSV para download). Adiciona a entrada para /leaders/new e uma linha view/edit na página de detalhes do lead, com Mapa em tempo real. Etiquetas via leads.new.fields / leads.view.fields / leads.view.rows (materialId).

  17. · kamo-internal

    IU de preenchimento automático empresarial — modelos de marca de fusão de dados

    ModeloAutofill: escolha um modelo de marca Canva, preencha cada campo com literal texto, um símbolo org/compliance (NMLS #, Equal Housing disclosure, nome org/telefone/ site/endereço, nome de membro) ou uma imagem de Materiais; gerar uma imagem mesclada com dados projetar e importá-lo de volta para Materiais. Fechado no Canva 'autofill' Capacidade. + métodos CanvaApi e /api/canva/{brand-templates, **************************** Proxies.

  18. · MediaService

    Preenchimento automático empresarial — modelos de marca de fusão de dados

    - CanvaApiClient: list brand templates (dataset=non empty), obter dataset, trabalhos de carga de ativos, criar/obter trabalhos de preenchimento automático - CanvaController: GET /brand-templates, GET /brand-templates/{id}/dataset, POST /autofill — resolve campos de imagem carregando os MATERIAIS referenciados material para Canva como um ativo, em seguida, data-merges; pesquisas para o novo projeto. Canva 403 (sem capacidade de preenchimento automático) superfícies como autofill not disponível.

  19. · SecurityService

    Persistir o ID de material mapeado na importação manual + entrada de API

    Ambos setDirectFieldOnCreateRequest switches não possuem uma caixa padrão, então um Sistema não mapeadoFieldPath é deixado em silêncio. Adicionar uma caixa de materialId ao Importação manual (LeadImportController) e fornecedor/intake API (LeadIntakeController) os expedidores assim que uma coluna/campo do ID do material mapeado realmente persiste.

  20. · kamo-shared-library

    Adicionar o campo ID do material de ponta a ponta na lib- partilhada

    Adiciona um material nullable, max-40-charId à entidade líder (MATERIAL ID VARCHAR(40)), regista-o no LeadHistoryFieldRegistry (categoria de perfil) assim as edições são auditadas, threads-lo através de Criar/Atualizar/Leia DTOs e LeadService create/update (trim + truncate to 40, espelhando companyName), e preserva-o através da base<->mortgage conversão de chumbo.

  21. · kamo-internal

    Anexo social + email-a-material + links públicos

    Distribuição para materiais de marketing, construída sobre a nova costura pública-URL assinada. - materiaisApi.publicLink(imgId) + /api/materials/link proxy - Materiais: "Copiar link público" e "E-mail este material" um envio de saída através da parte /api/email/enviar existente, fechado no e-mail org) - MaterialPickerDialog (quadril reutilizável sobre a assoc MATERIAL) - SocialComposer: o botão foto uma vez desactivado agora abre o coletor e liga um material como meio de publicação através da sua URL pública (funções para Meta/Telegrama/Discord)

  22. · MediaService

    URLs públicas de curta duração assinadas para ativos de marketing

    Permite aos provedores sociais (Meta) e e-mail obter um material específico para um limite janela sem expor o balde de material de imagem privado. - MaterialUrlSigner: HMAC-SHA256 (platform.enc-key) token = imgId:orgId:exp, 1h TTL - Controlador de Materiais: POST /api/media/materials/link (auth → menta URL para um Imagem material de propriedade de org) + GET * ****************** (auth →) serve bytes para um token válido; org + assoc verificado). Monta o existente sem sessão /api/media/** forward — nenhuma mudança APIService necessária.

  23. · kamo-shared-library

    Transição de auto-submissão do mutuário de primeira classe

    PROJECTO→APLICAÇÃO TAKEN para um mutuário (uma parte emprestada, não um operador, por isso não LOS TAKE APLICATION). Rotas através do transition() com um predicado escopo que concede apenas o direito de tomada-aplicação e um fixado paraStatusId, por isso o mutuário A apresentação torna-se uma transição adequada do gasoduto — a legalidade do Estado-Máquina, marco hash-chained, o ApplicationSubmission (INICIAL DISCLOSURE), e o afterCommit STATUS CHANGE event – em vez de um status de arquivo de empréstimo silencioso. O membro do partido do empréstimo é verificado pelo chamador.

  24. · kamo-internal

    Excluir + pré-visualização + importar-arquivo-para-Canva

    - apagar um material (aberto em MANAGEM MATERIAIS) com confirmação - clique em uma miniatura para visualizá-la em uma caixa de luz - "Importar um arquivo" transforma um PDF / PPTX / imagem em um projeto Canva editável (proxy reconstrói o corpo multiparte como o uploader de imagens)

  25. · MediaService

    Importar um ficheiro para o Canva como um desenho editável

    - Está bem. (importação de projecto binário) - CanvaController POST /importações (multipart) → criar+poll trabalho de importação → editor ligação profunda com correlação state para retorno-nav - drop now- unused Base64 import in CanvaOAuthController

  26. · InitializerService

    Migração adiciona a coluna registro.transcript TEXT

  27. · VOIPService

    Devolver a transcrição nos metadados de gravação do leitor de softphone

  28. · kamo-internal

    Mostrar transcrição Whisper no softphone media player

  29. · ConversionService

    Serviço de Transcrição Compartilhada + Endpoint genérico; transcreva gravações VOIP

    - Extrair um serviço de transcrição reutilizável (fmpeg normalize -> sussurre- asr) e um PÓS genérico /api/conversão/transcribe endpoint, substituindo o meet-specific controlador. Conheça + VOIP agora compartilhe um caminho de transcrição. - Controle de Processo de Gravação: transcreva cada gravação finalizada do VOIP/voicemail in-process (não fatal sobre falha) e armazenar a transcrição na gravação.

  30. · kamo-shared-library

    Transcrição coluna em Gravação + GravaçãoMetadata

    Adiciona uma coluna de TEXTO TRANSCRIPT à entidade de Gravação e insere uma transcrição Não, não, não. (com compatibilidade para trás os construtores assim que os chamados de 5 e 9 arg existentes não são afetados). Populada pela gravar- finalizar o fluxo via Whisper; criado pela migração do KI.

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