Files
egutierrez b9716a7cd6 chore: snapshot WIP previo + flow 0008 + 7 sub-issues (0112-0119)
Snapshot de WIP acumulado de sesiones previas antes de merge wave 1
del flow 0008 (kanban_cpp + agent_runner_api + DoD schema).

Incluye:
- dev/flows/0008-kanban-cpp-and-agent-workflows.md
- dev/issues/0112-0119*.md (7 sub-issues)
- WIP previo en cmd/fn/doctor.go, registry/*, modules/, cpp/, etc.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 18:17:08 +02:00

3.2 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, file_path, framework, params, output, notes
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports tested tests test_file_path file_path framework params output notes
sparkline component cpp viz 1.2.0 pure void sparkline(const char* id, const float* values, int count, float width = 100.0f, float height = 20.0f) Renderiza un mini grafico de lineas inline para uso en tablas, headers y KPI cards
imgui
visualization
sparkline
inline
dashboard
data-table-renderers
cpp-dashboard-viz
false
imgui
true
compiles and links against Catch2 (placeholder, visual cubierto en 0048)
cpp/tests/test_sparkline.cpp cpp/functions/viz/sparkline.cpp imgui
name desc
id Identificador unico del widget, usado con PushID/PopID para garantizar unicidad en tablas
name desc
values Array de valores float del sparkline (serie temporal)
name desc
count Numero de valores en el array
name desc
width Ancho en pixels del sparkline (default 100.0)
name desc
height Alto en pixels del sparkline (default 20.0)
Renderiza el sparkline inline en el frame ImGui actual, reservando espacio con ImGui::Dummy scaffolding/demo en primitives_gallery

sparkline

Mini grafico de lineas inline construido sobre ImGui draw primitives. No requiere ImPlot.

Auto-escala el eje Y al rango minimo/maximo de los valores. Dibuja una polyline con relleno semitransparente bajo la curva. Disenado para encajar en celdas de tablas, headers y tarjetas KPI.

Ofrece dos overloads:

  • Sin color: usa verde suave por defecto (ImVec4(0.35, 0.85, 0.45, 1.0))
  • Con color: acepta cualquier ImVec4 para personalizar la linea y el relleno

Debe llamarse dentro del render callback de fn::run_app (o cualquier contexto con un frame ImGui activo).

Ejemplo

// En una celda de tabla
ImGui::TableNextColumn();
sparkline("##revenue_spark", revenue.data(), (int)revenue.size(), 80.0f, 18.0f);

// Con color personalizado (rojo para valores negativos)
sparkline("##pnl", pnl.data(), (int)pnl.size(),
          ImVec4(0.9f, 0.3f, 0.3f, 1.0f), 100.0f, 20.0f);

// KPI card inline con label
ImGui::Text("Revenue"); ImGui::SameLine();
sparkline("kpi_rev", data, count);

Notas

  • El relleno bajo la curva usa alpha 40/255 del mismo color de la linea.
  • Si todos los valores son iguales (rango < 1e-6), la linea se dibuja en el centro verticalmente.
  • El grosor de linea es 1.5px para que sea legible a alturas de 16-24px.
  • id no se muestra visualmente; solo se pasa a PushID para que ImGui diferencie widgets con los mismos datos en la misma tabla.

Capability growth log

  • v1.1.0 (2026-05-18) — Overloads con y_min, y_max explicitos. Cuando la metrica tiene dominio conocido (CPU%/RAM% -> 0,100) varias cards comparten escala y son comparables visualmente. Outliers se clampan al rango. Variant sin bounds preserva auto-scale historico.
  • v1.2.0 (2026-05-18) — Alpha fade gradient default: segmento i pinta con alpha lerp(0.2, 1.0, i/(count-1)). Older -> faded, newest -> bright. Efecto "trail" hacia el numero actual. Fill bajo curva tambien fade (alpha 4..28). Cambio visual sin cambio de API.