Día 27. Quedan cuatro días. Hora de dejar de ir a lo seguro.
La recta final de este desafío es donde quiero meterme en cosas que probablemente no deberían funcionar en un solo día. Un emulador de terminal es una de esas cosas. No un juguete web que finge ser un terminal. Una aplicación de escritorio nativa de verdad que lanza sesiones de shell reales, renderiza a 60fps, y maneja todo desde vim hasta htop.
El Prompt#
“Construir un emulador de terminal usando Tauri 2 y Rust”
Esa fue la petición principal. Todo lo demás vino de la iteración.
Cómo Se Construyó#
Este fue de los gordos. Watchfire dividió el trabajo en 19 tareas, y necesitó cada una de ellas. Construir un emulador de terminal no es trivial. Hay gestión de PTY, integración con la shell, manejo de input, rendimiento de renderizado, y una docena de otras cosas en las que nunca habría pensado.
La lista de tareas fue más o menos así:
- Crear la estructura de un proyecto Tauri 2 + Vite con soporte básico de PTY
- Múltiples pestañas con abrir, cerrar y renombrar
- Paneles divididos, horizontal y verticalmente
- Panel de configuración con temas, fuentes y configuración de shell
- Polish de la UI, scrollback y correcciones de shell
- GitHub Actions para releases automatizadas
- Sugerencias de comandos por IA inline
- Polish visual para transparencia, blur y chrome de ventana
- Links clicables y detección inteligente en el output del terminal
- Perfiles de shell y acciones rápidas
- Avisos de comandos peligrosos con diálogos de confirmación
- Notificaciones para comandos de larga duración
- Búsqueda fuzzy en el historial con un overlay rico en Ctrl+R
- Sugerencias fantasma inline desde archivos de historial
- Detección inteligente de errores con acciones de corrección rápida
- Traducción de lenguaje natural a comandos
- Explicación de comandos y resumen de output por IA
- Agrupación de output basada en bloques con secciones colapsables
- Panel de configuración de funciones inteligentes y pruebas de integración
Después vinieron las correcciones de CI/CD. Hacer que Tauri compile y firme en macOS, Linux y Windows a través de GitHub Actions es toda una aventura. Scripts de instalación para las tres plataformas también.
Lo Que Obtuve#

Es un terminal de verdad. Esto no es una simulación. Usa el crate portable-pty de Rust para lanzar sesiones de shell reales. Bash, zsh, fish, lo que tengas configurado. Soporte completo de PTY significa que todo funciona: vim, htop, prompts interactivos, todo.

xterm.js con aceleración WebGL. El renderizado es rápido. Como, notablemente rápido. El scrollback llega hasta 10.000 líneas y no se atraganta. El renderer WebGL hace una diferencia real comparado con el enfoque estándar de canvas.
Pestañas y paneles divididos. Cmd+T para una nueva pestaña, Cmd+D para un split vertical, Cmd+Shift+D para un split horizontal. Puedes renombrar pestañas. La gestión de paneles funciona exactamente como esperarías de un terminal moderno.

Tiene un tour de funciones inteligentes. Cuando abres la app por primera vez, te guía por las funciones inteligentes con un tour guiado.

Esas funciones inteligentes incluyen sugerencias fantasma de tu historial de comandos, búsqueda fuzzy en el historial con Ctrl+R, avisos de comandos peligrosos para cosas como rm -rf o git push --force, y traducción de lenguaje natural a comandos.




Un panel de configuración completo. Familia de fuente, tamaño de fuente, estilo de cursor, temas de colores. Viene con Dracula, Solarized, Monokai y más. Puedes configurar blur de fondo, transparencia y argumentos de shell.

Búsqueda de comandos en el scrollback. Ctrl+F abre un overlay de búsqueda que te permite buscar en tu historial del terminal con coincidencia fuzzy.

Agrupación de output basada en bloques. Los outputs largos de comandos se agrupan en bloques colapsables. Hay un botón “Resumir output” para cuando un comando escupe 2.000 líneas y solo quieres lo esencial.

Corre pico. Corre vim. Corre todo lo que un terminal debería correr, porque es un terminal.

Hasta corre el asistente de IA de Docker. Las aplicaciones TUI interactivas completas funcionan sin problemas.


Corre Claude Code dentro de él. Usé el terminal para correr Claude Code para construir más funciones para el terminal. Eso se sintió como un tipo muy específico de inception.

Instálalo#
Esta es una app nativa, no un sitio web. Nada de deployment en Vercel aquí. Puedes descargar la última release desde la página de releases de GitHub, o usar los scripts de instalación:
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/nunocoracao/Vibe30-day27-terminal/main/install.sh | bash# Windows (PowerShell)
irm https://raw.githubusercontent.com/nunocoracao/Vibe30-day27-terminal/main/install.ps1 | iexO compila desde el código fuente si quieres:
git clone https://github.com/nunocoracao/Vibe30-day27-terminal.git
cd Vibe30-day27-terminal
npm install
npm run tauri devRequiere Rust 1.77.2+ y Node.js 20+.
Los Números#
- 19 tareas en Watchfire desde la estructura inicial hasta la integración de funciones inteligentes
- Tauri 2 + backend en Rust con portable-pty para sesiones de shell reales
- xterm.js con WebGL para renderizado rápido
- 6+ temas de colores incluyendo Dracula, Solarized y Monokai
- Pipeline de CI/CD con GitHub Actions compilando para macOS, Linux y Windows
- Scripts de instalación para las tres plataformas
Veredicto del Día 27#
Un emulador de terminal toca tantas capas. Gestión de PTY en Rust. IPC entre el backend en Rust y el frontend en JavaScript a través de Tauri. Renderizado WebGL para rendimiento. Builds multiplataforma y firma de código a través de CI/CD. Scripts de instalación que detectan tu SO y arquitectura.
Y luego, encima de todo eso, añadió funciones inteligentes. Sugerencias fantasma, búsqueda fuzzy, avisos de comandos peligrosos, integración con IA. Esto no son trucos. Los avisos de comandos peligrosos me resultaron genuinamente útiles cuando accidentalmente escribí algo destructivo durante las pruebas.
El hecho de que esto funcione es impresionante. El hecho de que funcione lo suficientemente bien como para que lo usara para correr Claude Code para construir más funciones de sí mismo es otra cosa completamente diferente. No voy a reemplazar iTerm con él mañana, pero la distancia entre “terminal vibe coded” y “terminal de producción” es más pequeña de lo que esperaba.
Día 27 de 30. Quedan tres más.
Este es el día 27 de 30 Días de Vibe Coding. Sígueme mientras lanzo 30 proyectos en 30 días usando programación asistida por IA.






