Filtrado mejorado de esquemas según la versión
Demo de @knudtty
ClickStack ahora aplica la optimización direct_read solo en las versiones 26.2 y posteriores de ClickHouse, donde el índice de búsqueda de texto completo admite correctamente las columnas alias añadidas a los esquemas open-source. Antes, la optimización podía intentarse en versiones anteriores, donde no funcionaba correctamente. La comprobación de versión se realiza en tiempo de consulta inspeccionando el esquema, y las propias columnas alias ahora se incluyen de forma predeterminada en los esquemas open-source.
También se mostró trabajo en curso para sustituir la vista materializada de autocompletado por consultas directas al índice de texto. Ahora mismo, ambas hacen trabajo redundante, lo que aumenta la presión sobre la ingesta. Si los benchmarks confirman que las consultas al índice de texto mantienen un buen rendimiento, la vista materializada puede simplificarse o eliminarse. Aaron también respondió preguntas del equipo sobre cómo la codificación posicional en futuras versiones del índice de texto de ClickHouse podría hacer aún más precisas las búsquedas de filtros key-value.
PR relacionadas: #2341 feat: adds direct_read optimization by default for logs and traces, #2405 feat(common-utils): apply direct_read KV items optimization to SQL filters, #2376 feat: use text index to power filters and autocomplete
Demo de @dhable
Un cliente tenía logs en los que el body del evento era un objeto JSON que contenía un campo level. La lógica de inferencia de severidad hacía dos cosas: analizaba el body como JSON para extraer attributes y luego recurría a la búsqueda de cadenas si no se había establecido ninguna severidad a nivel de OTel. La búsqueda de cadenas estaba detectando la palabra “alert” en el nombre de un gestor de alertas dentro del body, clasificando incorrectamente el nivel de log.
La corrección añade una condición de control: si el body se analiza como JSON y ya contiene un campo level, omite por completo el paso de inferencia por cadenas. Una suite de pruebas de humo creada hace aproximadamente un año permitió verificar fácilmente la corrección y detectar casos límite relacionados simplemente añadiendo nuevos casos de prueba, que es exactamente para lo que fue diseñada.
PR relacionadas: #2363 fix(log-parser): omitir la inferencia por cadenas cuando el body se analiza como JSON con un campo level
Demo de @brandon-pereira
Esta semana se lanzaron varias mejoras de MCP: mejor agrupación y puntuación de patrones de eventos, mejores sugerencias de error y limpieza de funciones auxiliares compartidas. Los prefijos de las herramientas también se renombraron de hyperdx_ a clickstack_ para ajustarse al nombre del producto.
PR relacionados: #2337 feat(mcp): mejora la calidad de las herramientas de MCP — sugerencias de error, funciones auxiliares compartidas y mejores mensajes, #2396 refactor(mcp): renombra los prefijos de las herramientas de hyperdx_ a clickstack_, #2343 feat(mcp): añade las herramientas patch_dashboard, get_dashboard_tile y search_dashboards, #2418 fix(mcp): mejora las descripciones de alias y los ejemplos para que las leyendas de los gráficos sean legibles, #2412 refactor: simplifica la validación de ObjectId de MCP con funciones auxiliares compartidas y comprobaciones a nivel de esquema
Nueva paleta de colores para series
Demo de @elizabetdev
Elizabet trabajó en unificar la paleta de colores de las visualizaciones de datos en los temas de HyperDX y ClickStack, como apoyo al trabajo de Alex en el selector de color. Ambos temas tenían paletas distintas con reglas de excepción propias, lo que hacía innecesariamente complejo trabajar con los colores. El objetivo era contar con una única paleta que funcionara en ambos.
Hizo pruebas con paletas estándar del sector (Tableau, Observable, IBM) usando una herramienta de simulación de visión cromática para comprobar el contraste y la accesibilidad. La paleta de ClickHouse dio malos resultados: el verde no tiene suficiente contraste sobre fondo blanco. Tanto Tableau como Observable no superan al menos una comprobación cada una; la paleta de IBM las supera todas, pero solo tiene cinco colores, lo que no es suficiente. En conjunto, la paleta de Observable fue la que más se acercó, con un pequeño ajuste en el azul, y ahora se compartirá entre ambos temas.
PR relacionadas: #2362 refactor(theme): renombrar los tokens de la paleta de gráficos con nombres de matiz + unificar en ambos temas
Demo de @elizabetdev
Se ha implementado un nuevo conjunto de componentes, PageHeader y PageLayout, en todas las páginas principales: dashboards, mapa de servicios, Client Sessions, Kubernetes y el dashboard de ClickHouse. Ahora todas las páginas comparten el mismo espaciado interno, la línea de borde debajo del encabezado y la estructura del título. Antes, las páginas eran inconsistentes: algunas tenían un título a la izquierda y controles a la derecha, mientras que otras no tenían ningún título.
El comportamiento fijo se activa de forma opcional mediante una prop. Todo lo que pases al slot sticky permanece fijado debajo del encabezado mientras te desplazas; todo lo demás se desplaza con normalidad. Si no se pasa nada, las rutas de navegación o las opciones de la página se fijan automáticamente.
PR relacionadas: #2282 Add PageHeader/PageLayout and migrate Sessions, #2345 Use PageHeader title on list pages, #2346 Migrate Service Map to PageLayout, #2347 Migrate Kubernetes dashboard to PageLayout, #2348 Migrate ClickHouse dashboard to PageLayout, #2364 feat(dashboard): migrate to PageLayout with sticky query toolbar, #2394 fix(PageHeader): keep sticky header below drawer overlays
Nuevo selector de origen de datos y selector de color para series
Demo de @alex-fedotyev
Dos mejoras de la UI por parte de Alex. Se ha simplificado el selector de origen de datos: al hacer clic en él, ahora solo se muestran los orígenes de datos entre los que se puede elegir. Las acciones de gestión, como ver el esquema o crear un nuevo origen, se han movido a un menú kebab independiente. Esto separa la selección de la configuración, algo que llevaba tiempo en la lista de tareas pendientes y que responde a los comentarios del equipo.
Los tiles Number ahora también tienen un selector de color estático para que puedas asignar un color específico a una métrica. Las reglas de color condicional (hacer que cambie a rojo, verde o amarillo en función de un valor de umbral o una columna) también están en desarrollo. Cuando llegue la paleta unificada de Elizabet, ambos usarán colores con nombres adecuados en lugar de las etiquetas actuales “color 1, 2, 3”, lo que debería suponer una mejora importante para los usuarios que vienen de herramientas como Grafana.
PR relacionados: #2365 feat(source-picker): chip + menú kebab UX, #2265 feat(app): selector de color estático para tile Number
Mejores indicaciones para las acciones del dashboard
Demo de @alex-fedotyev
Las filas de los tiles de tabla del dashboard ahora muestran un estado al pasar el cursor más útil. El cursor y el icono cambian al pasar el ratón para indicar qué ocurrirá al hacer clic: o bien se abrirá un dashboard enlazado o bien se profundizará en una fuente de datos. Antes de este cambio, no quedaba claro que se pudiera hacer clic en las filas, y mucho menos qué harían.
PR relacionadas: #2321 feat(app): indicación al pasar el cursor y comportamiento visual de enlace nativo para el clic en filas de tiles de tabla del dashboardÚltima modificación el 3 de julio de 2026