Scope
Currently every spawned tokio task that shells out (xcrun, adb, flutter) calls .stdin(Stdio::null()) individually. A few new code paths are missing it (grep for Command::new without .stdin). When missing, key strokes can leak into the child stdin and corrupt the TTY state.
What to do
grep -n "Command::new" crates/ and find call sites without .stdin(Stdio::null()).
- Add
.stdin(Stdio::null()) where the child does not legitimately need stdin (i.e. everywhere except the flutter daemon spawn that uses stdin for hot reload).
- Add a
clippy::missing_const_for_fn-style lint? Probably not — too noisy. Just be diligent.
Acceptance
Scope
Currently every spawned tokio task that shells out (xcrun, adb, flutter) calls
.stdin(Stdio::null())individually. A few new code paths are missing it (grep forCommand::newwithout.stdin). When missing, key strokes can leak into the child stdin and corrupt the TTY state.What to do
grep -n "Command::new" crates/and find call sites without.stdin(Stdio::null())..stdin(Stdio::null())where the child does not legitimately need stdin (i.e. everywhere except the flutter daemon spawn that uses stdin for hot reload).clippy::missing_const_for_fn-style lint? Probably not — too noisy. Just be diligent.Acceptance
Command::newincrates/fl-cli/src/multi.rsis missing a.stdin(...)call.