Saltar al contenido
KAMOUniverse

Changelog

Qué hay de nuevo.

Cada mejora de la plataforma, a medida que se envía.

  1. · EmailService

    Teclas DKIM y un letrista relajado/relajado rsa-sha256 para el envío de dominios de las organizaciones

    DkimKeys genera la clave RSA-2048 de un dominio (mantuada en la mancha del proveedor de granel cifrada de la org) y el TXT valor un miembro publica en kamoXXXXXX.-domainkey.-domainkey.-domain-. DkimSigner firma un mensaje exactamente como el el transporte le enviará a la lectura de writeTo después de la final saveChanges. los receptores de cabeceras y bucles de retroalimentación que utilizan están presentes (Feedback-ID incluido, nunca una cabecera X-, desde entonces las tiras de relé X-Kamo-Ref). Verificado en las pruebas por Apache jDKIM, una implementación independiente: una campaña- mensaje en forma verifica, todavía verifica una vez que el relé desprueba X-Kamo-Ref, y falla en un cuerpo cambiado o Asunto.

  2. · EmailService

    DNS para el envío de dominios - los propios servidores de nombres de cada dominio primero, SPF evaluado, proveedor DNS nombrado

    LiveDnsResolver pregunta a los servidores autorizados de la zona (encontrado a 1.1.1.1/8.8.8.8), por lo que un récord a miembro recién salvado en su proveedor de DNS se ve a la vez en lugar de después de la caché negativa de un solucionador expire; recae en el público en una remisión o un tiempo de espera, y vuelve a tratar sobre TCP cuando un respuesta no se ajusta a un datagram (dnsjava 3.5 no logra parar el TXT truncado de google.com de otra manera). SpfEvaluator evalúa la política de un dominio para una dirección IPv4 como lo haría un servidor receptor (RFC 7208: ********************** redirección, los límites de 10 lookup y 2-void-lookup), así que un CNAME a contacto.kamocrm.com, una inclusión, o un ip4 desnudo lee lo mismo. DnsProviders nombra a la empresa que dirige DNS de una zona de sus servidores de nombres, para instrucciones específicas del proveedor.

  3. · EmailService

    El relevo compartido de org (47.181.8.86) es semilla para cada organización; el relevo de la plataforma se queda en KamoCRM's

    PlatformRelayProperties ahora conoce ambos relés de discoteca: postfix-bulk (47.181.8.87, hello.kamocrm.com) y postfix-orgs (47.181.8.86), con la dirección de salida, el seleccionador DKIM y las organizaciones de destino DNS' enviando dominios CNAME a (contact.kamocrm.com). Ambos cuentan como relevos, por lo que ambos tienen reportes de entrega. El relleno de arranque semillas k3m1-org-relay como host de plataforma SHARED (STARTTLS - PLAIN letril-in de la opcional Secret de graneles de ida y vuelta, autofirmado por lo que tlsVerify, apagado en la propia rotación de KamoCRM por lo que su correo se mantiene en .87; sembrado hasta que se configure un registro, y sus credenciales siguen la configuración de cada inicio. k3m1-bulk-relay se hace PLATFORM-ONLY una vez.

  4. · KlusterServices

    Postfix-orgs, el relevo a granel compartido cada organización envía como 47.181.8.86

    El propio correo de campaña de KamoCRM sigue saliendo a través de postfix-bulk (47.181.8.87) y correo regular a través de postfix (47.181.8.84). El correo de campaña de todas las demás organizaciones recibe su propia IP: postfix-orgs se ejecuta en la red hostal k3m1 y une su SMTP saliente a eno1 (k3m1-ext), que node-config/k3m1ext rutas fuera de ese puerto y nada más usa. HELO es contact.kamocrm.com, el nombre que Frontier está estableciendo como el IP es PTR. Un oyente de hostNetwork no tiene NetworkPolicy, por lo que sumisión es SASL sobre el STARTTLS requerido en el puerto 587 de la dirección interna del nodo, sólo de direcciones de clúster (secretos en el correo/SECRETS.md). Se retranslata sólo como los dominios de envío EmailService ha verificado, actualizado cada minuto hasta que llega ese mapa, nada. El mismo guardia de salida que postfix-bulk mantiene la entrega hasta que se confirma que eno1 sale como .86, y el los resultados del mismo programa de entrega-eventos reportan resultados. Cada negativa es un 4xx, nunca un 5xx. Aplicado a los archivos que el flujo de trabajo de despliegue ya aplica, por lo que el flujo de trabajo (y una completa conciliación de cada componente) está intacto.

  5. · kamo-internal

    Las pestañas de la campaña devuelven las fletas de desplazamiento, sin ocultar la pestaña seleccionada

    En una pantalla demasiado estrecha para las cinco sub-tabs, la tira ahora muestra izquierda y derecha flechas a su lado, como lo hace la tira de la pestaña de ventanas maximizada. No tenía ninguno desde el primera versión, donde los botones de desplazamiento "auto" de MUI cortan una pestaña abierta por enlace (?tab=archived) por la mitad: aparecen sólo después de MUI ha desplazado el seleccionado pestaña a la vista, tomar 80px de la tira, y la propia animación de desplazamiento de MUI entonces Envió cualquier corrección. CampaignTabStrip pone las pestañas en un escrollera sin su propia barra (data-kamo-scrollbar="off"), muestra las flechas sólo mientras las pestañas se desbordan, y los peregaminos de la pestaña seleccionada a la vista cada vez que cambia y cuando el flechas que van o vienen cambia el ancho. arrowState y ARROW-SCROLL-FRACTION vienen de maximizarTabStripModel, por lo que ambas tiras están de acuerdo cuando una flecha está en vivo y hasta dónde se mueve. Comprobaizado en Chrome: a 1600px sin flechas; a 700px y 520px cada pestaña abierta por el enlace es plenamente visible con el indicador que se encuentra en ella, incluidos los de los medios; las flechas página de la tira en cada sentido; ArrowRight mueve el enfoque a lo largo de las pestañas y mantiene la pestaña enfocada a la vista, y Enter la selecciona. Sus etiquetas de flecha son components.scroll's, reparados a mano en cada lugar en kamo-translación-diccionario cc484906 (Arabic había "maldito" para Pergamino a la derecha). Los rojos más violentos aquí no son de este cambio y fallan idénticamente en la principal: oneScrollbar.test.ts (en NavTopMenuPanel.tsx) y receptorStatus.test.ts (4, 98156e52).

  6. · kamo-internal

    Un envío en vivo en el widget de campañas de correo electrónico recibe una tarjeta de atención

    Con uno en marcha, la pestaña In-Progress fue una sola fila fina en un Pane con espacio para mucho más, en este momento el widget es el más importante. Cuando cada campaña en una cuenta está enviando o pausado, y el panel da cada uno en menos su altura mínima, cada uno ahora obtiene una tarjeta: - cuán lejos está en la lista, en un gran número redondeado, por lo que nunca diga el 100% con nada que quede; - su carril a las 10px, la cabeza y el brillo visible; - ritmo y tiempo que quedan, y "N de total"; - entregado, abierto, clicado y rebotado, como un embudo al lado del ritmo gráfico en una tarjeta con altura de repuesto (duras longitudes y tarifas de barras), o como una fila de figuras en una más corta o más estrecha; - su ritmo en los últimos 5 minutos, un bar por 15 segundos en el reloj límites. La barra todavía llena está encendida, y el tiempo antes de que el cristal viera el enviar es un talón, no un cero. La tarjeta tiene el enlace de la fila y la pausa/reuma (ambos ahora compartidos, de CampaignRow). Se mantiene a través de la meta que celebra. Dos envíos se sientan a lado en un amplio panel. La elección lee sólo el tamaño del panel, que nada en su interior puede cambiar, Así que no puede parpadear. Una tarjeta que desborda de todos modos se recuerda por eso tamaño de panel, que luego muestra filas. Los diseños dentro de la tarjeta son consultas de contenedores en el tamaño de la tarjeta. Modelo: pasoBuckets extiende lo que se movió entre dos marcos en el tiempo entre ellos. pushSample toma una ventana, y el gancho mantiene cinco minutos por Enviar en vivo, a través de una pausa y un acabado. Comprobatado sin cabeza en un reloj de 10x con un paso variable, en regular, ancho, altos, 460 y 668x420 cristales, y con dos envíos en los amplios y altos cristales: Las cartas se ajustan sin desbordamiento, y las barras de paso siguen los marcos, incluyendo un tramo tranquilo. Nada se mueve bajo movimiento reducido.

  7. · kamo-internal

    Campañas de correo electrónico las pestañas widget son las etapas de la pantalla de las campañas

    El widget presentó campañas bajo su propia vida / enviada / borradores, que puso un campaña cancelada bajo Sent y una programada bajo Live. Sus pestañas son ahora In-Progress, Not Started, Pausado y Completo, presentado por la campañaTabOf y nombrado con marketing.bulkEmail.tabs.*, por lo que el launchpad y /marketing/email nunca Pon una campaña en dos lugares. Los condes provienen de las nuevas etapas de EmailService. (7481f15); la respuesta de un servidor más antiguo se cuenta a partir de las campañas que envió. Elegir la pestaña: - Hasta que el miembro elija uno, el panel aterriza en lo que está sucediendo y se queda Mientras que esa cuenta todavía tiene algo. Se mueve sólo para mostrar un envío que iniciado, o cuando se le acabe su propia cuenta. Un envío que acaba de terminar se mantiene En marcha por su celebración, luego el panel sigue adelante. - Una fila que el miembro hace una pausa o reanuda se queda donde la presionaron, con su Reanuda, hasta que salgan de la cuenta. - Los nombres de escena muestran dónde encajan junto a "N más", medidos contra un oculto copiar en el idioma del miembro; de lo contrario cada etapa muestra su icono, con el nombre en su tooltip y nombre accesible. Arreglos encontrados mientras se registraba en el navegador: - Chispas de nuevas aperturas y clics en una campaña terminada nunca fueron visibles: la línea de figuras las cortó. Ahora se clipa sólo abajo y fuera de sí, y las chispas vuelan desde el extremo del metro, así que sobreviven a las barras cayendo. - Una fila demasiado estrecha para sus figuras dibujó el medidor abierto sobre Clicked. El las barras van primero por debajo de 340px, y cualquier cosa que todavía no encaja envuelta de vista entera. - Una baldosa KPI demasiado estrecha para su nombre y la velocidad deslizó el nombre ("Ope"...). La tarifa ahora se envuelve fuera de la vista. - "N more" contó las filas saliendo de la pestaña anterior. Comprobado sin cabeza en ancho de paneles 322 a 1360: sin corte de hilera, sin desbordamiento de pestañas, nombres/icones cambian con y sin "N más", teclas de flecha, un acabado celebrado entonces .. .. . . . . . . . . . . . . . . . . . . . . . . El servidor de la prueba de pausa ahora respuestas con la campaña pausada. Fracasó bajo carga cuando el widget's releído 400ms después de una pausa devolvió la campaña todavía enviando.

  8. · EmailService

    El widget de las campañas se lee por etapas, las etapas de las campañas proyectar archivos por

    El widget de lanzamiento lee ahora grupos y cuenta las campañas por etapas /comercialización/emails de pago: Ingreso (envío), No Iniciado (borrado o correo electrónico" uso de la pestañas: Ingreso (envío), no iniciado (edraft o programados), Pausado (pausado o cancelado), Completa (envío). Archivos fallidos por cómo Le fue su envío, como lo hace la campañaTabOf. Cada etapa está tapada por sí sola: programados antes de borradores y lo antes posible; se detuvo antes de cancelarlo. Se añaden escenarios al lado de los grupos, que se queda hasta que no se construye el widget que lea está desplegado. Antes de esto, una campaña cancelada contada como terminada, que es donde el usuario decidió hoy que no pertenece.

  9. · kamo-internal

    La lista de campañas sigue lo que sus colegas le hacen a una campaña, en vivo

    BulkEmailWorkspace toma el cambio de marcos useEmailCampaignsWebSocket ahora entregas (onChanged, d0b56adf). Un marco nombra una campaña y lo que le pasó, nunca la campaña en sí, por lo que la lista lee esa campaña de nuevo a través de GET /campañas/Aid y lo pone en su lugar. El archivo o la restauración de movimientos de un colega la fila entre las pestañas aquí como sucede, aparece una campaña nueva o duplicada, y uno borrado, o uno que ahora responde a 404, sale de la lista. El escenificado el conteo de outbox sigue los mismos marcos. createCampaignChangeFollower mantiene una lectura por campaña a la vez. Marcos que llegar mientras se lee una campaña (una lista subida en rodajas anuncia cada Pedida una lectura más una vez que devuelva, por lo que una ráfaga cuesta dos lecturas y un La respuesta más antigua nunca llega encima de una más nueva. Una campaña eliminada mientras lee estaba en el camino no se devuelve cuando regresa. Comprobado en Chrome contra el componente real empujando marcos a través del gancho: una restauración sacó la fila de Archivado con una lectura, un borrado eliminó su fila sin ninguno, apareció un borrador creado bajo Not Started, y cinco marcos para uno campaña costó dos lecturas.

  10. · kamo-internal

    El widget de las Campañas de Correo electrónico, en directo en la plataforma de lanzamiento

    Un nuevo widget casero, email.campaigns, en la plataforma de lanzamiento de todos los que pueden abrir las campañas. Sus cinco derechos se ciernen VIEW-BULK-EMAIL, y semilla ADDED, OPTIONAL y MOVABLE de ella en SecurityService, por lo que llega y es del miembro para remover. La puerta también pide la aplicación de Marketing y la propia VIEW-BULK-EMAIL. Lo que muestra, leyendo El nuevo /api/email/email/widget/campañas de EmailService una vez y vivir en vivo después de eso: - Cuatro figuras de las últimas dos semanas (enviado, abre, clics, rebotes), cada uno con un bar al día que lee por teclas de puntero o flecha, y abre y haga clic en las tarifas de correo entregado por la regla la tarjeta de entregación utiliza (compartimentRate, Ahora compartido por ambos). - En vivo / Enviado / Borradores, con conteos. Una campaña de envío es un carril que se mueve, con su ritmo y tiempo a la izquierda; se abre y los clics se levantan mientras aterrizan. A Detenida uno dice por qué no puede enviar; uno programado cuenta con reparo; uno enviado muestra sus tarifas abiertas y clic. Pausa y currícusecha sentado en la fila para un miembro con MANAGE-BULK-EMAIL. - Una campaña que termina mientras los relojes de los paneles permanecen en Vive por su momento, con una ráfaga, antes de que se mueva a Sent. - La línea de fondo lleva la noticia a medida que sucede; un amplio panel lo mantiene en un columna con los totales de hoy. - Se establece para su habitación: dos figuras y hileras compactas en una columna, entera filas sólo a cualquier altura (la lista envuelve en lugar de cortes), y dos columnas de campañas en un amplio panel sólo una vez que uno escondiera algunos. La mitad de los paseos en vivo /topic/campañas/-orgId. useEmailCampaignsWebSocket lee cada marco a través de leerCampaignFráquemo y ganancias en langagement, onChanged y onSnapshot, más requestSnapshot, que el widget apaga para que una plataforma de lanzamiento nunca le pide a toda la organización una instantánea. onProgress todavía ve sólo Marcos de progreso. La campana de meta ahora se dispara en una transición a SENT, no en cada fotograma posterior que todavía dice SENT (reboto tardío y informes de entrega lo republiten durante horas), y el gancho ya no escribe a sus manejadores árbitro durante Regachar. Verificados con tsc, los scripts de guardia, los nuevos y afectados archivos vitest, y un Arnés sin cabeza sobre el componente real a 1x1, 2x1, 2x2, 2x3 y ancho completo.

  11. · kamo-internal

    Pestañas de entrada, no de inicio, pausadas, completas y archivadas, y el . abre su menú

    /marketing/email divide las campañas en cinco sub-tabs, cada una con un conteo en vivo, y cada campaña está exactamente en una: - Entrado: envío - No iniciado: borradores y campañas programadas - Pautilizadas: campañas paradas y canceladas - Completa: enviado - Archivado: sea cual sea un miembro archivado Fallido no es una etapa propia: los receptores fracasan, una campaña no, y EmailService nunca lo establece. Una campaña que lo tiene se presenta por lo lejos que se envía - Lo tengo. La pestaña vive en ?tab=, por lo que una recarga, el botón de atrás y un enlace compartido mantener ella; una campaña cambia de pestaña por sí misma a medida que su estatus cambia en vivo; y un pestaña dice para qué sirve. Archive and Restore están en el menú de cada campaña (emailserv 39ffa54). Sólo un campaña sin nada que dejar para enviar se puede archivar: un borrador, o un enviado o canceló una. El botón de la campaña abrió la campaña, así como su menú. AG Grid dispara filaClicked de su propio oyente nativo en el contenedor de la fila, que corre antes de React delegado enClick, por lo que la parada del renderizador de la celdaPropagación llegó demasiado tarde y la fila navegó al editor bajo el menú. El manejador de filas ahora deja pasar hace clic dentro de un control de data-campaña-propio-click, como lo hace la cuadrícula de los Códigos de Seguimiento, y un clic en el nombre de la campaña ya no empuja la ruta del editor dos veces. Comprobado en Chrome contra el componente real: en el origen/principal el click fue a ************* con este cambio abre el menú y se va No en ninguna parte. Tabs, conteos, archivo y restauración, pestañas vacías y una tira de 520px fueron Comprojó de la misma manera. La redacción está en kamo-translación-diccionario 02109cfc, empujado primero y escrito a mano en cada local.

  12. · EmailService

    Archive una campaña, y el widget deja fuera a los archivados

    POST **************** y /unarchive (MANAGE-BULK-EMAIL) set y Despejar la campaña archivadaAt, y CampaignDTO la lleva. El /marketing/email La pantalla archiva una campaña archivada bajo su propia pestaña Archivada. - Sólo una campaña sin nada que enviar se puede archivar. Una programada, enviando o se rechaza uno: cancelarlo primero. Archivado de nuevo mantiene la primera cita. - Enviar ahora, Hora y Enviar a la última vez archivado, así que una campaña enviada de nuevo está de vuelta en las pestañas de trabajo. - Ambos se anuncian como marcos de cambio de ARCHIVED / UNARCHIVED, por lo que todos los abiertos pantalla de campañas y la actualización del widget casero en vivo. - CampaignWidgetReads deja campañas archivadas de recientes, en Estatuuses y ContaByStatus. Construye en kamo-shared-library ebdd15f1 ************* y el Columna de archivod-at, ambos ya en su lugar. TransactionalSendRatchetTest fue rojo en el principal antes de esta comisión y sigue siendo; Nada toca enviarToUser. Las otras pruebas de 1554 pasan.

  13. · kamo-shared-library

    Una campaña se puede archivar

    EmailCampaignEntity gana archivoAt (archived-at): cuando un miembro archivó el campaña, null mientras no lo sea. La pantalla /marketing/email obtiene una pestaña Archivada y el widget caseros deja fuera de las campañas archivadas. La columna ya está en el cúmulo, aplicado a mano, ya que cada cambio de esquema es: ALTER TABLE email.campaign.email.campaigns ADD COLUMN IF NOT EXISTS archived-at timestamp(6) con zona horaria; Nullable sin defecto, como los otros instantes de la mesa, así que el código construido antes de que este compromiso lea la tabla sin cambios.

  14. · EmailService

    Una lectura en vivo y marcos en vivo para el widget caseros de las Campañas de Correo electrónico

    GET /api/email/widget/campañas es el widget de lanzamiento de una lectura, construido para un Pano que se sienta en la página de inicio de cada espectador de campaña todo el día: filas magras sin no cuerpo (CampaignLine), campañas en vivo primero (enviar, pausado, programado lo antes posible), entonces el más recientemente terminado y los borradores más recientemente editados, cada grupo taped; cuenta exactas por grupo; todas las campañas mostradas abren, clics y Informes de relevos en una lectura de Redis engaleada; los últimos catorce de la organización días; su elección de seguimiento; y el reloj del servidor para contar regresiva. Se necesita. VIEW-BULK-EMAIL, como lo hace la lista de campañas. Tres tipos de marco ahora paseo /topic/campañas/-orgId-side el progreso: - compromiso: CampañaEngagementPulse se une las primeras aperturas, primeros clics y informes de relevos por campaña y envía como mucho un marco por vaina, con lo nuevo desde el último marco y los totales como Redis los sostiene. - cambiado: CampaignController anuncia la creación, editar, borrar, duplicado, programar, enviar, hacer una pausa, reanudar, cancelar, audiencia y destinatario cambios después de la llamada de servicio se ha comprometido, como un identificador y sólo un verbo. - Ninguno lleva una campaña de alto nivel. Cada pantalla de campaña lee un marco con uno como progreso y copia sus contadores en la fila, por lo que un marco de otra forma que llevara uno en blanco los condes en las pantallas que aún se ejecutan el código más antiguo. El remitente también cuenta los mensajes aceptados del día una vez por lote (stats.daily "enviado"), de qué se extraen las chispas de dos semanas del widget. La suite completa es 1534 pruebas con un fallo, TransactionalSendRatchetTest, que cuenta con tres envíoToUser sobrecargas desde c47fcf6 y no está relacionado.

  15. · SecurityService

    Llega el widget de las Campañas de Correo electrónico para todos los que puedan abrir las campañas

    EMAIL-CAMPAIGNS-WIDGET y sus políticas ADDED, OPTIONAL y MOVABLE semillas de VIEW-BULK-EMAIL en la bota que los introduce, así que el panel aterriza en el lanzamiento de cada miembro que ya puede leer las campañas, y es la suya para quitar o moverse. REQUIERDO no se seda, como para cada widget: a El despliegue nunca alquite un panel en la página de inicio de nadie.

  16. · kamo-shared-library

    Las Campañas de Correos caseras con los cinco derechos

    EMAIL-CAMPAIGNS-WIDGET (321) y sus cuatro políticas de niños (322-325), colgados de VIEW-BULK-EMAIL: cada leído detrás del widget, la lista de campaña, su contadores y los marcos de progreso en vivo, ya toma eso bien, por lo que el Widget nunca puede ser una manera de hacerlo. 326 es el siguiente id gratis.

  17. · kamo-internal

    Campañas de correo electrónico es la primera pestaña de Marketing

    La tira de la pestaña Herramientas de Marketing ahora lee Campañas de Email, Materiales de Marketing, Redes sociales, Códigos de seguimiento. Bulk Email se mueve al frente bajo su nuevo nombre, y Materials toma el nombre completo de su propia página ya muestra. El índice /marketing aterriza en la primera pestaña que un miembro puede abrir, por lo que su pedido movimientos con la tira: Campañas de correo electrónico por defecto, Marketing Materials para un miembro sin el correo electrónico correcto. La ruta, las teclas de la etiqueta y VIEW-BULK-EMAIL , mantened sus nombres. La redacción está en kamo-translation-dictionary 98a21a21, empujado primero, con la dos etiquetas escritas a mano en cada localidad.

  18. · kamo-marketing

    Las soluciones se mueven bajo Recursos, un nivel a la baja

    La fila superior llevaba cinco categorías antes del número de teléfono, el idioma selecarios y tres CTAs. Las soluciones son ahora el primer elemento dentro de Recursos, por encima de los dos enlaces de artículos, y mantiene sus ocho páginas de la industria como una Flyout de tercer nivel. Nada en el renderr cambió: NavChild ya lleva el suyo Legal ha sido anidada bajo Recursos por todo el tiempo, en el escritorio y en el acordeón móvil ambos. Estos son sólo los datos. "Todas las industrias" se queda como el primer nieto en lugar de ser doblado en la fila de padres, porque el padre móvil es un botón de conmutación, no un enlace /soluciones en sí es inalcanzable en un teléfono sin él. /soluciones páginas todavía iluminan su categoría: isCategoríaActiva ya camina por los nietos, así que Resources destaca dónde solían hacerlo Solutions. Confirmado en /en/solutions/real-estate - Recursos renders .ffffff on rgba (107.142.528,0.1) y las otras cuatro estancias 9a9a9a.9a. Verificado contra la página de ejecución, no la fuente. La fila superior se lee Características, Servicios, Precios, Empresa, Recursos; Recursos flotantes entonces Las soluciones abren las ocho industrias con sus prefijos. La corrida es de 200px de ancho y su borde derecho aterriza en 1001, 1001, 1076 y 1316 para vistas de 1024 (el punto de ruptura donde aparece este nav), 1280, 1440 y 1920 dentro del puerto de vistas en cada uno, sin horizontal el desbordamiento. En un teléfono de 390 recursos abiertos, Solutions se abre bajo él, y los ocho enlaces están allí. tsc, check-client-navigation y Las llaves de cheque-i18n están limpias.

  19. · kamo-marketing

    Desarrollo de aplicaciones, diseño web y marketing web

    ******************* argumenta que un negocio pagando una agencia por asiento está pagando por el software que la agencia no construyó, host o se quedó quieto Corriendo. Termina preguntando quién debería conseguir ese dinero y nunca ha tenido un puerta para apuntar. Esta es la puerta. 59 páginas bajo /servicios: un hub, tres pilares, 30 páginas de capacidad, 12 páginas de pruebas, 5 comparaciones y seis sobre cómo un compromiso realmente corre. Estructura en TypeScript, prosa en el diccionario. 37 industrias, 45 integraciones y 41 términos glosarios ya se utilizan, así que a el traductor puede reescribir cada frase y no puede dañar una babera o un Ruta. Cuatro nuevas colecciones, cerradas en el espacio de nombres de los servicios más bien que las "colecciones": este último ya se traduce en muchos lugares y reutilizarla reclamaría que existe una página de servicio francesa antes de una palabra de - Sí. Hoy en día cada página de servicio canónicos al inglés y aparece en el mapa del sitio inglés solamente, que es lo que la maquinaria ya hace para un página cuya copia no ha sido traducida. La cartera es nuestra propia plataforma, porque es la única que podemos dejar una inspección de visitantes: los servidores de correo, los interruptores de teléfono, el WebRTC la tubería de atribución, el grupo y este sitio web. Cada número en esas páginas lleva el comando del que vino y el día se leyó, y los guiones/check-services.ts falla la construcción sobre un hecho que no tiene ni hace ni una babera de pilar que un niño estático /services la sombra, una referencia de evidencia colgante, una página de trabajo huérfano, y un comparar que no puede nombrar un caso contra sí mismo. Esa última regla no es decoración: una página de comparación que no puede argumentar en contra de sí misma es un publicidad con una mesa. Precios publica el mecanismo en lugar de una tabla. Citamos después de descubrimiento y arreglar el número primero; lo que lo mueve, lo que nunca está en él (sin porcentaje de gasto publicitario, sin margen de ganancia en nada comprado para usted) y cuando usted se entera están todos en /servicios/cómo-noscuota. /servicios/start publicar un tema existente deliberadamente - el servicio de apoyo resuelve temaTiunción contra temas que ya existen y responde a 400 de lo contrario, para que un tema de "Diseño Web" hubiera compilado, desplegado, se hubiera visto correcto, y rechazó todas las observaciones. Dos correcciones de accesibilidad que no son estrictamente esta característica, sino el barco en cada página de ella. globals.csss:52 dice que nunca usar un raw --color-primario* para texto pequeño; la bandera de consentimiento de cookie hizo, a las 2.18:1, en cada página del sitio, y Content Relacionado hizo lo mismo con las soluciones, integraciones, alternativas y glosario. Ambos ahora utilizan el acento legible, y el Los enlaces de política de los banner son blancos. -color-accent-on-en-ná la que se calcula golpeado exactamente 4.5:1 contra el lienzo, que no deja espacio para el ligeramente levantado superficie la bandera se sienta. Las 19 páginas de servicio, la página de inicio, /precios y /soluciones/* ahora pasan hacha en WCAG 2.2 AA con cero violaciones; las propias insignias de la mesa de contenido del artículo de honorarios siguen fracasando y se quedan solos.

  20. · kamo-marketing

    Un artículo sobre el conteo de sus suscripciones de software, y el banner apunta a él

    /all-in- one-business-software pregunta cuántas suscripciones está pagando un negocio: una lista de verificación que los cuenta y suma el mes y el año en que el lector lo marca, qué cuesta una pila más allá de su facturas, lo que todo en uno tiene que significar para valer cualquier cosa, las preguntas a hacer antes de consolidar, y cómo KamoCRM cubre el mismo terreno. Dos figuras externas, cada una nombrada en la copia y enlazada en el pie: Zylo's 2026 SaaS Management Index en licencias no usadas y que controla el gasto de software, y Cledara's 2025 Software Spend Reporte sobre hasta qué punto las empresas subestiman su conteo de herramientas. El anuncio de servicio público del estandarte apunta ahora aquí en lugar de al artículo de la tarifa de la sede. Su etiqueta es una nueva clave, no un nuevo valor para el anterior: el gasoducto del diccionario se salta una llave cuya clave traducción ya difiere del inglés, así que cualquier otro idioma habría mantenido a los viejos cuestionar un vínculo con este artículo. Listado en el menú Recursos, el centro de Recursos y el mapa del sitio.

  21. · kamo-internal

    Las bandas de la plataforma de lanzamiento se abren a la superficie desplegada del bar

    El bar de administración y las bandas de la aplicación se pintan con la barra superior gradiente, y luego respondió a un flotador con algo de otra aplicación completamente: un tarjeta de punta de herramienta blanca flotando doce píxeles debajo de la banda, y en una aplicación pinchada un MUI popover con subtítulos grises y sin costura a lo que salió. Nue de ellos, cada uno apareciendo y desapareciendo por sí solos. Paleta equivocada, mal shape, llegando desde el lugar equivocado. Ahora abren en la superficie SAME los menús de la barra superior. Está pintado en el La marca de la organización, su filo superior toma el color exacto que la banda tiene en el lugar sale de, los filetes lo soldan a ese borde, y una superficie se desliza y redimensiona desde la entrada a la entrada, ya que el puntero recorre la fila, por lo que una banda lee como apertura en lugar de como una carta colocada sobre el launchpad. NavTopMenuHost toma cualquier elemento similar a una barra, no sólo la cabecera de NavTop: un Por huéspede, porque una banda ha redondeado las esquinas el bar no, y Tanto el panel como su filete tienen que encontrarse con una banda pintada. La habitación tiene un panel. para crecer en se mide desde donde realmente comienza (-kmenu-max-height) en lugar de desde la altura del navegador, que significa nada a mitad de página. NavTopMenuPanel gana "kind="note": la misma superficie y el mismo movimiento, llevar prosa sobre el gatillo en lugar de opciones. No reclama papel de menú y no se centra, por lo que las descripciones del bar del administrador se quedan descripciones y Enter sigue el enlace que describen. El chip de una aplicación fija dibuja las mismas filas que dibuja el nav (NavToolSectionsPanel, levantados de NavToolBarMenu), por lo que una opción responde con un menú donde sea se ofrece a grupos anidados, insignades, caja de filtros y todo. Ambas bandas leen su gradiente de navTopSeam.ts. Una copia literal de la paradas es precisamente lo que deriva, y la costura es sólo invisible mientras que la El panel y la banda están de acuerdo en ello. Pruebas: la barra administradora reeca y trabajó con un ratón, un dedo y el teclado (una superficie, entregada de entrada a entrada, nunca robando el enfoque), más un guardia fuente que ninguna de las bandas busca un popover o una segunda copia de la gradiente otra vez.

  22. · kamo-marketing

    Insertar video de marketing de página de inicio en el artículo de tarifas CRM de marca blanca

    Dale a los lectores el mismo carrete del producto de la página de inicio después de la introducción, antes de la sección de software revenida.

  23. · kamo-shared-library

    WebinarNotifyMember, la lista de una organización además Notificada

    Una fila por (organización, miembro del equipo) en webinar.notificar. KamoInitializerService's WebinarNotifyMemberMigration y ya aplicado. El El repositorio se une al miembro del equipo, ya que cada lector quiere a la persona. No hay clave extranjera, que coinja con la migración, así que la actualización ddl-auto del inicializador Nunca añade uno.

  24. · MediaService

    Blind-copia los miembros del equipo de Aunción Notificado en correos electrónicos de la presentadora

    GET/PUT /api/webinar/notificar/miembros (MANAGE-SUPPORT) lee y reemplace un la lista de la organización Notified; cada id debe ser un miembro del equipo de esa organización, como máximo 25. WebinarEmailNotifier añade la propiedad la lista de la organización como copias ciegas en cada carta a un presentador. asistente unido, asistente cancelado, sesión cancelada, recordatorio. carta de asistente, nunca la propia dirección del presentador, cada persona una vez, y sólo las personas que todavía son elegítas para ser escritas.

  25. · EmailService

    Copias ciegas en la plantilla de servicio enviado

    EnviarTransactionalRequest toma una lista de bcc opcional, llevada a través de sendToUser y entregar en el sobre SMTP - incluyendo la plataforma-dirección de re-retía - por lo que a copiar a la persona copiada recibe exactamente el mensaje que recibe el destinatario. Cae el destinatario y duplicados, y limita la lista a 25. Sin llamadas existentes cambios: sin bcc el envío toma el camino que siempre hizo.

  26. · InitializerService

    Webinar.notify.member, los miembros del equipo copiaron en los correos electrónicos de la presentadora

    Una fila por (organización, miembro del equipo): la lista A continuación Notified en el Pañana de configuración de Webinars programada. MediaService-copias a ciegas en estas direcciones en cada correo electrónico webinar enviado a un presentador para la organización que es dueña de la tipo de webinar. Una nueva tabla, por lo que no se altera otra mesa de otros servicios leídos; no hay filas significa que nadie está copiado. Aplicado a la producción 2026-09-13.

  27. · kamo-internal

    Deja que un administrador elija quién es copiado en los correos electrónicos de la presentadora

    La pestaña Webinars programada gana una sección "Además de Notificada" al lado la lista de tipos webinar. Los miembros del equipo elegidos allí obtienen una copia ciega de cada correo electrónico automatizado enviado a un presentador (nueva reserva, asistente unido o cancelados, sesión cancelada, recordatorio) para todos los Webinars. Lee y reemplaza la lista a través de /api/webinar/notificar-miembros, seleccione personas con el mismo selector de directorios multiseleccionado que utiliza la pestaña Presentadores, y ahorra explícitamente con una pista de cambios no salvados y una confirmación guardada. Un 403 esconde la sección, una carga fallida ofrece un nuevo en lugar de un lista, un ahorro rechazado muestra la razón del servidor, y el cambio de otro administrador Llega en vivo a través del tema de cambio de andar webinar.

  28. · kamo-shared-library

    Plantillas canónicas para cada carta de reserva webinar

    Siete plantillas meet.webinar** . . . . . . . . . . . . . . . . . . . . . los asistentes cancelaron los avisos, la confirmación y cancelación del asistente, la carta cancelada de sesión y el recordatorio programado. CANONICAL-KEYS, con WebinarEmail construyendo el mapa de una variable que los llena: veces en la zona del lector, la forma del librero responde para el presentador, el invitado se une a enlace y enlace de cancelación personal para los asistentes, el enlace de la consola para el presentadora, y bloquea ese colapso cuando no hay nada que mostrar.

  29. · kamo-marketing

    Deja que un visitante cancele su registro del enlace por correo electrónico

    /webinar/cancel/-tokená es donde un correo electrónico de confirmación webinar envía a alguien que ya no puede hacerlo. Busca la inscripción a través del público webinar API, muestra el webinar, presentador, fecha y hora (en el visitante's lugar y zona horaria, con la zona nombrada) y longitud, y la cancela detrás de un paso confirmado. Un enlace desconocido, una inscripción ya cancelada y un webinar que ya se ha sostenido cada uno consigue su propio estado, y un La negativa de la API se muestra como las palabras de la API. noindex/nofollow, y no en el mapa del sitio: el camino es dinámico, por lo que el Sip walker se salta y nada genera entradas para ello. Copia en la que vive el nuevo espacio de nombre de webinarCancel.

  30. · KlusterServices

    Firman Feedback-ID en firmas de DKIM

    Gmail cuenta un mensaje de campaña hacia su bucle de retroalimentación sólo cuando el encabezado de Feedback-ID es cubierto por la firma DKIM del dominio de envío. local.d/dkim.conf mantiene firmado por el default de rspamd encabezados y añade retroalimentación-id.

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