---
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.
