Commit Graph

6 Commits

Author SHA1 Message Date
egutierrez 4cb36a92e8 feat: panel Timeline scatter (X=tiempo, Y=DAG, color=status) via ImPlot
- tabs.cpp draw_timeline: scatter ImPlot con eje X tiempo (UseLocalTime),
  eje Y categorico DAG (SetupAxisTicks), 1 serie por status con color
  consistente (verde/rojo/amarillo/gris).
- Combo ventana: 15m/1h/6h/24h/7d. Default 24h.
- Hover tooltip: punto mas cercano en pixel-space -> muestra status,
  dag, run id, started/finished, trigger, error.
- main.cpp: g_runs_all cache. Snapshot inicial via list_runs_http(limit=200)
  + upserts desde WS deltas. Auto-refresh por g_refresh_pending.
- Panel toggle "Timeline" en el menu View.
- Helper parse_rfc3339 inline (ignora offset, asume hora local — coherente
  con ImPlot::UseLocalTime).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 17:14:11 +02:00
egutierrez 49fc908fb4 feat: 5 puntitos de status en DAG List (R1..R5 columnas Badge)
- data_http: parsea last_runs[] del /api/dags y guarda d.last_runs_status (max 5, mas reciente primero).
- tabs.cpp DAG List: 5 columnas R1..R5 con CellRenderer::Badge + BadgeRule por status (success=verde, failed=rojo, running=amarillo, pending/cancelled=gris, "-"=tenue).
- main.cpp: g_refresh_pending. WS auto-trigger refresh /api/dags cuando ve un run con status terminal -> last_runs se actualiza sin pulsar nada.
- main + tabs: extern "C" dag_list_request_refresh() para el boton Refresh manual.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 17:07:09 +02:00
egutierrez 7a38fe9a41 feat: tabs DAG List / Detail / Run Detail via data_table_cpp_viz (issue 0095 step 5)
- tabs.{h,cpp}: 3 paneles que renderizan TableInput con data_table::render() + RowDoubleClick events para drill-down (DAG -> Detail -> Run Detail).
- main.cpp: arranca con auto-fetch DAGs y los 3 tabs visibles por defecto. Panel Main diagnostico apagado.
- CMakeLists.txt: linka empty_state.cpp del registry.
- app.md: uses_functions completo (data_table_cpp_viz + stack TQL + empty_state). Tags: [imgui, dashboard, dag, scheduler, http, websocket].

Funcionalidades:
- DAG List: tabla con Name/Schedule/Last Status/Tags/Valid/File. Status combina last_run (REST) + live_runs (WS). Double-click selecciona DAG.
- DAG Detail: header + Run Now (POST /api/dags/{name}/run) + tabla recent runs. Double-click run abre Run Detail.
- Run Detail: header del run + tabla steps (name/status/exit/duration/started) + CollapsingHeader por step con stdout/stderr.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 16:57:55 +02:00
egutierrez d01c7157a1 feat: cliente WebSocket + panel Live (issue 0095 step 4)
- ws_client.{h,cpp}: copia de registry_dashboard (RFC 6455 manual sobre TCP, sin TLS).
  Background thread, reconnect con backoff, drain por frame.
- main.cpp: arranca WsClient apuntando a /api/ws/dagruns. Drain por frame.
  Parse JSON snapshot/delta -> upsert g_live_runs por id.
  Panel "Live (WS)" muestra estado conexion, watermarks runs/steps, lista live runs.
- CMakeLists.txt: ws_client.cpp en sources.

Build verificado. Tabs DAG List/Detail/Run Detail con data_table::render() en commits siguientes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 16:47:18 +02:00
egutierrez 44026d0a70 feat: cliente HTTP REST + main panel demo (issue 0095 step 3)
- http_client.{h,cpp}: TCP plain (copia de registry_dashboard, sin SSL).
- data_http.{h,cpp}: API DAG (list/get/runs/trigger) + parser nlohmann/json.
- vendor/nlohmann/json.hpp: vendored.
- main.cpp: panel "Fetch /api/dags" demo, lista DAGs con schedule.
- CMakeLists.txt: anade http_client.cpp + data_http.cpp.

Build verificado. WS y tabs (data_table::render) en commits siguientes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 16:44:40 +02:00
egutierrez 334943b7db feat: scaffolding dag_engine_ui (issue 0095 step 2)
ImGui app shell:
- main.cpp con fn::run_app(cfg, render), panel Main placeholder.
- CMakeLists.txt + fn_framework + fn_table_viz opt-in.
- app.md frontmatter base.

Capas HTTP/WS/tabs en commits siguientes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 16:38:07 +02:00