Files
fn_registry/CHANGELOG.md
T
egutierrez ec81bf360d docs: ADR 0002 + CHANGELOG + reglas para dataforge/<name>+master
- docs/adr/0002-apps-analyses-as-dataforge-master.md: decision arquitectural
  con contexto, alternativas descartadas y cambios concretos del 2026-04-28.
- CHANGELOG.md: entrada 2026-04-28 con Added/Changed/Fixed.
- .claude/CLAUDE.md: nota sobre /full-git-push y dataforge/<name>+master.
- .claude/rules/apps_tbd.md: tronco unico master + init.defaultBranch.
- cpp/functions/core/app_menubar.md: notas del submenu Settings con About.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 22:41:55 +02:00

7.0 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-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.