Commit Graph

4 Commits

Author SHA1 Message Date
agent 9ee3be8e4e feat: Launch workflow boton via agent_runner_api (issue 0116)
- Anade boton 'Launch workflow' (TI_ROCKET) que hace POST async a
  http://localhost:8486/api/runs con {issue_id, mode:'fix-issue'}.
- HTTP async via std::thread + fn_http::request (de http_request_cpp_core)
  con timeout 3s. NO bloquea el frame.
- Feature flag 'legacy_claude_fix' (default OFF) controla la visibilidad
  del boton 'Claude fix' legacy (terminal externa + claude --dangerously-
  skip-permissions). Flag leido al arrancar desde dev/feature_flags.json.
- Toast 3s con run_id devuelto por el API (o error si :8486 down /
  transport fail / HTTP non-2xx). Render thread-safe con mutex.
- CMakeLists.txt linkea cpp/functions/core/http_request.cpp.
- app.md: version 0.1.0 -> 0.2.0, uses_functions anade http_request_cpp_core,
  capability growth log con entrada v0.2.0.
2026-05-18 18:46:02 +02:00
egutierrez ad8944af8e feat(skill_tree): canvas ImDrawList + ring layout + cards (0109b)
Render anillos concentricos + sectores radiales por dominio con ImDrawList.
166 nodos pintados con label ID, tooltip on hover, picking O(N), pan+zoom.

Decisiones:
- Pivote desde graph_renderer GPU a ImDrawList CPU. 166 nodos no justifican
  pipeline GPU; ahorra ~120 LOC y init_gl_loader.
- 5 rings: done / in-progress / unlocked / locked / deferred.
- 18 sectores = 18 dominios canonicos (dev/TAXONOMY.md), labels en aro
  exterior.
- Issues = circulos, flows = rombos para diferencial visual.
- Lock-unlock derivado: pendiente_unlocked vs pendiente_locked segun depends.
- Animacion lerp 1s ease-in-out entre prev/current position en cambios de
  status entre reloads.
- HUD strip: LV + XP + conteos por bucket.
- Pan: drag derecho/medio. Zoom: rueda centrada en cursor.

uses_functions:
- parse_md_frontmatter_cpp_core (ya existia desde 0109a)
- compute_ring_layout_cpp_core (NUEVA, pure, 10/10 tests, 142 assertions)

Self-test: 166 nodes, parse_errors=0, unmapped=0, exit 0.
Breakdown: done=77 in-progress=2 unlocked=64 locked=22 deferred=1.

Sigue: 0109c (Inspector con DoD parseado y uses_functions linkables).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 20:02:27 +02:00
egutierrez a49481e1d4 feat(skill_tree): scan dev/issues+flows, parse frontmatter, render counts
- main.cpp scan dev/issues + dev/flows con std::filesystem
- parsea cada .md con parse_md_frontmatter_cpp_core (nueva fn pure)
- cuenta por status/domain/kind, lista nodos en panel Tree
- panel Inspector muestra detalle del nodo seleccionado (DoD, depends, related)
- --self-test imprime conteos a stdout (exit 0 si parse_errors=0)
- Reload manual via boton o tecla F5
- discover_registry_root: FN_REGISTRY_ROOT env o walk-up desde cwd
- uses_functions actualizado con parse_md_frontmatter_cpp_core
- CMakeLists.txt incluye el .cpp del parser

Smoke test 166 nodos parseados (159 issues + 7 flows), 0 parse errors.
Fase A del epic 0109. Sigue: 0109b layout anillos + render estatico.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 19:44:10 +02:00
egutierrez 9a59708422 chore: scaffold skill_tree (issue 0109)
Initial scaffold via init_cpp_app_bash_pipelines:
- main.cpp con Tree + Inspector panels (placeholders)
- app.md con trio icon (tree-structure + #c026d3) + e2e_checks
- CMakeLists.txt via add_imgui_app
- appicon.ico generado con generate_app_icon_py_infra

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