Changelog
Qué hay de nuevo.
Cada mejora de la plataforma, a medida que se envía.
· kamo-signer-monorepo
Formación de fecha de localización y metadatos por localidad
· kamo-signer-monorepo
Añadir el interruptor de idioma a la barra superior del letrista
Menú marcado con endónimo sobre los 22 locales compatibles. Preserva la consulta en la cadena en el interruptor "?t= es la única credencial del marcador.
· kamo-signer-monorepo
Disyout de espejo para RTL locales a través de stylis-plugin-rtl
La dirección del tema MUI en suelta la lógica del componente pero deja la lógica física Propiedades CSS intactas, tan árabe se renderizada con espaciado LTR. Cambió el Llave de caché de emoción y plugins en la dirección. También añade estilidad como una dependencia directa (antes sólo transitive a través de Emoción) y "tipos/stylis", desde el aislado nodo nodo-linker de este repo no resuelve las dependencias fantasma y los stylis 4.2.0 barcos sin agrupar declaraciones de tipo.
· kamo-signer-monorepo
Ruta el letrista bajo /-locale con middleware de próxima.
Añade i18n/routing.ts (localePrefix siempre), i18n/navigation.ts, y middleware.ts, y mueve el árbol de ruta bajo src/app/[locale]/. request.ts ahora se resuelve desde la URL en lugar de la cookie kamo-locale, mantener el médimp fondo inglés. Enlaces de señalización sobresaliente siguen funcionando: el middleware 307-redirects URLs sin prefijar y conserva el token ?t=.
· kamo-internal
Parpade el icono de correo mientras se muestra un indicador no leído
La insignia sin leer sola era fácil de perder en el listón de arriba. NavItemButton gana un blinkIcon prop que pulsa el icono (y su placa) . se mantuvo distinto de la existente, que sólo pulsa el punto de alerta de plomo y MailButton gira durante el tiempo que no sereadCount 0. Los honores prefiere-reducido-momomo.
· kamo-marketing
El arranque se limita a 5 usuarios, Negocio a los 25
Reposiciones las tapas de asiento publicadas sobre la fijación de precios (y la calculadora, JSON-LD ofrece, y resúmenes llms.txtt) para que coinicien con la suscripción catálogo: Inicio 25 - 5 usuarios, Negocio 100 - 25 usuarios.
· kamo-internal
Clarify MeridianLink market secret es la credencial de servicio de sincronización de entrada (logins porLO en el perfil del miembro)
· kamo-internal
MeridianLink loan-officer credential card en el perfil de miembro y el botón de al frente LO pre-en la guerra
Fase L3 de la asignación de préstamos-oficial MeridianLink LOS (por 3,4-3.6 de la especificaciones de diseño): - Nuevo representante de los miembros-enfondo **************** y cliente mecanografiado ********** tipos en app/lib/los/types.ts) reenviando GET/PUT/DELETE/POST a SecurityService. - Nuevo "MeridianLink Loan Officer Access" SecciónCard en ******************* puesto justo después de la base del Estado Licencias. Visible sólo cuando el miembro tiene un id NMLS Y al menos uno org market tiene una conexión activa MeridianLink; cerrada en el mercado existente ********************** derechos. Una fila por mercado (username/secret/enable/status chip/Test); el secreto es solo para escribir y Nunca se devolvió. - El botón Crear aplicación ahora pre-adéndete: cuando una pista no tiene pérdidas aplicación aún y su oficial de préstamo asignado no está vinculado a MeridianLink, el botón se deshabilita con una punta de herramienta que nombra a la LO en su lugar de sólo fallar en el clic. Extende MarketConfig con losLoName/losLoLinked (defensivos defensivos para construcciones más antiguas de SecurityService). El backend 422 sigue siendo la garantía real.
· SecurityService
Creación de LO-scoped (bloquea si se desmapada) . miembro de la API de credencia MeridianLink.
Fase L2 del diseño de asignación de préstamo-oficina de MeridianLink (kamo-internal ******************* 3.3-3.6), construido en el esquema/resolver de la L1 de libida (MarketLosUserCredential, **************** All SOAP se burló (vendor a bordoing Todavía pendiente). - ************* ahora crea el préstamo AS el plomo asignado Oficial de préstamos vía resoluciónForMember en lugar del servicio compartido de la conexión identidad (decisión bloqueada B: bloquear, no retrocedan). No se asignó LO - 422; un LO asignada sin usuario enlazado de MeridianLink - 422 con un mensaje. El ya vinculado 409 comprueba ahora antes de la conexión/LO controles, según una revisión previa, por lo que un intento de doblegar no puede retroceder a 403/422 por delante de 409. - Nuevo **************** ******************* (GET/PUT/-marketId/ DELETE/EmarketId./POST /-marketId/test), cerrada como Miembro de MemberLicensingController (STATE-LICENSING-VIEW/EDIT .OWN/ALL, Dios bypass). Encrypt-on-write vía PlatformSecretCipher, guarda secreto en blanco el texto cifrado almacenado, tiene vista solo enredencial, suavemente desechable, nunca lanzas Acción de prueba. - LeadController market-config gana losLoName/losLoLinked para que la visión principal botón puede pre-enhorabuable antes de golpear el 422. - Añade BaseLosController-unprocesable (422 ayudante). TDD: 54 pruebas en LeadLosControllerTest (extendidos), **************** (nuevo), y LeadControllerMarketConfigTest (extendido) - todo verde. L3 (kamo-internal UI proxy) es un trabajo de seguimiento separado.
· kamo-shared-library
Per-miembro MeridianLink credential (MarketLosUserCredential) - resoluciónPara miembro - . . . . . . . . . . . . . . . . . . . . . . .
· kamo-internal
Bulk Email campaigns UI . rejilla, editor, pestaña de proveedores, lidera la acción
Añade la superficie de marketing de email a granel de org bajo /marketing/email: - Pestable de correo electrónico a granel (después de las redes sociales) - campañas AG Grid workspace con live estado/envís-vs-total conteos sobre STOMP (/topic/campañas/-orgId); se fija el hoja de marketing puerta/lógica activa para rutas anidadas. - Editor de campaña (/marketing/email/campaña): Quill compose reutilizando el característico encabezado/footer sistema de fusión de tokens, destinatarios de la carga de archivos (mapa de columna de correo electrónico), plomo/cuenta/identes de identificación de aplicaciones (resolver endpoint) o manual entrada, un panel previo al vuelo (suelta/opt-out/mascarado/inválido descompuestos/inválidos . CAN-SPAM guardias), y enviar/borrador/escalólo (all-en-once / uniformemente / naturalizado - calentamiento). Acepta el principal manotaza de correo electrónico. - Pestaña configuración de Proveedor de correo electrónico a granel (separar config SMTP - Enviar correo electrónico de prueba real). - Lídeos: acción "Bulk email (N) " en multiseleccionador de la campaña. - Departamentos: correo electrónico a campos de teléfono/extensión; etiquetado de comportamiento: correo electrónico de la empresa. - API de cliente (emailCampaignApi, bulkEmailProviderApi, destinatarioResolveApi), useEmailCampaignsWebSocket gancho, y la ruta de control de seguridad.
· SecurityService
Resolución del destinatario de correo electrónico a granel .
- **************** POST /api/security/marketing-email/ los destinatarios/resueltos convierten los ID de plomo/cuenta/aplicaciones en destinatarios de correo electrónico. Cátedrado en MANAGE-BULK-EMAIL; aplica enmascaramiento de contacto con plomo bajo el remitente (Enmascarados pistas saltadas silenciosamente), Account.acceptsMarketing opt-in puerta, prestatarior email para aplicaciones, validación sintáctica, dedupe de código de fuentes cruzadas skip/count breakdown. - DepartamentoController: hilos de los nuevos campos de correo electrónico/teléfono/extensión en DepartmentService create/actualización.
· kamo-shared-library
Soporte compartido para la resolución de los receptores de correo electrónico a granel de la empresa
- ************* contactoEmail rama (continuo de la empresa editable por correo electrónico a través de PUT /api/security/org, utilizado como campaña de alcance de la empresa Desde) - ApplicationRepository: tuber polimór de lotes (findByUidInAndOrganization-Id) para resolver el correo electrónico prestador de una Aplicación para los destinatarios de la campaña - AccountBorrowerPartyRepository: findByAccount-UidIn batch finder (no N-1). Sólo aditivo; paquetes ya cubiertos por *******************
· EmailService
Aviente campaña de correo electrónico backend . proveedor, despachador, cumplimiento, tiempo real
Backend para campañas de correo electrónico masivo a granel de org, completamente separadas de lo cotidiano proveedor de correo electrónico para que no pueda ser estragado/bloqueado junto con el correo de negocios: - Proveedor SMTP a granel (BulkEmailProviderService - BulkProviderController): org cifrado reutilizando EmailProviderEncryptionService; real Enviar prueba Correo electrónico (abre una sesión de SMTP en vivo y envía). - Campaña CRUD - máquina de status (CampaignService/Controller): borrador, horario, enviar-ahora, pausa, curriculum vitae, cancelación, duplicado; materialización del destinatario con dedupe, etiquetado de supresión, por destinatario de darse de baja; Puerta CAN-SPAM (sujeto a domicilio físico: destinatario 1 requerido para salir del proyecto). - despachador de apretón (CampaignDispatchero -Scheduled): all-at-once / uniformemente-sobre-venta / estimulación naturalizada-a-atorio aleatorizado a través de siguienteReleaseAt (restafíque-segura), rampa de calentamiento en maxPerHour, hard-bounce - . auto-suppress. - Cumplimiento: SuppressionService, público de un clic RFC 8058 SuscribeControloller (Líderes de la lista-Unsubscribe), supresión re-controlado en el envío. - En tiempo real: empuje directo STOMP a /topic/campañas/orgId. org ChannelInterceptor (cierra la exposición al tema de la inquilino). - EmailSmtpServicio: aditivo extraHeaders envía() sobrecarga (List-Unsubscribe).
· kamo-shared-library
Andardas de aviso de acción adversa-acción ECOA/FCRA
La mitad del mecanismo de emisión es de la mitad. ComplianceTimerService gana ******************* . flipsa sólo ARMED ECOA-AA timers a SATISFIED (deja COUNTEROFFER/INCOMPLETE-NOA y ya satisfechos intacto), por lo que un aviso de acción adversa SENT puede cerrar el reloj Reg B mientras un no enviado se queda ARMED para el barrido de brechas. Dos plantillas de correo electrónico canónicas - ADVERSE.ACTION-NOTICE (ECOA/Reg B - FCRA 615(a)) y RISK-BASED-PRICING-NOTICE (FCRA 615(h)/Reg V) - registrado en CanonicalTemplateLoader. Ambos son andamios STRUCTURALES solamente: un desvenimiento [[ SU COMPLIANCE-APPROVADO ... ]] Uchista que el abogado del acreedor rellena en, más variables de datos estructurados (solicitante, fecha, razones principales / desencadenante). Kamo no proporciona prosa de aviso legal operativo.
· kamo-internal
Añadir el lanzador de escritorio remoto Master Machine (god-gated)
Tercer escritorio con un clic junto a Linux/Windows: navIngresoRegistry (ComputerIcon), objetivo 'maestría' a través de openKamoDesktop - la ruta proxy de SSO, y envío en los tres manejadores de acción.
· SecurityService
Añadir el objetivo "maestro" para el enlace profundo de la Máquina Maestra SSO
buildAutoConnectUrl ahora adora una conexión Master Machine (KAMO-GUAC-MASTER-HOSTNAME, por defecto 192.168.4.46); incluida en cada token para la reutilización de la sesión. Se mantuvo en sincronía con el KlusterServices bootstrap SQL.
· KlusterServices
Añadir "Master Machine" (kamo-v-1) dispositivo RDP a Guacamole
La estación de trabajo local de Kubuntu comparte su sesión en vivo de Plasma/Wayland a través de RDP a través de KRdp. Añade una conexión SQL de bootití edempotente (192.168.4.46:3389, salvia/combina pw, seguridad=ay, ignore-cert, color-profundidad 24) y READ grant. Incluye especificaciones de diseño.
· kamo-shared-library
Entidades de fundación de campaña de correo electrónico a granel . . departamento/org campos de contacto
Añade la fundación de la biblioteca compartida para campañas masivas de correo electrónico a granel a nivel de org: - OrgBulkEmailProviderEntity (separado del proveedor diario; UNIQUE org.id) - EmailCampaignEntity / EmailCampaignRecipientEntity (E- status/scope/throttle/ source enums) modelando la cola de envío duradera por-recipiente - EmailSuppressionEntity (lista de supresión de PCAN-SPAM) - Departamento: email a los campos de contacto de teléfono/extensión (EmbPhoneNumber) - Organización: contactoEmail (campaña de acompañamiento de incumplimiento) - RoleRightType: VIEW-BULK-EMAIL (175), MANAGE-BULK-EMAIL (176) bajo la sección siguiente Todos los paquetes nuevos se asientan bajo com.kamo.z.shared.email.* (ya cubierto por KamoInitializer ************* Compiles limpiamente.
· kamo-shared-library
STEWARD-TASK-ROUTED plantilla canónica
La notificación de mayordomo de decisión enrutable necesita una plantilla de correo electrónico canónico. Registros STEWARD-TASK-ROUTED en CANONICAL-KEYS con su par json/html; el cuerpo lleva el préstamo / contexto de decisión / excepción y un enlace de la secuencia de mayordomos. El contenido es org-authorable a través de el sistema de plantillas existente.
· SecurityService
Relevo de la Puerta a la mitra a un MERS MIN para un paquete de cierre
POST ************* control de propiedad (requierePackageOrg) por lo que un mayordomo abagina sólo para su propio inquilino. El upstreams lee el MERS Org ID de 7 dígitos de la conexión del proveedor MERS del inquilino en el pestaña integraciones; un 400 significa que MERS no está configurado o el préstamo no tiene número de préstamo.
· kamo-internal
Fecha de nacimiento en la vista de plomo.
Añade un campo de "Fe de Nacimiento" bajo Contacto primario en /leads/view/[id] usando un MUI DatePicker que se abre primero a la red anual (openTo=year, disableFuture, min 1900) - el flujo intuitivo para las fechas de nacimiento - más el mismo lacicador en el nueva forma. Vios de ida y vuelta de fecha a través de date-fns parseISO/format (local, no UTC fuera de uno). La pantalla está encajado en canViewContact; el campo es opcional. Fecha de alicientesOfBirth a través de tipos, leadsApi crear/actualizar guardias, y el lista de campo de la asistente de importación.
· SecurityService
Acepta y puerta de contacto fecha de nacimiento (DOB)
Mapas con los interruptores de campo de importación manual y de admisión de proveedores con los interruptores de campo de admisión de proveedores con un ínse par de múltiples formatos lejanos (ISO más formas comunes de M/d/yyyyy de los EE.UU.; inparable valores dejan el DOB desconétido en lugar de tirar). Cuenta DOB como contacto PII en SolicitarTouchesContactInfo para editarla a la dirección de otro miembro requiere EDIT.LEAD-CONTACT-INFO-OTHERS. Respaldado por el nuevo led compartido.dateOfBirth.
· kamo-shared-library
Añadir nula fecha de nacimiento de contacto para liderar
Añade una columna de contacto a la siguiente dirección de la sección de contacto. base Plomo: entidad Create/Update/LeadDTO (desdeLead), copiado en LeadService crear/actualice y ambos ayudantes de conversión de subclase hipotecaria para que sobreviva a interruptor de mercado. Rastreado en el registro de la historia de la plomo (Contact) y enmascarado como PII en máscaraContactoInfoDesde otross. Nullable, sin defecto.
· kamo-internal
Requerimiento de documentos de autor reglas de superposición de la consola mayor
La matriz de reglas de "qué documentos necesita este préstamo" no tenía superficie de autoría. Esto añade un Sección de reglas de la exigencia de documentos a la pantalla Documentos y Condiciones (doblancado en la poseer pantalla, no una nueva pestaña) donde un mayordomo enumera, autores y retira el de sus inquilinos Reglas de superposición. La copia de ayuda es honesta sobre el alcance: una superposición en la parte superior de la línea de base de la plataforma y la Conclusiones de Estados Unidos/agencia (DU/LP/GUS), que siguen siendo la fuente de la verdad; una norma no puede aprobar una préstamo o una condición clara, y nada aquí es un mandato legal. El formulario ofrece el 23 RequisitosDriverType valores y un código de tipo doc de texto libre (el backend lo valida contra el catálogo de imágenes de la org y devuelve una clara en línea 400 si el org no puede cobrar no hay lista de docs duros). Una placa de paredes legales y bloqueos-avance vs insignia de asesoramiento renderizar en cada regla; Retirar confirma primero.
· SecurityService
Relevo documento-requisito de la autoría de la regla
Relays POST/GET/retire on ************* a MLOSDocService, con organizaciónId servidor-estampado de la sesión de operador para que un mayordoto de autores y lista solo sus propias reglas de superposición de inquilinos.
· kamo-internal
Autor condicional LLPAs del panel de catálogo
Los ajustes no podían variar según el prestatario: MlosAdjustmentCondition no tenía escritor, y el el motor de precios trata un ajuste sin condiciones como siempre se aplica, por lo que cada LLPA disparó por cada prestatario y un prestatario de 780-FICO recibió el mismo golpe que un 620. Este formulario autoras un ajuste junto con las condiciones que lo abracen. Modelado en la forma de la política de bloqueo en el mismo panel: un id de versión de hoja de tipos, el precio delta y etiqueta, y una lista repetible de las filas de condiciones (atribuir . . . . . . . . . . . . . . . . . . con numHigh se muestra sólo para BETWEEN). El cliente refleja los guardias del servidor. condición, un atado en cada condición, ambos límites para BETWEEN con bajo .= alto . . . . . . . . . . . . . . . . . . La regla está atrayada en la línea en lugar de en un viaje de ida y vuelta.
· kamo-internal
Confirme correo electrónico al reasignar una pista de la visión de plomo
La tarjeta Assignment reasigna ahora vía leadsApi.reassignLead, que sale a la superficie la bandera de asignó del servidorNotified. A una reasignación a un nuevo miembro el brindis Lee "Asignación guardada "nombre" ha sido notificada por correo electrónico"; en un no-op o autoasignación (donde el servidor no envía nada) se mantiene la confirmación simple.
· SecurityService
Envíe un correo electrónico al nuevo propietario cuando se reasigna una sola pista
Espejos el camino a granel para la tarjeta de asignación de vista de plomo. Cuando PUT /leads/-id. mueve una ventaja hacia un miembro diferente, ese miembro ahora obtiene el mismo LEADS-ASSIGNED Correo electrónico (cuenta 1) el flujo a granel envía. Mejor esfuerzo. La actualización se compromete y nunca la falla. Inclinaciones sólo en una reasignación real: salta la vista no-operación salva donde está el cesionario Sin cambios (por lo que la edición de contacto info no envía nada), y salta la auto-adscripción. un oficial que reclama una pista asignándola a sí mismo no tiene razón para enviar un correo electrónico ellos mismos. La respuesta lleva a cesionarioNotified para que la UI pueda confirmar lo nuevo El dueño fue enviado por correo electrónico. La ventaja anterior se consigue una vez y se reutiliza para la denseguida tanto para la encia como para la captura previa-signee, en lugar de sólo dentro de la rama no dios authz.
· SecurityService
Relevo condicional-LLPA autoring
Relays POST ********** a través de la org-stamping escribir ayudante, así que un mayordodo de autores condicionales sólo para su propio inquilino.

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