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
S
Description
Synced from fn_registry
158 KiB
Languages
C++ 99.1%
CMake 0.9%