Changelog
Qué hay de nuevo.
Cada mejora de la plataforma, a medida que se envía.
· kamo-internal
Los miembros eligen desplazar la lista de mensajes o navegar por las páginas
La segunda columna solo cargaba más correo mientras estaba desplazada. Un miembro ahora puede elegir Scroll o Páginas bajo Filtros ("Browse the list"). La elección se mantiene por miembro en Ui-preferences (emailListBrowse) por lo que los sigue entre dispositivos; Scroll permanece por defecto, así que nadie ve un cambio hasta Hacen uno. Páginas muestra cincuenta mensajes a la vez con Primera / Anterior / Página X de Y / Siguiente / Último al pie de la lista, y "51-100 de 1.240" donde la carpeta árbol tiene un conteo (el rango solo para una etiqueta o una carpeta inteligente). Turning a página reemplaza las filas en lugar de subir, aclara la selección y la Actualizaciones en vivo mantienen el lugar del miembro: un cambio de buzón recarga la página en pantalla en lugar de volver a la página 1, y una página que ha vaciado pasos atrás uno. Los resultados de búsqueda guardan su propio pager; sólo la primera página de una carpeta está caché. Los modos de conmutación comienzan de nuevo desde la parte superior cuando más que los primera página fue cargada. Pendientes: kamo-translation-dictionary 135c6cc5 ****************
· kamo-internal
Los miembros eligen desplazar la lista de mensajes o navegar por las páginas
La segunda columna solo cargaba más correo mientras estaba desplazada. Un miembro ahora puede elegir Scroll o Páginas bajo Filtros ("Browse the list"). La elección se mantiene por miembro en Ui-preferences (emailListBrowse) por lo que los sigue entre dispositivos; Scroll permanece por defecto, así que nadie ve un cambio hasta Hacen uno. Páginas muestra cincuenta mensajes a la vez con Primera / Anterior / Página X de Y / Siguiente / Último al pie de la lista, y "51-100 de 1.240" donde la carpeta árbol tiene un conteo (el rango solo para una etiqueta o una carpeta inteligente). Turning a página reemplaza las filas en lugar de subir, aclara la selección y la Actualizaciones en vivo mantienen el lugar del miembro: un cambio de buzón recarga la página en pantalla en lugar de volver a la página 1, y una página que ha vaciado pasos atrás uno. Los resultados de búsqueda guardan su propio pager; sólo la primera página de una carpeta está caché. Los modos de conmutación comienzan de nuevo desde la parte superior cuando más que los primera página fue cargada. Pendientes: kamo-translation-dictionary 135c6cc5 ****************
· kamo-internal
Los bucles de música de fondo Chess y Hold'em mientras su ventana está en uso
Tres nuevos eventos de sonido Juegos - Ajedrez Fondo, Fondo de Holdem y Holdem Lobby — jugado en repetición con startLoopingEventSound. Chess loops cuando una ventana de ajedrez está abierta; Hold'em juega el fondo en una mesa y la música del vestíbulo en el vestíbulo. Cada uno se escucha sólo mientras su ventana es la ventana en uso y la pestaña del navegador tiene foco, y muda (no de lo contrario. El bucle sigue la configuración de sonido del miembro en vivo.
· kamo-internal
Los bucles de música de fondo Chess y Hold'em mientras su ventana está en uso
Tres nuevos eventos de sonido Juegos - Ajedrez Fondo, Fondo de Holdem y Holdem Lobby — jugado en repetición con startLoopingEventSound. Chess loops cuando una ventana de ajedrez está abierta; Hold'em juega el fondo en una mesa y la música del vestíbulo en el vestíbulo. Cada uno se escucha sólo mientras su ventana es la ventana en uso y la pestaña del navegador tiene foco, y muda (no de lo contrario. El bucle sigue la configuración de sonido del miembro en vivo.
· kamo-internal
Marcos de imagen dice cuando una subida aterriza, reproduce videos una vez o en repetición, y abre pantalla completa
- Las descargas muestran el archivo, su lugar en el progreso del lote y byte, luego un brindis cuando está dentro. - Los vídeos de un marco juegan en repetición (abajo mostrar, sostenidos para obras completas) o una vez (más tarde pasa) mostrar el último marco como un todavía). - El sonido sólo juega mientras el puntero está sobre el marco; "Mute videos" se convierte en "Sound on hover". - Hacer clic en el marco lo pausa y abre lo que está mostrando pantalla completa con una descarga, y un vídeo jugador con play/pause, reiniciar, buscar, elapsed/total, mute, volumen y pantalla completa. Cierralo reanudar la diapositiva con el tiempo que se había ido.
· kamo-internal
Marcos de imagen dice cuando una subida aterriza, reproduce videos una vez o en repetición, y abre pantalla completa
- Las descargas muestran el archivo, su lugar en el progreso del lote y byte, luego un brindis cuando está dentro. - Los vídeos de un marco juegan en repetición (abajo mostrar, sostenidos para obras completas) o una vez (más tarde pasa) mostrar el último marco como un todavía). - El sonido sólo juega mientras el puntero está sobre el marco; "Mute videos" se convierte en "Sound on hover". - Hacer clic en el marco lo pausa y abre lo que está mostrando pantalla completa con una descarga, y un vídeo jugador con play/pause, reiniciar, buscar, elapsed/total, mute, volumen y pantalla completa. Cierralo reanudar la diapositiva con el tiempo que se había ido.
· kamo-internal
Panel de embarque para un mercado sin proveedores todavía
Un mercado sin productos de proveedores nunca puede mostrar un plomo (un plomo necesita un producto), por lo que /leads ahora reemplaza la red para ese mercado con el mismo panel de a bordo utilizado cuando no existen mercados, señalando a los administradores en Vendedores y productos. "Todos los Mercados" lo muestra sólo cuando ningún mercado tiene. El CTA abre la configuración del vendedor en ese mercado a través de ?marketId=, y el los mercados y la caché de los vendedores se re-fetched una vez por montura mientras mantiene un mercado sin productos, así que regresar después de añadir un proveedor muestra la red.
· kamo-internal
Panel de embarque para un mercado sin proveedores todavía
Un mercado sin productos de proveedores nunca puede mostrar un plomo (un plomo necesita un producto), por lo que /leads ahora reemplaza la red para ese mercado con el mismo panel de a bordo utilizado cuando no existen mercados, señalando a los administradores en Vendedores y productos. "Todos los Mercados" lo muestra sólo cuando ningún mercado tiene. El CTA abre la configuración del vendedor en ese mercado a través de ?marketId=, y el los mercados y la caché de los vendedores se re-fetched una vez por montura mientras mantiene un mercado sin productos, así que regresar después de añadir un proveedor muestra la red.
· kamo-internal
Cómo iniciar el botón del Asistente de Config Config obtiene una frontera de atención roja
· kamo-internal
Cómo iniciar el botón del Asistente de Config Config obtiene una frontera de atención roja
· EmailService
Un mensaje compuesto lleva su reunión, y las ediciones del calendario preguntan antes de decirle a los invitados
- /api/email/send toma la reuniónInvite: el evento se presenta en el remitente calendario en la misma transacción, sus ics paseos en el mensaje compuesto con un encabezado X-Kamo-Calendar-Event, y los receptores se registran como invitados. No Segundo email de invitación. - Un calendario invita a mantener los propios apegos del miembro. - PUT /api/calendar/events toma la notificaciónGuests: verdadero levanta la SEQUENCE y correos electrónicos cada invitado invitado; falso ahorra sin escribir a nadie. - Invitaciones y actualizaciones de invitados salen como las letras de la marca del org. - ¿Qué? vincula la invitación de un mensaje a la evento del miembro; eventos publican invitadosInvitados y asistentes invitados.
· kamo-internal
Viaje de reuniones de compositor en el correo electrónico, ediciones preguntar antes de enviar a los huéspedes, enlaces de correo a su evento
- El compositor envía su reunión con el mensaje en lugar de una segunda invitación. - Ahorrar una edición a un evento con invitados pregunta si enviarlos un Actualización (GuestNoticeDialog); sí envía aviso a los clientes y mantiene invitaciones de correo electrónico. - Una reunión que el compositor envió antes de que el público fuera almacenado reopens con sus invitados. - /mesajes muestra la reunión de un mensaje con un enlace que lo abre en /calendar.
· kamo-shared-library
Cartas de invitación y actualización para invitados de calendario
Añade calendario.meeting invite y calendario.meeting updated canonical templates y MeetingInviteEmail, el constructor variable EmailService los llena.
· kamo-internal
Cesión de miembros del equipo en mapas de plomo; importaciones automatizadas en el lienzo de cartografía
Asignación. Las importaciones manuales y automatizadas obtienen un "miembro del equipo asignado" target (replacing "Assigned User", que ningún importador ha honrado nunca). Es... dialog sets a specific team member, unassigned, or matching from fields: una lista ordenada a su vez (un valor en blanco o inigualable se mueve), con un la derrota de nadie o un miembro elegido. El servidor coincide de forma tolerante y nunca adivina entre dos personas; los valores que no resolveron se enumeran después de una importación manual y señaló sobre el elemento de cola automatizada. Las importaciones automatizadas se mueven de una tabla con transformaciones de texto libre (que las servidor nunca leído) en el mismo lona arrastrar y soltar como las importaciones manuales, con valores de muestra de las recientes presentaciones del endpoint. Un adaptador (leadMappingAdapters.ts) traduce el lienzo para las cuatro pantallas. Canvas: las transformaciones son editables de cada mapeo (el diálogo nunca fue accesible), con cada tipo de servidor, entradas de configuración, reordenación y una en vivo previsualizar que utiliza las reglas del servidor; varias fuentes pueden alimentar un campo, ordenada por la prioridad; la parte de una columna dividida se guarda como una parte dividida la transformación de modo que las importaciones realmente toman esa parte; las líneas dibujan sobre la carga; Eliminar/Backspace ya no se dispara mientras escribe; las tarjetas funcionan desde el teclado. Editor de plantillas: cartografías cuya columna tenía capitales se retiraron sobre carga y borrado sobre guardar, porque los encabezados de la plantilla vuelven a bajar.
· DaemonService
Tomar mapas de trabajo a través del motor compartido, con la asignación de miembros del equipo
LeadIntakeProcessingJob construye cada pista con la biblioteca de kamo compartido LeadRequestMapper en lugar de su propio interruptor de campo y transformar copia, así que las importaciones automatizadas aplican cada transformación de tela (defaults ahora fuego en un campo perdido), llegar a cada campo principal, y cumplir el objetivo de asignación: un miembro fijo, sin firma, o una cadena ordenada de campos coinciden con el equipo (email urgente, luego nombre de agente, luego nombre de llamada para el JustCall de Harmony). Los candidatos son los titulares activos de VIEW LEADS (IntakeAssignableMembers, cargado una vez por lote de punto final). Un valor que no coincide con nadie, ni con un fijo o miembro que ya no puede tomar pistas, está escrito como una nota en artículo de cola, por lo que el administrador puede ver por qué un plomo llegó sin firmar. IntakeAssigneeResolver es reemplazado por el matcher compartido.
· SecurityService
Importaciones manuales y el atraso de la ingesta a través del motor de mapeo compartido
LeadImportController mapas cada fila con la biblioteca de kamo compartido LeadRequestMapper en lugar de su propio interruptor, así que las importaciones manuales y plantillas conseguir el conjunto de campo completo, cada transformación, y la asignación de miembros del equipo objetivo. El resultado de la importación ahora lleva el totalAssigned y los valores del cesionario que no se resolvió a un miembro del equipo (assignaciónIssues). Mappings and templates are validated on save: a transformation type the servidor no se puede aplicar es un 400, no una cadena ignorada silenciosamente. LeadIntakeController pierde su motor de ingesta duplicado. Proceso Backlog ahora requeues FAILED payloads and reports what is queued; the DaemonService intake trabajo los importa dentro de un minuto, el mismo camino que un envío en vivo toma. Salvar los mapas de un punto final requiere MANAGE CRM SETTINGS; replaying the atraso mantiene CREATE LEADS. GrantAllRoleResolver y RightHolderResolver delegado en el colib GrantAllRoles/RightHolders, por lo que la lista de miembros asignables es la misma Usos de DaemonService.
· kamo-shared-library
Un motor de mapeo para las importaciones de plomo, con asignación de miembros del equipo
Importaciones manuales, importaciones automatizadas (ingreso) y el atraso de cada una transportaban sus propia copia del código de asignación, y no estuvieron de acuerdo: fecha, regex y división las transformaciones faltaban en todas partes, la ingesta de copias saltaba vacía valores antes de transformar (por lo que "valor predeterminado" nunca despedido), varios caminos se retiraron las ofertas de lienzo, y "Usuario Asignado" fue ignorado en los tres. leads.mapping es ahora el motor único: - LeadRequestMapper: lista de reglas - CrearLeadRequest. Mappings run in order and el primer valor no vacío por campo gana; cada pistaFields.ts, cada campo de hipoteca y campos de formulario personalizados tierra (LeadRequestMapper Prueba lo pins). - LeadFieldTransforms + TransformationsJson: cada transformación de tela, una la aplicación; los tipos desconocidos se niegan a ahorrar tiempo. - Meta de asignación "assignedTeamMember" (legada "assignedUser" todavía lee): un miembro fijo, sin firma, o emparejado de campos. Los campos de partido forman un cadena ordenada - un valor en blanco o inigualable cae hacia el siguiente, el primero que nombre una persona decide, de lo contrario el retroceso del mapeo (nadie o a miembro elegido) se aplica. El punto final JustCall de Harmony se basa en esa cadena. - TeamMemberMatcher: format-tolerant, typo-safe matching on email, username y nombre ("Por último, primero", iniciales, apodos, acentos, un pequeño tipo); un valor que encaja con dos personas nunca se adivina. - LeadAssignableMiembros: los candidatos son los titulares activos de VIEW LEADS, las mismas personas que el selector del agente ofrece (RightHolders y GrantAllRoles se mueve aquí desde SecurityService para que DaemonService pueda utilizarlos). También: LeadImportResponse reports totalAssigned and assignmentIssues; LeadIntakeService valida transformaciones antes de reemplazar mapas y puede recargar las cargas de pago FAILED para el trabajo de admisión.
· kamo-internal
Opciones de llamada y reunión en la tarjeta de voz de un miembro de AI (llamadas del SP92)
Bajo las voces del miembro de AI en la sala de identidad del perfil: "Transferir llamadas a una persona cuando piden a una persona agente o humano" (on), "Mantenga las transcripciones completas de llamadas y reuniones en notas" (off) y "En reuniones": "Tome notas; hablar cuando se dirige por nombre" / "Habla con todos, como una llamada telefónica". Cada uno ahorra inmediatamente a través del relé BFF ************* a AIService; un espectador AIService no deja que los cambie ve discapacitados y ¿Por qué? Los defectos son cómo cada AI funcionó antes.
· VOIPService
V7 - que colega llama desde una extensión interna (llamadas del SP92)
¿Qué? (KAMOAI INTERNAL SECRET) responde a las miembro activo de la orden del servidor del teléfono que la extensión está asignada ACTIVE-ly, o 404 NO MEMBER. kamoai-service pregunta cuándo una llamada llega a un miembro de AI de una extensión, por lo que el AI sabe qué colega llamó. Número de teléfono, teléfono extensión sin firma o discapacitada, otro miembro de org o uno que se fue no es nadie.
· AIService
Las opciones de llamada y reunión de un miembro de AI, junto a sus voces (llamadas del SP92)
keywordTransfer (default on), keepFullTranscript (default off) y meetingMode COMPANION TEN CONVERSATION (default) COMPANION), in ai member call options (hand-applied, re-runnable DDL; no row = the defaults = the behaviour before SP92). GET/PUT ************* con los derechos de las voces (MANAGE AI WORKFORCE, o su supervisor con SUPERVISE AI MEMBERS, cambios; el AI en sí no lo hace; un AI retirado es leído solamente), y el gemelo interno El servicio de kamoai lee cada llamada y reunión.
· kamo-shared-library
REUNIÓN COMPLEADO disparador de carrera, para el seguimiento de una reunión de conversación (Llamadas del SP92)
Un encuentro con un miembro de AI participó como compañero de conversación lo despierta una vez que termina, con su nota de transcripción, el Una llamada telefónica es CALL COMPLETED. STRING-persisted in ai runs.trigger kind (no CHECK); una prueba de guardia mantiene cada nombre de disparador dentro de la columna.
· kamo-shared-library
El Resolución TRAIT y la PersonalidadPerfil — límites, cerraduras, la capa virtual arquetipo, paso a paso de tendencia, adaptaciones, grupos ordenados, la vista y el sello de personalidad (KamoCollab CP03 T9)
· kamo-internal
La pestaña Org Chart sobre Configuración Esencial, en el menú de configuración, en la página de aterrizaje Ajustes y en la barra de administración de casa (KamoCollab CP02 T24)
********** monturas OrgChartPanel después de Equipos: quién informa a quien a través de la organización, sólo lectura, de GET /api/security/org-chart (nuevo relé BFF, adelanteToApi + reléUpstream). orgChartApi analiza el gráfico con zod y mantiene cada id una cuerda; un número id es rechazado, nunca redondeado. orgChartTree (pura) coloca a cada persona bajo su gerente cuando se muestra, otra un AI bajo su supervisor cuando se muestra, otra en la raíz; los propietarios primero, luego por nombre; un lazo de reportaje cortado en su id más pequeño ("lazo de presentación"); un manager flagged ("Manager inactive"); el filtro del departamento mantiene el subárbol del departamento y la búsqueda mantiene contactos de nombre o de trabajo, ambos con los antepasados que los colocan. El panel dibuja una tarjeta por persona (iniciales, nombre vinculado al perfil a través del siguiente / enlace, título de trabajo, departamento y hasta tres fichas de equipo entonces +n, insignias AI, Propietario, Inactivo, Jefe de, Plomo y Supervisado por cuando el supervisor no es la tarjeta anterior, el recuento directo del informe), guías de conexión in --accent-people, three levels open, EmptyState, ErrorState with retry, y un refresco en vivo como sus hermanos. El estado de error gana un opcional RetryLabel. También expuesto por maestro R1-37: { clave: 'orgChart' } después de equipos en el menú de configuración, una entrada de orgChart después de Equipos en la barra de administrador, y un tarjeta de aterrizaje después de los equipos. esencialSetupExposure, settingsLandingCards and TeamTab sigue la nueva pestaña.
· kamo-shared-library
Los siete arquetipos incorporados — 56 valores de base, los grupos ANY y cuatro adaptaciones cada uno, la prosa literal, el relleno y la búsqueda integrada (KamoCollab CP03 T8)
· kamo-internal
Equipos en la tarjeta miembro y en el directorio (KamoCollab CP01 T25)
La tarjeta miembro muestra los equipos de un miembro del equipo bajo su título y departamento: hasta tres fichas en el orden del servidor, luego "+n", cuyo La punta de la herramienta nombra el resto. Una tarjeta sin equipos, o cuyo equipo leyó falló (Los equipos se fueron, CP01-T16-1), no dibuja ninguna fila de equipo. Las filas del directorio llevan equipos a través de normalizarDirectoryPerson, filtroLa gente coincide con un equipo título, y el jugador miembro pone hasta dos títulos de equipo y "+n" en un la línea de detalles de la persona, al lado del departamento, con toda la línea en su tooltip. Un parser (app/lib/teams/teamRefs.ts) dice [{id, title}] Ambos.
· kamo-shared-library
El modelo de carta para la capa ORG, PERSONALIDAD y DocsTION — el vocabulario, las doce columnas de elementos, el artículo de la carta de org, los arquetipos de org y sus repositorios; la validación aún rechaza las nuevas secciones (KamoCollab CP03 T7)
CharterLevel appends ORG after CP01's TEAM; CharterRule appends TRAIT and COLLAB; CharterSection apéndices PERSONALITY (TRAIT, 160) and DocsTION (COLLAB, 60), ambos aiOnly y no supresible; CharterValidationReason apéndices AUTHORITY LANGUAGE and GROUP INCONSISTENT. CharterItem, CharterItemData y CharterItemDTO lleva los doce campos de la sección 5.2, y escribe, aData, toDto, rechazaFields y CharterView. artículo llevan ellos (escribir rechaza un número un SMALLINT no puede sostener. MAX ITEMS PER OWNER es 500 (D4). Hasta la tarea 12, validate refuses a PERSONALITY or DocsTION item with UNKNOWN SECTION, and Los marcadores son rechazados en ORG como en ROLE (D2). Nuevo Marca de artículos para la sección resolver. Nuevas entidades OrgCharterItem (org charter items), OrgPersonality Arquetipo y OrgPersonalidad ArchetypeItem with their repositories, and countByArchetypeRef sobre el papel, departamento, título de trabajo y repositorios de artículos miembros. El cheque del título compara inferior() como el índice único. Las columnas y tablas existen en producción (CP03 Task 3).
· kamo-internal
El espejo conoce PERSONALIDAD y DocsTION (hidida hasta el CP09), el nivel de ORG y los tipos de personalidad y dotación resueltos (KamoCollab CP03 T21)
- sections.ts: SectionSpec.editor; the two sections appended with editor false; TRAIT and COLLAB rules; seccionesInBand lista solamente secciones editadas; MAX ITEMS PER OWNER 500 (D4). - items.ts: ocultar marcadores rechazados en ORG en lugar de ROLE (D2); secciones que el editor no edita son contado hacia la tapa y de otro modo dejado al servidor, como desconocidos (D21, D22). - type.ts: ORG level, OUT OF BOUNDS, the twelve item fields, resolved. personalidad y resuelto. Docstion per spec 5.6.4. - Los recuentos del panel de vista previa y los chips de la galería de plantilla saltan secciones ocultas. - Nuevo charterSectionParity test lee CharterSection.java y CharterItems.java.
· kamo-internal
Cabeza de un departamento — la columna Head (nombre, Vacant, Inactive), el campo Head y el selector del cuadro de diálogo (personal activo; miembros de AI listados pero no seleccionables), se establece a través de PUT .../cabeza después de guardar el departamento; y el administrador de un miembro se convierte en un administrador para cambiar en la tarjeta de posición (KamoCollab CP02 T23)
· kamo-shared-library
PersonalityTextLint — los siete patrones de lenguaje de la autoridad de la espectro §5.9, las excepciones de apariencia y {orgShortName}, apostrofes tipográficos y espaciamiento Unicode (KamoCollab CP03 T6)
· kamo-internal
Equipos en el formulario creador, para una persona y para un alquiler AI (KamoCollab CP01 T24A)
/settings/team-member/new gains Teams on its Role card: a multiple pick over los equipos de la organización (el cliente de equipos), ofrecidos a quien pueda cambiar los equipos de un miembro en el perfil (teamsEditAtCreate, el campo de Equipos posiciónPuerta derecha: MANAGE MEMBER SECURITY), y oculta de otra manera. Las elecciones salir como teamIds, para una persona y para un alquiler AI (aiHirePayload mantiene ellos); sin elección, sin llave. Rechazo de los equipos (400/403/409 con muestra en el campo y en la bandera, en el diccionario palabras donde las tiene, NO incluido. Una vista previa de alquiler de AI ahora incluye los equipos elegidos, la capa TEAM que empezará con. La vida resumen nombres de los equipos.

Tu universo está esperando.
Comience gratis en minutos y agregue productos cuando esté listo, sin migración ni nuevos inicios de sesión.
Gratis para siempre: no se requiere tarjeta de crédito