f5f14ccd53
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
9.9 KiB
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 degraph_labelscon los helpers purosgraph_compute_degreesygraph_labels_select(frustum cull + always_for_* + top-N porsize * (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 degraph_viewportconclear_selection,is_selected,add_to_selection,toggle_selection. Mantienen sincronizadosstate.selectionynodes[i].flags & NF_SELECTED.cpp/functions/viz/graph_types(graph_types_cpp_viz, pure) — TU de implementacion deGraphData::update_bounds()yGraphData::find_node_by_user_data(). Pareja obligatoria del header del tipo (graph_types.hindexado entypes/viz/).cpp/apps/chart_demo/app.md— la demo de primitivos viz (line/scatter/bar/heatmap) ahora aparece en el registry comochart_demo_cpp_viz.cpp/apps/shaders_lab/app.md— el live GLSL playground con DAG ahora tieneapp.mdpropio (antes solo existia entrada legacy en BD sin.mden 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 veiaapps/yprojects/*/apps/— las apps encpp/apps/quedaban invisibles../fn indexreporta 17 apps (antes 15).cpp/functions/viz/graph_labels.md—signaturereducida agraph_labels_drawygraph_labels_draw_at(los helpers puros pasan a entrada propia).uses_functionsapunta a la nueva entradagraph_labels_select_cpp_viz.cpp/functions/viz/graph_viewport.md—uses_functionsañadegraph_viewport_selection_cpp_viz.projects/osint_graph/apps/graph_explorer/app.md—uses_functionssincronizado conCMakeLists.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_functionssincronizado conCMakeLists.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 enfn_framework, no se declara).
Decisions
- ADR
0003-orphan-tu-as-separate-function-entry.md— cuando una funcion del registry necesita partir su.cppen varios TUs por testabilidad o separacion ImGui-vs-puro, cada TU adicional se registra como entrada propia con su.mden lugar de extenderfile_pathpara listar varios archivos. El parent declara la nueva entrada enuses_functions. Razon: el indexer asume1 .cpp = 1 .md; unfile_pathmulti-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 conabout_window_set_info(project, version, description),about_window_menu_item("About...")yabout_window_render(). Render automatico viafn::run_app(cableado encpp/framework/app_base.cpp).bash/functions/infra/ensure_repo_synced(ensure_repo_synced_bash_infra) — pipeline idempotente que componegitea_create_repo+gitea_push_directory: crea repo Gitea si falta, inicializa.gitlocal si falta, commitea cambios pendientes y pushea. Defaults: ownerdataforge, branchmaster.analysis.mdpara 6 analyses que estaban en disco pero sin indexar:agent_coding_eval,estudio_embeddings,estudio_mercados,ontology_graph,pruebas_jupyter,retrieving_graphs. Ahora./fn indexreporta 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.gitignoreapropiado para excluir binarios,.venv/,node_modules/,.jupyter*,operations.db*.
Changed
cpp/functions/core/app_menubar: el item top-levelSettings...pasa a ser unBeginMenu("Settings")con dos subitems:Settings...(ventana deapp_settings) yAbout...(nuevo, ventana deapp_about). Las apps que usanfn_ui::app_menubar(nullptr, 0, nullptr)heredan el cambio sin tocar nada.projects/fn_monitoring/apps/registry_dashboard/main.cpp: cableafn_ui::about_window_set_info("fn_registry Dashboard", "0.2.0", "...")antes defn::run_app. TablaAppsgana columnaGitcon valoresremote(repo_url poblado),local(.git/ presente) o-.data.h/data.cpp/data_http.cppdel dashboard:AppRowextendido conrepo_urlydir_path.- 10 repos migrados de branch
mainamasterpara 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"}), branchmainremota borrada. git config --global init.defaultBranch masterpara que los proximosgit initsean consistentes./full-git-push: descubre apps/analyses sin.gity ofrece inicializarlos conensure_repo_syncedautomaticamente. Excluyesubrepos/para evitar duplicacion (mirrors upstream)./full-git-pull: trasfn sync, segunda pasada que clona losdataforge/<name>registrados enapps/analysisque no existan localmente — soluciona el "no pude recuperar la app en el otro PC".bash/functions/infra/ensure_repo_synced.sh: localiza dependencias viaFN_REGISTRY_INFRA_DIRoFN_REGISTRY_ROOT, robusto a sourcing desde zsh/bash.
Fixed
projects/fn_monitoring/apps/sqlite_api/handlers.go|main.go|handlers_test.go+ nuevoshandlers_mutations.goyhandlers_projects.go: cableados endpointsPOST /add_app|add_analysis|add_vault|reindexyGET /projectspara que el dashboard pueda crear artefactos y navegar projects desde la actions bar (estado pendiente de varios dias en uncommitted, ahora versionado endataforge/sqlite_api).- Bug operativo en
sqlite_api(Windows):SO_RCVTIMEOse pasaba comostruct timevalcuando Windows esperaDWORD ms→ timeout efectivo de 5 ms. Ya documentado enapp.mddel 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_pipelinesque compone las anteriores: genera unit file + install + enable + start + status. - Servicio systemd
sqlite_api.serviceinstalado y habilitado en aurgi-pc — arranque automático al iniciar WSL en127.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_diariopara añadir entradas. CHANGELOG.md(este archivo).- Submódulo
cpp/vendor/glfwre-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.dbahora está gitignorada. Es regenerable confn index+ completable confn sync. Evita conflictos entre ramas y PCs.sqlite_apiahora se distribuye como binario compilado (projects/fn_monitoring/apps/sqlite_api/sqlite_api) en lugar dego runal vuelo.
Fixed
http_client.cppdel 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 alImGuiStyleglobal.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_dashboardmigrado a los nuevos componentes:page_header_begin/enden el header,empty_stateen 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 desystemctlredirigido a stderr para no contaminar el JSON capturado por el pipeline..gitmodules: entry fantasmacpp/vendor/glfwcon path absoluto/home/lucas/...que bloqueabagit submodule statusy el cross-compile Windows.
Removed
- Integración de GitButler de Claude Code — binario
~/.local/bin/but, plugingitbutler-tools, skill.claude/skills/gitbutler/, hooks ensettings.json, ramasgitbutler/*+e-branch-*, estado interno.git/gitbutler/. Ver ADR 0001 para motivos.