Changelog
Qué hay de nuevo.
Cada mejora de la plataforma, a medida que se envía.
· kamo-internal
Pestaña Integración de chat web - lista, creación, snippet (BFF .
Fase 2 núcleo de la pestaña configuración de integración de chat web: Rutas BFF proxying a la Fase-1a MediaService CRUD, un cliente mecanografiado, y el /settings/cara características/chat donde un org enumera integraciones, crea una (nombre de los orígenes del sitio web requerido - IA/Support), y consigue el crudo llave del sitio y el fragmento incrustable una vez. Personalizador de diseño y preparación Las listas de verificación son fases posteriores.
· kamo-register
Kamo-registro de honores software auth logotipo
- DynamicMetaLoader: leer la identidad del software y los seleccionadores de config.json, resolución Título de pestaña, persist auth logo/nombre estado de sesiónStorage - brand.ts . ThemeLogo: registrar logotipos de auto-foseguir la identidad auth-logo (reactiva) - useAuthName: nombre de registro de texto (landing . flu) sigue la identidad de auth-name, reactivo en carga de configuración temática; cae de nuevo a empresa
· kamo-login
Kamo-login honra software del logo auth del título de la pestaña
- DynamicMetaLoader: lea la identidad de software . auth selectors de config.json, pestaña de conjunto Título de nombre resuelto (authNameBrandSource), persiste auth-logo state to sessionStorage - brand.ts ThemeLogo: logotipos de login auto-follow the auth-logo identity (company/software), volver a-resuelto en la carga de configuración del tema; no se necesitan cambios en el lugar de llamada
· kamo-internal
LabelManager software identity UI . título de pestaña interna
- Información de la empresa: nombre/short-name . . . nombre de registro . - Branding: cargaciones de logotipos completos/sencillos, paseos por anulado y per-tierra Selectores de identidad (marca de agua, navpri, logotipos de login/registro) - superficies legales forzadas comunicadas como siempre empresa (documentos/email/factos/factos/etc.) - disposición: pestaña interna del navegador se resuelve a través de la interfaz de TabBrandSource
· kamo-internal
Orientación de a bordo de org de 3 etapas (crear . . . . . . . . . . . . . . . .
Generalizar al héroe de primera or en un panel de guía de una sola etapa con las llaves sobre el conteo de propiedad del miembro de la categoría DNS (de /api/security/org/my-networks): crear no posee ningún niño org - lanzamiento de primera org de marca blanca (/network/create) dns posee 1, DNS no verificado - configuración de dominio de acabado (/setup/dns?orgId=..) ingresa 1, DNS completa - ingresa (enter- as OTK - internamente. Una vez que tienen un segundo org, ningún panel muestra que conocen las cuerdas. Gastos de DNS espejo la regla de la página de red exactamente (dominio personalizado && domainSetupComplete===false; a *.kamocrm.com org no necesita DNS). Cada etapa consigue su propia familia de acento (personas/trabajo/crmier), icono y copia; CTA es un enlace para crear/dns y una asnívica entrar en acción para la etapa lista. Falla a salvo (sin panel) en cualquier error de llegada.
· kamo-internal
Doblado de la empresa/software de resolución de entrega
- Organization.ts: entregar identidad de software - selectores per-superficie a través de OrgContext - brand.ts: **************** (vitest, 8 casos) - ThemeLogo: logoSoftware/logoFullSoftware variantes - NavPri: logotipo de navpri . texto siga el selector de logotipos de software interno - AntecedentesMarca de Agua . Backdrop: marca de agua honsifica la identidad del software (ambos caminos)
· SecurityService
Logotipo de software de los tipos de carga
- uploadLogo: object-key explícito switch **************** con el rechazo por defecto por lo que un software cargar nunca puede clobber el logo.svg de la empresa - copyFolder: conservar los logotipos de software cargado en la re-copia de plantillas - config.json: identidad de software para hornar - selectores de superficie auth-surface para iniciar sesión/registrar - pruebas: UploadLogoObjectKeyTest, construir estuches de softwareConfigJson
· kamo-shared-library
Añadir a la Organización las columnas de marca blancas de software
· kamo-shared-library
Campos de marca de software persista a través de patchOrganización Lista blanca
· kamo-internal
Primer héroe de CTA para los miembros de la plataforma org
Muestra a un héroe de a bordo en la parte superior de la plataforma de lanzamiento de casa invitando a un Miembro de KamoCRM-plataforma (no un miembro del equipo) que aún no ha creado un niño org para girar su primera organización de marca blanca. Un prominente Botón de CTA y un enlace en línea 'haz clic aquí' enlazan ambas ruta a /network/crear, y la copia apunta a la nav de "Mis ábranas" de arriba. Cádita en userInfo.memberType === MIEMBROS .organ.isTopLevel; stays ocultos a menos que /api/security/org/my-networks confirme que no tienen hijos org, y falla a salvo (escondido) en cualquier error de llegada. Sigue el Instrumento Lenguaje de diseño de panel (acento de las personas, kglass, operador-etiqueta, casa flexibilida, reducida-modazada). Cadenas en casa.firstOrg.
· VOIPService
TURN-REST credenciales endpoint para el softphone móvil
GET /api/voip/turn/credentials mentas credos de coturno efímeros (HMAC-SHA1 sobre "Eexpiry:--memberId" con el estático-auth-seret compartido) tan nativo/celular WebRTC puede transmitir a través de 47.181.8.84:3478. Auth a través del mismo X-***-Token el SIP usos endpoint; devuelve configurado:false (sóloSTUN) cuando el secreto está ausente. Wires KAMO-TURN-SECRET del *** existente (opcional).
· SecurityService
Expirar las URLs de logotipo de /my-networks
Cada org fila ahora lleva primariaColor (Organization.colors.colorPri, 'A'-prefijo para coincidir config.json) y logotipo derivadoUrl/logoSimpleUrl (tema.-domain-/public/ logotipos y los colores borde de cabeza hejales per-org.
· MediaService
Snapshot web-chat integration id en el visitante de soporte - ticket
Resuelve la WebChatIntegration mediante la creación deKeyHash (perseguido filtrado, coherente con la resolución de arranques ()/AI-prompt de resolución) una vez en createSupportSesion y estampa su identificación tanto en PublicChatVisitor y SupportTicket para la atribución por sitio web. Null/carbotaHash o ninguna integración habilitada para a juego deja las columnas nulas.
· AIService
Atribución pública de IA por integración rápida
Actualizar la cascada de chat público-prompt de la cascada per-org a Perintegración: PublicAiChatController ahora lee el X-Public-Chat-Key-Hash cabecera (nullable) reenviada por APIService y lo pasa a ************* que resuelve el WebChatIntegración por hachís y prefiere su aiSystemPrompt sobre el AiOrgSettings default, cayiendo de nuevo al símbolo genérico. El resuelto AiChatSession también está estampado con webChatIntegrationId para atribución estable que sobrevive a la rotación clave. Extirpó la cascada en una resolución estática y probada por unidadPrompt ayudante (integración-ganas / org-fallback / genérico-fallback / en blanco manipulación).
· APIService
GET /api/public-chat/bootstrap ruta de la pasarela
Añadir endpoint bootstrap que reutiliza el proxy existenteWithAuth tubería (validación de la clave - origen opt-in - Ámbito de aplicación de PUBLIC-CHAT - límite de tarifa X-Public-Chat-Key-Hash) y proxies al endpoint de arranque de MediaService.
· MediaService
Public-chat bootstrap config.
Añade un GET interno ************* que resuelve a WebChatIntegration de X-Public-Chat-Key-Hash y devuelve su resolución design/hayvior config (llenado por defecto a través de WebChatDefaultConfig.merge Así que una llave sin fila de integración todavía hace que el widget de hoy). Se vuelve a la org activa de PublicChatApiKey cuando no se integra existe; 404 cuando el hash de la llave no se resuelve en absoluto.
· MediaService
WebChatIntegration CRUD (mints key . integración, org-scoped)
API de gestión orientada a org para la pestaña de configuración de chat web Phase-2. Encendida crear, mentilla el PublicChatApiKey subyacente (mismo enfoque de clave-gen como PublicChatKeyController) junto a la fila de WebChatIntegration y devuelve la clave en bruto una vez. list/get/update/delete son org-ownership comprobado; actualización de la caché (Task-5) bootstrap cuando designConfig o cambios habilitados.
· kamo-shared-library
Añada las columnas de atribución de WEB.CHAT.INTEGRATION.ID al visitante/ticket/ai-sesión
· kamo-shared-library
La entidad WebChatIntegración . repo . DTO . . . . . . . . . . . . . . .
· kamo-internal
Añadir los puntos de entrada de "Access Copilot Mobile App" en casa . NavPri
Ambas superficies despachan un evento de "interacción-centro-interacción" que NavTop escucha para abrir el Centro de Interacción en la pestaña Configuración de la aplicación móvil. Casa muestra a píldora etiquetada bajo los controles de papel pintado; NavPri muestra un icono del logotipo debajo de la píldora de ensayo (etiqueta cuando se expande, punta de herramienta cuando colapsa). Ambos cerrados por el ALLOW.MOBILE-ACCESS.
· kamo-internal
Puerta de contraseña la pestaña QR, una sola línea, cabecera logo-izq., código de 10 minutos
- El Miembro debe volver a entrar en su contraseña (servidor-verificado a través /api/mobile-access-otk, que vacia la OTK sólo en el éxito) antes de que se revele la QR - previene a alguien en una computadora ya firmada de agarrándola. - QR/OTK ahora vive 10 minutos (600s); la cuenta atrás y vuelve a cerrar. - Etiqueta de pestab obligada a una línea; logotipo movido a la izquierda del título para salvar el espacio vertical; quié la píldora 'Configuración para'.
· SecurityService
POST **************** puerta Mobile Copilot QR
Verifica la propia contraseña del llamante (passwordEncoder.matches contra la de su sesión usuario) sin cambiar nada. Utilizado por la ruta móvil-acceso BFF BFF para el configuración QR sólo se acuña después de confirmar la contraseña.
· kamo-internal
Configuración de la pestaña Acceso Móvil - QR para instalar - auto-configuración de piloto móvil
Nueva pestaña 3a en NavTopPanel (aprobada por ALLOW-MOBILE-ACCESS derecho): muestra una marca QR codifica un enlace profundo OTK de corta duración (kamocopilot://configure) que firma la miembro en su teléfono y predetermina la aplicación al org actual. Actualiza automáticamente el OTK antes de la expiración; diseño MUI pulido con el color principal de la org. Añade
· kamo-shared-library
Añadir ALLOW.MOBILE.ACCESS (167) derecho general para Mobile Copilot
Nuevo RoleRightType (servicioType=null - grupo general) bando el 'Setup Mobile Accede a la pestaña interacción-centro. RoleRightsSyncService lo llena a todos los papeles en SecurityService reinicio; aparece bajo Permisos Generales en el editor de roles.
· AIService
Avión público per-org, desapamiga humana sin proveedor, anon tapa diaria de mensajes
· kamo-shared-library
Añadir una consulta de conteo de uso para la cuota de chat web pública
· APIService
Verificar *** PoW al borde de la sesión pública crear (aplicado cuando la carga útil presente)
· MediaService
Busca clave APIService inmediatamente en la llave de chat público desfachate/delete
· MediaService
Persist crear hash clave en el visitante de la chat pública - entrada para atribución
· kamo-shared-library
Añadir el mensajete de la vía públicaCap a AiOrgConfiguración para anon web-chat quota

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