- Pie charts (Purity, Kind) ahora reciben plot_h explicito para que respeten
el panel contenedor y no desborden cuando la ventana se reduce.
- Nueva pestana "Explorer": split layout con lista filtrable a la izquierda
(search por nombre/descripcion + combos lang/domain) y panel de detalle
a la derecha con tabs Code (read-only multiline), Documentation (selectable
text), Tests (con dropdown si la funcion tiene varios tests, muestra lang +
file_path + codigo) y Metadata (id, version, file_path, returns,
uses_functions, uses_types, params_schema, example, notes).
- Reorganizacion de navegacion: TabBar movido arriba, justo debajo de la
toolbar. Tabs: Dashboard | Explorer | Projects | Apps | Analysis | Types.
Cada tab ocupa toda la zona de contenido. Dashboard incluye KPIs + charts
+ tabla de Recent Functions.
- Cache del Explorer (lista de funciones) invalidado en trigger_reload.
- Nuevas funciones HTTP: load_function_detail_http, load_all_functions_http,
load_unit_tests_http (todas usan /api/databases/registry/query con escape
defensivo de comilla simple en IDs).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- main.cpp: bump 0.2.0 → 0.3.0; añadir Status section en Settings via
settings_window_add_section (fuente API/SQLite, URL, DB path, Reload).
- views.cpp: chart_panel manual + BeginChild custom → dashboard_panel/grid
del registry. KPI cards con sparkline a la derecha, altura responsive.
- views.h: signature de draw_kpi_row pasa RegistryData (para sparkline).
- CMakeLists.txt: añadir process_state_machine.cpp (dependencia de
process_runner tras issue 0045).
- main.cpp: registrar info About via fn_ui::about_window_set_info
- views.cpp: nueva columna "Git" en la tabla Apps (remote/local/-)
- data.h/cpp + data_http.cpp: AppRow gana repo_url + dir_path
- views.cpp: actions bar (Reindex / + Add / Reload / inbox) y modal Add
- views.cpp: tab Projects con tree + detalle anidado
- data_http.cpp: load_projects_http, load_project_detail_http, http_post_*
- http_client.cpp: SO_RCVTIMEO en Windows como DWORD ms (timeout 5 ms bug)
- CMakeLists: limpieza de srcs duplicados con fn_framework
- app.md: notas operativas y estado actual
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Cuando registry_dashboard se compila como subdirectorio de cpp/ (en lugar
de standalone), el parent ya define sqlite3_vendored. Sin el guard, cmake
falla con "another target with the same name already exists".
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Nuevo chart_panel_begin/end local (reemplaza dashboard_panel con
AutoResizeY): BeginChild con altura explicita pasada por parametro,
NoScrollbar | NoScrollWithMouse. Rompe el feedback loop plot <-> panel
que causaba deslizamiento lateral y scrollbar fugaz.
- Altura de charts fija 260px (antes GetContentRegionAvail().y * 0.35).
Sin esto, redimensionar la ventana propaga cambios de altura a todos
los plots y se ve vibracion.
- KPIs reorganizados en ImGui::BeginTable 4 cols x 2 rows. Las celdas
de tabla propagan ancho constrained, necesario para que el BeginChild
interno del kpi_card (card v1.2 compacta 78px) ocupe exactamente la
celda.
- imgui.ini al .gitignore: estado local de la ventana, no versionable.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Reemplaza dashboard_grid (BeginGroup) por ImGui::BeginTable de 4 columnas.
Las celdas de tabla si propagan ancho constrained al BeginChild interno de
kpi_card, cosa que BeginGroup no hace. Layout 2x4 en vez de 1x8 (mas legible
a anchos tipicos).
Reduce duplicacion iterando un array de {label,value,fmt}.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Dashboard ahora usa:
- fn_tokens::apply_dark_theme() al primer frame (colors + spacing
+ radius + rounding consistentes con @fn_library / Mantine).
- page_header_begin/end para el header (en vez de Text + Separator
+ Button manual). Subtítulo con conteos de entidades.
- empty_state en las 4 tablas cuando están vacías — mensaje amable
con acción sugerida en lugar de tabla vacía silenciosa.
Nuevas deps de compilación (.cpp fuentes añadidas al CMakeLists):
tokens.cpp, badge.cpp, empty_state.cpp, page_header.cpp.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
El .exe se enlazaba como console app (mingw default), lo que
abría una ventana de consola negra al lanzarlo desde el escritorio.
WIN32_EXECUTABLE TRUE hace que CMake pase -mwindows al linker
(SUBSYSTEM:WINDOWS), dejando solo la ventana ImGui.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
uint16_t requiere <cstdint> explícitamente en mingw-w64 (más estricto que
g++ Linux). Sin esto el cross-compile a Windows falla con:
error: 'uint16_t' does not name a type
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
cpp-httplib requiere std::mutex que no compila con MinGW win32
thread model. Se reemplaza por http_client.cpp: sockets crudos,
sin threading, sin SSL, funciona en ambos thread models.
Elimina vendor/httplib.h (10K lineas). nlohmann/json se mantiene.
main.cpp: doble clic sin argumentos intenta la API en localhost:8484
automaticamente. Si falla muestra pantalla de error con boton Retry.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Nuevo flujo: por defecto conecta a sqlite_api en localhost:8484.
Si la API no responde, cae a SQLite directo. Flag --api para URL
custom. Launcher PowerShell actualizado con --api. app.md refleja
la nueva arquitectura dual HTTP/SQLite y dir_path del proyecto.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Nuevo data_http.cpp que obtiene todos los datos del registry via HTTP
POST a sqlite_api (/api/databases/registry/query). Mismas queries SQL
que el data layer SQLite pero ejecutadas remotamente. cpp-httplib como
cliente HTTP, nlohmann/json para parsear respuestas.
CMakeLists.txt actualizado: incluye data_http.cpp, vendor/ en includes,
linkea pthreads (Linux) y ws2_32 (Windows) para sockets.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Librerias header-only para HTTP client y JSON parsing.
cpp-httplib usa sockets nativos (sin OpenSSL).
Necesarias para consumir sqlite_api desde el dashboard.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Corrige fprintf que usaba %s con std::string sin .c_str().
Actualiza path WSL en el launcher PowerShell a Ubuntu-22.04.
Añade repo_url en app.md apuntando al repo en Gitea.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Grid de charts pasa de 2 a 4 columnas con altura dinamica (35% del
espacio disponible). Se eliminan los paneles Activity y Extras,
moviendo Unit Tests y Proposals a la fila de KPIs (ahora 8 cards).
Se reduce spacing entre secciones para aprovechar mejor la pantalla.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
En Windows, si el path a registry.db es UNC (\\wsl.localhost\...),
SQLite no puede hacer locking correctamente. Se copia el DB a un
archivo temporal local antes de abrirlo. Se añade busy_timeout de
3 segundos para evitar SQLITE_BUSY en lecturas concurrentes.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>