Repository navigation
fix(watch): exit quietly when watchexec is interrupted with Ctrl+C - #14541
Conversation
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Entire-Checkpoint: 01M52GB953DCG0BQH08CZ5H0AV
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 3 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
[Medium impact] The PR appears safe to merge. Summary
Reviews (1) · Last reviewed commit: "fix(watch): exit quietly when watchexec ..." · Reviewed by Greptile |
Instruction counts
No instruction-count regression above 1%. Only instruction counts gate. Wall clock is shown for context — on identical hardware it moves 4-20% run to run. Measured by tak — instruction-counted CLI benchmarks, stored in this repository's git notes.
|
<!-- entire-trail-link-start --> https://entire.io/gh/jdx/mise/trails/781 <!-- entire-trail-link-end --> ### 🚀 Features - **(bootstrap)** template repo url and ref, add clone options by @jdx in [#14548](#14548) - **(ls-remote)** list every version range of a registry tool by @jdx in [#14544](#14544) - **(registry)** let one backend carry different options per version range by @jdx in [#14543](#14543) - **(vfox)** allow a headers table in the PreInstall result by @jdx in [#14531](#14531) ### 🐛 Bug Fixes - **(ci)** install zipsign with --locked by @fang2hou in [#14551](#14551) - **(github)** install each version with its own request options by @JamBalaya56562 in [#14537](#14537) - **(hooks)** run task hooks with mise instead of the initiating tool shim by @jdx in [#14550](#14550) - **(install)** keep lockfile resolution when a linked version doesn't match the request by @jdx in [#14539](#14539) - **(java)** skip the catalog fetch when installing a locked build by @jdx in [#14534](#14534) - **(lock)** keep other platforms' option variants when mise link rewrites mise.lock by @jdx in [#14519](#14519) - **(ruby)** lock windows platforms when running mise lock on Windows by @jdx in [#14520](#14520) - **(ruby)** lock linux and macos platforms when running mise lock on Windows by @jdx in [#14529](#14529) - **(rust)** restore the components a toolchain's profile requires by @JamBalaya56562 in [#14525](#14525) - **(shim)** keep task lazy tool shims when a task installs another tool by @jdx in [#14533](#14533) - **(task)** avoid deadlock when parallel tasks install the same tool by @jdx in [#14536](#14536) - **(watch)** exit quietly when watchexec is interrupted with Ctrl+C by @jdx in [#14541](#14541) ### 📚 Documentation - say OpenTelemetry export and spinel installs need experimental by @ZainnQureshii in [#14552](#14552) ###◀️ Revert - Revert "chore(deps): pin zipsign-api to 0.2.1" by @jdx in [baafe33](baafe33) ### 📦️ Dependency Updates - pin zipsign-api to 0.2.1 by @jdx in [6d1bd25](6d1bd25) - rerun providers when mise recreates the venv by @halms in [#14532](#14532) ### 📦 Registry - prefer signed xcsift releases and enable Linux by @jdx in [#14540](#14540) - install protoc-gen-connect-go v2 from its /v2 module path by @jdx in [#14545](#14545) ### Chore - **(release)** pin zipsign install to 0.2.1 by @jdx in [d5ef6f9](d5ef6f9) ### Security - **(config)** ignore [settings] from untrusted project configs by @jdx in [#14538](#14538) ### New Contributors - @ZainnQureshii made their first contribution in [#14552](#14552) - @fang2hou made their first contribution in [#14551](#14551)
https://entire.io/gh/jdx/mise/trails/790
Pressing Ctrl+C twice in
mise watchno longer ends with an error banner. With watchexec 2.8.0 the second Ctrl+C makes watchexec exit with status 130 (128 + SIGINT), and mise reported that as a failure:Now
mise watchtreats watchexec ending with exit status 130, or being killed by SIGINT, as the user interrupting it: it prints nothing and exits with 130. Any other non-zero status from watchexec is still an error, and a SIGTERM is not mistaken for Ctrl+C.Reported in discussion #8269.
Validation
cargo clippy --workspace --all-targets -- -D warningsis clean.🤖 Generated with Claude Code
AI-assisted — Tool: Claude Code; model: anthropic/claude-sonnet-5-5; version: claude-code_2-1-299_agent.
Note
Low Risk
Narrow change to
mise watchexit-status handling and UX; no auth, data, or security-sensitive paths.Overview
mise watchno longer prints an error when watchexec stops because the user hit Ctrl+C (including watchexec 2.8’s exit code 130 after a second interrupt).Watchexec is run with
unchecked()so mise can read the exit status. A newinterrupted_exit_codehelper treats exit 130 and Unix SIGINT as a user interrupt and exits viarequest_exit(130)without the failure banner; other non-zero exits still fail withbail!, and SIGTERM is not treated as Ctrl+C. A Unix unit test covers the status classification.Reviewed by Cursor Bugbot for commit 169aa27. Bugbot is set up for automated code reviews on this repo. Configure here.