Process Manager Architecture: Decoupled ChildStdin mutex management from child.wait().
take() stdin at spawn and store ChildStdin in an independent stdins map.
Run child.wait() with a kill_rx oneshot channel in tokio::select!.
Fixes the deadlock where send_stdin and kill were blocked while chartread is waiting for calibration/interactive input.
Prevents premature closing of stdin on process spawn.
Version Bump: Bumped to v0.2.1 across package.json, Cargo.toml, tauri.conf.json, README.md, and ROADMAP.md.
## Summary of Changes
- **Process Manager Architecture**: Decoupled `ChildStdin` mutex management from `child.wait()`.
- `take()` stdin at spawn and store `ChildStdin` in an independent `stdins` map.
- Run `child.wait()` with a `kill_rx` oneshot channel in `tokio::select!`.
- Fixes the deadlock where `send_stdin` and `kill` were blocked while `chartread` is waiting for calibration/interactive input.
- Prevents premature closing of stdin on process spawn.
- **Version Bump**: Bumped to `v0.2.1` across `package.json`, `Cargo.toml`, `tauri.conf.json`, `README.md`, and `ROADMAP.md`.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary of Changes
ChildStdinmutex management fromchild.wait().take()stdin at spawn and storeChildStdinin an independentstdinsmap.child.wait()with akill_rxoneshot channel intokio::select!.send_stdinandkillwere blocked whilechartreadis waiting for calibration/interactive input.v0.2.1acrosspackage.json,Cargo.toml,tauri.conf.json,README.md, andROADMAP.md.