Changelog
Qué hay de nuevo.
Cada mejora de la plataforma, a medida que se envía.
· kamo-shared-library
Página y filtra las cotizaciones de una cuenta en la base de datos
Una vista de cuenta necesita cada cotización en todas sus pistas. Cargando para que rinda una página degrada cada mes la cuenta está en uso, y cualquier total mostrado sólo cubriría lo que se trazó, así que la papá en la zozobra, el filtrado y la clasificación todo sucede en SQL. La consulta es nativa porque Quote tiene sólo una suave lideraId sin asociación para unirse a través; se une a leads.uid = commerce-quotes..lead-id y scopes on leads.account-uid. Tirar de las pistas de la cuenta en una lista de IN no sobreviviría a un gran libro de negocios. Cada filtro es un predicado desprotegado, por lo que una consulta sirve a la rejilla sin filtrar y a cualquiera combinación de filtros en lugar de un método por permutación. Solas de las llaves son permitidas: el valor llega a un ORDEN BY, por lo que aceptando un El nombre arbitrario del cliente sería un punto de inyección. La proyección de la lista también gana enviarEn, aceptadoEn, versión y la opción/línea cuenta. se lee en un resumen de "cuánto tiempo ha estado esto, ha aterrizado", que el anterior los campos no podían responder.
· kamo-signer-monorepo
Mostrar al agente asignado en la copia del cliente
Coincide con la vista previa del personal: el membrete nombra al org, esto nombra a la persona a preguntar.
· kamo-internal
Mostrar el agente asignado en la vista previa
Un panel de "Tus contacto" encima del pie de la dirección de la dirección de la dirección de la dirección, el título, el teléfono y el correo electrónico. sabe a quién preguntar por el precio. Ausente totalmente cuando la pista no está asignada.
· SecurityService
Resuelve al agente junto al cliente, de una mirada de plomo
Ambos bloques salen de la misma pista, por lo que los controladores la traen una vez y derivan cada uno de ella en lugar de golpear el servicio dos veces por render. Todavía org-scoped en ambos alojar; en la página pública el alcance proviene de la propia organización del enlace de compartir.
· kamo-shared-library
Nombre el agente asignado del plomo en el documento
El membrete identifica al org, pero un cliente con una pregunta sobre las necesidades de precio la persona que es dueña de la relación. La cita ahora lleva el agente asignado al plomo. nombre, título de trabajo, correo electrónico de trabajo y teléfono de trabajo. Datos de contacto de trabajo solamente: una cita lleva la identidad de negocio del agente, nunca un número personal que resulta sentarse en su acta de miembro. El título de trabajo prefiere jobTítuloOfficial, que es lo que el org eligió imprimir, antes de la vinculada JobTTS. Una pista no asignada, o un agente sin nada registrado, no produce ningún bloque en lugar de un "Tus contacto" se dirige sobre el espacio en blanco. Nombre resolución reutiliza **************** el mismo camino LeadController ya utiliza para el oficial de préstamo asignado, por lo que la cita nombra al agente exactamente como el El resto de la visión de plomo sí.
· kamo-internal
Reasigna al agente que tiene una oportunidad
El diálogo del aprobador gana un elegante de agente, extraído de la misma piscina el backend valida en contra. La columna del agente de la cuadrícula muestra ahora quién HOLDS la oportunidad, con un ámbar "Reasignado de la leyenda de "cuando ya no es el agente que preguntado por el solicitante se queda en el registro y en la historia de cualquier manera. El control de cabeza de plomo sigue al titular también. Estaba cerrando al solicitante, que después de una reasignación habría ofrecido el diálogo de extensión al agente que ya no es dueño y lo escondió al que hace y a las puertas de la red trasera ese punto final en el titular, por lo que la oferta habría terminado en un 403.
· SecurityService
Reasigna al agente holding, y envíale un correo electrónico a todos los que afecta
Un aprobador ahora puede dar una oportunidad a un agente diferente. El solicitante es nunca reescrita, el agente de texto registra la mudulación como su propia fila de historia con ambos nombres, así que seis meses después el registro muestra que se movió en lugar de leyendo como si el nuevo agente lo pidiera. Propiedad de extensión, el cabeza de plomo control y la máscara de detalle siguen al titular ahora; el filtro "Agent" coincide EITHER final de una reasignación, porque escondiéndola del agente que lo encontró y del agente que lo sostiene son respuestas equivocadas. Numúlas notificaciones cubren el ciclo de vida. Solicitudes y solicitudes de prórroga se van a todos los que puedan decidirlos, tanto los derechos de decisión, ya que un miembro que sólo puede negar de lo contrario nunca aprendería que existe una petición para negar. Decisiones y ediciones van al titular, al solicitante original cuando eso difiere, y a cada colega en un la comisión dividida; una edición además envía a quien desplazó, porque perdiendo una comisión compartida en silencio es exactamente para lo que son estos correos electrónicos. Dos cosas son carga en cómo se secuencia el envío: - Resolución y renderización se produce Acerca, dentro de la transacción del que llama, mientras que la entidad todavía tiene los valores que el correo electrónico está cerca. aprobarExtensión () liquidaciones los campos de extensión inmediatamente después, por lo que una lectura posterior describiría "no tiempo adicional" en un correo electrónico cuyo tema es cuánto tiempo se concedió. - El Enviar espera a **************** Anunciando una decisión que un fallo posterior retrocede dejaría a los agentes sosteniendo un correo electrónico para un aprobación que nunca sucedió, y después de la finalización en lugar de después deCommit significa la conexión de la base de datos se libera antes de que comience el HTTP saliente. Los valores de la mesa de detalle se escapan en el punto en que entran en el mapa: los nombres de los miembros son texto libre de org-enred, la tabla se inyecta como HTML cruda, y el renderizador escapa Nada. Una edición que no cambia nada envía correo, y una reserva de PENDING No se ha dicho que nadie existe. 60 pruebas.
· EmailService
Vista previa de las nueve notificaciones de oportunidad
Sin un brazo aquí el editor de Admin Email Templates hace cada lugar marcador En blanco, para que cualquiera que lo personalice estos nueve estaría editando un esqueleto vacío. Un brazo para los nueve: comparten una variable establecida por diseño, por lo que un solo mapa de muestra De hace a cada uno de ellos fielmente. Mapa. de entradas por Map.de caps a diez pares y el conjunto es más grande que eso.
· InitializerService
Agente primario reescificable en una oportunidad reservada
PRIMARY-AGENT-MEMBER-ID es quien tiene la oportunidad ahora; REQUESTED-BY-MEMBER-ID se deja intacto para siempre. Nullable sin relleno a propósito. "nunca reasignado", y copiar al solicitante en las filas existentes destruiría esa distinción en cada reserva que sea anterior a la columna. Aplicado contra la producción en 2026-08-04; presente verificado columna e índice.
· kamo-shared-library
Agente primario reestablecable y nueve plantillas de notificación
Un aprobador puede dar una oportunidad y la comisión con ella a un agente. PRIMARY-AGENT-MEMBER-ID es quien lo tiene ahora; REQUESTED-BY-MEMBER-ID es nunca más, porque quién encontró el trato es un hecho sobre el pasado y Anederlo borraría el único registro que el agente original lo trajo. Null significa "nunca reasignado", que es una declaración diferente de "representado volver al solicitante" para que las filas existentes se dejen solos en lugar de retrocuperados. eficazAgentMemberId() es el titular, y ahora decide quién puede pedir una extensión y a quién la cabecera de plomo trata como el propietario. Una vez una oportunidad movimientos, el solicitante original es un nombre en la historia, no una reclamación al respecto. Nuas plantillas canónicas cubren el ciclo de vida: una solicitud de solicitud o extensión va a todos los que puedan decidirlo; cada aprobación, negación, editar, emitir, emitir, expirar y cerca va al agente que lo sostiene, el agente que preguntó si eso es ahora a alguien más, y a cada colega en una división de la comisión. Comparten una concha generada por lo que el trazado no puede derivar entre ellos, y uno conjunto variable para que una plantilla pueda hacer referencia a cualquier cosa sin un cambio de Java que coincida lo que importa porque una variable faltante se rendere como una cadena vacía con sólo un WARN, y envía un correo electrónico en el que se lee "reservado hasta ".
· kamo-internal
Comisión general, impagos del mercado y unidades preescogido
Tres cambios en la forma en que se captura la comisión. Ya nada está preseleccionado. Porcentaje/Amount y una sola vez/Recurrir ambos empezar sin set en cada división de comisiones, así que cada uno declara su tipo porque Alguien lo dijo. Un "Porcent" preseleccionado es indistinguible de un considerado elección, y la diferencia entre el 15% de una venta y $15 es todo el pago. Enviar estancias inhabilitadas hasta que termine una fila inicial. El aprobador ahora acuerda una comisión OVERALL - lo que la organización paga en el venta al agente solicitante y al grupo con el que comparten, de la que Las divisiones por la liga están talladas. Aparece en los diálogos de aprobación y edición y como una columna en la lista reservada, y un mercado puede llevar un default que la prellena. El mercado incumple pre-llena el APPROVAL solamente. Ver una edición del mercado que un ahorro que era sobre las fechas de sello en una comisión que nadie accedió, y que haría hacer "ninguna comisión" imposible de mantener. Limpieza de una figura precargada ahora envía un Comisión clara explícita, rastreada en contra de lo que la forma OPENED con en vez de lo que se almacena. De lo contrario, borrar un prelleno prellenado no envía nada y el Servidor lo pone de nuevo. También: un default de mercado medio ahora bloquea el ahorro en lugar de ser eliminado y reportado como éxito; la columna de la comisión ya no se inventa "una sola vez" cuando no se estableció una cadencia; las cantidades divididas en la punta de la herramienta utilizan el mismo formato de dinero que la columna; y Add Market elimina los campos de cotización que estaba heredando de la última mercado editado.
· SecurityService
Acorda una comisión global en la aprobación, semilla del mercado
El aprobador graba ahora lo que la organización paga en la venta a la solicitud agente y su grupo. Omita en aprobación y el mercado del líder se aplica eso es lo que hace que el mercado establezca un default en lugar de una sugerencia solamente el Los honores de IU. La Comisión establece los tres ámbitos y nunca los fusiona en el campo con lo almacenado. La fusión se ve inofensable y no lo es: una edición que lleva sólo un el tipo de acción voltearía un 15 almacenado de quince por ciento a quince dólares, Redenominando un pago que nadie quería tocar. Un mercado inválido o medio configurado por defecto se registra y ignorado en lugar de tirado. Un incumplimiento es la conveniencia, no la ley, y uno ahorrado a través de algún otro camino con una cifra sin sentido no debe convertirse en un apagón de mercado inaplicable El aprobador todavía puede escribir una comisión, y aprobar sin uno es legítimo. La Comisión está honrada por delante de todo, incluido el mercado: un aprobador que borra una figura precargada ha tomado una decisión, y en silencio ponerlo de nuevo lo revertiría. 49 pruebas, incluyendo los caminos claros, el guardia de fusión, y ambos casos de mal defecte.
· InitializerService
Columnas de la Comisión para oportunidades reservadas e impagos del mercado
Seis columnas nulas: la comisión general acordó una oportunidad reservada, y el default del mercado que lo prellena en la aprobación. NUMERIC(19,4) para que coincida El dinero es exacto de decimal o las disputas de comisiones siguen. Aplicado contra producción en 2026-08-04; los seis verificados presentes.
· kamo-shared-library
La comisión global de una venta, y el mercado incumple su mercado para ello
Una oportunidad reservada ahora registra lo que la organización paga de la venta a el agente solicitante y el grupo que comparten con la olla per-colega Las escisiones están talladas. Un mercado líder lleva un default que lo prellena cuando se conceda una autorización. Cada columna es anulable sin defecto. Una reserva que nadie ha aprobado no. la comisión acordada y un mercado que no haya configurado uno no tiene ningún default; escribir un cero en cualquiera de los dos pondría una figura que nadie eligió en un récord de pago. Tres campos de solicitud no habrían sido suficientes. Una JSON null y un campo ausente son lo mismo después de la desserialización, y la ausencia ya significa otros dos cosas aquí "utilizar el default del mercado" en aprobación, "dejárselo en paz" en una edición. Así que claro la Comisión dice que la eliminación en voz alta; sin ella un aprobador que borra un la comisión recibe silencio, y al aprobar el default acaban de despejarlo vuelve. LeadIdentity gana los impagos del mercado y findIdentities ahora explica su LEFT únete. Escrito como el camino implícito l.market.x, Hibernate emite un INNER se une y cada pista sin salida del mercado de la proyección por completo, que habría aparecido como "Límite de nombre" exactamente en las filas que nadie mira dos veces.
· kamo-internal
Dender los detalles del cliente en la vista previa, desde la pista
Quitar los propios campos de la cita dejada en blanco en blanco "Preparado para" porque customerName sólo vino de una cuenta vinculada y las cotizaciones con plomo no tienen ninguna. La vista previa ahora imprime el bloque que el servidor ensambe desde el plomo. La compañía lo encabeza cuando hay uno de ellos, una cita en un negocio se dirige al negocio, con el contacto con el nombre debajo de la dirección, el teléfono y el correo electrónico, cada uno omitido cuando la pista no lléelo.
· kamo-signer-monorepo
Mostrar los detalles del cliente sobre la copia del cliente
Empresa dirige el bloque cuando hay una cita de un negocio está dirigida a la negocios, con el contacto nombrado debajo de él. Coincide con la vista previa exacta.
· SecurityService
Resuelve el liderazgo del destinatario tanto para el personal como para las opiniones del cliente
Colocó en ambos lugares. En la página pública el alcance proviene del propio enlace de acciones organización, para que una ficha nunca pueda salir a la superficie de una pista perteneciente a otro inquilino.
· kamo-shared-library
Ponle los detalles del cliente al documento, lea la pista
Dejar caer los campos de los destinatarios de la cita dejó el documento sin nada que decir sobre el cliente: clienteén sólo vino de una cuenta vinculada, que las cotizaciones de la conexoción no tener, así que "Preparado para" impreso en blanco. El destinatario se ensambla ahora desde el nombre principal, compañía, dirección, teléfono, correo electrónico. Es una mirada más que una unión porque la cita deliberadamente mantiene sólo un suave de modo que el módulo de plomo se mantiene independientemente implementable, para que los controladores lo resuelvan y pasar el bloque. Una pista a medio llenar es el caso normal, no la excepción: las pistas llegan de los vendedores con cualquiera que sea la fuente capturada. La dirección se derrumba a una línea y se salta lo que es Falta, así que una pista que sostiene sólo una ciudad estampa "Londres" en lugar de ", Londres", ". Una pista que no se puede leer no rinde ningún bloque en lugar de lanzar una cita cuya ventaja fue Se suprimirá todavía debe rendir.
· kamo-internal
Mueve las citas fuera del comercio y a la cabeza
Citas se sentaban en el oleoducto de comercio, junto a pedidos y carros en lugar de al lado de la cliente para el que están. Ahora viven al frente: una pestaña de citas directamente tras el lideretro del cliente Datos, mostrados sólo cuando el mercado los permite. La página de citas independiente se ha ido en lugar de mantenerse detrás de una bandera. suministra la cabecera, la identidad del cliente, sus comunicaciones y sus documentos, así que un segundo diseño de registro en la parte superior de eso duplique el cromo y dividió la historia del cliente en dos. Seleccionar una cita desliza la lista hacia fuera y el editor en, y el encabezado principal Nunca sale de la pantalla. Las pestañas Comunicaciones y Docs se dejan caer por la misma razón. Los mercados ganan un interruptor de licidades Habilitar y los términos predeterminados sus cotizaciones comienzan. Sin EDIT-QUOTE-TERMS el campo de los términos está deshabilitado Y omitido en la carga útil; la el servidor también lo desnuda, ya que una entrada deshabilitada es presentación, no aplicación. Los sub-tab ids pierden "citas"; su prueba de regresión ahora afirma la propiedad general pestaña más allá del primero mantiene su propio índice - por lo que todavía guarda el bicho de rebote sin nombrar una pestaña que ya no existe.
· SecurityService
Expone la configuración de cotización por mercado; haga cumplir la subvención de los términos
market-config ahora dice la opinión principal sobre si ofrecer una pestaña de citas y qué redacción a con la nueva cita comienza, y los endpoints de mercado ida ida en ambos campos. Las ediciones de los términos son despoje del lado del servidor para los que llaman sin EDIT-QUOTE-TERMS. Deshabilitación de la campo en la interfaz de usuario es la presentación; un PATCH hecho a mano no debe ser capaz de reescribir el org's tampoco una redacción jurídica.
· kamo-shared-library
Las cotizaciones pertenecen a pistas, configuradas por mercado
Las citas eran un artefacto de la tubería de comercio, que los ponía al lado de pedidos y carros más bien que al lado del cliente para el que están. Ahora se quedan del liderado: el mercado decide si sus pistas pueden llevar cotizaciones en absoluto, y los términos predeterminados cada cita en ese El mercado empieza con. Por mercado en lugar de por org porque un escritorio hipotecario emite estimaciones de préstamos bajo TRID y no tiene uso para una cotización genérica, mientras que un mercado de servicios vive en ellos. Los términos conllevan el compromiso legal de la organización, apartándose así de la redacción del mercado en un solo cito la cuota es su propia subvención. Un campo de términos nulos ya significaba "dejar sin cambios" en la actualización, que es lo que permite al controller desnudarse para los que llaman sin el Claro. También deja caer el propio nombre/dirección/teléfono del receptor de la cita: la pista ya tiene la Los detalles del cliente, y la instantánea de ellos duplicaron un disco editado en otra parte que Aléjate de ella. Esquema aplicado por KamoInitializer antes de esta confirmación; columnas verificadas.
· SecurityService
Reservar, aprobar y auditar las principales reclamaciones de oportunidad
Superficie REST detrás /leads/oportunidades/reservidos y la oportunidad de reserva control en la cabecera de plomo, más el servicio que posee las invariantes. Derechos, aplicados explícitamente porque este servicio funciona con permiso Un control falta de control es una falta de control, no una denada de la falta de valor: VIEW-OPPORTUNIDADES cada lectiva CREATE-OPORTUNIDADES elevando una solicitud, y pidiendo más tiempo por su cuenta EDIT-OPPORTUNIDADES aprobando, editando, cerrando, dictaminando sobre una extensión DELETE-OPPORTUNIDADES "Deny Opportunity", que la interfaz de usuario pone detrás de una confirmación El desmentido es terminal pero no destructivo: la reserva, sus escisiones y todo su La historia permanece legible en la pestaña deniquilada. Ese es el punto de negar más bien que borrar. Detalles que vale la pena mantener: - El endpoint de cabeza de plomo se puede legible solo con CREATE, ya que el botón tiene que saber qué estado de renderizar, pero una persona que llama sin VER quién no es la explotación Agente consigue una proyección estrecha. La comisión divide y justifica que La VER existe para proteger no se revelan por la puerta ampliada. Reconstruido como un permitir la lista, por lo que un campo añadido más tarde no puede filtrarse por omisión. - La lista enmascara el contacto y la compañía en pistas no asignadas para los miembros sin VIEW-UNASSIGNED-LEADS, a juego LeadController. Quién afirmó lo que no es el Secreto; la perspectiva lo es. - Extender está cerrada al ser el agente que tiene la reserva, sin dios bypass: mantener una reserva es un hecho identitario, no un derecho, y un la extensión se presenta a nombre del solicitante. - Una reserva caduca que se reinicia más en lugar de reanudarse, así que reservadoUnerta == reservadoDesde aprobadoDays sigue sosteniendo la actualización () re-derivos el final desde el principio, y un comienzo rancios borraría silenciosamente la subvención. - La piscina de la comisión es tenedores de VIEW-LEADS más propietarios/aminarios de subvención, idéntico a lo que ofrece el punto final del picker. Computación de la tabla de derechos solo hizo la oferta de entrega un propietario el backend luego rechazado. - El venado es un barrido programado para que las pestañas puedan paginar en una columna real, pero cada DTO reporta díasManteniéndose con el reloj de la base de datos, así que las lecturas son correctas entre barridos sin importar. 36 pruebas cubren el ciclo de vida, la fecha aritmética y las reglas divididas.
· InitializerService
Cuadros de reserva para la oportunidad de conducir
Espejos LeadOpportunityReservation, LeadOpportunityCommissionSplit y ************* en kamo-shared-library. ddl-auto:update would crearlos a partir de las entidades de todos modos; el DDL explícito es la convención de la casa y hace que la forma sea revisable aquí en lugar de sólo inferible de anotaciones. Aplicado contra la producción en 2026-08-04 las tres tablas y cada índice existen, propiedad del usuario de la aplicación.
· kamo-shared-library
Entidades para reservas de oportunidades de llevar el tiempo
Un agente apuesta por una reclamación exclusiva sobre el cierre de una pista para una ventana delimitada; un aprobación de subvenciones, edita o lo niega, y a los colegas se les puede ofrecer una parte de la comisión. Tres cuadros: la reserva, las divisiones de su comisión, y un Adeno-sólo la pista de auditoría. Puntos de diseño que son de carga: - Las referencias de plomo, organización y miembros son columnas de id simples sin extraños teclas, a juego LEAD-HISTORY y LEAD-TASK. El rastro tiene que sobrevivir al liderato eliminación y churn de miembros sin poder bloquear o en cascada. - dbNow() utiliza CAST(a (ahora() AS timestamp). CockroachDB está desnuda ahora () es TIMESTAMPTZ, que Hibernate 6 se materializa como un Instant que no se puede echar a los declarados LocalDateTime y la abreviatura de la marca temporal es destrozada por la marca nativa Parser que lee ':' como prefijo de parámetro. Ninguno aparece en el momento de la compilación. - La lista de la página utiliza JpaSpecificationEecutor en lugar de JPQL con (:param IS NULL OR ...) guardias, porque CockroachDB rechaza un vínculo no tipo parámetro en una prueba NULL desnuda IS. - LeadIdentity es una proyección, no la entidad principal: Líderes cuatro "ManyToOne" asociaciones que incumplan con EAGER, por lo que enumerarían 100 reservas por entidad fuego cientos de selecciones para datos que la cuadrícula nunca muestra. - La línea de tiempo de la historia ordena (fecha de DESC, id DESC). CockroachDB ahora () es el sello de tiempo de transacción, por lo que las filas escritas por una edición lo comparten exactamente; sin el tiebreak un rastro de auditoría se reorganiza entre las cargas de página. Aquí no hay estereotipos. El servicio de propiedad declara los frijoles, así que ningún otro servicio paga por el escaneo del repositorio.
· kamo-internal
Aborda la cita a una persona; detiene el sumario que cuesta la altura de la cabecera
Moviéndose el resumen de la columna de la derecha fijó el ancho, pero compró de nuevo como un banda bajo el título. Ahora se asienta en la brecha que ya existía entre el título y las acciones rápidas, por lo que no cuesta espacio en absoluto. Ese hueco es finito, así que menos show en línea y el resto se quedan un clic de distancia. un pedido lleva doce y abarrotaría el acciones. Se mantiene visible en cada anchura en lugar de desaparecer en pantallas estrechas. La cita también gana su destinatario: para quién es, opcionalmente su dirección y teléfono. Estos lideran la primera sección porque es lo primero que decides, y cuando un cuenta está vinculada al campo de nombres muestra lo que de lo contrario volvería a caer. El El bloque "Preparado para" de la vista previa hace que los tres sean los tres y refleja lo que se está escribiendo más bien de lo que se salvó por última vez.
· kamo-shared-library
Abordar una cita a alguien que aún no es una cuenta
El destinatario se derivaba únicamente de una cuenta vinculada, por lo que cualquier cita planteada para un perspectiva que es la mayoría de ellos - imprimió una línea en blanco "Preparado para" y el acabado El documento no decía para quién era. La cita ahora lleva el nombre, dirección y teléfono del destinatario por derecho propio. Qué el personal mecanografiado gana sobre la cuenta vinculada: han dicho lo que se debe imprimir, y un La cuenta rebautizada más tarde no debe reescribir en silencio una cita que ya fue enviada. Dirección es de forma libre porque los formatos postales no son lo suficientemente uniformes para dividirse en campos que trabajar internacionalmente, y se imprime según está escrito. Una revisión lleva al destinatario a la misma oferta, la misma persona. Esquema aplicado por KamoInitializer antes de esta confirmación; columnas verificadas presentes.
· kamo-internal
Abra el perfil de un miembro de su fila
Añade una cuarta acción al muelle de la fila, enlazando a ******************* Es un verdadero NextLink en lugar de un manejador de clics, tan clic medio y "abierto en nueva pestaña" se comporta y la guardia de la repo no dura se queda satisfecho; el panel se cierra en la navegación para que su pergamiento corporal no sobrevivir al cambio de ruta. La acción está cerrada de la manera en que las puertas del destino en sí: la configuración de los miembros página te redirite a tu propio perfil a menos que tengas MANAGE-MEMBERS, MANAGE-MEMBER-SECURITY, CONFIGURE-SYSTEM, EDIT-MEMBER-ACCESS-LEVEL, ALLOW.PROMOTING-MEMBERS o ************* (o dios / plataforma admin). Sin uno de esos el icono está oculto en lugar de ofrecerse como muerto termina. Tu propia fila siempre lo muestra.
· kamo-internal
Falla la construcción cuando un componente llama a un mensaje clave/ no define
el siguiente-indección hace literalmente el camino clave para una clave faltante, y los mensajes/ son gitignored aquí - poblado en la época de imagen-construild de kamo-translation-dictionary - así que un nombre que aterriza en uno de los dos barcos de repos como galimatías visibles sin nada que atraparla. Así fue como los campos de contacto del departamento vinieron a renderizarse ************* en la pantalla de configuración, y cómo se envían todo el formulario demográfico de HMDA (39 etiquetas) contra un espacio de nombres que sólo contuvo a Elar. scripts/check-i18n-keys.mjs resuelve el espacio de nombres de cada traductor, y luego comprueba cada clave literal, el prefijo estático de cada clave-partustro, y los valores pasados contra los "titéricos" en el mensaje en ambas direcciones, desde una UCI sin suministro El argumento lanza a MissingValueError y uno en desuso deja caer silenciosamente los datos. Lo entiende. Correje de la UCI escapando y sub-mensajes plurales, y trata la etiqueta como un marcador de posición sólo para t.rich/t.markup. Archivos 1737 en 1,4s. Alcanzado en la prueba de Enpm y en el Dockerfile por delante de la construcción, con --requeridos-mensajes allí para que una sincronización de diccionario saltada falle en voz alta en vez de convertir la guardia en un no-operador. Escribir en contra de la letra en el tipo de eno fue probado y rechazado: una importación de JSON ensancha los valores a "string", por lo que el siguiente-intl no puede inferir a los tenedores de lugares y rechaza las llamadas correctas como t'(...range', Estart, end, total); también triplicó el tiempo de verificación de tipo (81s - 249s) y habría necesitado 150 ediciones a código no-buggy. Las correcciones del sitio de llamadas para lo que encontró: - se le cayó una opción por defecto: "" pasó a t() en los componentes de chat y LanguageButton; next-ingel no tiene tal opción de retroceso, así que fue peso muerto. - comercio lowStock pasó el "conmetro" para "disponible", MultiFileUploader "types" para la lista, y audioVideo volumen maestro .pct para el porcentaje. Los tres tirados en formato. - DnsSetupStudio pasó un dominio de su subtítulo no utiliza.
· kamo-internal
Opciones de navegación de Pin/unpin de los navs y el home launchpad
Los miembros podrían mover una opción entre la barra lateral y la barra superior, pero nunca Saca a uno de los navs por completo. Añade una tercera colocación. NONE, "nopinned" y dos maneras de llegar a él, ambos conduciendo el mismo menú compartido: - haga clic con el botón derecho en una opción móvil en NavPri/NavTop: el menú de colocación se abre en - el control de la esquina en cada panel casero de lanzamiento: un chip tranquilo que se lee donde la opción se sienta y se expande en flotar, abriendo el mismo menú Unpinned nunca es un callejón sin salida. La plataforma de lanzamiento casera ahora se rinda de cada cerrado opción en lugar de la unión de los dos navs, por lo que una opción sin pines mantiene el parte que lo devuelve; la paleta de comandos hace lo mismo, y cada cambio levanta un desdobroto de nombrar a dónde fue la opción. La distribución de la navegación La página de configuración crece una columna Unpinned a juego. El solucionador mantiene su invariante, cada opción cerrada en exactamente un cubo. y un NONE explícito ahora supera a un orden de zona rancio, por lo que un desenfadado sobrevive a una mancha escrito antes de ella. Los diseños almacenados de legado no tienen entradas y resolución de NONE exactamente como antes; Reset to Standard nunca puede dejar nada sin tapar. Encubridos por nuevas pruebas para resolverNavLayout, que no tenía ninguno.
· kamo-internal
Ocultar departamentos vacíos, mover el filtro de estado en el Directorio
- Departamentos sin miembros ya no rinden. El punto de final del departamento devuelve a todos los departamentos de la zona, incluidos los vacíos, así que la lista era mostrar secciones que nunca podrían contener a nadie. El departamento por departamento "no El marcador de posición de los miembros va con ellos, siendo inalcanzable ahora. - El filtro All/Online/Offline se mueve desde la cabecera de ancho de panel hacia abajo la tira de la pestaña, por lo que se sienta en el área del Directorio con la lista. filtros en lugar de aparecer para filtrar todo el panel (nunca se aplicó a Chats o acceso móvil). - El estado vacío sólo sugiere ajustar la búsqueda/filtro cuando uno está realmente aplicado; un org sin miembros no tiene nada que ajustar.

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