e39445dd55
Trasladar principios del DESIGN_SYSTEM.md de @fn_library (Mantine/React)
al mundo C++/ImGui sin añadir deps externas:
cpp/functions/core/
tokens — colors/spacing/radius/font_size como constexpr +
apply_dark_theme() al ImGuiStyle global. Dark + indigo
primary (Mantine-inspired).
badge — etiqueta inline 6 variantes (Default/Success/Warning/
Error/Info/Outline). <Badge> de @fn_library en C++.
empty_state — placeholder centrado para tablas/listas vacías.
page_header — header con title + subtitle + separator + hueco
para acciones (patrón begin/end).
Scope limitado (KISS) a fases 1-2 del plan: tokens + 3 primitivos.
No se duplica dashboard_panel con un "card" — el existente ya cumple
el rol. Fases 3-5 (charts ImPlot line/area, app_shell con navbar,
toast/alert) quedan fuera hasta que el dashboard crezca en alcance.
Resultado:
- 869 funciones (+4) en registry.db.
- Dashboard con header homogéneo y empty states en todas las tablas.
- Sin hardcode de ImVec4 disperso en views.cpp.
Diary + CHANGELOG actualizados.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
80 lines
5.7 KiB
Markdown
80 lines
5.7 KiB
Markdown
# 2026-04-24
|
|
|
|
## 12:00 — Conectar aurgi-pc al registry server
|
|
|
|
Primera sesión en aurgi-pc (WSL). Vincular este PC al server centralizado y recuperar metadata de apps/projects/analysis/vaults existentes.
|
|
|
|
- Hecho: recompilado `fn` con `CGO_ENABLED=1 -tags fts5` desde `/usr/local/go/bin/go` (go1.25.0). Ahora tiene `fn sync`.
|
|
- Hecho: `~/.fn_pc` = `aurgi-pc`. Env vars `FN_REGISTRY_API` y `REGISTRY_API_TOKEN` desde `pass`.
|
|
- Hecho: `fn sync` contra `https://registry.organic-machine.com` — 44 enviados, 62 recibidos, aurgi-pc registrado con 18 locations.
|
|
- Hecho: `registry.db` gitignorada (regenerable con `fn index` + `fn sync`).
|
|
- Aprendizaje: GPG sin TTY en WSL obliga a desbloquear `pass` en terminal real una vez; caché de gpg-agent (ver [memoria feedback_gpg_pass_wsl](../../.claude/projects/memory)).
|
|
|
|
## 13:00 — Instalar dashboard fn_monitoring
|
|
|
|
Configurar el proyecto `fn_monitoring` (API + dashboard ImGui) en aurgi-pc para visualizar las apps.
|
|
|
|
- Hecho: clonado `registry_dashboard` + movido a `projects/fn_monitoring/apps/registry_dashboard/`.
|
|
- Hecho: inicializados submódulos `cpp/vendor/{imgui,implot}`. Re-registrado `glfw` como submódulo (antes tenía path `/home/lucas/...` heredado que bloqueaba `git submodule status`).
|
|
- Hecho: build Linux del dashboard (12.9 MB).
|
|
- Hecho: `projects/fn_monitoring/launcher.sh` — arranca API si no está viva + lanza dashboard + cleanup al salir.
|
|
- Fixed: `http_client.cpp` requería `#include <cstdint>` explícito (mingw más estricto que g++ Linux). Commit en subrepo del dashboard.
|
|
- Hecho: cross-compile Windows (19 MB) + copiado a `/mnt/c/Users/egutierrez/Desktop/registry_dashboard.exe`.
|
|
|
|
## 13:30 — Funciones systemd locales + servicio sqlite_api
|
|
|
|
Hasta ahora solo había funciones systemd remotas (via SSH para VPS). Crear versiones locales y registrar `sqlite_api` como servicio del sistema.
|
|
|
|
- Hecho: 6 funciones bash/infra — `systemd_local_{install_unit, enable, start, restart, status, uninstall}`.
|
|
- Hecho: pipeline bash/pipelines — `install_systemd_service` que compone las anteriores; genera unit file con env vars deterministas.
|
|
- Hecho: compilado `sqlite_api` como binario (antes `go run`) en `projects/fn_monitoring/apps/sqlite_api/sqlite_api`.
|
|
- Hecho: servicio `sqlite_api.service` instalado + enabled + active. Queda vivo al arrancar WSL (systemd=true en `/etc/wsl.conf`).
|
|
- Fixed: bugs en `systemd_local_{enable,start,restart}` que contaminaban stdout con mensajes de `systemctl` rompiendo el `$(...)` del pipeline. Redirigido a stderr.
|
|
|
|
## 14:00 — Experimento GitButler y retirada
|
|
|
|
Se probó GitButler para trabajo paralelo con virtual branches. Descartado.
|
|
|
|
- Problema: bugs graves con submódulos + gitlinks — `but` creaba commits vacíos o con contenido cruzado cuando se tocaba `.gitmodules`.
|
|
- Problema: auto-commits usaban el texto del turno del chat como commit message.
|
|
- Hecho: `but teardown` + eliminación completa (binario, plugin, skill, hooks en settings.json, config git, ramas fantasma).
|
|
- Hecho: commits consolidados en `master` de `fn_registry` (3 limpios) + push a origin.
|
|
- Hecho: documentado en [ADR 0001](../adr/0001-gitbutler-experiment.md).
|
|
|
|
## 14:30 — Formalizar filosofía KISS + docs
|
|
|
|
Derivar una regla operativa del aprendizaje de GitButler y preparar la infraestructura de documentación.
|
|
|
|
- Hecho: [`.claude/rules/kiss.md`](../../.claude/rules/kiss.md) + entrada #16 en `.claude/rules/INDEX.md`.
|
|
- Hecho: `docs/adr/` con README y ADR 0001.
|
|
- Hecho: `docs/diary/` con README y esta primera entrada.
|
|
- Hecho: `CHANGELOG.md` raíz retrocubriendo toda la sesión.
|
|
- Hecho: `/entrada_diario` slash command para añadir entradas rápido.
|
|
|
|
Pendiente:
|
|
- Lanzar el dashboard y verificar que muestra las 12 apps en la UI (tarea #9) — requiere terminal real con DISPLAY WSLg.
|
|
|
|
## 14:35 — Dashboard Windows sin consola
|
|
|
|
El `.exe` del escritorio abría una ventana de consola negra al lanzarlo (mingw enlaza como console app por defecto).
|
|
|
|
- Hecho: `WIN32_EXECUTABLE TRUE` en el `CMakeLists.txt` del target `registry_dashboard` → mingw pasa `-mwindows` (subsystem:windows).
|
|
- Hecho: rebuild Windows + copy al Desktop reemplazando el anterior (hash `e361387f...`).
|
|
- Commit en subrepo del dashboard.
|
|
|
|
## 14:50 — Design system C++ (fases 1 y 2)
|
|
|
|
Trasladar principios del DESIGN_SYSTEM.md de `@fn_library` (Mantine/React) al dashboard ImGui sin añadir deps externas.
|
|
|
|
- Hecho: `cpp/functions/core/tokens.{h,cpp,md}` — namespace `fn_tokens` con `colors`, `spacing`, `radius`, `font_size` (constexpr) + `apply_dark_theme()` que aplica los tokens al `ImGuiStyle` global. Paleta dark + indigo primary (Mantine-inspired).
|
|
- Hecho: `cpp/functions/core/badge.{h,cpp,md}` — etiqueta inline con 6 variantes (Default/Success/Warning/Error/Info/Outline). Equivalente a `<Badge>` de `@fn_library`.
|
|
- Hecho: `cpp/functions/core/empty_state.{h,cpp,md}` — placeholder centrado para tablas vacías.
|
|
- Hecho: `cpp/functions/core/page_header.{h,cpp,md}` — header con título/subtítulo + hueco para acciones + separator (patrón begin/end).
|
|
- Hecho: migrado `views.cpp` para usar `page_header_begin/end` en lugar de `Text + Separator + Button` manual; `empty_state` en las 4 tablas cuando están vacías; `apply_dark_theme` al primer frame.
|
|
- Hecho: `CMakeLists.txt` del dashboard añade los 4 nuevos .cpp.
|
|
- Hecho: build Linux (OK) + Windows (OK, hash `772b0aef...`), copiado a Desktop.
|
|
- Hecho: `fn index` pasa de 865 → 869 funciones.
|
|
- Fix yaml en `tokens.md`: `params:` con item `- name: -` rompía el parser YAML (el `-` colisionaba con el array marker). Cambiado a `params: []`.
|
|
|
|
**Scope respetado (KISS)**: sólo fases 1+2 del plan propuesto — no se crearon card ni line_chart ni app_shell ni sistema de toast. Se mantiene `dashboard_panel` existente en vez de duplicar con un `card`.
|