Skip to content

v0.13.0

Choose a tag to compare

@db-lyon db-lyon released this 06 Aug 22:53
· 33 commits to main since this release

Run-scoped shell task cancellation

ShellTask accepts an optional AbortSignal so a single programmatic invocation can be cancelled.

const controller = new AbortController();
const result = await new ShellTask({}, {
  command: 'npm run build',
  signal: controller.signal,
}).run();

controller.abort();
  • POSIX: signal-bearing invocations run in a dedicated process group. Flowkit sends group SIGTERM, waits 250ms for cooperative cleanup, then escalates to group SIGKILL.
  • Windows: taskkill /T /F on the shell PID, with a three-second bounded deadline before force termination and handle release.
  • A pre-aborted signal returns a failed result without spawning anything.
  • Termination is best-effort. Descendants that escape the managed group or tree are not guaranteed to die.

Because signal-bearing invocations sit in their own process group on POSIX, terminal Ctrl+C no longer reaches them. Cancel through the AbortSignal.

Behavior change — read before upgrading

data.output no longer duplicates a trailing partial line. Previously, output not ending in a newline was appended to the capture buffer twice, so a command emitting hello with no trailing newline returned hellohello. It now returns hello.

This affects any command whose stdout lacks a trailing newline, which includes most printf, --porcelain-style output, and anything read for a single value. If you have code compensating for the duplication, remove it.

resolveReferences now passes objects whose prototype is not Object.prototype through by identity rather than shallow-rebuilding them, so runtime values such as AbortSignal, Date, and class instances survive option interpolation. ${...} references nested inside a class instance are no longer resolved.

Note on this release

The GitHub Actions publish workflow did not run for this version. A major Actions outage on 2026-08-06 dropped the push events for the merge and release commits, so this tag and release were created manually and the npm package was published outside the usual OIDC trusted-publishing flow. This release therefore lacks the provenance attestation present on 0.12.0 and earlier.

Verified before merge on Windows 11 / Node 22 (245 passed) and Linux x86_64 / Node 22 (239 passed, 7 Windows-only skipped).


What's Changed

  • feat: add run-scoped shell task cancellation by @sdbingham in #5

Full Changelog: v0.12.0...v0.13.0