Skip to content

dsh-win32 v0.7.0

Choose a tag to compare

@sjh9714 sjh9714 released this 16 Aug 03:32
· 28 commits to master since this release

Foreground resolution is real now, contributed by @hili986 in #9 after their analysis in #7.

foregroundPgid returned undefined before, which looked like an honest degradation but silently defeated terminal-bash's completion detector. Its shell-vs-child discriminator compares the foreground pid against the shell pid, and undefined === undefined passes without discriminating anything, leaving prompt markers and silence as the only signals. Upstream's own comment notes the prompt marker is ambiguous by design since a child inherits PROMPT_COMMAND.

The win32 mapping is ConPTY's console process list, read through a one-shot helper because a process can attach to only one console. Parent links cannot substitute. MSYS fork emulation severs the chain, measured with a Git Bash PTY running sleep 20 that reports no direct children while the console list still shows the sleep. Cost is ~81ms against ~904ms for a CIM enumeration, and the single-candidate path takes no snapshot at all.

isStdinWaiting stays false on purpose. Windows has no reliable console-read-block probe and claiming a wait that is not happening would settle a still-running command. Undefined remains the fallback for every failure, so the previous behavior is the floor rather than a guess.

One reachability change. SIGTERM and SIGKILL against a foreground command now resolve and tree-kill it instead of throwing. SIGKILL against an idle shell still hits upstream's refusal guard, which works because v0.6.0 made the pty pid the real shell rather than the Git wrapper.

Also in this release. A new foreground smoke runs in CI on every push, the adoption doc records the mapping for deepseek-harness#1889, and the README gained a section for preset authors after a user in #6 found that a preset without an explicit shellPath hits the System32 WSL launcher on Windows.

41 unit tests, full matrix green.