Saltar al contenido
KAMOUniverse

Changelog

Qué hay de nuevo.

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

  1. · EmailService

    Quién causó una notificación viaja con ella, para que la campanada pueda dibujarlos como miembro

    - NotificaciónRequesta gana actorMemberId/actorName; el viejo constructor se queda para cada productor que Es anterior a ellos. - la subida() mantiene el par sólo cuando ambas mitades están allí, el nombre se ajusta a su columna, y el título o cuerpo realmente lo deletrea: un nombre que el texto no contiene no tiene dónde diluir, y un pasado 255 De lo contrario, no le insertaría la inserción y llevaría toda la notificación. - aPayload() envía al actorMemberId como TEXTO al lado de actorName - la lista, el navegar y el marco de la toma. - /api/internal/notificaciones lee al actorMemberId (texto o número) y actorName. - /api/notificaciones/yo (la tarjeta de chat no leído del navegador) mantiene al actor sólo cuando ese miembro está en la propia organización del que llama. El identificador es la palabra del navegador; puede nombrar al remitente que vio, pero no Haz que alguien de otra parte (una contraparte de Exec2Exec, un rancia ocioso) diluyente sea un colega. Necesita kamo-shared-library 727c0ec2 y el DDL en ************* aplicado a la producción a mano en el 2026-09-23 antes de que esto fuera empujado. Pruebas: MemberNotificationServiceTest (o4), NotificationSelfRaiseActorTest (4). Suite completa: Corrida de 1912, 0 fallas, 1 saltó.

  2. · kamo-shared-library

    Una notificación puede decir de quién lo hace

    MiembroNotificación de los Gana ACTOR-MEMBER-ID (INT8) y ACTOR-NAME (255): el miembro que lo causó - quién te reparte, cuya reunión está comenzando, quien te escribió - y su nombre exactamente como el título o el cuerpo kamo-internal dibuja ese tramo del texto como el nombre del miembro, así que flotar abre su Tarjeta de miembro. Hasta ahora todos los nombres de la campana eran un texto sencillo, porque nada registraba quién era. DDL, aplicado a mano a la producción en 2026-09-23 como el kamo propietario (ddl-auto no es nada en todas partes): ALTER TABLE public.member.notificaciones ADD COLUMN IF NOT EXISTS actor.member-id INT8; ALTER TABLE public.member.notificaciones ADD COLUMN IF EXISTS actor-name VARCHAR(255); Las mismas declaraciones envían en emailservice que **************** EmailService es el único servicio que lee o escribe esta tabla.

  3. · InitializerService

    La función del plan Notas es "Notas y listas de verificación"

    La aplicación Notas también tiene listas de verificación desde el 2026-09-23 y se llama "Notas y listas de cheques" en todas partes se llama. Comparación de la página de precios gráfico toma sus nombres de filas de commerce.subscription-features, por lo que el NOTAS fila se renombra allí también: NotesChecklistsRenameMigration (Orden 215) cambia cada fila NOTES que todavía lleva el viejo nombre por defecto, y reescribe Signo la descripción de Pink donde todavía lee la vieja oración. Una reformulación fila se deja sola y una repetición no cambia nada. Copiar solamente: service-type y está aislado, que decide lo que un plan da derecho, está intacto. KamoCRMPricingEl cargador sembra el nuevo nombre de los catálogos creados a partir de ahora. Aplicado a mano en el 2026-09-23 con las mismas declaraciones, desde este servicio no está desplegado.

  4. · kamo-internal

    Un buzón desconmutado se queda en vivo, y el cuadro de búsqueda se pule

    Actualizaciones en vivo. La página pide a EmailService que vea el buzón que tiene abierto cuando no es propio del miembro (/aplicar/email/vigilar, resentido después de una reconexión, detenido al salir de la página), y la lista de carpetas y la recarga de árbol en eso Cambios del buzón - nuevo correo, y cambios realizados desde cualquier otro cliente o por cualquier otra persona - exactamente como ya lo hicieron para el propio miembro. El relevo ha un tema propio, por lo que la insignia del correo y el sonido de correo nunca se escuchan de El buzón de otra persona; un cambio sólo se actúa para el buzón de correo en realidad en pantalla (lib/email/mailboxWatch). Polaco, todos encontrados por la conducción de los componentes reales en Chrome: - El diálogo de ayuda y la forma avanzada re--ran su efecto de apertura en cada render (la página pasa un nuevo enClose), que tiró de la atención de nuevo a el botón de cierre / la caja "Desde" fuera de debajo del miembro. Ahora corren. una vez por abertura. El diálogo también mantiene a Tab dentro y las manos se enfocan hacia atrás a "Cómo buscar" cuando se cierre. - El marcador de la casilla de búsqueda es "Correo de búsqueda"; el largo fue cortado a "Buscar correo - try f" en la columna 320px (diccionario 6401409c). - "Cómo buscar" se sienta al comienzo de su propia línea cuando la columna también estrecho para ella junto al alcance desactivar, en lugar de colgar de la derecha. - El alcance de la marca es una parada de pestañas con teclas de flecha, como cualquier grupo de radio; la lista de sugerencias anuncia la opción destacada (descensando fiscal), Mantiene su punto de mira, y marca sus encabezados como presentación.

  5. · kamo-internal

    Clases de audio, subir una grabación, y los estudiantes realmente pueden navegar por ella

    Autores (/hr/ editor del curso de formación) - "Fiarch de carga" en cada diapositivo, junto a "Choose media": audio (MP3, M4A, AAC, WAV, OGG/Opus, FLAC), vídeo o una imagen, a través de la tubería de imágenes en Recursos de Recursos Humanos, adjunto el momento en que se encuentra guardado. El recolector de la biblioteca también conoce el audio (mal, miniatura de forma de onda), y la cubierta del curso El recolector ahora ofrece imágenes solamente. - Una diapositiva de audio obtiene su propio editor: una descripción requerida (el nombre accesible), la lección Jugar exactamente como un alumno lo conoce, capítulos (añad uno en el cabeza de playhead, editar veces como m:ss o h:mm:ss, jugar de cualquier, o pegar una lista en las formas habituales de "00:00 Título", y una transcripción que Siga a lo largo. Un trabajo terminado nunca sobrescribe texto mecanografiado mientras que se ejecuta (se ofrece en su lugar), y uno encontrado corrido cuando se reabre la diapositiva se ofrece de la misma manera. - La grabación se mide una vez, en el momento de la fijación: longitud y forma de onda provienen de ConversionService y se almacenan en la diaposiencia (media-metajson), por lo que ningún alumno los espera. "Escucha la la grabación" es la redacción de audio de la regla de reproducción. Aprendizaje (el jugador del curso) - Un depurador de forma de onda que muestra lo que se ha jugado, lo que realmente ha sido HEARD, los capítulos, sus marcadores y una repetición de A-B; haga clic, arrastre o flecha a través de él, con un tiempo y un capítulo vista previa en flotar. - Capítulos con progreso por capítulo escuchado, capítulo anterior/próximo, y "repetir este capítulo". - Una transcripción que sigue la grabación, salta a cualquier lugar en el clic, y busca con el siguiente/anterior a través de los fósforos; subtítulos de la línea que se habla bajo la forma de onda. - Marcadores con notas, mantenidos en las propias preferencias del miembro para seguirlos entre dispositivos (nunca escrito antes de que la lista guardada haya cargado, que la reemplazaría; se envía una nota pendiente, no caer, cuando se cierra la diapositiva). - Velocidad de 0,5o a 2o (y el tiempo que queda a esa velocidad), 10 s, volumen, el miembro elegido altavoz, las teclas de medios del sistema operativo y un mapa de teclado (Espacio/K, J/L, flecha, Shift-arrows o P/N, 0, 0, 9, M, B, A, C, /, ?) con una hoja de ayuda. - Se reanuda donde se detuvieron en este dispositivo, y ofrece la primera parte que no han escuchado. - El requisito de juego sólo cuenta estiramientos realmente jugados: una búsqueda (crubber, saltar, bucle, devtools, o una garrafa que atraca a mitad de la búsqueda) no gana nada, y tampoco lo hace más rápido que 2o. A diferencia de la regla de video acredita la larga garra de una pestaña de fondo, porque el audio es lo que la gente juega en uno. Escuché dentro de medio segundo del extremo cuenta como la grabación entera: el formulario almacenado rondas a 0,1 s y la duración no, y 100% usada para leer en un 99% para siempre. - La escotura de escape para un archivo el navegador no puede reproducir aparece una vez que la longitud de la grabación tiene pasado, como lo hace para el vídeo; los atajos funcionan dondequiera que la concentración esté dentro del diálogo del jugador. Corregido en el camino, para el vídeo tanto como audio - La puerta de juego medida contra la duración congelada de la versión, que nunca publicó Escrito: cada versión de video lleva null, por lo que ver nunca pudo cumplir con el requisito. El Ahora la puerta utiliza la propia duración del elemento. - Lo que un miembro había visto llegó al servidor sólo cuando presionaron Siguiente, así que cerrando el curso Mid-lesson lo perdió. Se salva cada 20 s, en pausa y cerca, con el porcentaje el El manifiesto de finalización dice (nunca se envió, por lo que cada manifiesto registró una cobertura del 0%). - Deslizan los medios, las fotos de preguntas y la lección ahora cargan a través del propio miembro asignación ************* en lugar de la imagen a través, que requiere VIEW-DOCUMENTS - un derecho 32 de 149 miembros no tenía. - El editor clavó tarjetas de diaposi cuenta por uid, que cada autosave reemplaza, por lo que cada salvado volvió a montar cada tarjeta y habría detenido el audio que un autor estaba escuchando mientras mecanografía un capítulo. An cargar en vuelo sigue su deslizamiento a través de un movimiento o una eliminación. - La ruta de los medios de comunicación miembro responde con un CSP de sandboxing y un olfateo: una imagen de diapositivo puede ser un SVG, que se abrió directamente ejecutaría el guión en este origen. Necesita DocsService (media endpoint, media-meta-json) y ConversionService (picos, transcripciones) desplegado junto a; los ingleses están en kamo-translación-diccionario a4c6f856.

  6. · KlusterServices

    Una manera de construir realmente la imagen dorada

    build- dorado-image.sh dijo "Corre por CI (ver ../..forgejo/workflows/) ". No tales El flujo de trabajo se escribió alguna vez. Necesita libguestfs, qemu-img y virt-customize, ninguno de los cuales se instalan en la máquina en la que se trabaja este repo, y no hay Tiempo de ejecución de los contenedores allí, así que el artefacto de la que depende toda la aplicación tenía no hay camino a existir. Así se des enteró la primera persona en asignar una computadora. La construcción corre en el cúmulo en su lugar, que es el único lugar ya equipado para it: los nodos ejecutan KubeVirt y exponer /dev/kvm a través de los dispositivos.kubevirt.io/kvm enchufe de dispositivo, por lo que libguestfs está acelerado de hardware en lugar de emular horas. El trabajo escribe en el PVC dorado directamente, porque vm/datavolumen-template clones con source.pvc y un clon CDI de un volumen de Filesystem copia su contenido por lo que cualquier reclamación que sostenga disk.img es una fuente válida. Eso elimina el paso de alojamiento HTTP, la credencial de carga y una segunda copia de un archivo multi-gigabyte. oro-datavolume.yaml se queda para una imagen construida en otro lugar. Tres cosas que vale la pena saber al escribirlo: Los guiones viajan como ConfigMaps en lugar de un clon de git, por lo que el trabajo no necesita Credencial. Montan solo de lectura sin nada de ejecución, así que son copiados a un Un camino escrito antes de que virt-customize --run puede ejecutarlos. La construcción ocurre en cero y sólo el archivo terminado se copia en la reclamación. El script escribe un qcow2 de 20 GB y luego qemu-img convertido -c escribe un segundo comprimido uno a su lado; hacer eso en el reclamo dorado necesitaría que fuera dos veces el tamaño de la imagen que termina sosteniendo. VERSION es sobreexcelente ahora. El camino en elcluster tiene que conocer la versión ANTES de comienza, porque la reclamación lo lleva en su nombre y debe existir para que el trabajo escribir en, así que el envoltorio resuelve el serial de Canonical una vez y usa ese valor para ambos. Una reconstrucción de una versión existente se rechaza en lugar de escribir en: a segunda escritura en un PVC dorado poblado es el fracaso que llega a cada inquilino en una vez.

  7. · ConversionService

    Audio - una miniatura de forma de onda en la carga, picos y transcripciones bajo demanda

    Un archivo de audio subido cayó a través de la ruta de Docs PDF, que no puede abrir uno, por lo que cada La carga de audio terminó "Conversión fallida" con una teja en blanco. El audio ahora toma su propia rama, como vídeo: transmitido a cero (nunca en el montón), decodificado ONCE en picos, y su página-0 miniatura extraída de esos picos en Java. No el showwavespic de ffmpeg, que tiene todos decodificados marco hasta el final del archivo: medido en 298 MB para un MP3 y 546 MB de 30 minutos durante una hora, encendido un hilo sin atar por carga en una vaina de tamaño para documentos; el decodificar en streaming alcanza los picos de 54 MB. FLAC, que la tabla del MIME Las tiendas como binaria genérica, se reconocen por su extensión. ******************* - GET /peaks - la duración y una forma de onda de 1.600 cubos (base64 de picos de 0 a 255). leer como arroyos y sólo se mantiene un corto por ventana de 50 ms, por lo que una hora cuesta 72.000 cortos; el decodificador del navegadorAudioData se quedaría sobre un gigabyte por la misma hora. Almacenado al lado de la archivo como archivo como .datId.peaks.v1.json, por lo que se calcula una vez por contenido. - POST.GET /transcript, una transcripción cronocondiada de la transcripción de susursper-asr (vad-filter on), ejecutada como un trabajo en un hilo virtual con su estado en .datId.transcript.v.v.json, que cualquiera de las réplicas puede leer (una mesa de trabajo en memoria sería invisible para la otra vaina). Un trabajo por vaina a la vez: Sitero-asr es una réplica de CPU compartida con el buzón de voz y la transcripción de las reuniones. Corriendo el trabajo reescribe su marcador cada minuto de su propio hilo (unido antes de que se escriba el resultado), así que un trabajo cuya vaina murió se lee como fallido después de tres golpes perdidos en lugar de bloquear al autor fuera para un tiempo de espera; ?restart=true reemplaza una transcripción terminada. Medido contra el servicio en vivo: una grabación de 2 min 7 s tomó 25 s. Ambos requieren VIEW-DOCUMENTS y el nivel de acceso a las imágenes, y sirven sólo a Recursos Humanos: buzones de voz, grabaciones de llamadas y notas de voz de chat cada una lleva una regla por registro en DocsService que este servicio no puedo ver, por lo que se quedan 404 hasta que algo que los necesita trae esa regla. La construcción también recoge los ayí de audio MIME de la biblioteca compartida de kamo: M4A, WAV, OGG y AAC subidas estaban siendo rechazados como desajuste de MIME.

  8. · DocsService

    Diapositivas de audio y los metadatos de los medios de comunicación, y los estudiantes juegan a los medios a través de su tarea

    La navegación de una diapositivas de audio vive en media-meta-json (duración, picos de forma de onda, capítulos), que el editor escribe y el jugador lee textualmente. Se salva (vinclado a 256K y a una JSON objeto, y guardado sólo mientras la diapositivas tiene medios), duplicado, congelado en la publicación y ser servido en el jugador DTO. Publish también escribe media-duration-ms de it- declarado en la versión desde el principio y nunca escrito y la estimación del curso cuenta la longitud real de una lección de audio. La huella dactilares la transcripción y metadatos de una diapositivas de AUDIO, corrigiendo así una línea de transcripción o mover un capítulo es un cambio publicable. Todas las otras halagos deslizan exactamente como antes: ensanchar el Hachís a todas las diapositivas habría dado la vuelta a cada curso publicado con una transcripción de vídeo "inédita" el día que se envía. GET ************* sirve una diapositivas (o una pregunta) medios con soporte Range, autorizado por la propia asignación del miembro: el archivo debe estar en el Versión que fueron asignados, en Recursos de Recursos Humanos, en su organización, en vivo y sin basura. El La secuencia de imágenes que sustituye a los alumnos necesita VIEW-DOCUMENTS, que 32 de los 149 miembros que tienen Cada uno de ellos se encontró con un jugador muerto. Porque un alumno está autorizado por la presencia del archivo en un curso, salvando una unidad ahora rechaza un archivo que su autor no puede abrir (422 nombrar la diapositivas o la pregunta), y adjuntar cualquier archivo en todas las necesidades VIEW-DOCUMENTS, la derecha La propia corriente de imágenes exige; la publicación de re-corre ambos controles a lo largo de todo el curso, por lo que un borrador salvados antes o por un coautor se mantiene a la misma regla. De lo contrario, MANAGE-TRAINING por sí solo podría publicar un archivo que su titular no puede leer en un curso y asignarlo a sí mismos. El camino de los alumnos También sólo sirve una imagen, un video o una grabación nunca un documento que un salvado elaborado nombre. Recursos Humanos Recursos también es más estrecho que cualquier otra regla de byte (los paquetes emitidos son SERVICIO.APPLICACION, documentos por partido LOAN o ACCOUNT-MEMBER-VAULT, y chat/voicemail/call media tiene sus propias colecciones). Las lecturas se auditan como /imagen/corriente, y la respuesta de rango es un ayudante compartido (ImgRangeResponses) que /imagen/stream ahora utiliza también. Publish rechaza una diapositivas de audio sin una descripción en las propias palabras del audio. Necesita kamo-shared-library "feat(imagación, entrenamiento): las subidas de audio pasan el chequeo MIME, y diapositivas llevar metadatos multimedia" (media-metajson en ambas entidades de diapositivas; se aplica el DDL).

  9. · kamo-shared-library

    Subs de audio pasan el chequeo MIME, y las diapositivas llevan metadatos multimedia

    Cada audio subido pero MP3 fue rechazado como un desajuste de MIME. Una subida se acepta sólo cuando el Tipo de navegador y Tika se resuelven al mismo ImageMimeType, y para audio los dos lados nunca delete un formato de la misma manera. Medido contra Tika 2.9.2: un WAV huele como audio/vnd.wave (navegadores envían audio/wav), Ogg como audio/vorbis o audio/opus (audio/ogg), ADTS AAC como audio/x-aac (audio/aac), y Windows y macOS envían un .m4a como audio/x-m4a donde Tika dice audio/mp4. stringToImageMimeType ahora ignora la maleta, rodeado de espacio y parámetros, y mapea esos alias a la constante que nombran. Nada mapea un contenedor que puede llevar vídeo (Matroska, WebM, MP4) a una constante de audio, y FLAC se mantiene un binario genérico en ambos lados, como antes. TrainingSlide y TrainingVersionSlide gain media-meta-json (TEXT): la duración, los picos de forma de onda y el capítulo marca que el jugador de entrenamiento navega una lección de audio por escrito por el editor, congelados con la versión. DDL, aplicado a la producción a mano antes de esta confirmación (InitializerService no está desplegado): ALTER TABLE public.hr.training-slide ADD COLUMN IF NOT EXISTS media-meta-json TEXT; ALTER TABLE ********** ADD COLUMN IF NOT EXISTS media-meta-json TEXT;

  10. · kamo-internal

    El título completo de una ventana de herramientas, sin embargo se acorta

    Una barra de título es una línea, y una conversación, un correo electrónico o un sujeto de entrada o un El directorio del terminal es regularmente más largo que la habitación que recibe. Sólo podía leer el comienzo de corte. Cada lugar se dibuja el título de una ventana ahora abre una carta con la totalidad: la barra de título en la primera fila, el tiras de ventanas detrás, una barra flotante o maximizada de la ventana, y las pestañas por encima del panel maximizado (donde reemplaza el propio navegador unstyled .title. tooltip). Alcanzado en todos los sentidos que un miembro puede preguntar: - flotar: después de un breve descanso, y a la vez al deslizar de otro título; una carta a la vez - prensa: de inmediato; bajado el momento en que la prensa se convierte en un lastre de ventanas, y mantenido abajo hasta que el puntero se vaya o regrese de nuevo - grifo: a la vez, sostenido después de que el dedo se eleva hasta que un grifo aterrice en otro lugar - teclado: enfocar una tira, una pestaña o una barra de ventana flotante; Escape cierra - clic derecho: el menú de la ventana ahora nombra la ventana en la parte superior y tiene una fila de "título de Copiar" Sólo para un título que está realmente cortado (medido cuando se abriría, incluyendo un desbordamiento de sub-píxeles de distancia, y sigue el ventana a medida que la fila se mueve, se actualiza cuando el título se renombra sobre el enchufado, y desaparece una vez que una fila maximizada o una fila más ancha deja encajar el título. La tarjeta es una sombra más profunda del propio color de la barra de título de la org, alinea el título completo hacia arriba bajo el corte, es seleccionable, y copia todo el título. La tarjeta está portada pero Reactúre burbujea sus eventos de nuevo a la barra de título, así que para la prensa, haga clic, doble clic, menú de contexto y teclas que arrastrar, elevar, maximizar o mover la ventana debajo de ella.

  11. · InitializerService

    Pon la aplicación en el catálogo de derechos, añadir sólo

    **************** afirma que cada aplicación vendida está categorizada y se sienta en algún lugar de la escalera de nivel, porque una aplicación el catálogo no describe tierras En ninguna parte de la matriz de precios y el silencio escribe es incluido=false en cada nivel. Computadoras anfitriones fueron vendidas y descrita en ninguna parte, así que roció ambas afirmaciones el En el momento ServiceType 37 existió. Sólo añadido, y por una razón ninguna de las otras aplicaciones adicionales comparten. MLOS, el sistema de préstamos personales y Registros de Pacientes se negocian por lo que Lávese; Computadoras de acogida se negocian por lo que gasta. Un peinado de nivel entregaría a cada organización en ese plan el derecho a asignar máquinas virtuales de KubeVirt, y el programador limita a la flota por Peticiones en lugar de uso, de modo que los orgs que utilizar el derecho primero tomaría los nodos del resto - en un publicado precio, que es la parte que hace difícil volver a caminar. Qué lo mueve en un El pezón es más nodos, no un cambio de precios. El complemento sigue la forma que el bucle ya se aplica a las aplicaciones negociadas: no precio de lista, por lo que nada lo hace, y compatible sólo con los planes de CUSTOM. Es Tampoco se ofrece en ningún lugar hasta que la aplicación llegue COMPLEADO, que no tiene. La entrada en catálogo se encuentra en Productividad junto a las otras cosas en las que la gente trabaja. A La clasificación que sostiene una aplicación se lee como un descuido a quien abra la matriz.

  12. · kamo-internal

    Cuentas de miembros humanos/AI, nombres fonéticos, título de trabajo y requisitos de departamento

    Añadir Miembro / Add Team Member - Una primera sección de "Persona o AI": Inteligencia Humana (incumplida) o Inteligencia Artificial como dos Tarjetas de elección de teclado-operable. AI trae al miembro del equipo supervisor (falta a ti cuando tú son un miembro del equipo) y el modelo de IA; la ubicación de trabajo de un miembro del equipo pre-llena como remoto. - Nombre fonético al lado del nombre preferido, con consejos de pronunciación y dos botones de reproducción que leen nombre tal y como escrito fonéticamente a través del motor de habla del navegador. - El resumen muestra Inteligencia y "Sélo"; elegir un título de trabajo o departamento muestra lo que espera (descripción y requisitos); un aviso de cuenta existente dice su nombre y pronunciación se guardan. - Añadir a granel: un ajuste de la inteligencia por lotes, una anulación por flecha y una columna fonética; CSV importa auto-maestra "pronunciación", "humano o ai" y amigos ("AI", "Bot", "Human"...). Después de la creación - Miembros / Equipo cuadrículas de miembros: una columna de Inteligencia, un filtro de inteligencia Todo y humano. búsqueda rápida que encuentra "AI" y nombres fonéticos. - La carta de miembro (cada nombre flotante): una píldora de IA y una línea de "Says it" con un botón de juego; filas de listas Enciéndelo con ambos. - Perfil: el héroe lleva la píldora de IA y "Says it"; el nombre fonético se edita junto a la preferida nombre; la tarjeta de membresía muestra/edita Inteligencia, supervisor y modelo (Gestión de los miembros solamente, nunca en su propio perfil); la sala de trabajo gana una tarjeta de expectativas de rol en vivo y sólo de rol. Títulos y departamentos de empleo (/esenciales de establecimientos) - El diálogo de add/edit gana una sección de expectativas: una descripción (4.000 caracteres, contador) y un editor de requisitos categoría, texto, requerido/Preferred, reordenar, eliminar, Enter añade el siguiente, Pegando una lista lo divide en filas, ejemplo chips, gorra de 50 filas. - Las tablas muestran la primera línea de la descripción y una columna Requisitos con una lista de flotadores; ambas páginas refrescar en vivo (pausado mientras el diálogo está abierto) y mostrar las propias palabras del servidor en un salvogado rechazado. Piezas compartidas: app/lib/miembros/inteligencia, app/lib/speech (detecta de la función, SSR-safe), IntelligenceBadge / IntelligenceChoice / PhoneticNameField / SayItButton, app/lib/orgRequisitoments, RequisitosEditor, RoleExpectations. Especificar y planificar bajo documentos/superpotencias. Necesita una biblioteca compartida de kamo y el servicio de seguridad (mismo característica) y las teclas del diccionario empujadas primero.

  13. · SecurityService

    Miembros humanos/AI, nombres fonéticos, requisitos de rol; fijar posición salvando la seguridad

    Miembros - Crear, crear-team-miembro y abrazar a granel aceptar "intelligenceType", "namePhonetic" (nuevo sólo, como el nombre), y para las cuentas de AI "aiSupervisorMemberId" . El supervisor debe ser un miembro activo del equipo humano y nunca la cuenta misma; cuando Ninguno se llama el creador si califica (AiSupervisorPolicy). Cada negativa nombra su campo antes de que algo esté escrito. - PUT /members/.id.: "namePhonetic" es un campo de identidad de usuario (la misma autoridad como nombre legal). "IntelligenceType", AaiSupervisorMemberId, Imodelo necesita MANAGE-MEMBERS o una ventana de dios abierto, y se rechazan en su propia membresía (CANNOT-RELABEL-SELF) por lo que una IA no puede volver a etiquetarse humana. Cambiar a HUMANo despeja supervisor y modelo. - GET /members/-id, /members/-id-/card, la lista de salida por departamentos y las filas de las listas de cuentas llevan "IntelligenceType" y "namePhonetic" (el perfil también obtiene el supervisor id/name y modelo). - los títulos de trabajo de org-config y los departamentos llevan la descripción de los requisitos para la forma de creación. Títulos de empleo y departamentos - POST/PUT/DELETE ahora requieren CONFIGURE-SYSTEM (o una ventana de dios abierto) - las páginas de configuración que Ya los escribió; el servidor aceptó cualquier miembro inscrito de la organización. Lectura sin cambios. - La descripción y los requisitos fluen a través de los servicios compartidos (ver la biblioteca compartida de kamo). Arreglar: PUT /miembro-seguridad/-Sid-sustitu, los derechos directos y el tiempo de espera de sesión incluso cuando el La petición no los nombró. La tarjeta de posición del perfil envía sólo departamento / título de trabajo / oficial título / gestor, así que cada posición editar borró los roles personalizados del miembro, los derechos directos y el tiempo de espera Anulación. Cada uno se reemplaza ahora sólo cuando su clave está presente; el editor de seguridad envía los tres. DDL: ************* (aplicado a mano como el propietario antes de esto empuje; cero errores de esquema-mismatch en seguridad/email/medias en los 15 minutos siguientes).

  14. · kamo-shared-library

    Tipo de inteligencia, nombres fonéticos, supervisión de IA, título de trabajo/dispartamento

    Miembros: "Member.intelligenceType" (HUMAN - ARTIFICIAL, STRING, por defecto HUMAN en cada construcción ruta y en la columna), "aiSupervisorMemberId" (los miembros de id es la tabla más caliente y es duro desbortado) y "aiModel". Usuarios: "namePhonetic", al lado del nombre en lugar de dentro de EmbNameFull, que lleva, cuentas, prestatarios y sesiones también se incrustó. Títulos de trabajo y departamentos: una descripción. dos cuadros de niños (a-org.job.title-requirements, "dept-requirements": categoría, Required/Preferred, texto 500, ids estables, ON DELETE CASCADE). OrgRequirements es la única regla establecida para ambos validación antes de que se escriba algo, diff-by-id por lo que un requisito mantenido mantiene su identificación, y un id de Otro propietario es tratado como nuevo. Las actualizaciones siguen "ausentes significas sin cambios" para ambos campos nuevos, así que a Llamada que nunca los envía no puede limpiarlos; "" / [] claro. ************* ahora tome la petición DTO (sólo SecurityService las llama). DDL se aplica a mano ******************* 2026-09-22 03:01Z, antes de este empujón). Una verdadera sesión de sesiones sobre todo la biblioteca pincha lo nuevo tablas y columnas a ese DDL (RoleRequirementsMappingTest).

  15. · kamo-internal

    La opción nav, la sección de configuración y la figura de almacenamiento

    El propio ordenador Linux de un miembro, abrió desde la barra superior. La aplicación (ServiceType 37) y sus tres derechos aterrizó en la biblioteca compartida; esta es la mitad de la gente que ve. LA OPCION NAV . . . . . . . . . . . . . . . . . . . . . . Bañado en la respuesta del servidor a "que los ordenadores pueden abrir este miembro", no a un derecha y no a un dios. El La opción de dev-mquina se tuvo que enseñar esto: fue bizo-gotada una vez, que puso un icono delante de la gente con no cuenta en la máquina y produjo el error genérico de Guacamole cuando hizo clic en él. Así que un gerente holding ACCESO-SUBORDINATE-COMPUTERS y ninguna computadora de su propia todavía tiene el icono. Hay algo detrás y un administrador que ostenta MANAGE y nada asignado no lo hace. La lista es del servidor, en el orden del servidor: propio primero, luego subordinados, luego de la organización. Nada aquí se filtra o reordena, por la razón /network's listing es decidido servidor. filtro es una lista que ya se ha enviado, y el pedido lleva la información que el cliente nunca ve porque no tiene la cadena de gerentes. Cada fila se expande a los tamaños de DESKTOP-RESOLUCIONES, reutilizadas en lugar de re-restablecidas por lo que un tamaño añadido allí aterriza en el lado correcto de la regla bajo "Apto mi ventana" sin que nadie moviera un límite. Todas las filas lleva su estado, porque "dormir" es el estado normal de reposo de uno de estos ordenadores y no a falta, y una pelea que decía que nada dejaría a alguien que espera un minuto pensando que había fallado. openHostedComputer es más que un trak y una redirona por la misma razón: un lanzamiento tiene tres respuestas y Dos de ellos no son un eslabón. Dormir significa que un velatorio ha comenzado y toma 30-90 segundos mientras el invitado lee su memoria de nuevo de un volumen replicado, por lo que la pestaña SAYS que una pestaña en blanco por un minuto es indistinguible de uno roto, que abrióKamoDesktop también tuvo que ser enseñado. Aún no hay login significa Kamo nunca guardó la contraseña y el miembro la confirma una vez; ese es el diseño funcionando, no un fracaso, Así que la pestaña se cierra y un diálogo pregunta en lugar de dejar una página de explicación que nadie quería. TRES SETTINGS TABS. Uno fue preguntado; los otros dos son por los que es utilizable Las computadoras es la única: asignar, redimensionar, cambiar el almacenamiento, dormir, eliminar, vivir en usoOrgChanges. Capacidad respuestas "por qué esto no empezará?", que de otra manera no tiene respuesta en ninguna parte del producto y la respuesta es contra-intuitiva, por lo que las barras dicen TEQUESTS en lugar de uso, porque una máquina puede parecer medio ocioso y No tengo espacio. Los fallos detienen a una organización que vuelve a elegir un tamaño y un disco para cada persona, y cada caja puede haber en blanco, donde en blanco significa "seguir la plataforma" y no cero. El diálogo de redimensionamiento advierte y el diálogo de almacenamiento dice que no lo hará, que es el par que vale la pena tener: un tamaño cambio reinicia la computadora porque una imagen de sueño está unida al tamaño de la memoria en el que estaba escrita, y a el cambio de almacenamiento amplía el volumen en línea y no perturba nada. HISTORIA EN LA PÁGINA DE STATS, AS ITS OWN PANEL HostedComputerUsagePanel se encuentra directamente después de Almacenamiento en Configuración y Mi Cuenta - Stats & Costs. Ni una fila en esa tabla: sus filas vienen de la instantánea de la facturación barrer el almacenamiento de caminando RECORDS, y el disco de una computadora tiene nada de lo que hay en él se conoce sólo al huésped, que reporta su propia figura del sistema de archivos. El número de Longhorn estaría equivocado de una manera que importa, porque cuenta todo jamás escrito y nunca cae cuando Alguien borra un archivo. El archivo swap está excluido: es el tamaño de la memoria del ordenador y existe por lo tanto la máquina puede dormir. Dos cosas mis propios cheques atrapados y arreglados: la puerta de la nave devolvió "indefinido" en lugar de "falso" para un organización sin juego de banderas (sin definir && x), y la columna de almacenamiento pasó el número de null en una UCI el techo y "crece" son el mismo hecho, por lo que ahora lee el techo una vez y deja que TipoScript sigue el estrechamiento. Verificado: sc clean of everything but four errores preexistentes de ReplyQuote en chat y soporte, presente en las mismas líneas de origen/principal. 320 pruebas de nav y lib pass. eslint limpiar en cada archivo nuevo y no nuevo Advertencia en las editadas. Los tres guardias de imagen-construcción pasan las llaves de cheques de I18n limpiar más de 4268 archivos contra la cabeza del diccionario, que fue empujada primero y verificada por la ascendencia.

  16. · kamo-internal

    Listas de verificación en la aplicación Notas - requisitos previos, pegajosas, cristales caseros y el calendario

    Una nota es memoria; una lista de verificación está funcionando. /notes ahora tiene dos mitades de Notas y Listas de cheques (?view=-checklists) y una lista de verificación es su propio registro (/api/checklists, KBService) con tareas que pueden esperar en otras tareas. Listas de verificación - Tarjeta por lista en su propia pared: vanguardia y anillo, tareas en la tarjeta, chip de horario; filtros de carril para en curso / no iniciado / hecho / programado / en casa / favoritos, búsqueda que llega dentro de cada tarea. - El editor: agregue las tareas rápidamente (Enter; Shift-Enter lo añade como el siguiente paso; pega una lista), haga clic para editar, arrastrar o Alt-arrows para reordenar, borrar con Deshacer, todo/Ready/Waiting/Done filter, "hacer en orden", deshacerse de todo, claro hecho, duplicado como una copia fresca, copia como Markdown. - Prerrequisitos: modo de enlace elige lo que una tarea espera, grisando cualquier cosa Eso haría bucle. Una tarea cerrada muestra su candado y lo que espera; presionar la fila, ilumina las tareas de la manera y ofrece saltar a ellos. Desencase de lo contrario, depende de un trabajo terminado, o dar un terminaron una tarea abierta, pregunta por primera vez y nombrando qué reabra. El La dependencia de la dependencia traza todos los enlaces y enciende la tarea flotada. El servidor hace cumplir las mismas reglas, así que nada las rodea. - Desbloqueos, garrafas y terminar una lista se animan; el final consigue confeti y un tono en la superficie donde se hizo la última garrafa. Donde vaya una nota - Flotando: listas de verificación flotan como pegajosas en la misma superposición, orden de apilamiento, salvó el diseño y el muelle de cabeza hexagonal como notas (su propio grupo de muelles). - Inicio: una lista de verificación fija es un panel de lanzamiento junto a notas fijas, locura. - Una tienda en vivo alimenta cada superficie, refrescada por las listas de verificación. cambio, así que una garrafa en cualquier lugar aterriza en todas partes. Calendario - Una lista de verificación va en el calendario como un evento real (sourceType CHECKLIST), programado a través del diálogo de evento del propio calendario desde cualquier superficie, o por Arrajándolo de la nueva bandeja de verificación del calendario en un día o una hora. - Los eventos de la lista de verificación muestran su progreso en cada vista; el diálogo de eventos muestra la lista, la garra cómoda en su lugar; el trabajo atrasado pulsa en rojo. - El proxy del calendario publica ahora el cambio de "calendar" en cada escritura: Los propios temas de EmailService son por cápsula, así que una pestaña en la otra vaina nunca se escuchó. Diseño: ****************

  17. · APIService

    Adelante /api/-verlists a KBService

    Listas de verificación en vivo en la aplicación Notas y son servidas por KBService al lado de las notas ellos mismos; sin esta ruta todo el largometido responde 404 en la pasarela.

  18. · KBService

    La API de la lista de verificación, con los prerrequisitos que el servidor hace cumplir

    /api/checklists: listo, get, create, update, delete, duplica, duplica, reset, secuencia de clara (en regla", selañaba), enlaces claros, y por tarea añadir, editar, garra/untick, establecer requisitos previos, mover y eliminar. Cada mutación responde a la lista completa para que cada superficie se redriega de una respuesta. Las reglas viven en ChecklistRules, puro y exhaustivamente probado, y sostienen uno invariante: una tarea hecha nunca espera en una abierta. Una garra desechada mientras que un el requisito está abierto (409 PREREQUISITES-OPEN, nombrarlos); una falta que las tareas de la función dependen de la denegada a menos que cascade=true; un vínculo que bucle se rechaza (409 CYCLE, con el bucle); un enlace que dejaría el trabajo terminado a la espera de las necesidades de obra abierta reabrir=true (409 REOPEN-REQUIRED). Las mismas reglas ejecutar en el navegador para la retroalimentación instantánea, pero este es el que decide un pegajoso, el calendario o una pestaña ranura no puede moverse. Los derechos son de la aplicación Notas: VIEW-NOTES para leer, CREATE-NOTES, EDIT-NOTES y DELETE-NOTES para cambiar. Las mutaciones llevan .RetryOnDbConflict y golpean el la versión de la lista, así que dos pestañas marcan a la vez serializar. create-checklists.sql es el DDL, idempotente, aplicado como propietario.

  19. · kamo-shared-library

    Lista de verificación y verificaciónCondicionesItem, repositorio y DTO

    Las listas de verificación son el segundo tipo de registro de la aplicación Notas: trabajo para pasar, las tareas pueden esperar en otras tareas. Tres cuadros, listas de verificación, listas de verificación y lista de comprobación.item.prerequisites . todas teclas by UUID para que no hay identificación alguna vez un int64 a el navegador podría dar la vuelta. El texto de tarea es el texto cifrado bajo la clave de la nota del miembro. La fila de la lista de verificación lleva su propia fábrica/actualizada (EmbRecordState's FECHA.Actualizado es insertar/actualizar=falsor y nunca se mueve) y una versión de la el servicio se cae en cada mutación, así que las ediciones simultáneas a una lista chocan en lugar de entrelazamiento. DDL se aplica a mano ************* nada aquí crea una mesa.

  20. · SecurityService

    La superficie orientada al navegador, y la segunda puerta de guacamole

    SecurityService es el límite de confianza para Computadoras Hosted. Celebra la sesión, los derechos y el org Gráfico; ComputeService tiene las credenciales de Kubernetes y ninguna sesión en absoluto. Nada aguas abajo re-chequeo a la derecha y nada aquí toca un racimo. LA ID de ORG NO se toma de la siguiente manera. Cada llamada estampa la propia organización del llamante. A Hosted Computer es toda una máquina en una red que sólo ve su propia organización e internet, así que un manejador que aceptó un org id de un cuerpo no sería una lista de filtraciones, sería una puerta a alguien de lo contrario el escritorio. El camino de asignación resuelve adicionalmente el correo electrónico del miembro objetivo a través del propio llamante organización, que se duplica como la verificación de membresía: sin ella un administrador podría asignar una computadora a un miembro id perteneciente a otro inquilino y tener la máquina construida en el espacio de nombre de esta org bajo ese Nombre de la persona. TRES GATES DIFERENTES, BECAUSE Hay TRES PREGUNTAS DIFFERENTES. Gestión de las necesidades MANAGE-HOSTED-COMPUTERS. Abrir uno necesita que el ordenador sea suyo, o uno de los dos derechos de ACCESS a Ampliarlo y si el llamante puede abrir esa computadora es contestada re-añadiendo la misma visibilidad Cuestionar el menú nav fue construido, en lugar de por una segunda regla que podía estar en desacuerdo. Un miembro que era Nunca se mostró una computadora no puede alcanzarlo adivinando un identificador. Confirmar una contraseña no necesita nada de derecho: es cómo la propia computadora de un miembro consigue un login. EL ORG CHART ES FETCHED SOLO Cuando un derecho lo necesitó, y en una sola consulta. Apuestas ACCESS-SUBORDINATE-COMPUTERS todo el subárbol de debajo de un miembro, por lo que los bordes vuelven como pares y el travesal aguas abajo los camina sobre un conjunto visitado.- managerId es un campo de perfil de forma libre, no un árbol validado, por lo que un ciclo es uno reorganización. Un miembro sin derechos paga una llamada, lo que importa porque el nav pregunta esto sobre cada carga de páginas. EL FORMA DE TOKEN ES AHORA SHARED, NO COPIED. GuacamoleTokenCodec se extrae de GuacamoleJsonAuth porque hay dos pasarelas: escritorio.-domain para administradores de plataforma y computadoras. diferentes teclas de firma y diferentes modelos de conexión. Dos copias de ese formato serían una la implementación y una responsabilidad, y el error que la copia eventualmente cometería es el error de "expires" . se lee como un enlace TTL y en realidad es la ventana de reconexión de la sesión, y conseguir que se equivoque vacía a Lista de conexiones del usuario en vivo en silencio. El piso es impuesto por ambos llamantes. HostedComputerSso es un hermano más que una rama. Esa pasarela ofrece tres objetivos fijos y pone todo en cada ficha; este tiene una conexión por computadora, que lleva el nombre de la computadora, con una sola vez Credencial acuñado por lanzamiento, por lo que la propia contraseña Kamo del miembro nunca viaja en señal de ficha. La plataforma El escritorio tiene que mantener una copia descifable de una contraseña de cuenta con precisión para que Guacamole pueda auto-login; esto no, y esa es la mejora. PasswordChangeController ahora empuja la nueva contraseña a los ordenadores del miembro. Este es el único momento en que el El texto plano existe. Kamo almacena un hachís y no guarda copia reversible en ninguna parte y el empuje es el mejor esfuerzo por construcción: un fracaso nunca debe fallar el cambio que el miembro pidió, y una computadora para dormir está marcada Razón así que su próximo lanzamiento pide una confirmación. Nada está hecho en cola, porque una contraseña en cola es un almacenado contraseña con retraso. Suite: 2755 pruebas, 5 fallas, y las cinco son las mismas que el origen prístino/principal produce el NouthenticatedEndpointRatchet en PromotionCodeInternalController (añadido por 9578ca0 y nunca añadido al basal) y cuatro NPE de ************* en el poste de tareas aplicada. Verificado corrindo ambos en un árbol limpio en origen/principal. Mi propio controlador pasa el trinquete: cada manejador resuelve una sesión y respuestas 401 sin una. Necesita el secreto hc-guac-sso para los enlaces de menta; hasta que existe el camino de lanzamiento dice tan claramente en lugar de Devolviendo un enlace que aterriza en la pantalla de error genérica de Guacamole.

  21. · EmailService

    Un miembro puede poner una lista de verificación en su calendario, una vez

    Listas de chequeos en vivo en KBService y el calendario es el único WHEN, así que un Lista de verificación programada es un evento de miembro ordinario que lleva sourceType CHECKLIST, la lista de verificación UUID y un enlace profundo en /notá notas. El vínculo es lado del servidor derivado, nunca lea del cuerpo, y el evento pasa por el miembro normal crear camino para que el cambio de calendario publique todavía fuegos. Un segundo calendario activo de la misma lista de verificación es un 409 nombrando al primero. GET **************** los lista para las fichas en /notes. Una edición todavía no puede cambiar de qué se trata un evento. Recordatorio de la lista mantener el calendario del tipo y obtener un icono de lista de verificación.

  22. · APIService

    Adelante la ruta de agente de la computadora alocó, y sólo ese camino

    /api/hosted-computers/agent/** --- ComputeService. Una política de red de Hosted Computer niega el clúster completamente sin base de datos, sin servicio, ni siquiera clúster DNS, así que la única manera de que la máquina virtual de un inquilino le diga algo a Kamo está en Internet y de vuelta a través de api. .domain, como cualquier otro cliente. Todo lo demás sobre una computadora se le empuja; Este es el camino único entrante. EL NARROWNESS ES EL PUNTO. Sus hermanos bajo /api/comuned-computers/ son la API de gestión interna: Asignar una computadora, redimensionar una, borrar una, leer la capacidad de otro inquilino. Esta puerta de entrada SecurityConfig está totalmente comentada, por lo que una ruta reenviada es pública y el servicio aguas arriba es el Un comodín publicaría una API de creación de VM en internet. Es el mismo error. /api/bulktext/inbound/** existe para evitar, y la razón por la que la superficie del agente se hizo hijo de /agente en lugar de un hermano de las rutas de gestión. hacia adelante en lugar de hacia adelanteWebhook: a diferencia de un webhook de compañía no hay ninguna firma de terceros sobre el bytes crudos, y la credencial es una Autorización ordinaria: Cabecera de oso - un secreto por ordenador rotado en cada velatorio, que ComputeService comprueba con esa computadora. El endpoint es la telemetría solo para escribir cuya respuesta no lleva nada sobre la organización, por lo que una credencial levantada de un escritorio del propio inquilino compra la capacidad de publicar la figura de almacenamiento de ese escritorio y nada más.

  23. · kamo-shared-library

    Una consulta para todo el gráfico de reporte de una organización

    encontrarMemberAndManagerIds devuelve cada (memberId, managerId) edge en una organización, para Hosted ACCESS-SUBORDINATE-COMPUTERS derecha-que alcanza la subáris completa por debajo de un miembro más bien que sólo sus informes directos. La alternativa es encontrarDirectReportMemberIds caminar nivel por nivel, que es una consulta por nivel en un sendero el menú nav golpea en cada carga de página, y la profundidad es una propiedad de la carta de org del cliente en lugar de cualquier cosa que este código controle. Devuelve el EDGES en lugar de un subárbol resuelto, porque el traversal tiene que protegerse de un ciclo: managerId es una referencia de forma libre en el perfil de un miembro, no en un árbol validado, por lo que A reportar a B Mientras que los informes de B a A es un mal clic o una reorganización y una consulta recursiva no regresaría. El llamante camina por primera vez sobre un conjunto visitado. Comprotrar los filtros encontrarDirectReportMemberIds exactamente, incluyendo el LEFT JOIN explícito en tm.user El camino implícito se une es un INNER unirse a JPQL y dejaría silenciosamente todos los informes cuya fila de usuarios es falta, que ese método registra. Validado por LibraryQueryParseTest, que traduce cada "Query" en la biblioteca contra la entidad real mapeo. Eso importa aquí: Spring Data valida una consulta anotada cuando construye el repositorio de frijol, así que un camino malo compila, pasa CI, navega, y luego impide que el servicio consumidor se empiece en absoluto.

  24. · kamo-internal

    La cita de una bandeja de entrada social de un mensaje más antiguo nombra a su autor con su tarjeta

    La cita ahora toma a su autor del servidor (Cita dekamo/chat-core.senderMemberId), que retenga el id de un contacto social ya que el servicio de medios ceee73e se almacenan las palabras de un contacto bajo el propietario de conexión, y la cotización utilizada para nombrar al propietario. Así que el nombre de un representante en una cita de un mensaje más de lo más antiguo que la página cargada abre su tarjeta, como una cargada ya lo hizo. Un mensaje de contacto cargado se niega también aquí, sea lo que diga un servidor más antiguo.

  25. · kamo-internal

    La tarjeta muestra al miembro id a quienes manejan miembros

    Recursos humanos y apoyo leyó el identificación de un miembro de una punta de herramienta en las listas de recursos humanos, que el miembro reemplazó (el tooltip se sentó donde se abre la tarjeta). Los detalles de la tarjeta ahora llevan una fila de identificación de miembro, con la misma botón de copia como los valores de contacto, para los espesores que puedan abrir el perfil de ese miembro. que manejan a los miembros, dios y al propio miembro. Todos los demás no ve identificación.

  26. · kamo-shared-library

    La aplicación, tres derechos, enums de nivel/estado y las entidades

    ServiceType.HOSTED-COMPUTERS at id 37, TESTING en lugar de COMPLETED. La etapa lleva peso Aquí en lugar de describir el progreso: AppCatalogService resuelve "disponible" como "escenario" == COMPLETED, y una aplicación no disponible se salta el bucle de auto-disponible de FeatureController. Todos los demás COMPLEADOS La aplicación llega encendida para las 25 organizaciones el día que se envía; ésta reeca máquinas virtuales mantener una memoria RAM real en un clúster de dos nodos, por lo que tiene que ser concedido por organización por un operador que ha mirado la capacidad. No se pierde nada, la pantalla de aplicaciones y características de la plataforma existe precisamente para publicar una aplicación independientemente de su escenario, por lo que la fila está esperando allí bajo "No está disponible". Tres derechos en 326-328, no 320-322: la salida local fue de 30 compromisos y 320 MANAGE-EMAIL-OPT-OUTS. Lea el IDS en ese archivo, nunca el pedido de línea 318-325 se sitúe cientos de líneas por encima de la constante que se ve dura. Los tres son raíces y ninguno es hijo de otro, que es la decisión que vale la pena grabar en lugar de el conteo. MANAGE-HOSTED-COMPUTERS puertas la sección de ajustes; la puerta de derechos ACCESS WHOSE La computadora aparece en el menú nav de un miembro. La crianza de los hijos de MANAGE se equivocaría en los caros dirección de una pista de TI que necesita abrir cualquier máquina llegar sosteniendo la pantalla de aprovisionamiento, y un gerente con una opinión de las computadoras de su equipo podría redimensionarlos. Ni puertas a computadora OWN: eso no es un derecho en absoluto, porque hacerlo uno permite un ordenador provisto para alguien que no puede alcanzarlo. HostedComputerTier y HostedComputerState perseveran por NAME. Estas mesas son nuevas, así que no hay nada para proteger y ninguna razón para heredar el peligro de reordenamiento AssocType y ServiceType tiene que vivir con él. Dos derivaciones en el nivel son carga y ambas fallan QUIETLY sin ellas: - mínimo DiskGb() es memoria de invitado 25. Una computadora duerme escribiendo su RAM en su propio archivo de swap, para que un disco sin espacio para la imagen produzca una computadora que nunca duerme o escriba un parcial imagen y botas limpias con la sesión del miembro desaparecido. Ninguno de los dos reporta nada, así que el piso está cumplimiento en lugar de sugerido. - requestedMib() añade el lanzador de KubeVirt, medido en el MiB número 324 en el escritorio-1 y redondeado a 400. Capacidad debe compararse con lo que el POD solicita: un cheque que omite dice que una computadora encaja y luego sale de su vaina pendiente indefinidamente, que es indistinguible de una computadora que nunca Apareció y registra nada que un miembro pueda ver. **************** es lo que la planificación de la capacidad resta, y ASLEEP no es deliberadamente En ella, esa es toda la característica. La propia pausa de KubeVirt "congela el proceso sin lanzar la CPU recursos, pero la memoria sigue asignada", así que dormir aquí significa suspender-to-disk: el VMI y su La cápsula de lanzamiento se ha ido y la solicitud de memoria está de vuelta con el programador. El almacenamiento es un par anulado con un tercer significado y sin booleano. Un techo por encima del disco actual es "ilimitado" como miembro lo experimenta; un techo ausente significa que el disco no crece. No hay Bandera ilimitada porque una bandera establecida sin techo es la configuración que se come silenciosamente un racimo la regla StorageAutoExpandSweep ya se hace cumplir para los archivos, por lo que registra. PhiModule.HOSTED-COMPUTERS es BLOCKED-NO-BAA, y la razón es una propiedad de la cosa en lugar de una brecha en el papeleo. Cada otro módulo es una superficie conocida con flujos de datos conocidos; este es un escritorio alguien puede instalar cualquier cosa y pegar cualquier cosa, y Kamo no puede inventariar sin viendo la pantalla. El aislamiento es genuinamente fuerte y eso no es lo que una BAA pide. También mapeado KAMO-UNIVERSE, CHESS y HOLDEM, que se envió sin PhiModule y se marchó PhiServiceTypeMappingGro rojo. No la mía, pero la prueba falla en el primer huevo que encuentra, así que sin ellos tampoco puede probar que HOSTED-COMPUTERS está mapeado. Se llevan GAMES, que su propio padre toma. Suite: 3026 pruebas, y los 4 fracasos restantes son los mismos que el origen/principal produce los productos de origen/principal. DenunciaVisibilityTest (PlatformRightType ordinal, intocado aquí), el almacenamiento de dos GROWTH-REQUEST-IMAGE Pruebas de dominio, y SystemBugCountContractTest's NoSuchMethod. Verificados corriendo en una limpieza ocio en origen/principal antes de cambiar nada. Las mesas están en ******************* y se han aplicado a la base de datos en vivo.

  27. · kamo-internal

    Una respuesta a un mensaje más antiguo nombra a su autor con su tarjeta también

    Movidos .kamo/chat-core a 0.1.19, cuya cita de respuesta lleva a SenderMemberId: el servidor's parentensombreSenderMemberId cuando envió uno (nula para un visitante de chat web, cuyas palabras se almacenan bajo el miembro del sistema), de lo contrario, el miembro del padre cargado. Antes, la consola podía leer al autor sólo fuera un padre cargado, por lo que una respuesta a un mensaje más antiguo que la página cargada citó un nombre sencillo. - Los chats de Colega (MessageList) toman al autor de la cita tal y como es. - Las entradas aplican la regla que le sigue la cara de una burbuja. El propio lado del espesante, una vez los lados son conocidos (isOwnSide) que ahora también se mantiene para los padres descargados. - Las bandejas de entrada social mantienen su propia regla (padre cargado de uno de los representantes de la organización): el servidor no retiene el id de un contacto social, ya que los contactos se almacenan bajo el miembro del sistema. paquete-lock.json: la versión, resolución e integridad de la entrada de chat-core (comprobado con el Tarball descargado); sus dependencias de la lista (-kamo/net 0.1.2, Kamo/realtime 0.1.1) no cambian.

  28. · KlusterServices

    Islas Per-org VM, suspensión-disco, y una imagen dorada de marca blanca

    La propia computadora Linux de un miembro, que se ejecuta como KubeVirt VM en el espacio de nombres de su organización y abierto desde el navegador. Separar del escritorio/ en todas las formas que importa: que es uno compartido máquina para administradores de plataforma, deliberadamente en la red de vainas para que pueda llegar a la base de datos, NATS y MinIO. Se trata de máquinas inquilinas cuya propiedad definitoria es lo contrario. Tres hechos dieron forma a esto, y cada uno contradice la lectura obvia: - Pausar una VM no libera nada. Los documentos de KubeVirt: hacer una pausa "congela el proceso sin lanzar CPU recursos, pero la memoria sigue asignada". Así que dormir es suspender a-DISK - el invitado escribe su memoria en su propio intercambio y poderes apagados, la cápsula de lanzamiento termina, y la solicitud de memoria va volver al programador. Eso necesita runStrategy RerunOnFailure, documentada para dejar cerrar a un invitado sin ser relanzado; bajo el sueño siempre se desharía en segundos el sueño. - El vestón está limitado por el programador REQUESTS, no RAM físico. Una vaina de lanzadores que no encaja se sienta a Pensando para siempre, lo que se ve exactamente como una computadora que nunca aparece y no registra nada. Así que se rechaza un velatorio antes de que se intente, y la negativa nombra el número. - Las identidades reservadas de Cilium no pueden ser igualadas por una regla CIDR. **************** registros que de un apagón, donde a Entities [anfitrión, nodo remoto] tuvo que añadirse a ALLOW el Nodo. Aquí el mismo hecho es la defensa invertida: ninguna regla los nombra, y default-deny.yaml egressDenies para que no pueda abrirlos más tarde. a Cilium niega ritmos cada permiso, desde cualquier archivo. El aislamiento se afirma en lugar de revisar. canario/verify-aislation.sh corre una vaina llevando lo mismo kamo.io/hc-org etiqueta que lleva una cápsula lanzadora, por lo que obtiene la misma identidad y la misma política, y sondas en ambas direcciones: los nodos, kube-apiserver, YugabyteDB, NATS, MinIO, kube-dns, los metadatos Dirección y otros ordenadores de org deben ser inalcanzables; internet y los ordenadores del mismo-org Debe trabajar. También informa, sin afirmar, si las horquillas de router aguas arriba . api.kamocrm.com resuelve a 47.181.8.84 mientras que LoadBalancer IP de Traefik es el propio 192.168.4.22, por lo que el agente Los latidos del corazón son el mejor esfuerzo por la construcción y nada depende de ello. El etiquetado blanco no necesita una reconstrucción de distro, que fue revisada por la superficie primero. Cada visible La identidad de Xubuntu es config o un paquete extraíble. strip-distro-identity.sh los elimina y pins ellos tan apt no pueden restaurarlos - un archivo en la sombra viene en la siguiente actualización y el fallo es un inquilino viendo el logotipo de otra persona semanas después. Las naves de imagen dorada sin logotipo y sin colores en absoluto; el agente los pinta por org de Comportamiento y Etiquetado, honrando la regla de que un inquilino Nunca ve las imágenes de KamoCRM. El agente es solo y no puede llamar, porque la política de la red significa que no hay nadie para Llama a ella. Config está empujado, la decisión del sueño es local por lo que sobrevive a un apagón de Kamo, y hibernación la preparación se verifica (tamaño de intercambio, curriculum= Y curriculum-offset=, disco en /sys/power/state) antes de la El temporizador ocioso está armado - un hibernado mal configurado no sube, se arranca limpio y pierde la sesión. 26 pruebas cubren esa aritmética más la validación de entrada de marca. ************* se aplica a mano (ddl-auto no es ninguno e InitializerService no es despliegue) y ha sido, en contra de la base de datos en vivo como propietario. Necesitaba una subvención la receta existente no menciona: un NUEVO esquema no tiene ACL, por lo que los privilegios de predeterminados globales que las tablas de cobertura se fueron kamo-app con "permiso negado para el esquema alojado-computer" en el primer inserto. Verificado después. Cada manifiesto validado con kubectl aplicar --dry-run=server.

  29. · kamo-shared-library

    Deje que un llamante resuelva un MediaObjImg por la identificación de Img solo

    Los endpoints de imagen de DocsService (descargar/corrido/lista/delete) conocen el id de un Img pero no tengan ninguna razón para sostener el MediaObj que estaba adjunto hasta que necesitan para honrar la bandera de revocar el chat-attachment en ella (MediaObjImg.isAccessRevoked) sin poseer ningún programa de chat/media. MediaObjImgRepository only apoyó la otra dirección (por obj id, ordenado, para renderizar un mensaje accesorios). findBymg.Id cierra la brecha; plural porque el único la restricción es en (OBJ-ID, IMG-ID), no solo en IMG-ID. Nueva prueba: MediaObjImgRepositoryQueryTest, acoplándose a la consulta derivada firma de la forma en que **************** ya lo hace para su repositorio de hermanos (esta biblioteca no tiene arnés encaje de DVDJpaTest/H2, así que un método derivado de la no consulta se afirma por reflexión en lugar de ejercerse). Suite completa: 3013 pruebas, 4 fallos preexistentes de 1 error preexistente, todos presente confirmado en una salida de origen limpio/pertaje antes de este cambio y no relacionado con ella (PhiServiceTypeMappingTest: ServiceType.KAMO-UNIVERSE no tiene PhiModule; **************** ******************* sin reclamar por un StorageDomain; ReportVisibilityTest: un conteo de informes fuera por uno; SystemBugCountContractTest: SystemBugRepository.findAd deriva de la firma visible).

  30. · DaemonService

    Dobla los libros de plomo cada 30 s y recuperándolos por la noche; el desencadenante del trabajo necesita el secreto del cúmulo

    Los libros de contabilidad (servicio de seguridad create.lead-ledgers.sql, aplicado 2026-09-22) reemplazar COUNT(*) sobre un Pensaje de 796k-lead y sobre los créditos de plomo con totales mantenidos más un diario solo de apéndice que reman Los desencadenantes escriben. Este servicio los mantiene doblados y honestos: - LeadLedgerFoldJob (cada 30 s): una declaración por lote elimina las filas de los diarios y las añade a la Totales, por lo que un lector ve la figura antes o después, nunca la mitad. Los lectores ya añaden el diario a el total, por lo que una garrafa perdida cuesta tiempo de lectura, nunca corrección. En la mayoría 40 lotes de 5.000 por garrafa. - LeadLedgerReconcileJob (03:40 noche): relata la piscina de cada org y los créditos disponibles de cada miembro de las filas y los compara con el diario total en una declaración de ONE (una instantánea). Las diferencias son APROBADO como deltas 'RECONCILE', nunca escrita sobre un total, por lo que el recuento no puede correr los desencadenantes o un pliegue. También nombra a cualquier periódico disparador que esté desaparecido o desactivado. En un sistema sano se encuentra nada, así que cada corrección se registra en WARN. Ambos son "DisallowConcurrentExecution" y volver a intentar una declaración YugabyteDB aborta con 40001 (cada uno es atómico, para que un reinicio no pueda tener doble cuenta). El SQL fue reproducido contra YugabyteDB antes de que esto fuera enviado (templa Mesas: desencadenantes, lee, dobla y recuento, 60 controles). JobTriggerController: POST /api/daemon/trigger/-jobá y GET /status respondió a cualquiera. SeguridadConfig lo permite todo, y la ruta de demonio IngressRute pone este servicio en el punto de entrada web-segura pública (Host daemon.internal.kamocrm.com; sondeó 200 anónimamente), por lo que cualquier trabajo - ahora incluyendo el recuento podría iniciarse desde internet, tantas copias superpuestas como sostiene la piscina de Quartz. Ambos ahora requerir X-Internal-Auth = mlos.internal-auth-secret (tiempo constante) y rechazar a todos cuando ese secreto no está desconectado. Nada en la plataforma llama a este endpoint; un operador todavía puede, desde dentro del clúster. Pruebas: LeadLedgerManintenanceTest (bucle y tapón pliegue, relatar reportajes, disparadores faltantes, el reinicio Regla, y las formas SQL que lo hacen seguro al lado del tráfico en vivo), JobTriggerControllerAuthTest.

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