Files
fn_registry/dev/issues/0109g-skill-tree-embedded-terminal.md
T
egutierrez b9716a7cd6 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>
2026-05-18 18:17:08 +02:00

3.0 KiB

id, title, status, type, domain, scope, priority, depends, blocks, related, created, updated, tags
id title status type domain scope priority depends blocks related created updated tags
0109g skill_tree: panel terminal embebida (claude TUI dentro de la app) pendiente feature
meta
cpp-stack
app-scoped baja
0109b
0109
2026-05-17 2026-05-17
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.