18 — Por dentro
Arquitectura del editor
Arranque, composición por capacidades, estado, infraestructura y dependencias.
En esta página
Stack y arranque
TypeScript estricto, Bun y OpenTUI Solid. Solid organiza estado reactivo y componentes; OpenTUI renderiza el workbench en terminal. El producto no incorpora un servidor. El lock revisado usa OpenTUI 0.5.1 y Prettier 3.9.6.
CLI resuelve ayuda/versión antes de UI/config. El binario entra por bootstrap/executable.ts, supervisa un worker y marca saludable el primer frame. index.tsx carga configuración, resuelve raíz, crea renderer y compone App.
npm alias → launcher → platform binary → supervisor → worker
↓
CLI → configuration + root → renderer → App
├─ useWorkbench
└─ AppLayout
├─ Explorer
├─ Documents / Editor / Preview / Diff
├─ Git
└─ OverlaysMapa de capacidades
| Directorio | Responsabilidad |
|---|---|
| workbench/ | Composición, conexiones entre capacidades y router único de teclado. |
| documents/ | Pestañas, dirty, I/O protegido, guardado, previews y apertura concurrente. |
| editor/ | Textarea, cursor, historial, búsqueda local, métricas, sintaxis, clipboard y formato. |
| explorer/ + search/ | Árbol, reglas, índice reutilizado, búsqueda global y exclusiones temporales. |
| git/ | Comandos Git, estado, historial, navegación, árboles y diffs. |
| dialogs/ | Estado de overlays y confirmaciones que capturan teclado. |
| config/ + bootstrap/ | Validación, defaults, persistencia, recuperación y arranque. |
| logs/ + localization/ + updates/ + docs/ | Registro de sesión, idioma, chequeo de versión y manual embebido. |
Invariantes de diseño
- App compone; useWorkbench conecta mediante callbacks; los paneles reciben props y no ejecutan acciones importando otras capacidades.
- useKeyboardShortcuts es dueño de prioridad de teclas. Sin filePath no hay documento dirty. Antes de cambiar pestaña se sincroniza el buffer.
- La infraestructura por capacidad no depende del renderer. Helpers de archivos centralizan lectura/escritura. OpenTUI queda en UI y adaptadores.
- Generaciones impiden aperturas obsoletas; historial usa abort y revisión fija; resaltado diferido verifica generación/ruta/contenido. No todas las operaciones asíncronas comparten esa protección.
Dependencias externas
Git se ejecuta como proceso, ignore interpreta reglas, Prettier formatea y herramientas del sistema suministran portapapeles. Los binarios llevan runtime Bun; Node/npm solo son necesarios en el canal npm. Formateadores externos se registran globalmente.
Fuentes del capítulo
Enlaces fijados al commit revisado; no siguen main.