La ventana no es la sesión
En una app de terminal tradicional, cerrar la interfaz suele cerrar también los procesos. Eso es razonable hasta que un agente lleva veinte minutos trabajando o un build decidió compilar el universo.
Separamos responsabilidades. Electron mantiene la interfaz; un daemon local posee las PTY. Ambos se hablan por WebSocket en `127.0.0.1`, con un token propio. La interfaz puede desaparecer y volver. El trabajo sigue ahí, imperturbable y ligeramente orgulloso.
Volver sin perder el scrollback
Mantener el proceso no bastaba: al reabrir también necesitábamos reconstruir lo que se veía. Para eso usamos una terminal headless que serializa el estado con sus colores SGR. Como respaldo, cada sesión conserva además un ring buffer de salida cruda.
El resultado es una reconexión que se siente continua. No es teletransportación; es una combinación de snapshots, buffers y bastante respeto por el texto que ya pasó por pantalla.
El detalle menos glamoroso
En desarrollo, el binario de Electron quería guardar sus datos en una carpeta distinta. La solución fue compartir explícitamente el directorio de usuario al lanzar el daemon. Pequeño argumento de línea de comandos, enorme reducción de fantasmas.