Files
fn_registry/CHANGELOG.md
T
egutierrez f5f14ccd53 docs: 2026-05-04 changelog + diary
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 11:52:56 +02:00

9.9 KiB

Changelog

Todos los cambios notables de fn_registry se documentan aquí.

Formato basado en Keep a Changelog. Al no haber releases semver formales, las entradas se ordenan por fecha.

Para contexto detallado del trabajo diario ver docs/diary/. Para decisiones arquitecturales ver docs/adr/.

[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.mdsignature 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.mduses_functions añade graph_viewport_selection_cpp_viz.
  • projects/osint_graph/apps/graph_explorer/app.mduses_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.mduses_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

  • cpp/functions/core/app_about (app_about_cpp_core) — ventana flotante About con about_window_set_info(project, version, description), about_window_menu_item("About...") y about_window_render(). Render automatico via fn::run_app (cableado en cpp/framework/app_base.cpp).
  • bash/functions/infra/ensure_repo_synced (ensure_repo_synced_bash_infra) — pipeline idempotente que compone gitea_create_repo + gitea_push_directory: crea repo Gitea si falta, inicializa .git local si falta, commitea cambios pendientes y pushea. Defaults: owner dataforge, branch master.
  • analysis.md para 6 analyses que estaban en disco pero sin indexar: agent_coding_eval, estudio_embeddings, estudio_mercados, ontology_graph, pruebas_jupyter, retrieving_graphs. Ahora ./fn index reporta 8 analyses (antes 2).
  • Repos dataforge/<name> creados en Gitea para apps y analyses que no estaban subidos: agents_and_robots, element_matrix_chat, deploy_server, shaders_lab, voice_guide, agent_coding_eval, ontology_graph, turismo_spain. Cada uno con .gitignore apropiado para excluir binarios, .venv/, node_modules/, .jupyter*, operations.db*.

Changed

  • cpp/functions/core/app_menubar: el item top-level Settings... pasa a ser un BeginMenu("Settings") con dos subitems: Settings... (ventana de app_settings) y About... (nuevo, ventana de app_about). Las apps que usan fn_ui::app_menubar(nullptr, 0, nullptr) heredan el cambio sin tocar nada.
  • projects/fn_monitoring/apps/registry_dashboard/main.cpp: cablea fn_ui::about_window_set_info("fn_registry Dashboard", "0.2.0", "...") antes de fn::run_app. Tabla Apps gana columna Git con valores remote (repo_url poblado), local (.git/ presente) o -.
  • data.h/data.cpp/data_http.cpp del dashboard: AppRow extendido con repo_url y dir_path.
  • 10 repos migrados de branch main a master para unificar convencion: apps/{docker_tui,fuzzygraph,metabase_registry,pipeline_launcher,rapid_dashboards,script_navegador}, analysis/{estudio_embeddings,estudio_mercados,pruebas_jupyter,retrieving_graphs}. Default branch en Gitea actualizado via API (PATCH /repos/{owner}/{repo} con {"default_branch":"master"}), branch main remota borrada.
  • git config --global init.defaultBranch master para que los proximos git init sean consistentes.
  • /full-git-push: descubre apps/analyses sin .git y ofrece inicializarlos con ensure_repo_synced automaticamente. Excluye subrepos/ para evitar duplicacion (mirrors upstream).
  • /full-git-pull: tras fn sync, segunda pasada que clona los dataforge/<name> registrados en apps/analysis que no existan localmente — soluciona el "no pude recuperar la app en el otro PC".
  • bash/functions/infra/ensure_repo_synced.sh: localiza dependencias via FN_REGISTRY_INFRA_DIR o FN_REGISTRY_ROOT, robusto a sourcing desde zsh/bash.

Fixed

  • projects/fn_monitoring/apps/sqlite_api/handlers.go|main.go|handlers_test.go + nuevos handlers_mutations.go y handlers_projects.go: cableados endpoints POST /add_app|add_analysis|add_vault|reindex y GET /projects para que el dashboard pueda crear artefactos y navegar projects desde la actions bar (estado pendiente de varios dias en uncommitted, ahora versionado en dataforge/sqlite_api).
  • Bug operativo en sqlite_api (Windows): SO_RCVTIMEO se pasaba como struct timeval cuando Windows espera DWORD ms → timeout efectivo de 5 ms. Ya documentado en app.md del dashboard.

2026-04-24

Added

  • 6 funciones bash/infra/systemd_local_* (install_unit, enable, start, restart, status, uninstall) para gestionar servicios systemd del sistema desde el registry (complementa las versiones remotas SSH ya existentes).
  • Pipeline install_systemd_service_bash_pipelines que compone las anteriores: genera unit file + install + enable + start + status.
  • Servicio systemd sqlite_api.service instalado y habilitado en aurgi-pc — arranque automático al iniciar WSL en 127.0.0.1:8484.
  • projects/fn_monitoring/launcher.sh — launcher del dashboard (arranca API si no está + lanza ventana + cleanup).
  • Regla .claude/rules/kiss.md — filosofía KISS para proyectos y apps.
  • Documentación ADR en docs/adr/ con plantilla y ADR 0001 (experimento GitButler).
  • Diario en docs/diary/ + slash command /entrada_diario para añadir entradas.
  • CHANGELOG.md (este archivo).
  • Submódulo cpp/vendor/glfw re-registrado con path limpio (antes heredado con path absoluto /home/lucas/...).
  • aurgi-pc registrado en el server centralizado (registry.organic-machine.com) con 18 pc_locations.

Changed

  • registry.db ahora está gitignorada. Es regenerable con fn index + completable con fn sync. Evita conflictos entre ramas y PCs.
  • sqlite_api ahora se distribuye como binario compilado (projects/fn_monitoring/apps/sqlite_api/sqlite_api) en lugar de go run al vuelo.

Fixed

  • http_client.cpp del dashboard: añadido #include <cstdint> requerido por mingw-w64 para cross-compile Windows (g++ Linux lo incluía transitivamente).
  • registry_dashboard.exe (Windows) ya no abre ventana de consola al lanzarse — enlazado como GUI app (WIN32_EXECUTABLE TRUE / -mwindows).

Added (design system C++)

  • cpp/functions/core/tokens — design tokens para dashboards ImGui (colors, spacing, radius, font_size) inspirados en @fn_library (Mantine v9). Paleta dark + indigo primary. apply_dark_theme() aplica los tokens al ImGuiStyle global.
  • cpp/functions/core/badge — etiqueta inline con 6 variantes (Default/Success/Warning/Error/Info/Outline). Equivalente a <Badge> de @fn_library.
  • cpp/functions/core/empty_state — placeholder centrado para tablas/listas vacías.
  • cpp/functions/core/page_header — header de página con título/subtítulo + hueco para acciones + separator.
  • registry_dashboard migrado a los nuevos componentes: page_header_begin/end en el header, empty_state en las 4 tablas cuando están vacías, apply_dark_theme() al primer frame. Sin hardcode de colores disperso.
  • systemd_local_{enable,start,restart}: stdout de systemctl redirigido a stderr para no contaminar el JSON capturado por el pipeline.
  • .gitmodules: entry fantasma cpp/vendor/glfw con path absoluto /home/lucas/... que bloqueaba git submodule status y el cross-compile Windows.

Removed

  • Integración de GitButler de Claude Code — binario ~/.local/bin/but, plugin gitbutler-tools, skill .claude/skills/gitbutler/, hooks en settings.json, ramas gitbutler/* + e-branch-*, estado interno .git/gitbutler/. Ver ADR 0001 para motivos.