dd1194eb73
shutdown() force-killed the dev child with SIGKILL after a 2000ms wait but
never asked it to stop first. The dev (parent) process receives SIGINT/SIGTERM
directly, but the child is a plain spawn with no shared signal, so it never saw
the parent's signal — waitForExit blocked the full 2000ms, then SIGKILL
(uncatchable) skipped the child runtime's teardown (restore cursor, leave the
alternate screen, disable kitty keyboard, restore raw mode). Result: a 2s hang
on every clean shutdown plus a corrupted terminal afterward.
Send child.kill("SIGTERM") before awaiting exit, mirroring restart(), so a
well-behaved child exits gracefully and SIGKILL only escalates on a hang.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vue-tui/cli
Early stage — under active development. Bug reports welcome, but not recommended for production use yet.
Development server for vue-tui — Vite-powered HMR for Vue 3 terminal apps.
Why
- Terminal HMR — edit a
.vuefile, see the terminal update instantly - Works with your Vite config — just run
vue-tui devin a project withindex.htmland your existing Vite plugins - Crash recovery — auto-restarts the process after a crash
Built on Vite's bundledDev mode. Bundles your vue-tui app into a single Node.js process with hot module replacement — the same edit-save-see loop you get with Vite on the web, but for TUI development.
Install
npm install -D @vue-tui/cli
Usage
vue-tui dev
Starts a Vite dev server in bundledDev mode, builds your app, and runs it in a managed child process. Most file changes are applied via HMR; changes that require a full reload restart the process automatically.
package.json script
{
"scripts": {
"dev": "vue-tui dev"
}
}
Links
- vue-tui — monorepo root
@vue-tui/runtime— the core framework@vue-tui/testing— test harness for terminal components
License
MIT