chore: snapshot WIP previo + flow 0008 + 7 sub-issues (0112-0119)

Snapshot de WIP acumulado de sesiones previas antes de merge wave 1
del flow 0008 (kanban_cpp + agent_runner_api + DoD schema).

Incluye:
- dev/flows/0008-kanban-cpp-and-agent-workflows.md
- dev/issues/0112-0119*.md (7 sub-issues)
- WIP previo en cmd/fn/doctor.go, registry/*, modules/, cpp/, etc.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-18 18:17:08 +02:00
parent ddb5366884
commit b9716a7cd6
119 changed files with 14929 additions and 3084 deletions
+36
View File
@@ -171,6 +171,42 @@ struct AppConfig {
// render_fn) las ventanas docked aparecen flotantes hasta el siguiente
// ciclo. Default null = no-op.
std::function<void()> pre_frame{};
// ------------------------------------------------------------------------
// Header badge — identidad visual en viewports secundarios (panels
// arrastrados fuera del main window). Cuando un panel se separa, el
// framework dibuja un pequeño cuadrado redondeado con la inicial de la
// app (o un glyph custom) en la esquina top-left de la title bar de su
// viewport, asi distingues de un vistazo de que app viene cada panel
// flotante cuando tienes varias apps abiertas a la vez.
//
// Si todos los campos quedan por defecto, el framework auto-deriva color
// estable desde about.name (hash -> HSV) y glyph desde la primera letra.
// No requiere accion en la app; con solo declarar about.name ya hay
// identidad. Apps que ya tengan icon.accent en su app.md deberian setear
// header_badge.accent_hex con el mismo hex para coherencia visual con el
// App Hub.
// ------------------------------------------------------------------------
struct AppHeaderBadge {
// Color de fondo del badge en formato "#RRGGBB" o "RRGGBB" sRGB.
// "" -> auto-derive desde about.name (hash estable).
const char* accent_hex = "";
// Glyph dibujado en blanco encima del fondo. nullptr/"" -> primera
// letra de about.name (uppercase). Soporta cualquier UTF-8 corto
// (1-2 chars o un TI_* macro de cpp/functions/core/icons_tabler.h).
const char* glyph = nullptr;
// Tamaño cuadrado del badge en pixels.
float size_px = 18.0f;
// Margen desde top-left del viewport.
float margin_px = 6.0f;
// false -> deshabilita el badge para esta app (capture mode, headless).
bool enabled = true;
};
AppHeaderBadge header_badge{};
};
// Run an ImGui application. The render_fn is called every frame