docs: 2026-05-04 changelog + diary

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-04 11:52:56 +02:00
parent ea899daa14
commit 7894a3d54a
2 changed files with 47 additions and 0 deletions
+22
View File
@@ -8,6 +8,28 @@ Para contexto detallado del trabajo diario ver `docs/diary/`. Para decisiones ar
## [Unreleased]
## 2026-05-04
### Added
- `cpp/functions/viz/graph_labels_select` (`graph_labels_select_cpp_viz`, **pure**) — TU separado de `graph_labels` con los helpers puros `graph_compute_degrees` y `graph_labels_select` (frustum cull + always_for_* + top-N por `size * (degree+1)`). Vive en su propio archivo para que los tests unitarios lo cubran sin abrir ImGui.
- `cpp/functions/viz/graph_viewport_selection` (`graph_viewport_selection_cpp_viz`, **pure**) — TU separado de `graph_viewport` con `clear_selection`, `is_selected`, `add_to_selection`, `toggle_selection`. Mantienen sincronizados `state.selection` y `nodes[i].flags & NF_SELECTED`.
- `cpp/functions/viz/graph_types` (`graph_types_cpp_viz`, **pure**) — TU de implementacion de `GraphData::update_bounds()` y `GraphData::find_node_by_user_data()`. Pareja obligatoria del header del tipo (`graph_types.h` indexado en `types/viz/`).
- `cpp/apps/chart_demo/app.md` — la demo de primitivos viz (line/scatter/bar/heatmap) ahora aparece en el registry como `chart_demo_cpp_viz`.
- `cpp/apps/shaders_lab/app.md` — el live GLSL playground con DAG ahora tiene `app.md` propio (antes solo existia entrada legacy en BD sin `.md` en disco).
### Changed
- `registry/indexer.go` — el indexer ahora escanea tambien `<lang>/apps/*/app.md` (mismo patron que ya usaba para `<lang>/functions/` y `<lang>/types/`). Antes solo veia `apps/` y `projects/*/apps/` — las apps en `cpp/apps/` quedaban invisibles. `./fn index` reporta 17 apps (antes 15).
- `cpp/functions/viz/graph_labels.md``signature` reducida a `graph_labels_draw` y `graph_labels_draw_at` (los helpers puros pasan a entrada propia). `uses_functions` apunta a la nueva entrada `graph_labels_select_cpp_viz`.
- `cpp/functions/viz/graph_viewport.md``uses_functions` añade `graph_viewport_selection_cpp_viz`.
- `projects/osint_graph/apps/graph_explorer/app.md``uses_functions` sincronizado con `CMakeLists.txt`: ahora declara las 23 funciones del registry que enlaza (antes 15). Añadidas: `graph_viewport_selection`, `graph_labels_select`, `graph_types`, `graph_spatial_hash`, `button`, `icon_button`, `badge`, `empty_state`.
- `projects/fn_monitoring/apps/registry_dashboard/app.md``uses_functions` sincronizado con `CMakeLists.txt` (21 deps, antes 9). Añadidas: `badge`, `button`, `empty_state`, `icon_button`, `modal_dialog`, `page_header`, `process_runner`, `process_state_machine`, `select`, `text_input`, `toast`, `toolbar`, `tree_view`. Removido: `fps_overlay` (vive en `fn_framework`, no se declara).
### Decisions
- ADR `0003-orphan-tu-as-separate-function-entry.md` — cuando una funcion del registry necesita partir su `.cpp` en varios TUs por testabilidad o separacion ImGui-vs-puro, cada TU adicional se registra como entrada propia con su `.md` en lugar de extender `file_path` para listar varios archivos. El parent declara la nueva entrada en `uses_functions`. Razon: el indexer asume `1 .cpp = 1 .md`; un `file_path` multi-archivo rompe la convencion y deja apps nuevas sin saber que TUs enlazar.
## 2026-04-28
### Added
+25
View File
@@ -0,0 +1,25 @@
# 2026-05-04
## 01:26 — Auditoria FP de apps C++, estandarizacion de mds y extension del indexer a `<lang>/apps/`
Sesion para verificar que las 5 apps C++ del registry usan programacion funcional limpia y que las funciones que enlazan estan correctamente registradas para que apps nuevas puedan reusar todo. Tres hallazgos: 3 `.cpp` huerfanos sin `.md` (rompen reuso), drift entre `CMakeLists.txt` y `app.md` en las 2 apps con `app.md`, y 2 apps sin `app.md` (`chart_demo`, `shaders_lab`).
- Hecho: auditoria FP de los 5 mains C++. Resultado: `chart_demo`, `text_editor_smoke`, `registry_dashboard` limpios; `shaders_lab` borderline (16 globales, justificado por retained-mode); `graph_explorer` fuera de convencion (2471 lineas, 24 globales, 23 helpers en `main.cpp` — split parcial pero `main` sigue siendo saco). Helpers candidatos a extraer al registry documentados pero no extraidos en esta sesion.
- Hecho: 3 `.md` nuevos para TUs huerfanos del registry — `cpp/functions/viz/{graph_labels_select,graph_viewport_selection,graph_types}.md`. Todos `purity: pure`. `graph_labels.md` y `graph_viewport.md` recortan su `signature` y declaran las nuevas entradas en `uses_functions`.
- Hecho: `cpp/apps/chart_demo/app.md` creado (`chart_demo_cpp_viz`, 4 deps).
- Hecho: `cpp/apps/shaders_lab/app.md` creado (`shaders_lab_cpp_gfx`, 19 deps). Antes habia entrada legacy en BD sin `.md` en disco.
- Hecho: `projects/osint_graph/apps/graph_explorer/app.md` `uses_functions` sincronizado con `CMakeLists.txt`. De 15 a 23 deps. Añadidas: `graph_viewport_selection`, `graph_labels_select`, `graph_types`, `graph_spatial_hash`, `button`, `icon_button`, `badge`, `empty_state`.
- Hecho: `projects/fn_monitoring/apps/registry_dashboard/app.md` `uses_functions` sincronizado. De 9 a 21 deps. Removido `fps_overlay` (vive en `fn_framework`).
- Bug + fix: `./fn index` no recogia `chart_demo` ni `shaders_lab` aunque tenian `app.md` correcto. Raiz: `registry/indexer.go` solo escaneaba `apps/*/app.md` y `projects/*/apps/*/app.md`, NO `<lang>/apps/`. Fix: añadir loop sobre `<lang>/apps/*/app.md` reusando el mismo `entries` de `os.ReadDir(root)` que ya usa para `<lang>/functions/` y `<lang>/types/`. Diff ~12 lineas. `./fn index` pasa de 15 a 17 apps.
- Bug + fix: `chart_demo/app.md` declaraba inicialmente `logger_cpp_core` en `uses_functions` aunque `CMakeLists.txt` no lo enlaza directo. Raiz: `logger.cpp` esta bundled en `fn_framework` static lib (junto con `tokens`, `app_menubar`, `fps_overlay`, etc.). Fix: removido del `app.md` con comentario explicito. Convencion documentada en `.claude/rules/uses_functions.md`.
- Decision: ADR 0003 (`docs/adr/0003-orphan-tu-as-separate-function-entry.md`) — TUs adicionales de un parent function se registran como entrada propia con su `.md`. El parent declara la nueva entrada en `uses_functions`. Alternativas descartadas: `file_path` multi-path (rompe convencion), `notes:` con instruccion (frágil), macro con flags (acopla tests a ImGui).
- Hecho: `.claude/rules/uses_functions.md` ampliada — lista explicita de funciones bundled en `fn_framework` (no se declaran en apps), comportamiento de TUs split (ADR 0003), apps como leaves del grafo.
- Hecho: `.claude/CLAUDE.md` raiz añade `cpp/apps/` a la seccion Estructura como ubicacion valida tras la extension del indexer.
- Hecho: `CHANGELOG.md` entrada 2026-05-04 con 3 nuevas funciones, 2 apps registradas, 2 apps sincronizadas, indexer extendido, ADR 0003.
- Hecho: build `cpp` verde para los 4 targets (`chart_demo`, `shaders_lab`, `registry_dashboard`, `graph_explorer`). `./fn index` reporta 952 functions / 17 apps / 8 analyses.
- Hecho: cross-check final `CMakeLists.txt``app.md` con script Python — los 4 apps a 0 missing / 0 extra.
- Pendiente: extraer helpers de `graph_explorer/main.cpp` al registry (algoritmos de layout `layout_no_collision`, `find_collision_free_slot`, `place_orphans_near_neighbors`; persistencia `panel_state_*`; utilities `detect_wsl_distro`, `resolve_registry_root`, `json_escape_str`).
- Pendiente: `primitives_gallery` no tiene `app.md`. Decidir si registrarla (showcase visual estable) o dejarla como scaffolding/demo (etiqueta del rule `uses_functions.md`).
- Pendiente: commit + push de los cambios (binary `fn` rebuilt no commiteado, .md y `registry/indexer.go` modificados).
Refs: ADR [0003](../adr/0003-orphan-tu-as-separate-function-entry.md), funciones `graph_labels_select_cpp_viz`, `graph_viewport_selection_cpp_viz`, `graph_types_cpp_viz`, apps `chart_demo_cpp_viz`, `shaders_lab_cpp_gfx`. Cambio en indexer: `registry/indexer.go` lineas ~87-122.