Ir para o conteúdo
KAMOUniverse

Changelog

O que há de novo.

Cada melhoria para a plataforma, como ele envia.

  1. · kamo-internal

    Os membros escolhem rolar a lista de mensagens ou navegar por páginas

    A segunda coluna só carregou mais e- mail quando foi rolado. Um membro agora pode escolher Scroll ou Páginas em Filtros ("Browse the list"). A escolha é mantido por membro em ui-preferences (emailListBrowse) por isso segue-os entre dispositivos; o Scroll permanece o padrão, para que ninguém veja uma mudança até Eles fazem um. Páginas mostra cinquenta mensagens de cada vez com Primeiro / Anterior / Página X de Y / Próximo / Último no pé da lista, e "51-100 de 1.240" onde a pasta árvore tem uma contagem (o intervalo sozinho para uma etiqueta ou uma pasta inteligente). Virar a página substitui as linhas em vez de anexar, limpa a seleção e o Atualizações ao vivo manter o lugar do membro: uma mudança de caixa de correio recarrega a página em tela em vez de retornar à página 1, e uma página que esvaziou etapas Atrás. Os resultados da pesquisa mantêm o seu próprio pager; apenas a primeira página de uma pasta Está guardado. Os modos de comutação começam novamente do topo quando mais do que o A primeira página foi carregada. Cordas: dicionário de tradução kamo 135c6cc5

  2. · kamo-internal

    Os membros escolhem rolar a lista de mensagens ou navegar por páginas

    A segunda coluna só carregou mais e- mail quando foi rolado. Um membro agora pode escolher Scroll ou Páginas em Filtros ("Browse the list"). A escolha é mantido por membro em ui-preferences (emailListBrowse) por isso segue-os entre dispositivos; o Scroll permanece o padrão, para que ninguém veja uma mudança até Eles fazem um. Páginas mostra cinquenta mensagens de cada vez com Primeiro / Anterior / Página X de Y / Próximo / Último no pé da lista, e "51-100 de 1.240" onde a pasta árvore tem uma contagem (o intervalo sozinho para uma etiqueta ou uma pasta inteligente). Virar a página substitui as linhas em vez de anexar, limpa a seleção e o Atualizações ao vivo manter o lugar do membro: uma mudança de caixa de correio recarrega a página em tela em vez de retornar à página 1, e uma página que esvaziou etapas Atrás. Os resultados da pesquisa mantêm o seu próprio pager; apenas a primeira página de uma pasta Está guardado. Os modos de comutação começam novamente do topo quando mais do que o A primeira página foi carregada. Cordas: dicionário de tradução kamo 135c6cc5

  3. · kamo-internal

    Chess e Hold'em loops de música de fundo enquanto sua janela está em uso

    Três novos jogos de eventos sonoros — Chess Background, Holdem Background e Lobby Holdem — jogado na repetição com startLoopingEventSound. Loops de xadrez sempre que uma janela de xadrez estiver aberta; Hold'em joga o fundo em uma mesa e a música do átrio no átrio. Cada um só é ouvido enquanto a sua janela é a janela em uso e a aba do navegador tem foco, e reiniciado) caso contrário. O loop segue as configurações de som do membro ao vivo.

  4. · kamo-internal

    Chess e Hold'em loops de música de fundo enquanto sua janela está em uso

    Três novos jogos de eventos sonoros — Chess Background, Holdem Background e Lobby Holdem — jogado na repetição com startLoopingEventSound. Loops de xadrez sempre que uma janela de xadrez estiver aberta; Hold'em joga o fundo em uma mesa e a música do átrio no átrio. Cada um só é ouvido enquanto a sua janela é a janela em uso e a aba do navegador tem foco, e reiniciado) caso contrário. O loop segue as configurações de som do membro ao vivo.

  5. · kamo-internal

    Quadro de imagem diz quando um upload chega, reproduz vídeos uma vez ou na repetição, e abre tela cheia

    - Os envios mostram o arquivo, o seu lugar no lote e progresso byte, em seguida, um brinde quando ele está em. - Vídeos de uma moldura reproduzidos em repetição (laop enquanto mostrando, realizada para jogadas inteiras) ou uma vez (mais tarde passa mostrar o último quadro como um imóvel). - O som toca apenas enquanto o ponteiro está sobre o quadro; "Vídeos mudos" torna-se "Som sobre pairar". - Clicando no quadro pausa e abre o que está mostrando tela cheia com um download, e um vídeo jogador com jogo/pausa, reiniciar, procurar, decorrido/total, mudo, volume e tela cheia. Fechando. retoma o slide com o tempo que lhe restava.

  6. · kamo-internal

    Quadro de imagem diz quando um upload chega, reproduz vídeos uma vez ou na repetição, e abre tela cheia

    - Os envios mostram o arquivo, o seu lugar no lote e progresso byte, em seguida, um brinde quando ele está em. - Vídeos de uma moldura reproduzidos em repetição (laop enquanto mostrando, realizada para jogadas inteiras) ou uma vez (mais tarde passa mostrar o último quadro como um imóvel). - O som toca apenas enquanto o ponteiro está sobre o quadro; "Vídeos mudos" torna-se "Som sobre pairar". - Clicando no quadro pausa e abre o que está mostrando tela cheia com um download, e um vídeo jogador com jogo/pausa, reiniciar, procurar, decorrido/total, mudo, volume e tela cheia. Fechando. retoma o slide com o tempo que lhe restava.

  7. · kamo-internal

    Painel de onboard para um mercado sem fornecedores ainda

    Um mercado sem produtos fornecedores nunca pode mostrar um chumbo (um chumbo precisa de produto), assim /leaders agora substitui a grade para esse mercado com o mesmo painel de bordo usado quando não existem mercados, apontando os gestores para Fornecedores e Produtos. "Todos os Mercados" só o mostra quando nenhum mercado tem. O CTA abre as configurações de vendedor nesse mercado via ?marketId=, e o o cache de mercados/vendores é re-fetched uma vez por montagem enquanto mercado sem produto, então retornar depois de adicionar um fornecedor mostra a grade.

  8. · kamo-internal

    Painel de onboard para um mercado sem fornecedores ainda

    Um mercado sem produtos fornecedores nunca pode mostrar um chumbo (um chumbo precisa de produto), assim /leaders agora substitui a grade para esse mercado com o mesmo painel de bordo usado quando não existem mercados, apontando os gestores para Fornecedores e Produtos. "Todos os Mercados" só o mostra quando nenhum mercado tem. O CTA abre as configurações de vendedor nesse mercado via ?marketId=, e o o cache de mercados/vendores é re-fetched uma vez por montagem enquanto mercado sem produto, então retornar depois de adicionar um fornecedor mostra a grade.

  9. · kamo-internal

    Começando Org Config Wizard botão recebe uma borda de atenção vermelha

  10. · kamo-internal

    Começando Org Config Wizard botão recebe uma borda de atenção vermelha

  11. · EmailService

    Uma mensagem composta carrega sua reunião, e edições de calendário perguntar antes de dizer aos convidados

    - /api/email/enviar leva reuniãoInvite: o evento é arquivado no remetente calendário na mesma transação, seus ics anda na mensagem composta com um cabeçalho X-Kamo-Calendar-Event, e os destinatários são gravados como convidados. Não segundo e-mail de convite. Um convite para o calendário mantém os próprios anexos do membro. - PUT /api/calendar/eventos toma notificaçãoConvidados: verdade eleva a SEQUÊNCIA e e-mails para todos os convidados; falsos salva sem escrever para ninguém. - Convites de convidados e actualizações saem como cartas de marca da org. - Está bem. liga o convite de uma mensagem ao evento do membro; eventos publicar convidadosConvidado e convidados.

  12. · kamo-internal

    Reuniões de compositores no e-mail, edições perguntar antes de enviar e-mails aos convidados, links de e-mail para o seu evento

    - O compositor envia a sua reunião com a mensagem em vez de um segundo convite. - Salvar uma edição para um evento com convidados pergunta se deve enviar-lhes um atualização (ConvidadoNoticeDialog); sim envia notificaçãoConvidados e mantém convites por e-mail. - Uma reunião que o compositor enviou antes das audiências serem guardadas reabre com os seus convidados. - /mensagens mostra uma reunião de mensagem com um link que o abre em /calendar.

  13. · kamo-shared-library

    Convite de reunião de marca e cartas de atualização para convidados do calendário

    Adiciona modelos canônicos calendar.meeting invite e calendar.meeting updated e MeetingInviteEmail, o construtor variável EmailService os preenche.

  14. · kamo-internal

    Atribuição de membros de equipe em mapeamentos de leads; importação automatizada na tela de mapeamento

    Atribuição. Importações manuais e automatizadas recebem um "membro da equipe designado" alvo (substituindo "Usuário designado", que nenhum importador jamais honrou). Sua diálogo define um membro específico da equipe, sem atribuição ou correspondência de campos: uma lista ordenada tentada por sua vez (um valor em branco ou incomparável move- se), com uma Recuar de ninguém ou de um membro escolhido. O servidor corresponde ao formato- tolerante e nunca adivinha entre duas pessoas; os valores que não resolveram estão listados após uma importação manual e anotado no item de fila de importação automatizada. Importações automatizadas se movem de uma tabela com transformações de texto livre (que o servidor nunca lido) na mesma tela de arrastar e soltar que as importações manuais, com valores amostrais das observações recentes do desfecho. Um adaptador (leaderMappingAdapters.ts) traduz a tela para todas as quatro telas. Tela: as transformações são editáveis de cada mapeamento (a janela nunca foi atingível), com cada tipo de servidor, entradas de configuração, reordenação e um live antevisão que usa as regras do servidor; várias fontes podem alimentar um campo, ordenado por prioridade; a parte de uma coluna dividida é salva como uma parte dividida transformação para que as importações realmente tomar essa parte; linhas desembaraçar sobre a carga; Apagar/Backspace já não dispara ao escrever; as cartas funcionam a partir do teclado. Editor de modelos: mapeamentos cuja coluna tinha maiúsculas foram descartados na carga e apagado ao salvar, porque os cabeçalhos do modelo retornam em minúsculas.

  15. · DaemonService

    Income mapas de trabalho através do motor compartilhado, com atribuição de membro da equipe

    LeadIntakeProcessingJob constrói cada lead com a biblioteca de kamo-shared LeadRequestMapper em vez de seu próprio interruptor de campo e transformar cópia, então Importações automatizadas aplicam cada transformação de tela (por omissão, agora dispara sobre uma campo em falta), alcançar todos os campos de chumbo, e honrar o alvo de atribuição: um membro fixo, não atribuído, ou uma cadeia ordenada de campos correspondente ao team (e-mail do agente, nome do agente e nome do chamador para o JustCall da Harmony). Os candidatos são os titulares activos do SEEK LEADS (IntakeAssignableMembers, carregado uma vez por lote final). Um valor que não corresponde a ninguém, ou um fixo ou membro de retrocesso que não pode mais tomar leads, é escrito como uma nota sobre o item de fila, para que o administrador possa ver por que um lead chegou sem atribuição. IntakeAssigneeResolver é substituído pelo correspondente compartilhado.

  16. · SecurityService

    Importações manuais e o atraso de entrada através do mecanismo de mapeamento compartilhado

    LeadImportController mapeia todas as linhas com biblioteca compartilhada com kamo LeadRequestMapper em vez de seu próprio interruptor, então manualmente e importações de modelo obter o conjunto completo de campo, cada transformação, e a tarefa de membro da equipe Alvo. O resultado da importação agora carrega o totalAtribuído e os valores atribuídos que não resolveu a um membro da equipa (atribuiçãoIssues). Mapeamentos e modelos são validados ao salvar: um tipo de transformação o servidor não pode aplicar é um 400, não uma string silenciosamente ignorada. LeadIntakeController perde seu motor de entrada duplicado. Voltar ao Processo agora requees FAILED payloads e informa o que está em fila; a entrada do DaemonService O trabalho importa-os dentro de um minuto, o mesmo caminho que uma submissão ao vivo leva. Salvar os mapeamentos de um endpoint requer MANAGEM CRM SETTINGS; replaying the backlog mantém CREATE LEADS. GrantAllRoleResolver e RightHolderResolver delegado na compartilhamento-lib GrantAllRoles/RightHolders, então a lista de membros atribuíveis é a mesma DaemonService usa.

  17. · kamo-shared-library

    Um motor de mapeamento para importações de chumbo, com atribuição de membro da equipe

    Importações manuais, importações automatizadas (entrada) e o diário de bordo cópia própria do código de mapeamento, e eles discordaram: data, regex e split transformações estavam faltando em todos os lugares, as cópias de entrada pularam vazio valores antes de transformar (assim "valor padrão" nunca disparado), vários caminhos as ofertas de tela foram retiradas, e "Assigned User" foi ignorado em todos os três. leads.mapping é agora o único motor: - LeadRequestMapper: lista de regras -> CreateLeadRequest. Mapeamentos executados em ordem e o primeiro valor não vazio por campo ganha; cada caminho leadFields.ts, cada campo hipotecário e campos de formulário personalizados (LeadRequestMapper Testa-o. - LeadFieldTransforms + TransformaçõesJson: cada transformação de tela, um implementação; tipos desconhecidos são recusados em tempo de economia. - Alvo de atribuição "atribuído membro da equipa" (legado "atribuído usuário" ainda lido): um membro fixo, não atribuído ou correspondente a campos. Os campos de correspondência formam um cadeia ordenada - um valor em branco ou incomparável cai para o próximo, o primeiro que nomeia uma pessoa decide, caso contrário o backback do mapeamento (ninguém ou um membro escolhido) aplica-se. O endpoint JustCall da Harmony depende dessa cadeia. - TeamMemberMatcher: tolerante ao formato, correspondência tipo-seguro no e-mail, nome de usuário e nome ("Último, Primeiro", iniciais, apelidos, acentos, um pequeno erro de digitação); Um valor que se encaixa em duas pessoas nunca é adivinhado. - LeadAssignableMembers: os candidatos são os titulares ativos do VEZ LEADS, as mesmas pessoas que o AgentSelector oferece (RightHolders e GrantAllRoles se move aqui do SecurityService para que o DaemonService possa usá-los). Além disso: LeadImportResponse reports totalAssigned and assignedIssues; LeadIntakeService valida transformações antes de substituir mapeamentos e pode requear cargas de pagamento para o trabalho de admissão.

  18. · kamo-internal

    Opções de chamada e reunião em um cartão de voz de um membro do AI (SP92 chamadas)

    Sob as vozes do membro do AI na sala de Identidade do perfil: "Transfira os Agente ou humano" (on), "Mantenham a chamada completa e as transcrições de reuniões em notas" (off) e "In messages": "Tome notas; falar quando endereçado pelo nome" / "Falar com todos, como um telefonema". Cada um salva de uma vez através do relé BFF **************** para AIService; um espectador AIService não os deixa mudar vê-los deficientes e Porquê? Os padrões são como cada AI funcionava antes.

  19. · VOIPService

    V7 — Que colega apela a uma extensão interna (SP92 apela)

    - Está bem. (KAMOAI INTERNAL SECRET) responde ao membro ativo da org do servidor de telefone que a extensão é active-ly atribuído, ou 404 NO MEMBER. kamoai-service pergunta quando uma chamada atinge um membro do AI de uma extensão, então o AI sabe qual colega ligou. Um número de telefone, um extensão não atribuída ou desactivada, outro membro de org ou um que deixou não é ninguém.

  20. · AIService

    Opções de chamada e reunião de um membro do AI, ao lado das suas vozes (o SP92 chama)

    keywordTransfer (default on), keepFullTranscript (default off) e meetingMode COMPANION □ CONVERSATION (default COMPANION), em ai member call options (DDL aplicado à mão, re-runnable; nenhuma linha = os padrões = o comportamento anterior SP92). SUPERVISE AI MEMBERS, muda; o próprio AI não faz nada; um AI aposentado é apenas lido), e o gémeo interno O serviço kamoai lê para cada chamada e reunião.

  21. · kamo-shared-library

    ENCONTRO COMPLETED executar gatilho, para uma reunião de conversação de seguimento (SP92 chamadas)

    Uma reunião em que um membro do AI participou enquanto um parceiro de conversação o acorda uma vez que termina, com sua nota transcrita, o Como faz uma chamada telefónica. STRING-persistido em ai runs.trigger kind (sem verificação); um teste de guarda mantém cada nome do gatilho dentro da coluna.

  22. · kamo-shared-library

    O TRAIT resolvedor e PersonalityProfile — limites, fechaduras, o arquétipo camada virtual, tendência write-through, adaptações, grupos ordenados, a vista eo carimbo de personalidade (KamoCollab CP03 T9)

  23. · kamo-internal

    A aba Gráfico Org na Configuração Essencial, no menu de configurações, na landing page Configurações e na barra de administração de casa (KamoCollab CP02 T24)

    OrgChartPanel depois das Equipas. para quem em toda a organização, somente leitura, de GET /api/security/org-chart (novo relé BFF, forwardToApi + reléUpstream). orgChartApi analisa o gráfico com zod e mantém cada ID uma string; um ID de número é recusado, nunca arredondado. orgChartTree (puro) coloca cada pessoa sob seu gerente quando mostrado, caso contrário um AI sob o seu supervisor quando mostrado, caso contrário na raiz; proprietários primeiro, então pelo nome; um loop de relatório cortado no seu menor id ("Reporting loop"); um oculto gerenciador marcado ("Manager inactive"); o filtro de departamento mantém o sub- árvore do departamento e a pesquisa mantém o nome ou o título do trabalho, ambos com os antepassados que os colocam. O painel desenha uma carta por pessoa (iniciais, nome ligado ao perfil através do próximo / link, título do trabalho, departamento e até três fichas de equipe, então +n, crachás AI, Proprietário, Inativo, Chefe, Líder e Supervisionado por quando o supervisor não é o cartão acima, a contagem de relatório direto), trilhos de conector in --accent- people, três níveis abertos, EmptyState, ErrorState with retry, e um refresco vivo como seus irmãos. ErroO Estado ganha uma opção Tente novamenteLabel. Também exposto por mestre R1-37: { chave: 'orgChart'} após as equipas no menu de configurações, uma entrada orgChart após Equipes na barra de administrador, e uma Cartão de aterragem após Equipas. essencialSetupExposição, configuraçõesLandingCards e teamsTab siga a nova aba.

  24. · kamo-shared-library

    Os sete arquétipos incorporados — 56 valores de base, os grupos Any e quatro adaptações cada, a prosa verbatim, preenchimento e o olhar embutido (KamoCollab CP03 T8)

  25. · kamo-internal

    Equipes no cartão de membro e no diretório (KamoCollab CP01 T25)

    O cartão de membro mostra as equipes de um membro da equipe sob seu título e departamento: até três chips na ordem do servidor, em seguida, "+n", cujo A dica nomeia o resto. Uma carta sem equipes, ou cuja equipe leu falhou (times deixados de fora, CP01-T16-1), não desenha nenhuma linha de equipe. Linhas de pastas equipes através de normalizarDiretórioPessoal, filtroPessoas corresponde a uma equipe título, e o membro picker coloca até dois títulos de equipe e "+n" em um linha de detalhe da pessoa, ao lado do departamento, com toda a linha em sua dica. Um analisador (app/lib/teams/teamRefs.ts) lê [{id, title}] para As duas coisas.

  26. · kamo-shared-library

    O modelo charter para a camada ORG, PESSOALIDADE e DocsTION — o vocabulário, as doze colunas de itens, o item charter org, arquétipos org e seus repositórios; validação ainda recusa as novas seções (KamoCollab CP03 T7)

    CharterLevel acrescenta ORG após a equipe CP01; CharterRule adiciona TRAIT e COLLAB; CharterSection apensa a PESSOALIDADE (TRAIT, 160) e Docstion (COLLAB, 60), tanto aiOnly quanto não supressor; CharterValidationReason adiciona AUTORIDADE LANGUAGEM E GRUPO INCONSISTENTE. CharterItem, CharterItemData e CharterItemDTO carrega os doze campos da seção 5.2 e escreve, toData, toDto, rejeiteFields e CharterView. item carregá-los (escrita recusa um número a PEQUENAINT não pode aguentar). MAX ITEMS PER OWNER é 500 (D4). Até à Tarefa 12, A validação recusa um item PESSOALIDADE ou DocsTION com UNKNOWN SECTION, e Os marcadores são recusados em ORG como em ROLE (D2). Novo ItemMark para a seção resolvedores. Novas entidades OrgCharterItem (org charter items), OrgPersonality Arquétipo e OrgPersonalidade ArquétipoItem com seus repositórios, e contagemByArchetypeRef sobre o papel, departamento, cargo e repositórios de itens membros. A verificação do título compara lower() como o índice único. As colunas e tabelas existem em produção (CP03 Tarefa 3).

  27. · kamo-internal

    O espelho conhece PESSOALIDADE e DocsTION (escondido até CP09), o nível ORG e os tipos de personalidade e Docstion resolvidos (KamoCollab CP03 T21)

    - sections.ts: SectionSpec.editor; as duas seções anexadas com as regras do editor false; TRAIT e COLLAB; SeçõesInBand lista apenas seções editadas; MAX ITEMS PER OWNER 500 (D4). - items.ts: ocultar marcadores recusados no ORG em vez de ROLE (D2); seções que o editor não edita são contado para o cap e de outra forma deixado para o servidor, como desconhecidos (D21, D22). - types.ts: Nível ORG, OUT OF BOUNDS, os campos de doze itens, resolvidos. personalidade e Resolvido. Docstion per spec 5.6.4. - O painel de pré-visualização conta e as fichas da galeria de modelos ignoram secções escondidas. - Novo charterSectionParity test lê CharterSection.java e CharterItems.java.

  28. · kamo-internal

    A cabeça de um departamento — a coluna Cabeça (nome, Vacant, Inativo), o campo de cabeça e o seletor da janela (pessoal ativo; membros do AI listados, mas não colhíveis), definir através de PUT .../cabeça após o departamento salvar; e o gerente de um membro torna- se administrador para mudar no cartão Posição (KamoCollab CP02 T23)

  29. · kamo-shared-library

    PersonalityTextLint — os sete padrões de linguagem de autoridade da especificação §5.9, as exceções look-forward e {orgShortName}, apóstrofos tipográficos e espaçamento Unicode (KamoCollab CP03 T6)

  30. · kamo-internal

    Equipes no formulário de criação-membro, para uma pessoa e para um aluguer de AI (KamoCollab CP01 T24A)

    /settings/equipe-membro/novos ganhos Equipes em sua placa de papel: uma escolha múltipla as equipes da organização (cliente das equipes), ofertaram a quem pudesse mudar Equipes de um membro no perfil (equipesEditAtCreate, campo de equipes posiçãoPortão direito: MANAGEM MEMBER SECURITY) e oculto de outra forma. As escolhas sair como timeIds, para uma pessoa e para um aluguer AI (aiHirePayload mantém Eles); sem escolha, sem chave. Uma recusa das equipas (400/403/409 com teamIds) mostra no campo e no banner, no dicionário palavras onde as tem, NÃO ALTERADO incluído. Uma antevisão da carta de aluguer do AI agora inclui as equipes escolhidas, a camada TEAM com que vai começar. Os vivos O resumo dá nomes às equipas.

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