docs(issues): añadir 0041-0048 — refactor C++ apps, tests, primitives standarization
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
# 0043 — Estandarizar shell de las 4 apps C++ (About + Settings + paneles + tokens)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Campo | Valor |
|
||||
|-------|-------|
|
||||
| **ID** | 0043 |
|
||||
| **Estado** | pendiente |
|
||||
| **Prioridad** | alta |
|
||||
| **Tipo** | refactor — `cpp/apps/*` y `projects/fn_monitoring/apps/registry_dashboard` |
|
||||
|
||||
## Dependencias
|
||||
|
||||
Bloquea-por: **0041** (AppConfig extendido), **0042** (layout_storage publico).
|
||||
|
||||
---
|
||||
|
||||
## Objetivo
|
||||
|
||||
Que las 4 apps C++ con GUI (`shaders_lab`, `chart_demo`, `primitives_gallery`, `registry_dashboard`) sigan el mismo patron de inicializacion documentado en `cpp/PATTERNS.md` (issue 0041): About + Settings + paneles + tokens, sin reinventar boilerplate.
|
||||
|
||||
## Contexto
|
||||
|
||||
Auditoria muestra que cada app arranca distinto: solo `shaders_lab` aprovecha menubar con paneles, solo `registry_dashboard` registra About + Settings, `primitives_gallery` llama `apply_dark_theme()` + `gl_loader_init()` a mano. Tras 0041 y 0042, se puede unificar.
|
||||
|
||||
## Arquitectura
|
||||
|
||||
```
|
||||
cpp/apps/
|
||||
├── shaders_lab/main.cpp # MOD — usa layout_storage publico, About, init via AppConfig
|
||||
├── chart_demo/main.cpp # MOD — registra About, simplifica
|
||||
├── primitives_gallery/main.cpp # MOD — gl_loader_init via AppConfig, About
|
||||
└── text_editor_smoke/ # SIN CAMBIOS (test CLI)
|
||||
|
||||
projects/fn_monitoring/apps/registry_dashboard/
|
||||
└── main.cpp # MOD — usa AppConfig.about en lugar de about_window_set_info inline
|
||||
```
|
||||
|
||||
## Tareas
|
||||
|
||||
### Fase 1 — chart_demo (mas simple, validacion temprana)
|
||||
|
||||
1.1 Cambiar a:
|
||||
```cpp
|
||||
return fn::run_app({
|
||||
.title="chart_demo", .width=1280, .height=800,
|
||||
.about={.name="chart_demo", .version="0.1.0",
|
||||
.description="Demo de primitivos viz: line, scatter, bar, heatmap"}
|
||||
}, render);
|
||||
```
|
||||
1.2 Quitar la llamada manual a `app_menubar(nullptr,0,nullptr)` del render — `run_app` la invoca por nosotros si hay panels/layouts; en este caso sin panels, dejar render limpio (o llamar `app_menubar(nullptr,0,nullptr)` solo si hace falta menubar para Settings).
|
||||
1.3 Build OK.
|
||||
|
||||
### Fase 2 — primitives_gallery
|
||||
|
||||
2.1 Quitar `apply_dark_theme()` y `gl_loader_init()` del init manual (l. 129-134). Pasar `init_gl_loader=true` y `theme=ThemeMode::FnDark` en `AppConfig`.
|
||||
2.2 Anadir About (`name="Primitives Gallery"`, version, description).
|
||||
2.3 Mantener `app_menubar(nullptr,0,nullptr)` solo si la menubar la quiere la app — opcionalmente delegar a `run_app` extendido.
|
||||
2.4 Build OK.
|
||||
|
||||
### Fase 3 — registry_dashboard
|
||||
|
||||
3.1 Reemplazar la llamada manual `about_window_set_info(...)` (l. 121-127) por `AppConfig::about={...}`. La seccion `Status` se queda como `settings_window_add_section` (no cambia).
|
||||
3.2 Build OK.
|
||||
|
||||
### Fase 4 — shaders_lab
|
||||
|
||||
4.1 Reemplazar el bloque de layouts inline por `fn_ui::layout_storage_open("shaders_lab.db")` + `layout_storage_make_callbacks` (consume issue 0042).
|
||||
4.2 Anadir About (`name="shaders_lab"`, version, description).
|
||||
4.3 Pasar `panels` y `layouts_cb` via `AppConfig` (issue 0041) — quitar la llamada manual a `app_menubar`.
|
||||
4.4 Build OK.
|
||||
|
||||
### Fase 5 — Verificacion cross
|
||||
|
||||
5.1 Build Linux y Windows de las 4 apps.
|
||||
5.2 Run rapido en Linux para confirmar que About y Settings/Status aparecen en el menubar de cada una.
|
||||
|
||||
## Decisiones de diseno
|
||||
|
||||
- Tocar registry_dashboard para que sea consistente con el patron, aunque hoy ya tenia About/Settings via APIs sueltas.
|
||||
- text_editor_smoke se queda igual (es un test CLI).
|
||||
|
||||
## Riesgos
|
||||
|
||||
- Si `run_app` invoca `app_menubar` y la app tambien lo llama, salen dos menubars. Verificar que cada main.cpp solo llama `app_menubar` si NO esta declarado en AppConfig.
|
||||
- shaders_lab: la migracion a `layout_storage` debe preservar layouts existentes — ver riesgo de 0042.
|
||||
|
||||
## Validacion
|
||||
|
||||
- Las 4 apps abren y muestran menu Settings con Settings… + About… (mas Status… donde aplique).
|
||||
- shaders_lab guarda/carga layouts despues de la migracion.
|
||||
- `cmake --build` pasa para todas. Cross-compile Windows OK.
|
||||
Reference in New Issue
Block a user