Compare commits

...

4 Commits

Author SHA1 Message Date
d37071dae0 fix(spawn): use detached:true so children are immune to terminal SIGINT
Children now get their own process group. Terminal Ctrl+C only reaches
the parent, which then does orderly tree-kill while children are still
alive and the process tree is intact.
2026-03-04 00:49:29 +00:00
181d352e21 fix(deps): bump smartexit to ^2.0.1 for PID-tracking fix 2026-03-04 00:04:22 +00:00
8a0a18f4da v3.3.3 2026-03-03 23:41:59 +00:00
bdc09afedd fix(deps): upgrade @push.rocks/smartexit to ^2.0.0 2026-03-03 23:41:49 +00:00
3 changed files with 3146 additions and 3654 deletions

View File

@@ -1,7 +1,7 @@
{
"name": "@push.rocks/smartshell",
"private": false,
"version": "3.3.2",
"version": "3.3.5",
"description": "A library for executing shell commands using promises.",
"main": "dist_ts/index.js",
"typings": "dist_ts/index.d.ts",
@@ -33,14 +33,14 @@
},
"homepage": "https://code.foss.global/push.rocks/smartshell",
"devDependencies": {
"@git.zone/tsbuild": "^2.6.4",
"@git.zone/tsrun": "^1.3.3",
"@git.zone/tstest": "^2.3.2",
"@types/node": "^22.10.2"
"@git.zone/tsbuild": "^2.7.3",
"@git.zone/tsrun": "^1.6.2",
"@git.zone/tstest": "^2.8.3",
"@types/node": "^22.19.13"
},
"dependencies": {
"@push.rocks/smartdelay": "^3.0.1",
"@push.rocks/smartexit": "^1.1.1",
"@push.rocks/smartdelay": "^3.0.5",
"@push.rocks/smartexit": "^2.0.1",
"@push.rocks/smartpromise": "^4.2.3",
"@types/which": "^3.0.4",
"tree-kill": "^1.2.2",

6782
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -119,7 +119,7 @@ export class Smartshell {
shell: false, // SECURITY: Never use shell with untrusted input
cwd: process.cwd(),
env: options.env || process.env,
detached: false,
detached: true, // Own process group — immune to terminal SIGINT, managed by smartexit
signal: options.signal,
});
@@ -342,7 +342,7 @@ export class Smartshell {
shell: true,
cwd: process.cwd(),
env: options.env || process.env,
detached: false,
detached: true, // Own process group — immune to terminal SIGINT, managed by smartexit
signal: options.signal,
});