fix(cli): odd osc sequences after killing vp run with ctrl-c#2079
Merged
Conversation
✅ Deploy Preview for viteplus-preview canceled.
|
Contributor
There was a problem hiding this comment.
Pull request overview
This PR addresses issue #2036 where terminating vp run with Ctrl+C can leave stray terminal escape sequences in fish by ensuring the global CLI doesn’t handle SIGINT itself while a delegated JS child is still shutting down, and by restoring terminal state around child execution. It also adds a CLI snapshot fixture and new vpt helpers to reproduce/assert Ctrl+C teardown behavior.
Changes:
- Use
vite_command::execute_with_terminal_guardfor JS CLI delegation so terminal state is restored and SIGINT is ignored in the parent while the child exits. - Extend
TerminalStateGuardto temporarily ignore SIGINT (Unix) and restore the prior signal disposition on drop. - Add a new snapshot fixture plus
vpt report-orphan-on-ctrlcandvpt wait-fileto validate Ctrl+C teardown timing.
Reviewed changes
Copilot reviewed 11 out of 12 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| crates/vite_global_cli/src/js_executor.rs | Switches JS delegation to execute_with_terminal_guard so Ctrl+C doesn’t tear down the parent before the JS child exits. |
| crates/vite_command/src/lib.rs | Enhances terminal guard to ignore SIGINT for the parent while waiting, restoring prior signal disposition afterward. |
| crates/vite_command/Cargo.toml | Enables nix signal feature for Unix builds. |
| crates/vite_cli_snapshots/tests/cli_snapshots/README.md | Documents new vpt subcommands used by snapshot fixtures. |
| crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/run_ctrlc_teardown/snapshots/run_ctrlc_exits_before_task_shutdown.md | Adds a snapshot case capturing Ctrl+C teardown behavior (expected output needs to reflect fixed behavior). |
| crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/run_ctrlc_teardown/snapshots.toml | Registers the new snapshot case and its steps. |
| crates/vite_cli_snapshots/tests/cli_snapshots/fixtures/run_ctrlc_teardown/package.json | Adds a fixture script used by vp run dev in the snapshot. |
| crates/vite_cli_snapshots/src/bin/vpt/wait_file.rs | Adds vpt wait-file utility to poll for and print async-written files. |
| crates/vite_cli_snapshots/src/bin/vpt/report_orphan_on_ctrlc.rs | Adds a Unix-only helper to detect whether graceful shutdown completed after Ctrl+C. |
| crates/vite_cli_snapshots/src/bin/vpt/main.rs | Wires new vpt subcommands into the multitool binary. |
| crates/vite_cli_snapshots/Cargo.toml | Adds Unix-only nix deps needed by the new vpt helper. |
| Cargo.lock | Records the new nix dependency usage for the snapshots crate. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
fengmk2
approved these changes
Jul 7, 2026
wan9chi
added a commit
that referenced
this pull request
Jul 7, 2026
…xes (#2081) Release vite-plus v0.2.3: config extraction, create, and `vp run` reliability fixes. A patch release that restores static config extraction for projects importing `defineConfig` from `vite`, fixes `vp create` for org templates on registries that strip custom package fields, cleans up terminal output after Ctrl-C during `vp run`, and updates bundled Vite to 8.1.3. ### Highlights - **Custom `VP_HOME` is honored on every run**: the global `vp` now respects a user-set `VP_HOME` for its home directory instead of falling back to `~/.vite-plus`, and persists it in the generated env files, so a custom install location no longer produces multiple instances or unusable packages ([#2029](#2029)), by @liangmiQwQ ### Features - Upgrade bundled Vite from `8.1.2` to `8.1.3` (inlined CSS after the shebang line, CSS preload for nested dynamic imports, SSR stacktrace column fix) ([#2042](#2042)), by @voidzero-guard[bot] ### Fixes & Enhancements - `vp run` no longer misreads a `vite.config.ts` when its `defineConfig` comes from a preset or a custom wrapper instead of `vite-plus` or `vite`. Such configs are now evaluated at runtime rather than assumed to be Vite+'s own, so projects that use them no longer wrongly report `Task "build" not found` ([#2060](#2060), [#2075](#2075)), by @liangmiQwQ and @fengmk2 - Killing a `vp run` task with Ctrl-C no longer leaves odd OSC escape sequences in the terminal; `vp` defers its own Ctrl-C handling until the child process exits ([#2079](#2079)), by @forehalo - `vp migrate`: rewriting a `package.json` prettier script now emits a single `--check`, so scripts that combined `--check` with `--list-different` / `-l` / `-c` no longer produce a duplicated `vp fmt --check --check` ([#2044](#2044)), by @shulaoda - `vp create @org:name`: read the org template catalog (`createConfig`) from the published tarball when the registry (e.g. GitHub Packages) strips custom fields from packument metadata ([#2063](#2063)), by @hiro-daikin - `vp run`: missing env vars requested through `@voidzero-dev/vite-task-client` now return `undefined` instead of `null`, preserving Vite production `NODE_ENV` semantics when builds run through `vp run` ([vite-task#508](voidzero-dev/vite-task#508), via [#2076](#2076)), by @wan9chi ### Refactor - `static_config`: drop the unreachable `vite.config.json` branch ([#2045](#2045)), and remove unused exported CLI helpers ([#2046](#2046)), by @shulaoda ### Docs - Update the announcement links and callout for the beta release ([#2027](#2027)), remove the stale `Dockerfile.alpine` comment ([#2068](#2068)), by @fengmk2 - Add the missing `pnpm-workspace.yaml` to the docs Dockerfile ([#2059](#2059)), by @wan-kong - Refresh the root agent guide ([#2072](#2072)), by @jong-kyung ### Chore - Cross-compile Windows tests and CLI binaries on Linux with cargo-xwin ([#1824](#1824)), install local vite-plus builds through a local npm registry ([#2021](#2021)), fast docs format check for docs-only PRs ([#2028](#2028)), pack local dirs for the registry bridge instead of pkg.pr.new ([#2038](#2038)), remove the stale create workflow updater ([#2061](#2061)), and add PTY-based interactive CLI snapshot tests ([#2052](#2052)), by @fengmk2 - Cache `vp run` output for docs builds ([#2006](#2006)), by @wan9chi - Remove legacy completion cleanup ([#2050](#2050)), by @nekomoyi - Update the crate-ci/typos action ([#2039](#2039)) and GitHub Actions ([#2055](#2055), [#1905](#1905)), by @renovate[bot] - Refresh the Node.js release keyring ([#2058](#2058)) and the docs trusted-stack stats ([#2064](#2064)), by @voidzero-guard[bot] ### Bundled Versions | Tool | Version | Source | | --- | --- | --- | | vite | `8.1.3` | [`578ffb8`](vitejs/vite@578ffb8) | | rolldown | `1.1.4` | [`6cbd233`](rolldown/rolldown@6cbd233) | | tsdown | `0.22.3` | [npm](https://npmx.dev/package/tsdown/v/0.22.3) | | vitest | `4.1.9` | [npm](https://npmx.dev/package/vitest/v/4.1.9) | | oxlint | `1.72.0` | [npm](https://npmx.dev/package/oxlint/v/1.72.0) | | oxlint-tsgolint | `0.24.0` | [npm](https://npmx.dev/package/oxlint-tsgolint/v/0.24.0) | | oxfmt | `0.57.0` | [npm](https://npmx.dev/package/oxfmt/v/0.57.0) | ### Upgrade ```bash vp upgrade ``` ### New Contributors @wan-kong and @hiro-daikin made their first contributions. **Full Changelog**: v0.2.2...v0.2.3 --- Merging this PR will trigger the release workflow. --------- Co-authored-by: voidzero-guard[bot] <278573678+voidzero-guard[bot]@users.noreply.github.com> Co-authored-by: wan9chi <dk4rest@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
close #2036
the fix ignores the listening on
ctrl-cbyvpitself until child process exits.