Saltar al contenido
KAMOUniverse

Changelog

Qué hay de nuevo.

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

  1. · kamo-shared-library

    Borrar VIEW-DASHBOARD, VIEW-REPORTS y EXPORT-REPORTS

    Las tres páginas nombradas que existían en el disco y estaban respaldadas por nada: app/dashboard publicaciones de muestra renderizada directamente de i18n, aplicaciones/informes importado framer-motion y la siguiente-inclinación y sin datos en absoluto, y no hay ningún tipo de motor o ruta de exportación en ningún lugar en la plataforma. Ninguna de las dos páginas fue vinculada a navRegistry y no se alegó AppType la prueba que mantuvo vivos los derechos de código de referencia, ya que se anuncian como COMPLEADO. VIEW-TASKS (120) fue triulado junto a estos y se mantiene deliberadamente. app/tasks es indistinguible de los otros dos en la fuente - inalcanzable, sin respaldo, puro UsState, i18n traducido a 22 idiomas y está previsto que se complete. Uno está abandonado y uno es el siguiente en la hoja de ruta, y sólo el propietario del producto sabía cuál. Taxonomía 193/130/33/30 se convierte en 190/129/32/29, 61 raíces. Los cuatro números se mueven: uno independiente, una raíz que pierde a su único hijo, y a ese niño. Los años 0, 1 y 2 están quemados. Tenga en cuenta que 0 es un verdadero id. VIEW-DASHBOARD fue el primero derecho jamás declarado, por lo que cualquier predicado que toque estos debe incluir cero más bien que apoyarse en la veracidad.

  2. · kamo-internal

    Iconos de la aplicación en el paso de Aplicaciones y Características del asistente

    El asistente de creación-red dibujó cada aplicación como la primera letra de su nombre, por lo que el la misma aplicación era un escaparate en Configuración - "Caracteres" y una "S" aquí. Los iconos Ya existían... estaban encerrados dentro del icono local de FeaturesManager. Movié esa mesa a ************* llaves por ServiceType, y apuntar ambas superficies a él para que no puedan derivar. Añadidos los dos apps para las que la pantalla de características nunca tuvo entradas (CALCULATOR toma el carril de navegación Calculate, FEED toma DynamicFeed), los ayas de nombres despreciados y una red de aplicaciones caída -- la misma forma que nav/settingsTopicIcons.ts. Cada glifo es var plano (--color-primario) ya sea que la aplicación esté encendida o apagada: veinte cada uno de los que lleguen a su propio color se leía como nota de rescate. Afugo se queda con el tinte de azulejos y el interruptor. La prueba de guardia falla la construcción si un ServiceType vivo no tiene icono, de lo contrario a La aplicación recién catalogada se envía como una plaza gris anónima y nada se queja.

  3. · kamo-internal

    Una superposición de color sólido para el logotipo de la pantalla de carga también

    Añade "Loading Screen Logo Overlay" directamente debajo de la página principal uno en ************* con las mismas trece opciones, aplicar al logotipo de la pantalla mostrándose entre las navegacións de la página. Fallo No Overlay, así que nada cambia para una org que nunca abre el campo. Su propio entorno en lugar de uno compartido con la página principal, porque los dos las superficies tienen fondos opuestos: un masthead blanco y un gradiente oscuro. La sombra que se lee en uno rara vez es la sombra que se lee en el otro, y un solo escenario obligaría a una elección que esté mal en alguna parte. El La pista debajo de cada uno lo dice. El tipo es ahora LogoOverlay, no HomeLogoOverlay. y un tipo que se llamaba por uno de ellos describiría erróneamente ambos en una semana. El Vocabulario, el solucionador y la lista de opciones se comparten; sólo la columna Cada lectura de superficie es diferente, por lo que los colores no pueden separarse. carga.tsx lee OrgContext directamente en lugar de a través del lanzamiento gancho: se monta durante la navegación y nunca debe ser la cosa que rompa un transición de página. Un org desaparecido significa que no hay superposición, que es el defecto De todos modos. Las dos filas de sólo lectura se hacen idénticamente, así que ahora comparten una ayudante en lugar de llevar una copia cada uno. Requiere la columna de carga.logo-overlay (KamoInitializer, aplicado) y una SecurityService reconstruido contra la entidad compartida.

  4. · InitializerService

    Añadir la columna de carga.logo.overlay

    Segunda superficie para la función de superposición de logotipo: la pantalla de carga mostraba entre navegación de páginas, junto con la página de inicio masthead. Ambos ALTER viven en el único corredor porque son una característica con una Vocabulario, y alguien que busca cualquiera de los dos debería encontrar ambas cosas. La misma forma que su hermano - nullable, sin relleno, sin DEFAULT, desde un valor ausente y Ningún tipo derió lo mismo a cada cliente. La guardia de la deriva ahora itera los campos de superposición de la entidad en lugar de nombrar uno, por lo que una tercera superficie no se puede añadir a la entidad sin un ALTER. Es también pins una declaración por columna: un solo ALTER compartido en silencio dejar la otra columna sin crear.

  5. · kamo-shared-library

    Lleve la superposición del logotipo de carga en Organization

    El mismo vocabulario de superposición que homeLogoOverlay, aplicado en su lugar al logotipo en la pantalla de carga mostrada entre las naves de la página, más su rama en la ruta genérica de parche. Una columna propia en lugar de una configuración compartida, porque los dos superficies tienen fondos opuestos: el masthead de la página de inicio es blanco y el la pantalla de carga es un gradiente oscuro, por lo que la sombra que se lee en uno rara vez es la sombra que se lee en el otro. Una org que quiere que ambos quieran dos respuestas. Null se resuelve NONE en el cliente, por lo que cada org existente comienza sin superponer y no necesita relleno. La columna de carga.logo-overlay ya está aplicada (KamoInitializer, OrgHomeLogoOverlayMigration).

  6. · kamo-internal

    Elija el agente asignado del directorio, no un descenso

    El campo de Agentes Asignados es ahora el mismo control que Gerente en el de un miembro perfil: un campo de sólo lectura que abre el selector de miembros buscable. Un descenso sólo podía sostener una página, y la lista detrás de esta estaba cargada entera en cada vista de plomo si alguien abrió o no la tarjeta de dos ofertas de directorios por carga de página, una de las cuales había estado muerta desde la última vez que el campo cambió de manos. Elegibilidad no cambia en sustancia y se aplica mejor: el seleccionador pregunta el directorio para titulares de VIEW-LEADS, que es el mismo derecho el viejo endpoint resuelto, y se mantiene en los miembros del equipo porque ese es el alcance por defecto. El "mantener el cesionario actual seleccionable" caso especial se ha ido con el desplegable. el recolector pincha la selidad actual por encima de los resultados, por lo que sobrevive a una búsqueda en lugar de necesitar una opción hecha a mano. Unassigning funciona ahora. La opción vacía siempre existió pero el parche colapsó que a indefinido, que construyaActualizaciónLeadRespiciones salta, por lo que eligiéndolo envió un Parche vacío y el plomo mantuvieron a su dueño. El Remove del seleccionador envía el identificador vacío el servidor ahora se lee como una señal explícita.

  7. · SecurityService

    Estrecha la búsqueda del miembro a los titulares de un derecho dado

    El seleccionador de asignación de plomo necesita el directorio para devolver sólo a las personas que puedan en realidad trabaja una pista, así que /team-miembros/busca toma un derecho requerido. An El nombre no reconocido es un parámetro 400 en lugar de un parámetro ignorado: soltando silenciosamente un filtro ensancha un límite de permiso, que es la forma equivocada de fallar. Un derecho Nadie tiene una página vacía sin consultar, ya que la alternativa es una lista de IN vacías la base de datos no analizará. Quién mantiene un movimiento a la derecha en RightHolderResolver, que el legado El endpoint de los miembros asignables ahora también utiliza. La caminata ya estaba copiada. cinco sitios de llamadas y los dos de asignación de plomo tienen que ponerse de acuerdo sobre quién puede recibir una pista mejor que estén de acuerdo haciendo la misma pregunta que por que hoy tiene el mismo código. Los tres restantes no son tocados.

  8. · kamo-shared-library

    Deje que el directorio se filtre por derecho, y deje que un plomo no asignado

    Dos cosas que el recolector de tareas necesita. Las consultas de directorio toman un juego permitido-id para que una persona que se llama pueda estrechar la búsqueda a la gente una cosa puede ser dada a asignar una pista a alguien Sin los parques de VERDAECS donde no pueden abrirlo. El set se calcula en Java en lugar de unirse aquí porque un derecho está sostenido por una fila de derechos o por un papel de subvención, y el segundo no tiene fila que encontrar. Viaja con un bandera sin restricciones y nunca está vacía: IN () es un error de sintaxis en el Postgres Alambre, así que el caso de todo el directorio pasa un marcador en lugar de nada. Y updateLead ahora lee un identificador ausente y uno vacío como diferente petición, como ya lo hace para el país y el idioma. Un parche lleva sólo los campos que significa cambiar, así que sin esa distinción no había la forma de decir "nadie es dueño de esta pista" - la cuerda vacía cayó por lo mismo Rama como campo desaparecido y la desasconsejada no hizo nada. El abierto fila de asignación se cierra en lugar de ser reemplazada, ya que una asignación de LeadAssignment siempre nombra a un miembro y ya no hay uno para nombrar.

  9. · kamo-internal

    Los editores dicen "Ejecutó como MANAGE-TIMECARDS" en lugar de "Todavía no se ha impuesto"

    Un chip llevaba dos verdades diferentes y engañosa en direcciones opuestas. Sin construir significa que nada comprueba el derecho y concederlo no hace nada. Superado superado significa que la capacidad es real y cerrada, bajo el nombre de otro derecho. uno todavía no hace nada, pero borrarlo estaría mal y el administrador necesita saber qué derecho conceder en su lugar. Las cuatro entradas son las que la auditoría estableció: VIEW-SCHEDULES y MANAGE-SCHEDULES en el marco de MANAGE-TIMECARDS, porque la pestaña de asistencia solía abrirse VIEW-SCHEDULES y cada pestaña de recursos humanos recibió más tarde un derecho propio; CREATE-EMPLOYEES y DELETE-EMPLOYEES bajo MANAGE-MEMBERS, porque un empleado es miembro de un registro de empleo y no hay endpoint CRUD empleado. La lista está curada a mano, a diferencia de la generada que anota, y deliberadamente así: Ningún analizador puede decir "superseded" de "nadie lo construyó todavía". La membresía no Quitar un derecho de UNENFORCED.RIGHTS - nada lo pasa a un cheque de cualquier manera - por lo que la prueba de paridad con la auditoría comprometida no está tocada. Dos guardias evitan que la anotación se pudriera en un comentario ranz. Un derecho que es genuinamente se puede no etiquetar como reemplazado, lo que pondría dos fichas contradictorias en un interruptor. Y la cobertura correcta no debe ser en sí misma decorativa: el mensaje es "subir X en su lugar", por lo que un X muerto enviaría el administrador un paso más lejos de un permiso de trabajo. Valía la pena hacer esto antes de las próximas tierras de recursos humanos. Dos de estos cuatro eran uno. revisar lejos de ser borrado durante la auditoría precisamente porque el editor dijo estaban muertos.

  10. · kamo-shared-library

    Lleve el logotipo de la página de inicio sobre la superposición de Organization

    El color sólido y una org pueden pintar sobre el logotipo de la masa en el página de inicio kamo-internal, más su rama en la ruta de parche genérica para el existente PUT /org/Eidá persiste junto a bgWatermark. Almacena un fichaje - PRIMARY-DARKER, no 004ba0 - resuelto contra este org's colores propios en el tiempo de render, así que un org que más tarde remarca las marcas mantiene una superposición que aún coincide en vez de un hechizo congelado cuando alguien lo escogió. Llanas Cadena en lugar de enum, por lo que un simbolento futuro no necesita ninguna restricción de CHECK barrido. Null resuelve NONE sobre el cliente, por lo que cada existente org comienza sin superposición y no necesita relleno. Ya se aplica la columna home-logo-overlay (KamoInitializer, OrgHomeLogoOverlayMigración) Este campo mapea una columna que existe, no un servicio SELECT en un error de consulta.

  11. · InitializerService

    Añada la columna home.logo.overlay

    Respalda la página principal Logo Superponer el ajuste: el color sólido y org puede pintar sobre el logotipo de masthead en la página de inicio de kamo-internal. Sostuvo una ficha en lugar de un hechizo, así que la superposición se resuelve contra el La propia paleta de org a la hora de renderizar y sobrevive a una nueva marca. Llana VARCHAR en lugar de un enum, así que un símbolo posterior no necesita barrido de la restricción CHECK. Nullable, sin relleno, sin DEFAULT: cada cliente resuelve un valor ausente a NONE, que es exactamente lo que todo orgía era antes de la columna existía, por lo que un relleno escribiría filas sin cambios en el comportamiento. Orden (0) por la convención de columnas-añad - el momento en que la lib compartida entidad mapea esta columna, cada corredor posterior que carga una Organización a través de JPA lo emite en su SELECT, por lo que una migración ordenada tardía sería pisó un corredor que murió primero. La prueba es un guardia de deriva, no una prueba de unidad: servicios run ddl-auto: ninguno, para que un campo de entidad sin un ALTER a juego comienza sano y muere en tiempo de consulta y para la Organización que significa resolución de org, login y marcando a través de la plataforma. Esto lo convierte en un fracaso de construcción en su lugar.

  12. · kamo-internal

    Deja que un org pinta el logo de la página principal un color sólido

    Añade "Home Page Logo Overlay" a Branding on ************* directamente arriba de fondo Marca de agua: No Overlay, White, Black, y cada paso de la propia org rampas primarias y secundarias. Ponlo y el logotipo de masthead en la parte superior izquierda de la página de inicio se presenta como una silueta sólida en ese color. El defecto es No Overlay, así que nada cambia para una org que nunca abre el campo. Lo que se almacena es un TOKEN, no un hex. PRIMARY-DARKER, nunca . resuelto contra la paleta de la org en el momento de la org. Una org que remarca mantiene una capa que aún coincide con sus colores, en lugar de un hechizo congelado en el momento en que alguien lo eligió de un dropdown. logoOverlay.ts posee que vocabulario y la resolución, de la misma manera que watermark.ts posee la Marca de agua. Tres detalles que vale la pena conocer: - Los tonos oscuros ya existían en el alambre. El backend ha enviado todo cinco pasos de cada rampa durante el tiempo que EmbColorPalette tiene, pero Organización.fromJSON sólo mapeó tres, así que colorDark/colorDarker caído en el suelo. Ahora se llevan, que es lo que da el Los tokens más oscuros de color a resolver. - ThemeLogo hace esto con una máscara CSS, no con un filtro. Un filtro sólo puede empujar los colores existentes alrededor y no puede alcanzar un objetivo arbitrario, Así que el alfa del logo se convierte en una máscara y el color se pinta detrás de ella. Las estancias montadas y meramente invisibles: es la única fuente del naturalCasta el bloque de tamaño depende, y se mantiene Oportando su caja normal exacta para que la capa enmascarada pueda llenarla. Llamadas que no pasar superpuestaLa representación de la Color de byte-identically a antes. - Un fichaje de marca cuya sombra la organización nunca se fija en la superposición en lugar de caer de nuevo a una sombra vecina. Ver el logotipo Ya tenía ritmos viendo un color que nadie eligió. Requiere la columna home-logo-overlay (KamoInitializer, aplicado) y una SecurityService recontijo reconstruido contra la entidad de la lib compartida; hasta que eso aterrice el campo lee y ahorra como No Overlay en lugar de error.

  13. · InitializerService

    Purga las filas de VIEW.EMAIL-LOGS, y detenga una prueba podredera cuando los ordinales cambien

    VIEW-EMAIL-LOGS (64) fue borrado de RoleRightType hoy por nombrar una característica que Nunca se construyó. Esto elimina lo que dejó atrás, medido en 42 filas de rol, 33 filas aplicadas y 8 filas de plantillas a través de ambas codificaciones, desde la tabla de plantillas almacena el nombre enum mientras el resto almacena el identificador entero. **************** necesidad de fijar en el mismo cambio, y el vale la pena seguir la razón. Afirmó que su ejemplo tenía id id= ordinal, custodiado por "la prueba no hace más que tener sentido" que se sostiene. Eliminar id 64 se desplazaba cada vez más tarde ordinal, ************* id se hizo igual a su ordinal, y el El guardia disparó. Si el guardia no hubiera estado allí, la prueba habría seguido pasando mientras Nada demostrando nada, que es el peor resultado. Ahora elige a su testigo en el momento del ateo. difiere de su ordinal para que ninguna eliminación futura pueda hundiarlo silenciosamente. Suprimir Los derechos son ahora lo suficientemente rutinarios como para que un ejemplo duro sea una responsabilidad.

  14. · kamo-shared-library

    Borrar VIEW-EMAIL-LOGS, que nombra una característica que nadie construyó

    No existe registro de correo electrónico en ninguna parte de la plataforma: sin tabla en ningún esquema, ni endpoint entre los 21 controladores de EmailService, sin interfaz de usuario, y sin referencia en el frontend. incluso el chequeRight que MANAGE-EMAIL-ACCOUNTS por lo menos tuvo. La plataforma sí registros de modelos donde los tiene, con teléfono.call.log, img.log.downloads, El correo electrónico no tiene equivalente. Es el caso CREATE-CHANNELS - el sustantivo no existe - en lugar de Caso MANAGE-MEETINGS donde el sustantivo se modela y sólo el verbo no está expuesto. Taxonomía 194/131/33/30 se convierte en 193/130/33/30. Sólo el conteo de niños se mueve: ACCESS-MAIL se queda con sus otros cuatro hijos, por lo que se mantiene en una raíz con los niños. Id 64 está quemado. Las filas almacenadas son eliminadas por EmailLogsRightPurgeMigration.

  15. · kamo-internal

    Pon al compositor de la nota en la cima de All Communications

    El compositor sólo existía en la sub-tab Notas, así que escribiendo una nota sobre Lo que estabas leyendo significaba dejar la cuenta en la que lo estabas leyendo. Todos Ahora lleva el mismo PostComposer - la misma pista, misma nota org-visible . y la línea de tiempo a continuación vuelve a indagar su nueva página en su lugar cuando uno aterriza, manteniendo las filas en pantalla en lugar de parpadear de nuevo a un spinner.

  16. · kamo-internal

    Elija las nuevas aplicaciones de org mientras la crea

    Añade un paso de aplicaciones y características entre Tipo y Básicos. Enumera las aplicaciones El modelo de seguridad elegido tipo de sucursal realmente ofrece - los forzados como "Siempre incluido" sin ningún cambio con el que discutir, los opcionales como cambia pre-set a la propia predeterminada del modelo -- y envía las respuestas con la creación. Tipo es lo que decide qué aplicaciones existen para elegir, por lo que el paso se sitúa a la derecha después de eso. Preguntando "qué hará este negocio" mientras eso sigue el sujeto no le cuesta nada al cliente; pidiéndolo después de ocho pantallas de La marca se leía como una segunda configuración no relacionada. Escrito para alguien que nunca ha utilizado la plataforma: la cabecera explica lo que es una aplicación y que apagar uno sólo la esconde, cada fila lleva la propia descripción en lenguaje sencillo de la aplicación, "Normally on"/"Normally off" dice De donde vino la preselección, y hay un camino de vuelta a la conjunto recomendado. No se requiere nada aquí y Review enumera las aplicaciones de la org abrirá con nombre - un conteo es un número que nadie puede comprobar, y esto es la última pantalla antes de una creación irreversible. Las selecciones se clavan en el nombre de ServiceType y una clave ausente significa "lo que sea el modelo recomienda", a ambos lados del alambre. Reeleccionando el SAME Tipo de sucursal mantiene las respuestas en lugar de reconstruir los valores predeterminados: BranchTypeStep re-emits su selección cada vez que ese paso es revisitado, así que lo ingenuo versión desharía silenciosamente todo el paso de un clic en el paso antes - Sí. Elegir un tipo diferente sí se reconstruye, porque la lista de aplicaciones se sustituye - Ya por la sola. También sujeta la descripción de la aplicación en Configuración --cuenta --- Tipos de Rama a dos líneas. Las descripciones que muestran esas filas ahora se dirigen a unas pocas frases, así que a El lector no técnico puede actuar sobre ellos, y desprevenedo giran cada colapso fila en un bloque de tres líneas.

  17. · SecurityService

    Deje que el creador elija las aplicaciones del nuevo org

    El asistente creador de red gana un paso de aplicaciones y características, y este es el La mitad lo hace real. /branch-tipos/creatable ahora describe las aplicaciones de seguridad de cada tipo de rama ofertas de modelo - fortuces como "required", OPTIONAL** con el modelo por defecto, por lo que el asistente puede dar el paso antes de que exista el org. Es tiene que venir de aquí: los endpoints que describen las aplicaciones están vistos a un org y heredado en CONFIGURE-SYSTEM, un derecho la persona que crea una rama frecuentemente no se mantiene en el parent-org. Las aplicaciones NO AVAILABLE son omitido completamente en lugar de mostrarse gris. Las ganancias de la carga útil de la zaga "appSelections" (ServiceType: boolean), y la de la nueva org se aprovisiona de ella en la transacción de creación, junto a la semilla de rol-plantilla: el mismo tipo de cosas, y o todo aterriza o el org no está creado. La parte que vale la pena leer dos veces es que una aplicación que se está conmutando OFF todavía consigue un OrgFeature fila. Hasta ahora un nuevo org no tiene filas de características en absoluto y estaban rellenado perezosamente la primera vez que alguien abrió Configuraciones -o Apps - un bucle que permite todo el modelo no bloquea de plano. Así que OPTIONAL-DEFAULT-DISABLED, un administrador que dice explícitamente "ofrece esto, pero comienza "fue perseguida en la ON para cada niño org jamás creado. Escribir una fila inactiva es lo que hace que la elección se peque, porque ese bucle sólo crea filas para los tipos para los que no encuentra ninguna. También es por eso que esto no puede ser un mejor esfuerzo después deCommeter: el retroceso no dejaría las aplicaciones desenmesada, los dejaría puestos en lo contrario de lo que el creador pidió. Deliberadamente estrecha en tres lugares. Deja un org sin modelo aplicado en la ruta perezosa - computeAvailabilitiesMap respuestas OPTIONAL-DEFAULT-DISABLED para todo allí, y materializar eso le daría a alguien un espacio de trabajo donde nada está encendido y nada dice por qué. Una selección nombrando una aplicación el Modelo no se ofrece ignorado, no se rechaza: el mago mantiene su borrador en almacenamiento de sesión, por lo que un administrador que reduzca el modelo a mitad de la sesión no debe costar un cliente su creación. Y una aplicación nullSelections no es "no hay aplicaciones", es un cliente mayor, y cada aplicación vuelve a la motos por defecto.

  18. · kamo-shared-library

    Reescribe la copia del catálogo de la aplicación para las personas que la leen

    El nombre de visualización y la descripción en ServiceType son la única descripción de una app que la mayoría de la gente haya visto: un administrador de org en Configuración -- Apps & Features, a administrador de parentorg decidiendo lo que su hijo ogs puede usar en los tipos de rama pantalla, y ahora quienquiera que esté creando una organización en el asistente de la red... alguien que normalmente nunca antes había usado la plataforma. Dos cosas estaban mal con esa copia, y ambas costaban clientes. Describió la aplicación. "Asistente de la empresa con chat, RAG integración: "Voice Over IP PBX Phone System", "Vídeo auto-anfijado conferenciancing", "Personal de documentación de almacenamiento con Docs editado", "Falls volver a la organización matriz SMTP cuando está desactivado" -- exacto a un ingeniero, y no hay ayuda alguna para que un dueño de empresa decida si quiere la cosa. Peor aún, presentó la propia implementación de Kamo como toda la aplicación. E-Mail, Teléfono y Reuniones son cada uno una abstracción de proveedores -- EmailProviderType, VoipProviderType y MeetingProviderTipo cada barco un proveedor Kamo junto a Google Workspace / Microsoft 365 / Zoho / Exchange / IMAP, RingCentral y Teléfono, Zoom y equipos. "E-Mail - E-Mail Hosting" se lee como "encose esto si quieres que Kamo albergue tu correo", así que cada org ya en Workspace o 365 tenía una razón para decodificar una aplicación construida para exactamente ellos. También llena dos vacíos genuinos que la copia nunca mencionó: HR es propietaria de lo legal y los documentos de información del personal tienen que leer y firmar, y Marketing envía a granel y campañas de correo electrónico de goteo. ServiceTypeCustormerCopyPelecas pines ambos errores para que no puedan volver. Los nombres constantes no se tocan - ************* persiste el nombre como una cadena, por lo que un reno reasignaría silenciosamente cada las subvenciones del modelo de seguridad.

  19. · kamo-internal

    Atacuen las etiquetas de navegación a Oportunidades y Créditos

  20. · SecurityService

    Proteger cuentas de dios en la lista de administradores de la plataforma

    Los derechos de plataforma de una cuenta de Dios pueden ser cambiados sólo por otro dios, y un dios La cuenta nunca puede ser eliminada de la lista por nadie, incluyendo otro dios. Dios es la identidad de la plataforma: sus titulares son lo que queda cuando todo lo demás ha sido malfigurado. Una explotación de administradores MANAGE-PLATFORM-ADMINS pero no dios podría llegar a una cuenta de dios y no a mío podría llegar a una cuenta de dios y quitarles sus derechos, que es precisamente la edición que desarmaría al pueblo capaz de deshacerlo. La eliminación es absoluta porque la fila que se va desnuda cada justo a la vez; el cambio de derechos permanece posible, pero sólo entre pares. La prueba de peerage es User.isGod en el que llama, no una ventana abierta de modo dios: ser Dios es lo que te hace que el objetivo sea igual aquí, mientras que la ventana es de Usando deliberadamente ese poder en otro lugar. es Dios (miembro) falla cerrado en la dirección de protección a un miembro cuyo usuario El registro no se puede leer se trata como dios, así que una fila ilegible se deja sola en lugar de editar sobre la fuerza de una mirada que no funcionó. El que llama su bandera falla al revés, ya que sólo permite controles. Se aplica a las tres rutas de escritura, incluyendo el endpoint de adición, que reemplaza derechos sobre una nueva adhesión y de lo contrario sería una forma de evitar la regla.

  21. · kamo-internal

    Las cuentas de Dios están protegidas en la lista de administradores de la plataforma

    Dos reglas que el servidor hace cumplir y esto solo se refleja: la plataforma de una cuenta de dios los derechos pueden ser cambiados por otro dios y nadie más, y una cuenta de dios puede nunca ser eliminado de la lista -no por otro dios, no por sí mismo. Dios es la identidad de la glaseada, así que sus titulares están en la última forma de volver a entrar cuando Todo lo demás ha sido mal configurado. Un administrador holding MANAGE-PLATFORM-ADMINS pero no dios podría llegar a una cuenta de dios y Desnúbralo, que es la única edición que desarma a la gente que la desharía. Ambos controles están deshabilitados con la razón adjunta en lugar de escondidas control que desaparece se lee como una característica perdida, que se explica a sí misma lee Como regla. El chip "N more" lleva la misma cerradura, ya que abre lo mismo. Diálogo.

  22. · SecurityService

    Hornee el orden de fondo de la org en config.json

    kamo-login, kamo-registro, el sitio de marketing y KamoMeet todos leyó el tema bucket's config.json para antecedentesImageCount; ordial de fondo ahora paseos a su lado, por lo que la elección secuencial/súcar de org-wide llega a todos cuatro sobre la disposición sobre el tema siguiente. Sólo se emiten los dos valores conocidos. cliente vuelve a caer a secuencial en lugar de leer un valor que no Reconocer. El org PUT rechaza un valor no reconocido.

  23. · kamo-shared-library

    Columna de la orden de antecedentes para el orden público de presentación de diapositivas

    Nullable VARC; nulas resoluciones a secuencial en cada cliente, que es lo que todo org tenía antes de la columna existía. Cadena llano en lugar de una enum para que un modo posterior no necesite un barrido de constrastricción CHECK. El ALTER espejo ya ha sido corrido a través de KamoInitializer y el La columna se confirma presente en Yugabyte, así que esto no está armado.

  24. · InitializerService

    Purgar las filas almacenadas para los derechos de billetes retirados

    SHARE.NOTES (72) y MANAGE-NOTES-SETTINGS (73) fueron eliminadas de RoleRightType Hoy por no tener ninguna característica para la puerta. Esto elimina lo que dejaron atrás, contó y registrado en la misma carrera en lugar de dejar para RoleRightsSyncService para barrer silenciosamente en una bota posterior de SecurityService. Medido antes de escribirlo: 84 filas a través de las tablas de rol, 16 filas de plantillas, 94 filas aplicadas, y ninguna a nivel de departamento, de co-jefúo de empleo o de miembro. Ambas codificaciones de nuevo. Las tablas de derechos y la instantánea aplicada almacenan el número entero id; **************** almacena el nombre enum. Uno DELETE de id-keyed no coincidiría con nada en la tabla de plantillas e reportaría el éxito, Deja 16 filas por derechos que ya no resuelven leerse en la norma de la fuerza mapa de cada nuevo cálculo que no es hipotético, es lo que pasó a 24 de las 150 filas que la purga de canal de chat estaba destinada a remover. Sin semilla y sin puerta de verificación, a diferencia de la semilla de encuentro: borrar un derecho no puede Quita el acceso de nadie, porque nada los leía. Eso es lo que los hizo Deletable en primer lugar.

  25. · kamo-shared-library

    Borrar SHARE.NOTES y MANAGE-NOTES.SETTINGS, que no nombran nada

    Las notas son reales, y a partir de hoy están completamente cerradas . VIEW, CREATE, EDIT y DELETE son se hace cumplir en cada punto final de la nota de KBService. Estos dos no tenían nada. a decir. No hay intercambio modelado en ninguna parte de la plataforma: sin columna en la Nota, no hay campo en NoteDTO, sin cuadro de notas. Las tablas de notas son notas, note-tags, note.versions y note.embedding.records no endpoint entre los diez, y ninguna UI. Los tres éxitos de "share" en FloatingNote.tsx son prosa y los del servicio son el nombre del paquete com.kamo.z.shared. La arquitectura apunta de la misma manera: a La clave de contenido de la nota se deriva de su propietario, por lo que compartir uno es un re-keying problema en lugar de un endpoint faltante. MANAGE-NOTES-SETTINGS no tiene ninguna superficie de configuración, ya sea, sin pestaña debajo de configuración/caracteres, sin ruta bajo aplicaciones/configuraciones, sin mesa de configuración, sin entidad de configuración, no haga referencia en ninguna parte del frontend. Este es el caso CREATE-CHANNELS, donde el sustantivo no existe, y deliberadamente no el caso MANAGE-MEETINGS se mantuvo la semana pasada, donde el sustantivo se modela. MeetingStatus ya tiene CANCELLED y ENDED, y WebinarService conduce tanto como Sólo el verbo no está expuesto. La prueba que pincha la taxonomía lleva el razonamiento. Taxonomía 196/132/33/31 se convierte en 194/131/33/30, 63 raíces. Dos números se mueven más bien que tres: SHARE-NOTES era uno de los cuatro hijos de VIEW-NOTES, así que VIEW-NOTES se queda un raíz con niños en lugar de colarse como lo hizo ACCESS-CHAT. Los dedos 72-73 están quemados. RoleRightTypeIdConverter persiste el id, así que un derecho futuro reutilizar uno heredaría lo que esas filas significaban en los orgs que las tenían Encendida. Las filas almacenadas son eliminadas por NotesRightsPurgeMigration.

  26. · InitializerService

    Añadir orgs.background.orden

    Nullable VARCHAR (20), sin relleno y sin DEFAULT. un valor ausente a secuencial, que es el comportamiento que cada ha org tuvo antes de que existiera la columna. Orden (0) por la convención de column-add: una vez que la entidad compartida-lib mapea alguno de los que luego se carga una organización lo emite en su SELECT.

  27. · kamo-marketing

    Lea el verdadero conteo de antecedentes de la org y el orden de juego

    El héroe sondeó para bg/1.webp y luego codificaron tres marcos, así que un org con más nunca los mostró y el modulo de rotación de LOCAL-BGS.length. independientemente de cuántas imágenes estuvieran realmente alzá. Ahora lee config.json Como cualquier otro Kamo, y honra el escenario de la org.

  28. · kamo-register

    Honra el orden secuencial/suffle slideshow de la org

    El mismo contrato config.json que kamo-login: backgroundOrder conduce todo tres antecedentes de registro, ausencia de llaves permanece secuencial.

  29. · kamo-login

    Honra el orden secuencial/suffle slideshow de la org

    config.json ahora lleva fondoOrder junto a backgroundImageCount. Shuffle re-randomises en cada avance y nunca repite el marco en pantalla; una tecla ausente se mantiene secuencial, que es lo que tenía cada org. Las dos pantallas Swiper mantienen su cruz desfade pero conducen su propio temporizador cuando se baraja el juego automático de lawiper sólo da un paso adelante una diaposiencia.

  30. · SecurityService

    Todas las redes siguen la derecha del usuario del sistema

    Ver cada organización y poder entrar en uno son la misma decisión. la lista existe para que un operador pueda encontrar la organización que están a punto de soporte - así /all-networks ahora pide SYSTEM-USER en lugar de la propiedad de la org de primer nivel. Un administrador de plataforma con acceso de Usuario de Sistema podría Antes ingresaba a cualquier organización mientras no podía ver la lista de ellos. resoluciónDesde lasion suministra el resto de la regla y sustituye a la mano laminado versión que este manejador llevaba: el llamante debe estar en la organización de alto nivel, las propias sesiones del Usuario del Sistema se rechazan, y un propietario o un modo dios abierto la ventana sigue calificando sin una subvención explícita.

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