Ir para o conteúdo
KAMOUniverse

Changelog

O que há de novo.

Cada melhoria para a plataforma, como ele envia.

  1. · MediaService

    Verificar a assinatura JWT do nav- de- retorno; actualizar o 'token'

    - CanvaJwtVerifier: verificar a assinatura Ed25519 da correlação jwt contra JWKS do Canva (/connect/keys), mais aud/exp/type; chaves em cache por kird. Return-nav agora falha ao fechar a importação manual se a verificação falhar. - CanvaTokenService: solte o ineficaz @Transactional no auto-invocado assistentes de atualização/markDown (tx por chamada de dados de Primavera + o bloqueio por membro já fazer a rotação do token correto); esclarecer com um comentário.

  2. · KlusterServices

    Tornar o sussurro-asr independentemente escalável (HPA, multi-node)

    Remova o pino de um único nó e mude para um cache de modelo por pod para pods agendar em qualquer nó, e adicionar um HPA (min 1 / max 4, CPU 75%, deliberado dimensionamento dado lento modelo de arranque a frio). sussurro-asr é a transcrição compartilhada infra-estrutura para gravações de reuniões e gravações/correio de voz VOIP.

  3. · KlusterServices

    Rebrand Guacamole status de conexão do cliente para KamoDesktop

    Substituir ******************* A ligação ao ecrã do Guacamole... (e estado relacionado) lê KamoDesktop.

  4. · MediaService

    Ingerir gravação, retenção/quota, uso de armazenamento, pipeline sumário

    - MeetRecordingController: interna (X-Internal-Auth) ingere o ponto final do jibri finalize.sh posts terminou as gravações para. - MeetRecordingService: envia gravações para o MinIO (imagem-meet-gravações), persiste MeetingRecording metadados, aplica a cota de armazenamento org (evict older), e — quando pós-EncontroResumo Enabled — executa o oleoduto sumário: transcrição (EmailService template de reunião-síntese). - MeetRecordingRetentionSweep: eliminação programada de gravações de retenção passada. - MeetConfigController: GET /graving-usage para o medidor de armazenamento de configurações reais. - application.yml: conversion/ai/email base URLs + interna auth secret. Requer (ops): Execução do KamoInitializer para criar MEETING RECORDINGS; o **************************** valor deve corresponder entre MediaService, jibri, e Serviço de Conversão.

  5. · EmailService

    Vars de amostra para antevisão do modelo de resumo de reunião

    Adiciona uma caixa de exemploVariáveis para o novo modelo de resumo de reunião para o administrador Preview UI torna conteúdo realista.

  6. · kamo-shared-library

    Modelo canónico da reunião-síntese

    Adiciona o modelo transacional "reunião- resumo" (sujeito + HTML marcado com {{ roomName}} e em bruto { { summaryHtml}) e regista- o no CANONICAL KEYS assim que sementes por org. Usado pela entrega de resumo de IA pós-sessão. Também corrige o O teste do carregador é a contagem de chaves.

  7. · KlusterServices

    Módulo de moderador de prosódia, sussurro-asr, envio de gravação jibri

    - Meet-prosody: versão-controlar o configMap de plug-ins personalizados (captura o token verification no-op existente sobreposição que foi criada fora da banda) e adicionar o módulo canônico mod token moderação, habilitado via **************************** Faz o JWT `moderador' reivindicar autoritário — os membros tornam-se proprietários, os hóspedes/anônimos não podem agarrar o proprietário. - sussurro-asr: discurso-a-texto auto-hospedado (UCP mais rápido-sussurro, sem chave externa) para transcrição pós-sessão. - Meet-jibri: finalize.sh agora envia gravações terminadas para o MediaService Com a X-Internal-Auth, por isso, pousam MinIO + retenção de acionamento/quota + resumos. Segredo é opcional então jibri ainda começa se estiver desligado.

  8. · ConversionService

    Endpoint de gravação da transcrição para resumos pós-sessão

    POST /api/conversion/meet/transcribe (X-Internal-Auth): normaliza um envio reunião de gravação para 16kHz mono WAV através de um novo aditivo FfmpegService helper, encaminha- o para o serviço de sussurros-asr auto- hospedado, e devolve { transcrição}. URL do sussurro de kamo.services.whisper.url.

  9. · kamo-internal

    Integração de calendário para reuniões agendadas + medidor de armazenamento de gravação real

    - calendárioIntegraçãoEnabled: quando on, uma reunião agendada do clube é também adicionado ao calendário do criador (através do sistema de calendário existente) autenticado /meet/join link. Os lembretes dos participantes continuam a ser tratados pela Varredor de backend, então não há e-mails de participantes duplicados. - Configurações de gravação: o medidor de armazenamento agora mostra o uso real de per-org GET /api/meet/graving-usage (substituindo o placeholder removido).

  10. · kamo-shared-library

    MeetingRecording entity + repositório para gravações capturadas

    Nova tabela RECORDING RECORDINGS (org, ref reunião, sala, balde MinIO/chave objeto, tamanho, duração, tempos de captura/expiração, estado do resumo) — o registo-mãe para um ficheiro de gravação Jibri acabado, retenção/quota de condução e pós-sessão processamento sumário. A tabela é criada na próxima execução do KamoInitializer.

  11. · kamo-internal

    Aplicativo de marketing, configurações hub, materiais Canva

    Faça com que o Marketing seja um aplicativo de primeira classe habilitado para org e envie o Canva Experiência com materiais. Aplicabilidade: - AppType.MARKETING espelho, Organization.isMarketing getter - nav (navRegistry) + secções de direitos (permissionAppSections, SecurityRoleManager) on organization.isMarketing - Cartão de marketing em CaracterísticasManager (/settings/account?tab=apps) Configurações: - novos /settings/caracteres/centro de marketing (General / Social Media Providers / Canva) - mover provedores de mídia social fora das configurações de CRM para Marketing - 3 locais de navegação atualizados (settings landing, configuraçõesMenu, ConfiguraçõesButton ícone); repoint SocialTimeline em estado vazio Canva: - CanvaIntegrationManager settings tab + canva ProviderDef na plataforma Registo OAuth (+ logótipo) - /api/canva/* proxies (status, connect-start, designs, exportações, exportação-proxy, desconexão) → MediaService - /marketing/materiais: grade de biblioteca (imagem de MATERIAL), upload, Create-in-Canva, Import- from-Canva, return-nav auto- import

  12. · ConversionService

    Video poster-frame miniaturas para materiais de marketing

    Exportações do Canva MP4 (e qualquer upload de vídeo) pular o caminho Docs PDF e obter um thumbnail de poster- frame simples do ffmpeg ( thumb p0. png) em vez de falhar. - Está bem. Ramo da categoria VIDEO - Está bem

  13. · MediaService

    Canva Connect OAuth + projeta/exportar infraestrutura

    - CanvaApiClient: PKCE autorizar, troca de token/refresh/revoke, usuários, desenhos (criar/listar), trabalhos de exportação, obter byte - CanvaTokenService: tokens criptografados por membro (PlatformSecretCipher), atualização proativa de voo único (Toques de atualização Canva são de uso único/rotação) - CanvaOAuthController (permit-all): ligação intenção → /start → /callback, aterragem de navegação de regresso - CanvaController (authed): status, connect-start, create/list designs, export (create+poll+cache), byte export-proxy, desconectar

  14. · kamo-shared-library

    Integração com Canva + Marketing como um aplicativo de org-able

    - Está bem. — plataforma Canva Connect registro de cliente - ImageAssocType.MATERIAIS(13, image-materials) — material de marketing de org balde - Está bem. em ServiceType.MARKING - ServiceType.MARKETING(24) → COMPLETED/enabled para que se torne um aplicativo real (O FeatureController fornece automaticamente ON por org, como CRM) - Entity + repo do CanvaConnection: tokens criptografados por membro (access+refresh)

  15. · KlusterServices

    Activar a remarcação Guacamole json-auth SSO + KamoDesktop

    - JSON SECRET KEY (opcional) no guacamole a partir do ambiente de trabalho compartilhado-secreto habilita o pacote guacamole-auth-json extensão o deus-SSO links validar contra. - extensão kamo-branding (título=KamoDesktop, logotipo kamocrm + favicon) construída a partir de desktop/guacamole/branding/ em um .jar, enviado como um esquema binário e semeado em GUACAMOLE HOME através de um initContainer. - CI cria a chave de assinatura compartilhada em ambos os espaços de nomes (desktop-sso para guacamole, guac-sso for SecurityService) do segredo GUAC SIGNING KEY; nunca cometido.

  16. · kamo-internal

    Ícones KamoDesktop somente para Deus (Linux + Windows) abrindo sessões conectadas automaticamente

    Dois ícones de navegação deixados do Analytics, mostrados apenas para membros NavGateContext). Cada um obtém um link SSO de curta duração do SecurityService e abre o KamoDesktop gateway em uma nova janela, conectado automaticamente à sua instância. Utiliza o compromisso ******************* Marks.

  17. · SecurityService

    Endpoint de símbolo de SSO KamoDesktop para membros de deus

    - Está bem. (somente elegível para Deus) Token de 5 minutos de guacamole-auth-json (HMAC-SHA256 + AES-128-CBC, por extensão formato do fio) e retorna um auto-login + URL de conexão automática para o KamoDesktop Gateway. Chave de assinatura + senha RDP injetada a partir do segredo guac-sso; nunca commitd (claro-seguro: SSO permanece desativado até configurado).

  18. · kamo-internal

    Nomes dos quartos, formato do quarto, calendário reuniões Kamo, começar lembretes; configurações i18n

    - useMeeting/MeetingDialog: os nomes das salas são agora espaçados pelo símbolo org, por isso dois orgs nunca pode colidir na mesma conferência Prosody, e honrar o org's roomNameFormat (RANDOM vs DISPLAY NAME RANDOM utilizando o apelido do membro). - MeetingComposer (calendário): "Kamo Meeting" botão gera uma sala de org-scoped e define o URL do evento no link /meet/join click-time OTK, então calendário os destinatários do convite + lembrete são assinados como membros verificados. - MeetReminderPopup: assina /topic/meet/reminder/{memberId} (MediaService varredor) e mostra uma "reunião começando" torrada com um botão Join; montado em PresenceWrapper no chat compartilhado WS. - atende às abas de configurações: substitua as cordas de torradeira/erro em inglês codificadas com Próximo-intl t() chaves *************************

  19. · MediaService

    Avisos de início de reunião agendados + expiração do link de hóspedes

    - MeetingReminderSweep: @Scheduled varredor que dispara em tempo real Lembrete de "começar a reunião" para os membros convidados (iniciar - lembreteMinutesBefore) Então, a reunião está marcada? Dedupe. Reuniões mais de uma hora após o início são transicionadas sem lembrete (sem spam de reserva). O cliente constrói o link de junção autenticado da sua própria origem. - * ************* agora homenageia o convidadoLinkExpiryHours: uma reunião mais antigo do que a janela configurada da org (ancorada no início agendado, caso contrário criação) é tratada como não unível (0 = nunca expira).

  20. · kamo-internal

    Mostrar a disponibilidade dos membros na lista de chats; renomeie a aba para a pasta

    1:1 linhas de bate-papo agora superfície a presença ao vivo da contraparte + disponibilidade o da mesma forma que a aba Diretório faz — mesmo uso Disponibilidade/usoFontes de Presence e as mesmas cores/rótulos que o MemberItem (ponto + etiqueta maiúscula, pulsando quando online, cinza quando offline), com uma dica. As conversas em grupo mantêm as "de alguém" online" avatar dot; as linhas sociais/de suporte estão inalteradas. A página Membros é renomeada para "Directório" (apenas valor i18n), que também limpa a colisão de nomes com o grupo sub-tab "Membros".

  21. · KlusterServices

    Ambiente de trabalho remoto KubeVirt endurecido + gateway Guacamole

    Adiciona uma pilha completa de desktop remoto, aplicada pelo GitOps através do fluxo de trabalho de implantação: - KubeVirt + CDI instalado na hora de implantação ( URLs de lançamento em mesa fixa) - desktop-1: Kubuntu 24.04 VM, 8 vCPU / 16Gi / 500Gi Disco de bloqueio Longhorn, masquerade net (DNS de cluster nativo), sessão do KDE xrdp; cloud-init instala Chrome, VS Code, NetBeans, Temurin JDK 21+17, Headlamp, Kate, LibreOffice e remove o Firefox - Apache Guacamole (guacamole + guacd + Postgres config DB) em desktop.kamocrm.com; o guacd executa o hostNetwork no k1m1 para que possa ser WoL- broadcast e RDP diretamente na LAN 192.168.4.0/22 enquanto ainda alcança a VM via ClusterFirstWithHostNet DNS - LAN Windows PC (192.168.4.44, MAC f4:4d:30:62:8a:68) adicionado como uma conexão com Guacamole nativo Wake-on-LAN (pacote mágico na conexão, 30s esperar) - Endurecimento da borda: Traefik TLS + apertado desktop-taxa-limite + cabeçalhos de segurança, mais Guacamole embutido por-IP força bruta proibição - auto-cert: desktop.kamocrm.com adicionado ao STATIC DOMAINS + espelho cross-ns assim cert-manager issues/renews tls-desktop-kamocrm-com into the desktop ns - Credenciais: 'sage' do utilizador; senha injectada do DESKTOP PASSWORD secreto do CI no momento da implantação (envsubst/sed + imperativo secreto) — nunca autorizado

  22. · kamo-internal

    Sub- tabs para grupos de conversação, lembre- se da última página aberta

    A lista de chats filtrada por uma linha de chips de comprimidos multi-selecionados que procuraram de lugar sob a aba Chats. Substitua-os por uma barra de subtab única (uma guia por grupo: Membros da Equipe / Membros / Social / Suporte) estilo para combinar as abas Membros/Chats pai, então a lista do grupo selecionado preenche o todo área de conteúdo. - Single activeBucket em vez de um conjunto de baldes activos; o servidor irá buscar agora puxa apenas a categoria seleccionada. - Por omissão para os membros da equipa, e persiste a última página aberta por membro (across dispositivos) através do ui-preferences store (chave chatsActiveBucket), primeira busca até que a aba salva resolva para que ela carregue diretamente.

  23. · kamo-internal

    Explicar quando o e- mail não está configurado; gate compower

    A caixa de entrada /mensages anteriormente renderizou sua shell completa mesmo quando a org não tinha provedor de e-mail ou o membro não tinha caixa de correio, falhando silenciosamente Chamada da API. Adicionar um gancho de disponibilidade de e-mail compartilhado que resolve se o e-mail é utilizável e, se não, porquê (fornecedor não configurado vs. nenhuma caixa de correio) e se o membro atual pode auto-servir a correção com base em seus direitos. - MessageBrowser agora mostra um elegante painel EmailNotConfigured em vez de um caixa de entrada vazia, com cópia + CTA que se adaptam à razão e do membro direitos (link para configurações do provedor de e-mail para MANAGEM EMAIL SETTINGS, ou para sua própria guia de caixa de correio para MANAGEM EMAIL ACCOUNTS; caso contrário, diferir para admin). - MailButton desabilita "Compor Novo Email" até que o e-mail esteja totalmente pronto, com um dica de ferramenta específica da razão; NavToolButton ganha suporte a itens desabilitados/tooltip. - Âncora a regra `mensagens/` gitignore para o repo root para parar também ignorando aplicativos/componentes/mensagens/ (que silenciosamente deixou cair novos arquivos lá).

  24. · kamo-internal

    Todos os tipos Lista de bate- papos + atenção navegador-tab

    Chats sub-tab agora lista membro, grupo, suporte e conversas sociais em conjunto, o mais recente primeiro, com um filtro multi-selecionado Membros / Social / Suporte; os dois primeiros usam as etiquetas personalizadas da org). Membros da Equipe vs Membros é dividido por membro de contrapartidaTipo; linhas de suporte mostrar se você ou a outra parte é o agente; cada linha abre sua janela de ferramenta nativa (chat / support / social). Adiciona TabAtenção: um crachá favicon + documento piscando. título quando lá são mensagens invisíveis de qualquer tipo de bate-papo (contagem vermelha) ou um líder de aceitação pendente (em âmbar, o parafuso, combinando o ícone leads/CRM; tem prioridade). Lê o existente UnreadContext + LeadAlertContext, então nenhuma nova infra- estrutura.

  25. · MediaService

    Alimentação de Chats Unificados em sessões de membros/suporte/sociais

    GET /api/media/sessions/chat agora aceita um filtro de `categorias' (chat, suporte, social; padrão todos) e retorna um globalmente mais recente-primeiro, mesclar as consultas por tipo. Cada linha carrega: - sessionType (CHAT oSUPPORT o SOCIAL) + membros[].memberType so the client pode dividir chats internos em membros de equipe vs membros, - ticketId + supportRole (AGENT – REQUESTOR – suporte bidirecional) para linhas de suporte, e provedor + conexão Título das linhas sociais, então cada linha abre sua janela de ferramentas nativa.

  26. · kamo-shared-library

    Consultas Paged para suporte + sessões de chat social

    alimentação para que a lista de bate-papos unificada Interaction Center possa incluir todos os tipos: - APOIO (TYPE ID=2): sessões em que o membro é o agente atribuído OU o solicitante (também devolve o ID do ticket + o ID do agente atribuído para a linha). - SOCIAL (TYPE ID=3): sessões sobre ligações sociais de propriedade do membro organização.

  27. · kamo-internal

    Terminar as ações de cabeçalho de visualização do lead + callbacks

    - Cabeçalho: Chamada dividida em Chamada (trabalho) / Chamada (pessoal) abrindo o softphone (escondido quando o membro não tem extensão registrada), Email abre o compositor, Texto -> comms/texts, Nota moveu-se para a esquerda com uma regra e pisca até uma nota é colocada desde a última reatribuição. Remover o botão Tarefa. - Status: solte o menu Invalid Change Status e o botão Edit Status quebrado; adicionar uma linha STATUS > SUB-STATUS que requer escolher um sub-status e apenas ativa a atualização quando ela muda. - Retorno de chamada: diálogo (data/hora + fuso horário + comentário), uma lista pendente/excedida em a aba de detalhes com prompts de marca contatados/cancela, e leadsApi + proxy rotas de programação/lista/resolve.

  28. · EmailService

    Endpoint interno para criar/cancelar o evento de calendário de um membro

    POST /api/internal/calendar/eventos (X-Internal-Auth gated) resolve membro -> usuário -> calendário primário (criando um padrão se necessário) e cria um evento. Usado pelo SecurityService para espelhar callbacks de liderança no calendário de um membro.

  29. · SecurityService

    Endpoints de retorno de chamadas (agendamento/lista/resolve)

    Nova ************************* controlador + serviço: persiste o callback, posts de agendamento / notas de resultado no fluxo de mídia do líder, e reflete a chamada de volta para o calendário do membro agendando via EmailService Endpoint do calendário interno (melhor esforço).

  30. · kamo-shared-library

    Adicionar entidade LeadCallback, status enum e repositório

    Retorna o recurso de callback de visão principal: um registro de callback de propriedade do líder (PANDING/CONTACTED/CANCLED) keyed off leadUid, com uma referência suave a o evento de calendário espelhado do EmailService.

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