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
@@ -0,0 +1,78 @@
---
id: "0109g"
title: "skill_tree: panel terminal embebida (claude TUI dentro de la app)"
status: pendiente
type: feature
domain:
- meta
- cpp-stack
scope: app-scoped
priority: baja
depends:
- "0109b"
blocks: []
related:
- "0109"
created: 2026-05-17
updated: 2026-05-17
tags:
- skill-tree
- cpp
- imgui
- terminal
- pty
---
# 0109g — Terminal embebida en skill_tree
Hoy el boton `Claude fix` lanza terminal externa (Windows Terminal). Funciona pero saca al usuario fuera de la app. Issue: integrar terminal completa dentro de skill_tree como panel.
## Opciones a evaluar
### Opcion 1: lib externa ImGui terminal
- **ImTerm** (github.com/Optiroc/ImTerm): minimalista, sin PTY. NO sirve para TUI.
- **imgui-console**: similar, comandos hardcoded. NO sirve.
- **imgui-vt100** o forks: emuladores ANSI dentro de ImGui. Algunos con PTY. Investigar:
- github.com/Magenta-Inc/MagentaImGuiTerminal
- github.com/microsoft/terminal — ConPTY API + custom UI
- github.com/jbrd/imterm — soporta escape sequences basicas
- Riesgo: claude usa **alt screen + raw mode + bracketed paste + colores 24-bit + cursor moves**. La mayoria de libs no cubren todo.
### Opcion 2: PTY + parser ANSI propio
- Linux: `openpty()` + fork + exec claude. Buffer texto. Parser ANSI minimo (CSI, SGR, cursor).
- Windows: ConPTY (`CreatePseudoConsole`). Similar.
- Render ImGui con `AddText` + colores por celda. Soportar redimension via `TIOCSWINSZ`.
- Mucho trabajo (~1500 LOC). Resultado limitado (no soporta TUIs complejas tipo less, vim).
### Opcion 3: Pipe simple (no TUI)
- spawn `claude --print "..."` con un prompt y leer stdout en panel scrollable.
- NO interactivo. Solo one-shot.
- Util para `Generate ideas` (0109h), NO para `Claude fix` interactivo.
## Recomendacion
- **Corto plazo**: dejar terminal externa (esta hecha en 0109b3).
- **Medio plazo**: hacer Opcion 3 (pipe one-shot) para 0109h.
- **Largo plazo**: Opcion 2 (ConPTY/openpty propio) solo si el usuario lo pide explicitamente. Es trabajo de semana y limitara la app a un emulador de calidad mediocre.
## Investigacion previa (sub-issue 0109g1)
Antes de implementar, abrir sub-issue 0109g1 que evalua:
- ¿Hay alguna lib **imgui-pty** madura en 2026?
- ¿La calidad de `imgui-vt100` cubre claude TUI?
- ¿Cuanto cuesta ConPTY/openpty propio para soportar al menos: scrollback, colores 24-bit, cursor moves, alt screen, bracketed paste?
Si la respuesta a (1) o (2) es "si", saltar a implementar. Si la respuesta es "no", el esfuerzo de (3) probablemente no compensa vs la terminal externa.
## DoD (cuando se implemente)
- [ ] Panel "Terminal" toggable desde menu View (Ctrl+3).
- [ ] Spawn `claude --dangerously-skip-permissions` en cwd `~/fn_registry`.
- [ ] Input box manda chars al PTY.
- [ ] Output renderizado con colores ANSI minimo.
- [ ] Cierre limpio del proceso al cerrar el panel o salir de la app.
- [ ] Funciona en Windows nativo (no requiere WSL terminal externa).
## Anti-DoD
- NO soporta TUIs muy complejas (less con keyboard, vim) hasta que se justifique con un user need real.