Saltar al contenido
KAMOUniverse

Changelog

Qué hay de nuevo.

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

  1. · kamo-shared-library

    Añadir asignaciones por miembros y progreso por documento

    La fila de documentos es la unión que hace que los sobres de firma electrónica se lean como un solo paquete. El conteo de insignias sale del estado de asignación, no del estado de e-sign: destinatario estado de estado no tiene VOIDED o VOIDED, el vacío nunca toca las filas de los receptores, y un El paquete solo reconoce no tiene sobres.

  2. · kamo-shared-library

    Congela el contenido del paquete en versiones inmutables

    Pins the ImgDat blob id y su SHA-256, no sólo imgId a Docs save vuelve a señalar el mismo Img en nuevos bytes, así que imgId por no dejar que dos miembros firmen diferentes documentos bajo ids idénticos. Instala el diseño también, así que ejecución nunca depende de la resoluciónLa devolución de DesignJson al diseño más nuevo.

  3. · kamo-shared-library

    Apunte a un paquete en departamentos, tipos de trabajo o miembros nombrados

    En forma de SystemUserAccess. Añade la audiencia a TeamMemberRepo, que era una interfaz vacía; el registro ACTIVE - predicado estatal es lo que mantiene El personal desquitó al personal y a los candidatos sin contrato de una entrega.

  4. · kamo-shared-library

    Añadir las entidades de plantilla del paquete legal

    Un paquete es un conjunto ordenado de carpetas más una audiencia. Las referencias de Binder son ids suaves porque las carpetas son deleables por el usuario y en cascada de sus artículos. El la redacción de certificación se almacena en su totalidad con su hachillo - un puntero no puede probar Lo que un miembro accedó.

  5. · kamo-internal

    Haz que la tienda de aglutinación conozca su colección

    La tienda es un módulo singleton, por lo que ahora rastrea el alcance activo, se despeja en un cambio de alcance, y deja caer las respuestas raras en vuelo.

  6. · DocsService

    Lista y crea carpetas dentro de una colección

    Alcances de la consulta visible-binder a la DocManager's (assocType, assocObjectId), estampa el alcance de la creación, la hereda en duplicado, y bachas últimamente de las mutaciones de ítem que nunca escriben la fila de aglutinantes.

  7. · DocsService

    Llerar el alcance de recogida en el contrato de alambre de aglutinante

  8. · InitializerService

    Volver la colección a la que pertenece cada aglutinante existente

    Deriva el alcance del primer ítem del ítem del DOC; las carpetas vacías vuelven a El dueño es My Docs. Aplica NO NULL sólo después del relleno.

  9. · kamo-shared-library

    Visibilidad de aglutinante estrecha a una colección de documentos

    Reemplazas findVisibleToMember con una variante de alcance y deja caer las dos Encuenadores sin referencia que se arreglaron por la columna fechada muerta.

  10. · kamo-shared-library

    Dar una carpeta a la colección de documentos a la que pertenece

    Los Binders no tenían culoscópico, así que cada DocManager hizo lo mismo global Piscina por miembro y una carpeta construida bajo Marketing podrían llenarse de Recursos Humanos documentos. Almacena el ordinal de ImageAssocType que coincido con Img.assocId. También añade un app-managed última-modified: BaseEntity.dateActualizado está ************* por lo que la lista ha sido siempre ha estado arreglando por el tiempo de creación.

  11. · kamo-internal

    Agrupación de los campos de encuentro por significado cuando se maximiza

    Dividir la forma en la misma mitad usó la unidad equivocada. Estiró una fecha. entrada a través de la mitad de la ventana y varado su caja de todo el día en el borde lejano, izquierda dos entradas de poco tiempo siguiendo varios cientos de píxeles de nada, y empujados Añadir un ancho de ventana completa de los Recordatorios que pertenece a . . . . . . . . . . . . . . . Lea como un pensamiento se sentó en filas separadas. Reclamar rastrea una cuadrícula de 12 columnas en su lugar, dimensionada a lo que cada campo es: Título ancho completo, el campo titular Fecha - Todo el día - Tiempo - TZ todo el cluster "cuando" en una línea Ubicación - URL de reunión donde está y cómo unirse Recordar la etiqueta, entradas y Agregar flujo en línea Sólo recuerdas sale una fila atrás: dos selecciones cortas ya no cuestan una línea cada una. El huso se amplía para absorber las pistas del campo Time en una reunión de todo el día, así que esa línea todavía se extiende el ancho. El orden de campo no se toca. desde los lapsos, así que lo que pestagas se queda pasando lo que ves, en ambos diseños.

  12. · kamo-internal

    Mantenga el original citado fuera del cuerpo editable

    Responder dejó caer todo el mensaje citado en el editor Quill como texto del cuerpo. Quill sólo puede modelar una cuadrícula simple, así que cada tabla de diseño en la cita era Aplanados en una mesa de diseño y diseño son cómo firmas y prácticamente todas se construye el correo de marketing, por lo que una firma citada volvió desnuda rejilla de celdas sin forma de recuperar el original. La cita ahora viaja al lado del cuerpo en lugar de dentro de él. Respuesta, respuesta-todo y adelante entregárselo como "quotedHtml"; el compositor lo muestra debajo de la firma, exactamente donde aterriza en el correo enviado, renderizado a través de la misma enmarcado en lija el panel de lectura utiliza, así que se ve como lo hizo cuando llegó, y su CSS no puede filtrarse al compositor que lo rodea. Enviar se adjunta después de la firma. Está colapsado para empezar, porque en un hilo largo la cita empequeñece la respuesta. Dos acciones se sientan a su lado: quitarla de la respuesta, o moverla al cuerpo como texto ordinario. La segunda existe porque sacar la cita del editor quitó la habilidad de recortar un hilo hasta la línea que se contesta. que todavía cuesta el diseño, pero ahora es una elección explícita en lugar de por defecto inevitable. Santuhados a la salida. Lanzando la cita alrededor del editor también lo enrutó alrededor del lavado implícito que estaba haciendo el editor, así que desinfectaEmailHtml ahora corre sobre ella antes de que se reenvie. Deliberadamente NO poner a través de makeHtmlLegible: que guarden a los jueces colorear contra el lienzo blanco del compositor, que es correcto para el texto escrito allí y malo para una cita que mantiene su propio estilo y rinde sobre sus propios antecedentes. Invertir El texto blanco de un boletín de temática oscura lo habría hecho oscuro. La cita monta en la instantánea de la ventana de herramientas para que una recarga no la pierda, y es Concatenado en el cuerpo al guardar un borrador de los borradores de las tiendas de endpoints uno cuerpo, y un borrador reabierto sosteniendo la cita mientras el texto late perdiendo el hilo.

  13. · kamo-internal

    Pare el encuentro-invite los campos en dos columnas cuando se maximiza

    La forma de invitación apila ocho filas de ancho completo, que en un componer maximizado ventana empujó al editor del cuerpo la mayor parte fuera de la pantalla mientras dejaba la mitad de la anchura de ventana vacía a ambos lados de las entradas. Maximizados, los campos ahora fluen en dos vías en su orden DOM existente. Título. Fecha, Tiempo-Timezone, Ubicación.URL - reducir a la mitad la altura de la forma sin reordenar cualquier cosa o tocar el diseño estrecho. Los recordatorios mantienen todo el ancho en ambos: la lista crece una fila por recordatorio, y media columna haría el toda la forma salto en altura cada vez que uno se añade. Las pistas son minmax(0, 1fr) en lugar de 1fr, o por defecto de una pista de cuadrícula min- ancho:auto se negaría a encogerse debajo de su contenido y dejaría que la fila URL entrada y Generar pulsar pulsa más allá de la mitad del ancho.

  14. · ESigService

    Aplicar operaciones de página y modificadores al documento firmado

    El diseñador siempre ha ofrecido la página rotar, borrar, reordenar y añadir en blanco, además de marcador de etiquetas, número de página y etiquetado, y el aplanado no lee nada de eso: valores de campo estampados en las páginas de origen y certificados adjuntos. Una página tú Borrado todavía enviado, una marca de agua que configuraste nunca apareció. Todo está ahora aplicado. El oleoducto se compone en el orden que las expectativas de un lector requieren páginas en blanco insertado para que el espacio índice del diseño coincida con el documento, cada página girada, los modificadores de posición traspuestas dibujados, valores de campo estampados, por encima de las marcas de agua dibujadas, eliminados Las páginas cayieron y el resto reordenado, certificados adjuntos el pasado. Certificados no llevar número de página o marca de agua: son el registro de auditoría del documento, no parte de ella. La numeración de la página se resuelve contra la secuencia final, por lo que un documento que arroja un número de páginas a sus sobrevivientes 1..n en lugar de dejar un hueco. El diseñador Ahora resuelve esa secuencia de manera idéntica (páginakamo-internalSequence.ts mirrors EsignPageLayout, caso por caso) por lo que la vista previa no puede prometer un número el el documento no llevará. Los modus son colocados en contra de la página como la ve el lector, que en un giro página significa mapeamiento de coordenadas de visualización de nuevo en el espacio de usuario y pre-girando el contento para que no salga de lado . EsignPageFrame hace eso, y su cuatro rotaciones están atrapadas por pruebas de esquina. Las marcas de agua utilizan el propio logotipo de la org del cubo temático. La mayoría de los orgs sostienen SVG sólo y PDFBox dibuja rasters, por lo que SVG se transcodifica a través de Batik con exterior la carga de recursos rechazados, un logotipo cargado es un contenido suministrado por arrendatario y rasterizar no es desinfectar. Una org sin logotipo no consigue marca de agua; el La marca por defecto de la plataforma nunca se sustituye en el acuerdo de un inquilino. Redimensionamiento en todo: diseño JSON se analiza totalmente, así que cualquier cosa malformada, fuera de alcance o de un diseñador más nuevo se deja caer en lugar de tirar y el firmas que aún aterrizan. Se rechaza el borrado de cada página PDF no tiene validez Formulario de página cero y un acuerdo sin páginas no es un documento. Página heredada los atributos se sujetan antes de la borda el árbol de la página. Un campo en un borrado página no está estampada en alguna otra página. El texto mantiene sus acentos en vez de estar arrasado con ASCII, por carácter, en contra de lo que la fuente puede codificar. 59 pruebas, 17 de ellas conduciendo PDFBox de extremo a extremo real y leyendo el resultado de vuelta.

  15. · kamo-internal

    Dale cada ventana de la herramienta emergente 40px más de espacio en ambos ejes

    El tamaño predeterminado de cada herramientaSize y minSize en el registro crece en 40x40, y el geometría que fue dura junto a ella se mueve con ella en lugar de derivar fuera de acuerdo: - Tabla de tamaño por modo de CalculatorTool, que refleja la calculadora de la calculadora de registro por defecto. - El tamaño restaurado de AiChatWindow. A 420x520 ya era un cabello bajo el mínimo antiguo; contra el nuevo 360x540 habría restaurado la ventana más pequeña que un drag-resize se permite hacerlo. - restauradoWindows () ahora repite un tamaño permanecido sólo para una herramienta el lector en realidad puede cambiar el tamaño. Para una herramienta de tamaño fijo la instantánea simplemente resucita el registro por defecto de la construcción que la haya escrito, por lo que una pestaña recarga a través de este cambio habría restaurado el viejo 320x650 y lo habría mantenido para el resto de su vida. El mismo guardia arregla un caso que es anterior a este cambio: una ventana el relevo se había sujetado para encajar un cortoporte de vista se mantuvo en el Tamaño apretado y nunca volvió a crecer después. La propia colocación del muelle. findDockX, relayoutWindows, makeRoom rect y la evitación del motor hexhead . todas medidas geometría en vivo, por lo que siguen el nuevos tamaños sin nada que actualizar. También corrige el botón de maximizar el chat de IA, que eligió su acción de Mientras que dibuja su icono de Es Maximizado. En cualquier opinión más corto de 800px maximizando nunca podría satisfacer ese umbral, por lo que el botón ofrecido para restaurar y luego maximizar de nuevo. la ventana no podía ser devuelto a la baja. Ambos leen ahora el mismo valor.

  16. · kamo-internal

    Arrastre, corte, copie y pegue fichas de los destinatarios entre To, Cc y Bcc

    Trasladarse a alguien de To a Bcc signa favorecía borrar el chip y escribir la dirección otra vez de la memoria. Las patatas fritas ahora son seleccionables y se pueden arrastrar o llevar a cabo el portapapeles de cualquiera de los tres campos en cualquier otro. - haga clic seleccione un chip; cf. clic en los accionamientos y clic en el cambio toma un rango. La tarjeta de información se mueve del clic al doble clic, por lo que un solo clic puede hacer lo que lo hace en cada otro cliente de correo. - arrastrar un chip o una selección entera a otro campo. Ctrl o Alt held lo hace una copia; un cuidado de inserción muestra dónde aterrizará, y la caída dentro de la los mismos reordenamientos de campo. Un arrastre multichip lleva un conteo en lugar de mostrar el - Ctrl-X / Ctrl-C / Ctrl-V move chips entre campos. texto/llain siempre es escrito, así que un chip arrastrado o copiado al cuerpo o en otro correo cliente llega como una lista de direcciones ordinaria; un sabor privado Junto a él mantiene el nombre, la foto y el enlace de contacto para una pasta de vuelta a Kamo. - teclado: las flechas caminan por las fichas (se extiende el turno), Ctrl-A toma el campo, Eliminar elimina la selección y aterriza en el siguiente chip, Escape vuelve a la entrada. Backspace en una entrada vacía ahora se sube al último chip en su lugar de borrarlo de plano, así que lo que está a punto de ir es visible primero. - pegar en los chips de entrada cada dirección completa que encuentre, incluyendo una - Uno. Un fragmento de medio tipo todavía cae a través de la entrada de texto. La mitad del campo cruzado necesita los tres campos para actuar entre sí, que un campo poseer sólo su propia lista no puede hacerlo; RecipientTransferProvider posee el registro y realiza el movimiento. Un campo que se hace sin él, el editor de la campaña utiliza uno por sí solo, mantiene la selección, el reordenamiento y el portapapeles, y simplemente tiene No a dónde transferirse. parseRecipientList ahora requiere un dominio en lugar de sólo un 'o'. parseDireress es deliberadamente laxa porque tecla un avatar alimente de cualquier cabezazo llevar; un chip es algo que trataremos de entregar, y pegar "bob". producido uno que nunca podría ser enviado.

  17. · kamo-internal

    Rotar la superposición de campo con la página, bandera importaciones sin leer, campos de pedidos para la lectura

    Tres cosas que sólo empiezan a importar una vez que llega un documento llevando cuarenta campos detectados en lugar de dos colocados a mano. rotación: girar una página pasó el lienzo pero dejó campos y anotaciones detrás, así que se deslizaron del contenido al que estaban anclados. Las dos capas ahora pasar con la página, manteniendo sus coordenadas en el propio espacio de la página sin rotación porque en contra eso se posiciona el backend. Cada interacción puntera es Mapeado de nuevo fuera del espacio de pantalla a través de la nueva páginaAyentes de geometia. redimensionar, dibujar anote, y soltar un nuevo campo de la caja de herramientas y sin rotar: se colocan contra el marco de la página, no su contenido. Marcador no revisado: campos de auto-plaza llevar un anillo corrido hasta que el usuario hace clic Una, así que una gran importación se lee como una lista de verificación. Sólo en sesión, nunca salvó. Orden de lectura: los campos detectados se clasifican en la página y a través de cada línea, con una tolerancia tan una fila ligeramente desalineada todavía se arregla de izquierda a derecha. Comida El orden en el archivo es un artefacto de autoring-herramienta y a menudo no es orden de lectura. También corrige una colisión de valor de opción de mi propia creación: dos botones de radio Los subtítulos impresos coinciden (dos "Sí" en una pregunta) se les dio el mismo valor, y el marcador enciende un botón comparando el valor de grupo con el propio botón, Así que ambos se habrían encendido a la vez.

  18. · kamo-internal

    Lea las acciones de formato Acrobat al detectar campos rellenables

    Acrobat almacena el formato previsto de un campo como JavaScript en /AA, que pdf.js superficies como acciones.Formato. Esa es la declaración del autor en lugar de una conjetura fuera del nombre del campo, por lo que ahora supera el nombre/jetuación heurística: - Cine de AFNumber-Format -- cuando lleva una cadena de moneda, número de lo contrario - AFDate.Format/AFDate-FormatEx - Fecha, AFTime-Format - time - AFPercent-Formato - número - AFSpecial-Format(n) --- zip / zip-4 / phone / SSN - una acción calculada significa que el campo se calcula, por lo que importa solo lectura También: una firma o widget inicial más delgado que las necesidades de control ahora crece hacia arriba desde su borde inferior, ya que un campo de firmas PDF es a menudo sólo tan alto como regla impresa se sienta y la tinta pertenece por encima de la línea; y un XFA puro documento se reporta como tal en lugar de leer como "no hay campos rellenables", porque sus campos viven en XML que la detección de AcroForm no puede ver. Verificado contra real pdf.js 4.10.38 junto a la suite de la unidad.

  19. · kamo-internal

    Insertar un nuevo enlace de reunión en el codificador del compositor

    Añade una acción de pies a la ventana de composición que crea una reunión con el proveedor configurado de organización y escribe su vínculo de unión en el cuerpo Dónde está el cuidador. Distinto de la reunión-invita agarrar a su lado: que adjunte un calendario invitación con un tiempo, asistentes y recordatorios, mientras que este es el único clic "Aquí hay una habitación, ven cada vez" caso que solo necesita una URL en la prosa. El cuidador se rastrea a través del desenfoque el clic de lo contrario causaría, por lo que el enlazar tierras donde el miembro estaba escribiendo en lugar de en la parte superior del mensaje. El paso de crear y vincular el invitado que el compositor invitado ya tenía ahora se comparte, así que Hay una definición de cómo una reunión se convierte en un enlace. /meet/unin/oid-redirección, que es consciente del proveedor y firma a los miembros de Kamo en clic en la hora.

  20. · kamo-internal

    Reconstruir los campos AcroForm de PDF rellenables como campos kamativos nativos

    Abrir un Editable PDF en el editor de documentos ahora lee su widget AcroForm anotaciones del documento pdf.js y recrea cada uno como DesignField on la misma página, en la misma posición y tamaño, con el Kamo más cercano Tipo de campo. En un diseño virgen los campos se colocan automáticamente (uno deshace paso, con una acción de deshacer en el aviso); de lo contrario la caja de herramientas ofrece una diálogo de revisión que se salta cualquier cosa ya cubierta por un campo colocado. - app/lib/esign/acroform.ts: pura detección. Los rectos de widget se convierten a través la página de vista por lo que se honra la página /Rotate se honra. Portadas de cartografía estructural Sig/Btn/Ch/Tx (botones de empuje y widgets ocultos cayeron); widgets de texto obtienen un Paso semántico sobre la punta de la herramienta, el nombre del campo y la leyenda impresa a su lado en la página, "Borrower Signature" se convierte en una caja de firmas y "Signature Date" una fecha. Los botones de radio mantienen sus cajas individuales y son Atado a través de un grupo compartido en conjunto. - DesignField gana opciones opcionales[], que coincid con la opción de campo contrato con el contrato la aplicación de señalización ya acepta; el panel de propiedades ahora los edita, y también puede reasignar un campo a otro firmante. Verificado contra real pdf.js 4.10.38 parsing una forma real pdf-lib-construida, en de la unidad de la suite.

  21. · InitializerService

    Crear la columna de email search-vector y su índice invertido

    **************** nunca existió. EmailService V1-email-metadata-schema.sql lo declara, pero que la migración nunca funvide - el mesa vino del escaneo de la entidad de este servicio, y SearchIndexEntity omite la campo porque Hibernate no puede mapear TSVECTOR, por lo que ddl-auto no pudo añadirlo. ************* por lo tanto falló con SQLSTATE 42703 en cada mensaje, y porque que UPDATE comparte una transacción con el inserto de la fila, el inserto hacia atrás. La tabla siempre ha estado vacía y la búsqueda de correos electrónicos ha Nunca devolvió un resultado.

  22. · kamo-internal

    Una tarjeta de contacto detrás de cada nombre en un mensaje

    Cada persona mostrada en una vista letal era un callejón sin salida. A y Cc renderizados como displayNameFor(a).unir(', ') - una pared de coma de nombres de pantalla sin dirección, no Sin acciones. Tres cosas estaban mal con eso. La dirección era irrecuperable, y los nombres de la pantalla son texto de cabecera controlado por atacantes, por lo que dos La gente llamada Chris era indistinguible y copiaba la dirección de alguien Quién era CC había querido abrir una respuesta e inspeccionar el chip. Todo el organización ya conoce a esa persona. avatares, presencia en vivo - se resuelve por dirección y nada de ella llegó a la pantalla. Y un hilo de catorce receptores representado como una línea ilegible. Hover un nombre abre una tarjeta. La placa de dirección es su pieza central más bien que un subtítulo gris, porque la dirección es lo que existe la tarjeta para entregar: ancho completo, mono, parte local en tinta y encendedor de dominio, la placa completa una copia control que barre los mensajes acento en sí mismo sobre el éxito, y aún así seleccionable para cualquiera que prefiera arrastrar. A su alrededor, sólo filas que tienen algo en ellos: título de trabajo, empleador, departamento, números que marcan el el softphone, la extensión de un colega, y su hora local antes de llamarlos. Los colegas llevan un punto de presencia en vivo de la presencia y disponibilidad existente contextos. Los remitentes automatizados lo dicen, y una dirección sin respuesta no ofrece un respondería el buzón se negaría. Los receptores enumera más allá de cinco nombres colapsan detrás de un conteo. La mecánica vive en usoHoverCard, lejos de la tarjeta, porque nada de eso es sobre la gente: flotante para que un puntero que cruza una cabecera no dispare, un período de gracia cercana para que el camino diagonal a la carta no lo descarte, uno tarjeta abierta a la vez, remedida cuando el panel se desplaza o el registro de tierras, y botones reales para que el teclado y el tacto lo alcancen en absoluto. Sólo enfoque de teclado se abre la acción en el enfoque de clic abriría la carta en la misma garrafal con el clic Lo cierra, y el chip se vería inerte ante un ratón. Los registros provienen del corresponsalStore, clavedo por dirección y nunca fusionado en objetos de mensaje: ambas listas visualizan la encuesta cada treinta segundos y reemplazar su matriz de mensajes al por mayor, que borraría cualquier cosa que se lleve allí dos veces por minuto. A diferencia de los avatares que resuelven perezosamente, toda una cabecera se prefetch cuando un mensaje se abre, y flotar cubre cualquier cosa que se perdió - por lo que la tarjeta es normalmente ya se llena cuando se anima. formatAgo se aleja de MemberItem para que la lista y la tarjeta describan lo mismo ausencia de la misma manera.

  23. · EmailService

    Resuelve a la gente detrás de las direcciones en un mensaje

    Un encabezado de mensaje conoce una dirección y sea cual sea el nombre de visualización que el remitente elija Ponlo a su lado. La organización ya conoce mucho más de colegas, dirección libros, extensiones, husos horarios y ninguno de ellos llegó al buzón. Mensaje **************** las respuestas un lote de direcciones con el persona detrás de cada: colega (con título de trabajo, departamento, extensión, zona horaria y un miembro que desbloquea la presencia y el chat), el contacto guardado (con empleador, título y números), o un EXTERNAL explícito para que el llamante pueda caché la respuesta en lugar de volver a preguntar en cada flotador. Deliberadamente separado del endpoint de avatar en lugar de plegarse en él. Eso uno es de dos fases por necesidad. una falta completa puede significar DNS más cuatro llamadas HTTP a terceros y este es un púmulo de lectura local, indexada, org-scoped que puede responder completamente en la primera llamada. Compartir un endpoint obligaría a la La mitad sincrónico para heredar un contrato de "pregunta más tarde" que no necesita. Llamatorio en la dirección desnuda y nunca en el nombre de la pantalla, que es texto controlado por atacante: un forastero puede poner el suyo al nombre real de un colega, y este registro lleva la extensión de la línea directa de ese colega. El normalizador que hace cumplir que ahora se comparte con el endpoint de avatar (MailboxAddress), así que los dos no pueden separarse y perderse las entradas en el alijo del otro. La organización viene de la sesión, nunca la petición respuestas "hace este inquilino ostenta un récord para esta dirección", que es una membresía Omulo si el que llama elige al inquilino. Ids serialize as strings: CockroachDB row ids corrin más allá de MAX-SAFE-INTEGER, y EmailService no tiene mapa global Long-to-string porque las uids de mensajes son largas el front end del buzón de correo realmente trata como números.

  24. · kamo-internal

    La ficha de los recursos es la biblioteca de documentos de RRHHH de la org

    Sustituye al marcador de Recursos por DocManager en una colección de documentos de su propia imagen. . ImageAssocType.HR-RESOURCE, cubo de imágenes-hr-resources la forma en que está Marketing Materials, y deliberadamente separado de él: una comercialización El volante y un manual de empleados no pertenecen a una biblioteca. El tipo assoc se envía como ORDINAL (13) del enum, no como su id (15). La imagen los backends lo resuelven con valores (sociscoType] y los dos divergen porque el enum skips id 6; enviando el identificador escribiría en el cubo de otra colección, Cómo es como los Mi Docs salieron una vez que los documentos enviados no podía leer. HR-RESOURCE-ASSOC-TYPE lleva ese razonamiento al lado de la constante. DocsService y ConversionService fueron reconstruidos para la nueva constante primero. frontend es lo único que envía 13, así que aterriza último.

  25. · kamo-shared-library

    Tipo de idiota de RROURCE para la biblioteca de recursos de org HR

    La pestaña /hr Resources publica manuales, políticas, formularios y referencias material a todo el equipo, y ningún tipo de assoc existente se ajusta: MIDOCS es un el área de la persona, el cubo de SYSTEM-WIDE es las plantillas de e-sign, y MATERIALS es la biblioteca de marketing, un volante y un manual de empleados no pertenecen juntos. Org-scoped como MATERIALS, con borrar/sobreescriba/carpetas en porque RRHH cura esto a mano. Los tipos de Doc están permitidos pero opcionales (isAllowDocType=false, isAllowDocTypeOpt=true), así que un org que quiere Manual / Política / Formulario categorías pueden encellarlos sin que todos los demás org se vean obligados a presentar uno. Apegado último, por lo que no hay cambios ordinales existentes. Su ORDINAL es 13 mientras que su id es 15 El enum salta id 6, y los llamantes envían al ordinal, por lo que los pines de prueba 13 y Anclaje MATERIALES/CATALOG-SOURCE a ambos lados de la misma. ConversionService y DocsService indexa el enum por ordinal y necesita reconstrucción antes de que cualquier cosa envía 13, o valores ()[13] lanza su matriz más corta.

  26. · kamo-internal

    Concha de módulo de Recursos Humanos con cinco pestañas de vuelta

    Añade /hr con el cromo de página de las cuentas en su forma de espaldas de ruta (el mismo /marketing ya utiliza): un diseño dueño del héroe de gradiente y pestaña subrayada barra, un índice que aterriza en la pestaña accesible, y una página cada uno para Vista general, Asistencia, Legal y Cumplimiento, Capacitación y Recursos. Dos puertas, ambas necesarias. organización.Sus afán de los HRS /settings/account?tab=apps rebota la ruta a casa cuando la aplicación está apagada, desde entonces con ella fuera /hr no es un lugar que existe para el org. Con la aplicación encendida, el Once derechos de ServiceType.HRS existentes deciden: un nuevo complejo hasAnyHrRight Puerta se une **************** y cada pestaña lleva un predicado de los grupos OR (HR no tiene una sola opinión correcta en la forma de Marketing). Tabs los fallos del miembro están ocultos de la barra y se niegan a la entrada directa de URL. Registros 'hr' en el registro de naves antes de Configuración, por defecto a la primaria ferrocarril; la tarjeta de lanzamiento casero y la entrada de comando-palette siguen desde el registro membresía. La orden de registro por sí sola sólo rige a los miembros de primera, aunque ordenZone adjuntó ids nunca arreglados, así que cualquiera que hubiera tocado su nave habría conseguido HR *debajo* Configuración. fusionCanonicalOrder ahora inserta tales ids en la posición que el registro solicita y useHomeLayout utiliza la misma regla, por lo que la La colocación declarada se mantiene para los miembros existentes y también para todas las opciones futuras. Los organismos de pestaña son marcadores de posición: no hay ningún modelo de datos de HR en ninguna parte del backend aún (ningún empleado, asistencia, nómina, formación o entidad de cumplimiento en SecurityService, APIService o la biblioteca compartida), por lo que cada pestaña se nombra y lo que aguantará. Especificación en documentos/superpotencias/especificaciones.

  27. · kamo-internal

    Completa la pestaña de las comunicaciones

    Cada sub-tab ahora tiene sus propios datos, y All entrelaza cada canal por fecha. Notas mantiene MediaStream, porque las notas son de autor aquí, pero leenOnlyChrome desnuda las prestaciones sociales que un historial de clientes no tiene uso para: el PUBLIC / Accesorio PREVATO en el compositor y en cada post, el autor edita/dilete menú, y similares / comentario / compartir fila con su hilo de comentarios. Chat se mantiene en vivo SocialConversationView. Todos, llamadas, textos y correos electrónicos hacen lo nuevo EmailEntry colapsa un mensaje a una línea de remitente, sujeto, palabras de apertura y se expande en su lugar. La correspondencia de una pista puede correr a cientos de mensajes y hacerlas a plena altura hace que la pestaña sea inutilizable. El cuerpo no es se puede ver hasta que se abra la fila, porque cada lectura es un proveedor vivo alrededor viaje; luego se hace a través de la misma SanitizedEmailRenderer /sages utiliza, Así que no hay segundo camino menos auditado para HTML no de confianza. Corregido en el camino: PostCard's Edit menu elemento llamado man handleMenuClose, por lo que tenía nunca abrió el editor; y MediaStream dejó caer PostCard's en PoststDeleted / en PostUpdated por completo, por lo que un post borrado o editado se quedó en la pantalla en su antigua formo hasta una recarga completa. Hardcoded "Public"/"Privado"/"Post" en el compositor ahora utiliza las claves del diccionario que ya existían.

  28. · SecurityService

    Línea de tiempo de comunicaciones unificada API

    GET ************* devuelve una página ordenada por fecha a través notas, llamadas, buzones de voz, textos, e-mails y chat; ?channel= lo estrecha. Se fusionan tres fuentes. Las llamadas, mensajes de voz, mensajes de texto y correos electrónicos provienen de la Asociaciones de LEAD-COMMUNICATIONS; notas y chat se leen directamente desde el La corriente de medios de comunicación y la sesión social de plomo, porque ambos ya están en la cabeza. reflejarlos habría añadido un problema de consistencia de doble escritura y, sin relleno, perdió todas las notas y mensajes de chat que ya existen. La charca es keyset, no offset. La compensación a través de fuentes fusionadas es errónea página pasada uno: cuántas filas aporta cada fuente varía, por lo que "saltar 25" no aterriza en estrictamente más vieja, por lo que cada página cuesta lo mismo y nada se salta o se repite incluso cuando varias entradas comparten una estampilla de tiempo. La autorización refleja la puerta de la parte de partida de plomo exactamente, y tiene que ser una entrada En gran parte el propio valor de contacto de la pista más el contenido intercambiado, por lo que un llamante sin VIEW.LEAD-CONTACT-INFO-OTHERS en la pista de otra persona no debe ser capaz de Lea este punto final lo que la vista de plomo enmascarada retiene. Se auditan las negaciones, no sólo los éxitos. El endpoint del organismo de correos resuelve el buzón de la asociación en lugar de del llamante: el correo de plomo es de ancho de toda lana, por lo que el mensaje a menudo vive en un el buzón de su colega, y los UIDs son únicos sólo dentro de una carpeta. ir en silencio devolvería un mensaje no relacionado del propio buzón del espesor. MediaAssetUrls extrae los constructores de URL de avatar/imagen que eran privados de MediaStreamController, por lo que un autor de correos se hace idéntico en la pestaña Notas y la cuenta de Todos.

  29. · DaemonService

    Conduce el barrido de la asociación de correo a lider

    Cásilla de cinco minutos contra el puntazo interno de EmailService, que se refleja VoipGlobalSyncJob. El horario vive aquí porque EmailService ejecuta varios Vainas y un frijol "Scheduled había todas las réplicas barriendo cada buzón a la vez. DesaplicaciónConcurrentEecución más tiempos de HTTP finitos: un barrido sobre cada buzón puede exceder la garrafa, y sin el guardia Quartz se apilaría corre hasta Cada hilo de trabajo se sentó dentro de EmailService. Los timeouts importan para lo mismo. razón con la guardia de concurrencia en el lugar, una llamada indefinidamente colgada Parar el barrido de nuevo hasta que la cápsula se reiniciera.

  30. · EmailService

    Corresponder al plomo asociado, y arreglar el indexador de empuje muerto

    Añade el correo la mitad de la pestaña de comunicaciones de plomo, más la ingestión que necesitaba para existir en absoluto. La plataforma no tiene ningún bucle de correo de trabajo: IMAP IDLE está codificado duro a Dovecot, allí no es una notificación de cambio de gráficos o reloj de Gmail, y MessageIndexer desechado cada notificación que haya recibido porque el editor IDLE omitió la UID su uid-=0 guardia rechaza - también resolvió el miembro del remitente más bien que el dueño del buzón. Ambos están arreglados aquí, pero un gancho en ese camino por sí solos todavía no han hecho nada por la mayoría de los inquilinos, así que la asociación está impulsada por un barrido en cada buzón a través de MailReader, que es proveedor-agnóstico por construcción. Las páginas de barrido en una marca de tiempo, no de un UID. Los UIDs son monotónicos sólo dentro de un IMAP UIDVALIDITY é época; una marca de alta mar se arriesga a silenciar un buzón La reexaminación es gratuita porque vincularse es idempotente. CompanyAddressResolver implementa la regla del propietario: nunca asociar un mensaje donde la dirección emparejada y todos los demás participantes están todos de la empresa, de lo contrario, añadir la dirección de trabajo de un colega a una pista Exponen su correo interno. Falla CIERLO: un inventario que no podía cargar respuestas "desconocidas" y la asociación se salta, en lugar de responder "externa" y deshabilitando silenciosamente el guardia. **************** atrapa un cuerpo en nombre del buzón que Lo sostiene. El endpoint ordinario resuelve el proveedor para el que llama, y los UIDs son únicos sólo dentro de una carpeta, así que apuntarla a la UID de otro miembro devuelve un mensaje no relacionado en lugar de error. Vidas de autorización en el Servicio de Seguridad, que resuelve el buzón de la asociación en lugar de desde el navegador. Vinculación en el momento de la carta fue probado y eliminado: SMTP devuelve ni un Message-ID ni una UID enviada, por lo que cada correo de salida a una pista colapsó en una asociación sin localizador para expandirse. El barrido es el dueño.

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