Giorno 27. Mancano quattro giorni. È ora di smettere di giocare sul sicuro.
L’ultimo tratto di questa challenge è dove voglio spingermi verso cose che probabilmente non dovrebbero funzionare in un solo giorno. Un emulatore di terminale è una di quelle cose. Non un giocattolino web che finge di essere un terminale. Una vera app desktop nativa che lancia sessioni shell reali, fa rendering a 60fps e gestisce tutto, da vim a htop.
Il Prompt#
“Costruisci un emulatore di terminale usando Tauri 2 e Rust”
Questa era la richiesta base. Tutto il resto è venuto dall’iterazione.
Come è stato costruito#
Questo è stato un bel pezzo. Watchfire ha suddiviso il lavoro in 19 task, e ne serviva ogni singolo. Costruire un emulatore di terminale non è banale. C’è la gestione dei PTY, l’integrazione shell, la gestione degli input, le performance di rendering e una dozzina di altre cose a cui non avrei mai pensato.
La lista dei task era più o meno così:
- Impostare un progetto Tauri 2 + Vite con supporto PTY di base
- Tab multipli con apertura, chiusura e rinominazione
- Pannelli divisi, orizzontali e verticali
- Pannello impostazioni con temi, font e configurazione shell
- Polish UI, scrollback e fix shell
- GitHub Actions per release automatizzate
- Suggerimenti comandi IA inline
- Polish visuale per trasparenza, sfocatura e chrome della finestra
- Link cliccabili e rilevamento intelligente nell’output del terminale
- Profili shell e azioni rapide
- Avvisi per comandi pericolosi con dialoghi di conferma
- Notifiche per comandi di lunga durata
- Ricerca fuzzy nella cronologia con un overlay ricco Ctrl+R
- Suggerimenti fantasma inline dai file di cronologia
- Rilevamento intelligente degli errori con azioni di fix rapido
- Traduzione dal linguaggio naturale ai comandi
- Spiegazione dei comandi e riassunto IA dell’output
- Raggruppamento dell’output in blocchi con sezioni richiudibili
- Pannello impostazioni funzionalità intelligenti e test di integrazione
Poi sono arrivati i fix CI/CD. Far compilare e firmare Tauri su macOS, Linux e Windows tramite GitHub Actions è un’avventura a sé. Più gli script di installazione per tutte e tre le piattaforme.
Cosa ho ottenuto#

È un vero terminale. Questa non è una simulazione. Usa il crate portable-pty di Rust per lanciare sessioni shell reali. Bash, zsh, fish, qualsiasi cosa abbiate configurato. Il supporto PTY completo significa che funziona tutto: vim, htop, prompt interattivi, tutto quanto.

xterm.js con accelerazione WebGL. Il rendering è veloce. Tipo, notevolmente veloce. Lo scrollback arriva fino a 10.000 righe e non si impalla. Il renderer WebGL fa una differenza reale rispetto all’approccio canvas standard.
Tab e pannelli divisi. Cmd+T per un nuovo tab, Cmd+D per una divisione verticale, Cmd+Shift+D per una divisione orizzontale. Potete rinominare i tab. La gestione dei pannelli funziona esattamente come vi aspettereste da un terminale moderno.

Ha un tour delle funzionalità intelligenti. Quando aprite l’app per la prima volta, vi guida attraverso le funzionalità intelligenti con un tour guidato.

Queste funzionalità intelligenti includono suggerimenti fantasma dalla cronologia dei comandi, ricerca fuzzy nella cronologia con Ctrl+R, avvisi per comandi pericolosi come rm -rf o git push --force, e traduzione dal linguaggio naturale ai comandi.




Un pannello impostazioni completo. Famiglia di font, dimensione font, stile cursore, temi colori. Viene fornito con Dracula, Solarized, Monokai e altri. Potete configurare la sfocatura dello sfondo, la trasparenza e gli argomenti shell.

Ricerca comandi nello scrollback. Ctrl+F apre un overlay di ricerca che vi permette di cercare nella cronologia del terminale con corrispondenza fuzzy.

Raggruppamento dell’output in blocchi. Gli output lunghi dei comandi vengono raggruppati in blocchi richiudibili. C’è un pulsante “Riassumi output” per quando un comando sputa fuori 2.000 righe e volete solo il succo.

Fa girare pico. Fa girare vim. Fa girare tutto quello che un terminale dovrebbe far girare, perché è un terminale.

Fa girare persino l’assistente IA di Docker. Le applicazioni TUI interattive complete funzionano senza problemi.


Fa girare Claude Code al suo interno. Ho usato il terminale per lanciare Claude Code per costruire altre funzionalità per il terminale. Mi è sembrato un tipo molto specifico di inception.

Installalo#
Questa è un’app nativa, non un sito web. Niente deploy su Vercel qui. Potete prendere l’ultima release dalla pagina delle release su GitHub, oppure usare gli script di installazione:
# 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 | iexOppure compilate dai sorgenti se volete:
git clone https://github.com/nunocoracao/Vibe30-day27-terminal.git
cd Vibe30-day27-terminal
npm install
npm run tauri devRichiede Rust 1.77.2+ e Node.js 20+.
I numeri#
- 19 task Watchfire dallo scaffold all’integrazione delle funzionalità intelligenti
- Backend Tauri 2 + Rust con portable-pty per sessioni shell reali
- xterm.js con WebGL per un rendering veloce
- 6+ temi colori inclusi Dracula, Solarized e Monokai
- Pipeline CI/CD con GitHub Actions che compila per macOS, Linux e Windows
- Script di installazione per tutte e tre le piattaforme
Verdetto del Giorno 27#
Un emulatore di terminale tocca così tanti livelli. Gestione PTY in Rust. IPC tra il backend Rust e il frontend JavaScript tramite Tauri. Rendering WebGL per le performance. Build multi-piattaforma e firma del codice tramite CI/CD. Script di installazione che rilevano il vostro OS e la vostra architettura.
E sopra tutto questo, ha aggiunto funzionalità intelligenti. Suggerimenti fantasma, ricerca fuzzy, avvisi per comandi pericolosi, integrazione IA. Non sono trovate. Ho trovato gli avvisi per comandi pericolosi davvero utili quando ho accidentalmente digitato qualcosa di distruttivo durante i test.
Il fatto che funzioni è già impressionante. Il fatto che funzioni abbastanza bene da usarlo davvero per lanciare Claude Code per costruire ancora più funzionalità proprie, è tutta un’altra storia. Non sostituirò iTerm con questo domani, ma il divario tra “terminale vibe codato” e “terminale di produzione” è più piccolo di quanto mi aspettassi.
Giorno 27 di 30. Ne mancano tre.
Questo è il giorno 27 di 30 Days of Vibe Coding. Segui l’avventura mentre consegno 30 progetti in 30 giorni usando coding assistito dall’IA.






