Saltar al contenido
KAMOUniverse

Changelog

Qué hay de nuevo.

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

  1. · SecurityService

    Seed the IoT administration rights to CONFIGURE SYSTEM holders on the boot that introduces them (IoT SP00)

    El tour de IoT no necesita ningún linaje: cada tour de Show está ya en cada función (fefd98c2).

  2. · kamo-shared-library

    The eight IoT notification kinds, appended (IoT SP00)

  3. · kamo-shared-library

    IotRights, el único dueño gobierna cada puerta IoT aplica (IoT SP00)

  4. · kamo-shared-library

    Un miembro de la SI nunca tiene los seis derechos de gestión de IoT (IoT SP00-D4)

  5. · kamo-shared-library

    The IoT Devices rights (370-401) under VIEW IOT DEVICES, and SHOW TOUR IOT (IoT SP00)

  6. · kamo-shared-library

    Aplicación IoT Devices (40), dentro del límite PHI y nunca automática (IoT SP00)

  7. · KlusterServices

    Api.* para ganchos de proveedores y el relé Alexa con un límite de tamaño webhook; secretos IoT documentados (IoT SP00)

  8. · KlusterServices

    Egreso predeterminado para kamowsiot y su presupuesto de perturbación (IoT SP00)

  9. · KlusterServices

    NATS login svc iot, svc media iot.live. otorgar título, IOT EVENTS work queue (IoT SP00)

  10. · kamo-shared-library

    La carta que una regla de detección activada de entrada envía

    SUSPICIOUS SIGNIN DETECTED une las plantillas canónicas. Servicio de Seguridad SuspiciousDetectionService lo envía cuando una regla de detección configurada por inquilinos ( umbral de apertura fallado, anomalía geo, conmutación rápida de IP, acceso fuera de horas, sesiones concurrentes) desencadena con NOTIFY ADMIN EMAIL entre sus respuestas; hasta ahora esa respuesta sólo escribió una línea de registro. Cada valor influenciado por los atacantes utiliza su gemelo escapado (TemplateRenderer no escapa). Lleva la regla, el resultado, la cuenta id, la dirección, el país y las respuestas aplicadas; nunca material creíble. SuspiciousSigninTemplateTest pins registration, seeding and the variable contrato. EmailServicio de semillas una vez reconstruida en esta biblioteca.

  11. · kamo-internal

    Tipos de Subdivisión se trasladan a la Administración de Plataformas

    Tipos de rama (los modelos de seguridad de las organizaciones infantiles se crean bajo, con sus roles de seguridad predeterminados, aplicaciones y pantallas caseras) fue una pestaña en configuración de cada organización - confiar Cuenta. El dueño sólo quiere organización de plataformas para establecerlos, por lo que ahora es Administración de Plataformas - Configuración - título Tipos de rama, abierto por el nuevo MANAGE BRANCH TYPES plataforma derecha. SecurityService aplica el mismo derecho en los puntos finales detrás de él (servicio de seguridad cc6639ef). - plataformaRights: la derecha, su punta de pestaña y su color; derechosVisuales consigue su icono. - La pestaña, su enlace de menú y su tarjeta de aterrizaje ahora se sientan con la otra fichas de plataforma. La página de la cuenta pierde la pestaña, y la etiqueta de la rama cargador que existía sólo para nombrarlo. Ahora se redirige a la nueva pestaña, así que... antiguos enlaces y marcadores todavía aterrizan en alguna parte. - SecurityRoleManager deja de cargar cada modelo de seguridad cuando el diálogo subdominio se abre. Nada dio el resultado, y ahora ser 403 por cada inquilino. Strings: kamo-translation-dictionary 9f084371.

  12. · SecurityService

    Tipos de rama y modelos de seguridad son la plataforma para editar

    Tipos de rama, los modelos de seguridad detrás de ellos ( roles de seguridad predeterminados, disponibilidad de aplicaciones, pantallas caseras, mercados comerciales, config de subdominio) y el modelo maestro utilizado para ser editable por cualquier organización desde su propio Ajustes - título Cuenta. El propietario sólo quiere la organización de la plataforma Ponlos. Así que estos puntos finales ahora requieren el nuevo MANAGE BRANCH TYPES plataforma derecha: - SecurityModelController y SecurityModelMarketController, clase entera - MasterModelController, clase entera - BranchTypeController's /{id}/usages PlatformRightsResolver no responde nada dentro de un inquilino, así que esto cierra a cada organización, pero la plataforma no tiene un segundo cheque. lista de BranchTypeController y /cretable permanecer abierto, porque el El mago de la creación de org los leyó. Los modelos existentes de un inquilino siguen gobernando sus orgs infantiles; no pueden ser editados del inquilino más. Necesidades kamo-shared-library 0542057b (MANAGE BRANCH TYPES).

  13. · kamo-shared-library

    MANAGE BRANCH TYPES

    Tipos de rama, y los modelos de seguridad detrás de ellos, se mueven de cada configuración de la organización - título Cuenta a la Administración de Plataformas - confía Configuración. Esta es la plataforma derecha que abre esa pestaña, y right SecurityService ejecutará en los puntos finales modelo. Aprobado al final como cada derecho antes. AiPlatformRightsTest clavó los dos derechos de AI como "los últimos dos", por lo que ahora pone sus ordinals en su lugar, que es lo que en realidad solo necesita.

  14. · SecurityService

    Enviar un correo electrónico a la audiencia de la ventana aceptada cuando una nueva pista se sienta sin reclamar durante dos minutos

    LeadDisponibleEmailSweep (todas las 15 s, alquiler de un solotón) encuentra los cables que entró en la piscina hace 2-15 minutos y todavía no son reclamados, per org via ix leads org created, and sends LEADS AVAILABLE to everyone the Aceptar la ventana de carga les ofrecería. Una pista aceptada dentro de los dos minutos han dejado la piscina y nadie está escrito. LeadDisponibleEmailLa audiencia aplica las propias reglas de la ventana por ejemplo: Portavoto/receptivo, activo, una persona (no SI, no una cuenta falsa), estado AVAILABLE, aceptar puerta clara, producto de crédito (la ventana nunca abre para libre para todos), crédito de org no suspendido, habilitación activa, crédito o saldo infinito, bajo Max Daily Spend, licenciado en el estado de propiedad. Las cartas nombran el apellido y el estado solamente. Redis lo mantiene a una vez por miembro (escrito antes del envío: al menos una vez) y una carta por miembro por período tranquilo de dos minutos; sale a la espera mientras un miembro descansa en su siguiente carta, así que un vracs importar es un digest en lugar de una letra por garrapata. Necesidades compartido-lib 9671cc7a y EmailService 0cdeb88 (template).

  15. · EmailService

    Vista previa de la nueva carta disponible

    Añade el brazo LEADS AVAILABLE a sampleVariables, construido a través del mismo compartido-lib LeadsDisponibleEmail helper SecurityService envía con, por lo que el La vista previa del administrador muestra la carta que sale. La reconstrucción también recoge compartido-lib 9671cc7a, que registra la plantilla EmailService semillas y envía.

  16. · kamo-shared-library

    Una carta para un líder ofrecido nadie aceptó en dos minutos

    LEADS AVAILABLE va a todo el mundo la ventana de cuentas aceptadas ofrece una nueva conduce a cuando todavía no se reclama dos minutos después. Nombra el plomo. por último nombre y estado y nada más; LeadsAvailableEmail construye el variables (órgano escavado, materia prima de una sola línea, texto plural, primera 10 filas entonces "y N más") así que el barrido de SeguridadService y el servicio de correo electrónico Previsualizar compartir un contrato.

  17. · kamo-internal

    Los tours comienzan por sí mismos en el inicio de sesión, un controlador turístico los dirige, y cada aplicación en el App Shelf comienza su propio

    - Inscríbete: las giras con algo nuevo ahora START en el lanzamiento, una vez por señal-in - no hay oferta para hacer clic a través. El modo de Dios ya no los detiene (lo hizo, para el propietario), y Los tours están cerrados en los derechos reales del miembro, nunca el modo de dios "todo". - El controlador (GuidedTourDock), inferior derecha sobre todo lo que el tour se dims: un anillo para el progreso a través de cada recorrido apagado, los pasos de la gira actual como segmentos para saltar a, Retroceder / Saltar paso / Autoplay / Saltar gira / Terminar todo (asistido dos veces), una lista de capítulos cada recorrido y paso, y Minimise — la página vuelve y el tour espera como un orbe que reanuda dónde estaba. Teclado: flechas, S, P, Esc. - Autoplay: cada paso se mueve después de una lectura de tiempo (4.5-16 s por longitud), sostenido mientras el El puntero descansa en la tarjeta; el bar de la tarjeta y el anillo del controlador lo cuentan. - El acabado (GuidedTourCelebration): una explosión de los colores de la organización y dónde Retomando tours, sólo cuando un tour corrió hasta su final. - La tarjeta: cambios de paso animados, pasos como puntos clicables, se mantiene alejado del controlador (placement.ts evita), y apila sobre él como una hoja en un teléfono. - App Shelf: un botón de tour en cada fila de aplicaciones (mostrado con un punto hasta que se tome el tour) y un botón "Tome el ... tour" en el encabezado de cada aplicación. - Tipos de rama: un nuevo tipo de rama comienza con cada derecho del Show Tour concedido por su humano tipos de roles (SecurityService fefd98c2 hizo lo mismo por cada uno existente). Toda la lógica de ejecución es pura en runModel.ts (next/back en tours, skip tour/all, salto, progreso, tiempo de lectura) y probado; GuidedTourHost.test.tsx conduce el escenario, teclado, autoplay y controlador final a final.

  18. · SecurityService

    Cada show Tour a la derecha está por defecto - por cada papel, cada plantilla tipo rama, y todos ya aquí

    El primer lanzamiento sembró cada gira sólo a los roles que ya tienen un derecho en su aplicación y izquierda todas las plantillas tipo rama en Not Especified: 2.416 filas de rol no realizaron gira, ya existentes los miembros nunca fueron ofrecidos, y cada organización creada a partir de un tipo de rama sería han comenzado con ninguno. Regla del propietario: Los tours son para todo el mundo, por mucho que tengan ha sido miembro. - seedSettingFor: a tour right arrives GRANTED on every role. - plantillaSeedSetting For: GRANTED in every human branch-type template (not ARTIFICIAL — un miembro de SI nunca abre un navegador). - enableTourRightsUna vez: UN TIEMPO, cambia cada recorrido no especificado, en cada rol y todas las plantillas humanas; las negaciones explícitas quedan solas. Marcado por una fila bajo miembro id 0 en member ui preferences, así que un administrador más tarde Not Specified sticks.

  19. · kamo-shared-library

    ExpirePendingForKey y encontrarFirstByPublicKeyAndStatus para las correcciones de inscripción

    KamoCameraService retira los códigos pendientes más antiguos de un conector cuando da una nueva (un viejo) el código leído de un registro podría ser reclamado en otra organización, dejando el propietario claim refused), and answers a status poll from the ACTIVE site holding the key. Métodos de consulta sólo; ningún cambio de esquema.

  20. · kamo-internal

    Cada dirección de correo electrónico abre un Write popup, y cada número de teléfono —configuraciones incluidas— abre Call / Text

    Dirección de correo electrónico, proyecto amplio. "EmailAddress confianza es el gemelo de correo electrónico de "PhoneNumber confianza; presionado, abre un diseño de popup: - Escribe abre la ventana del compositor de correo electrónico dirigida a ellos - nada se envía hasta Enviar. - La segunda ficha sigue los registros: Chat para un colega, Call (número en el dialpad, nunca marcado) cuando un número está en el archivo, Copiar lo contrario. - Quién es la dirección en los propios registros de la org (coleague, contacto, plomo) búsqueda corresponsal, una vez, abierta) con Open lead / Open contact / View profile; personal proveedor o dominio de la empresa; la hora local del colega; un cheque de tipo ("gmial.com" → gmail.com, Escríbelo en su lugar); enviar solamente las casillas noreply@ no pueden ser escritas; Copiar, Usar mi aplicación de correo; E / C / Y llaves. Las rutas de vista principales Escribir a través de su guardia de exclusión; una superficie puede pasar composeWarning (Write entonces toma una segunda prensa). Números de teléfono, ahora verdaderamente en todas partes, incluyendo los propios de la organización: Comportamiento y etiquetado números sin costo y correo electrónico de contacto, configuración del teléfono miembro, números de texto, números del sistema telefónico y proveedores, calladores de voz, Ventas de contacto, la tarjeta miembro, la tarjeta corresponsal de correo, extensión de la cabeza hex, softphone CRM/contactos/historia, reportar columnas PHONE, AI llamadas consola y historia del consentimiento, previsualización de citas (sin icon, por lo que se imprime como texto), la línea de llamada del reproductor de medios, y títulos de llamada sin nombre en la línea de tiempo principal. Motor compartido ¿Qué? ContactoPopover (placement, arrow, foco trap, keys, fuera de la prensa), ContactHeader y partes, ContactTrigger y ContactPopupHost - montados junto al muelle de herramientas, saca el popup abierto lejos de su gatillo, por lo que se abrió dentro de una tarjeta de hover o popover sobrevive el cierre de la tarjeta mientras el puntero se mueve en ella. Un popup a la vez a través de ambos tipos; un cambio de ruta lo cierra. Los desencadenantes llevan GRID OWN CLICK para las filas de AG Grid. Izquierda a propósito: valores dentro de una opción de picker, seleccione, etiqueta o una fila que es en sí mismo una botón (UIs de selección); dentro de una frase traducida; la pantalla en vivo y botones de dial rápido; las listas de conversación de clientes de SMS/mail y las placas de dirección; marcadores de sitios de email-template. El "Use mi dispositivo" tel: enlace ahora lleva la extensión (;ext=). buzón de correoMemberCards cuenta cada gatillo de diálogo como tarjeta miembro; ahora salta los disparadores de la dirección.

  21. · kamo-shared-library

    SHOW TOUR KAMO CAMERAS (369), y el código de inscripción nunca se serializa

    El bloque Show Tour (338-368) fue escrito mientras que KamoCameras (334-337) estaba aterrizando, por lo que el más nuevo grupo de seguridad de la aplicación no tenía derecho de visita y prueba de catálogo guiado de kamo-internal (un tour por grupo de aplicación) falló en su contra. 369 es GRANTED y una raíz independiente como el otro 31; cuenta: 355 derechos, 78 independientes, 120 raíces, 32 tours. 370 es el siguiente libre. CameraEnrollment.codeHash gana @JsonIgnore: ******************* (added to main después de que las entidades de la cámara aterrizaron) la bandera. Nada serializa las inscripciones hoy — el servicio respuestas con mapas explícitos — pero un código hash es material credencial. Suite: 6659 pruebas; los fallos restantes (CharterStamp Test legado oro, AiAutonomíaModeTest vocabulario de aprobación) también falla en el origen/mano y no son cámaras.

  22. · kamo-internal

    La visita guiada de Cámaras (SHOW TOUR KAMO CAMERAS, 369) — encontrar el menú, una cámara, la cuadrícula, diseños guardados, y las dos pestañas Ajustes

  23. · kamo-internal

    Cada número de teléfono en pantalla abre una ventana de llamada / texto

    Cualquier número de programas kamo-internal: una pista, un contacto, un prestatario, un cliente, un vendedor, un solicitante, un colega, un callador de voz, es ahora un - No. Presionado, abre un popup reutilizable: - La llamada abre (o eleva) el softphone con el número en su dialpad y para Ahí. Nada se marca hasta que el miembro pulse Call in the phone. - El texto abre o eleva el hilo SMS con ese número, titulado con la persona. - Alrededor de ellos: país y hora local del número (código de área para EE.UU./Canadá, país en otro lugar) con un nudo fuera de las 8 AM-9 PM, llamadas recientes con el número desde la historia que el teléfono ya tiene, estado de línea en vivo, un dos-impresion confirma cuando el registro dice que no está bien el texto, el manejo de la extensión, copia (nacional y internacional), paso a mano al propio marcador del dispositivo, atajos C / T / Y, enfoque mantenido y regresado en Escape, bajo movimiento consciente. Anclado en la vista principal (personal + trabajo, al lado del chip de consentimiento AI-voice), teléfono de agente hipotecario, línea de tiempo de comunicación principal, contactos, el líder del calendario panel, vista de cuenta, iniciador de préstamos, solicitudes de comercio/requisitos/ servicios, aplicaciones de oleoductos/libros/clientes minoristas (grid + detalles), carreras solicitantes, miembros del equipo, proveedores/clientes de POS, mesas de correo de voz y las línea reguladora de licencias. Dos trampas abiertas de softphone fijadas en la herramienta:punto abierto (abiertoInStore): - herramienta-core MERGES una propulsión de nuevo en el softphone único, así que una cabeza de hex `autoDial: true` sobrevivió su llamada y marcaría el siguiente número puesto en el dialpad. " AutoDial " tiene ahora en cuenta la solicitud que la lleva. - tool-core levantó un softphone MINIMIZADO sin los nuevos accesorios, así que volvió con el viejo número. Ahora se entregan los accesorios. `prefillSeq` permite que el mismo número se ponga en el dialpad de nuevo.

  24. · kamo-internal

    Ajustes de KamoCameras — Configuración del sitio (enrollar un conector en tres pasos, tarjetas del sitio), Cámaras (grid with on/off and audio, drag-and-drop groups organizer), detalle del sitio (overview, Discover, cámaras, sistemas de cámara, configuración avanzada de go2rtc con historia, diagnóstico), páginas de cámara y grupo con una pestaña de seguridad compartida, menú y entradas de aterrizaje

    Reglas puras en app/lib/cameraSettings.ts con pruebas: formato de código de inscripción y validación (SiteKeys alfabeto), connector download pick per OS/arch, instalar comandos, the managed api:/rtsp: YAML guard, access-rule set sort/diff, campos de descubrimiento y descubrimiento-kind - alojamiento fuente-kind, máscara de contraseña para visualización y en registros, grupos organizador se mueve, config aplican estado con versiones leídas como números (Java longs llegan como cadenas).

  25. · kamo-internal

    El visor de cámara — Menú nav de cámaras, la ventana de herramientas de cámaras en vivo y su navegador optimizado

    - Nav herramienta 'cameras' (app + VIEW CAMERAS): diseños guardados, grupos (cada uno que se expande a sus cámaras), cámaras no agrupadas con un punto de estado, Visor abierto, Gestionar cámaras para cualquier administración derecha; vivir a través de useOrgChanges('cameras'); una carga fallida es una fila de retry, nunca 'no cámaras'; estado vacío explica que un administrador elige quién puede ver. hasAnySettingsRight += ¿Qué? cámaras de lanzamiento de aplicación fija - cámaras de confianza. - Ventana de herramientas 'cámaras' (max 6, 1000x690): muro WebRTC sobre señalización no traída de ida y vuelta; grids auto/1/2x2/3x3/4x4/1+5/1+7; sub stream in the grid, main for an expanded tile or the only azulejo de una ventana maximizada; sólo se escucha la ficha seleccionada (MUTED/UNMUTED/AUTO=focused); autoplay apagado con un retroceso de clic por sonido; reconexión exponencial capped; ninguna sesión para una minimizada, cubierta o larga ventana oculta, una baldosa cubierta, un sitio sin conexión o una cámara apagada; sitio web se reanudará en tiempo real; añadir/remove/drag-swap, Guardar el diseño (actualizar / guardar como nuevo) y borrar; las ventanas de grupo siguen a su grupo; las props son la vista (herramienta:patchProps) y el título sigue. - Máximas cámaras de navegación: CameraSwitcherColumn (capadas / grupos / cámaras, fila activa por sessionGuid, + abre un nuevo visor maximizado), roscado a través de la tienda de ancho, panel, tira de pestañas, Dock y pruebas. - Decisiones puras en app/lib/cameraViewer.ts con pruebas; ciclo de vida de secuencia probado bajo jsdom.

  26. · kamo-internal

    Visitas guiadas a bordo para cada aplicación, ofrecidas en inicio de sesión y recuperables desde la plataforma de aplicaciones

    Un tour por grupo de seguridad de la aplicación — 31, desde Relación al Cliente hasta E-Signatures — cada entrada en la aplicación que está en, el miembro puede abrirla, y la aplicación es nueva "Show Tour" derecho (SHOW TOUR ) APP título, compartido-lib 582704f2). Cada PIE está cerrada de nuevo en la derecha detrás de lo que apunta, por lo que un miembro nunca se camina más allá de una característica No lo tienen. Al iniciar sesión (una vez por sesión token, en el lanzamiento) se ofrece al miembro los tours con algo nuevo para ellos: pasos ya vistos o saltados en ninguna organización (SecurityService /api/security/guided-tours mantiene la historia de una persona entre miembros). Iniciar los tours escogidos a su vez; Ahora no pregunta otra vez el siguiente Inscríbete; no ofrezcas estas marcas saltadas. El App Shelf ofrece el tour de cada aplicación bajo la aplicación, y una colección de Visitas Guiadas lista cada tour con su estatus, así que cualquiera de ellos puede ser tomado de nuevo a voluntad. El overlay (GuidedTourHost): navega a la página de cada paso, espera su ancla, lo desplaza hacia la vista, atenua el resto con un foco y un anillo pulsante, coloca un tarjeta anclada con una flecha en cualquier lado tiene espacio (una hoja inferior en un teléfono), mantiene la página inerte excepto en pasos de clic a continuación (donde Siguiente hace el clic), sigue el elemento cada marco, vuelve a una tarjeta centrada cuando el elemento nunca aparece, y soporta Back/Next/arrow keys/Escape, focus, and reduced motion. Las páginas sólo obtuvieron anclas de data-tour (disposiciones solo atributos, 66 archivos). Copiado está en diccionario bajo guíaTours.* (kamo-translation-dictionary 52b1229c), escrito para lectores no técnicos, etiqueta blanca, y decir SI en lugar de AI — la prueba de catálogo hace cumplir ambos, además de que cada derecho, ancla, página y copia de claves existe un nombre de tour. E-Signatures, Retail, Rentals and Procurement now have a security group (each holds su Show Tour); el espejo de derechos del TS lleva todos los 31 derechos del tour.

  27. · SecurityService

    Recuerde los pasos guiado-tour por persona a través de las organizaciones, y semillas cada Tour de Mostrar derecha

    Obtener /api/seguridad/tours guiados respuestas que el tour pasos que la PERSON firmada tiene se mostró o saltó, como el sindicato sobre cada miembro del mismo usuario, un paso visto en una organización se ve en la siguiente. POST / recorridos guiados / pasos marca pasos en la fila de membresía registradaTours en member ui preferences (no nuevo) tabla), leer-merge-escribir en una transacción con @RetryOnDbConflict por lo que dos pestañas no se pueden borrar. Reglas en GuidedTourProgress: se han saltado los outranks, se mantiene la primera fecha, los ids son validados y atados. Su propio camino más que un ui-preferencias clave, por lo que una gira en marcha publica bajo visitas guiadas, que nada escucha, en lugar de miembros. RoleRightsSyncSemillas de servicio cada SHOW TOUR Según su primer bota a quien tenga cualquier derecho en esa aplicación, sus aplicaciones anidadas o (para una aplicación anidada) su padre; E-Signatures, que no tiene derecho propio, semillas de Documentos. Los dos derechos de seguimiento de los miembros nunca son una fuente.

  28. · kamo-shared-library

    Un Show Tour derecho para cada grupo de seguridad de la aplicación (338-368)

    SHOW TOUR Seguido por grupo de aplicaciones: treinta y uno, E-Signatures incluidos, cada uno a raíz independiente archivada bajo su aplicación, etiquetada "Show Tour", y GRANTED por defecto así que un papel creado a partir de ahora ofrece a sus miembros cada gira. Sólo decide si el miembro se pasea por la visita guiada de la aplicación al inicio de sesión y se ofrece en la plataforma de la aplicación; cada paso de la gira se cierra por separado en la derecha detrás de lo que muestra, por lo que la derecha no otorga datos ni capacidad. RoleRightType.tourRightFor(app) / isTourRight() encontrarlos por nombre; RoleRightHierarchyLos mejores pines que nombre, aplicación y forma están de acuerdo. Cuentas: valores 323 - título 354, independiente 46 - título 77, raíces 88 - título 119. Siguiente id gratis es 369.

  29. · kamo-internal

    Foundation — KAMO CAMERAS (39) and rights 334-337 mirrored, isKamoCameras, BFF proxies, camerasApi, openCameraWindow

  30. · kamo-shared-library

    Los invitados de una reunión eliminada reciben la carta de cancelación de la organización

    La invitación y la actualización eran letras de marca; la cancelación era una "se ha cancelado una línea". Añadir calendario.meeting canceled a su lado: el mismo jefe de carta, la reunión concluyó cuando estaba programada, el MÉTODO:CANCEL .ics que lo quita del calendario del huésped, y no se une botón para una habitación en la que nadie estará. Buscado con el otro canónico plantillas, por lo que una organización existente lo consigue en primer uso.

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