Files
vue-tui/packages/cli
Yunfei He dd1194eb73 fix(cli): send SIGTERM before SIGKILL in shutdown() (#170)
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>
2026-06-14 19:07:40 +08:00
..

@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.

npm version npm downloads

Why

  • Terminal HMR — edit a .vue file, see the terminal update instantly
  • Works with your Vite config — just run vue-tui dev in a project with index.html and 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"
  }
}

License

MIT