b9716a7cd6
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>
79 lines
3.0 KiB
Markdown
79 lines
3.0 KiB
Markdown
---
|
|
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.
|