From 3cfa543513c5b7d61c22804e35b01f3e12cf2076 Mon Sep 17 00:00:00 2001 From: James Ross Date: Sun, 19 Jul 2026 01:48:08 -0700 Subject: [PATCH 1/2] release: v3.2.0 --- CHANGELOG.md | 14 ++++++++++++++ package.json | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 827666c..fb7e72b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,20 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [3.2.0] - 2026-07-19 + +### Added + +- **Persistent Git Protocol Sessions**: Added bounded, backpressured sessions + for `git cat-file --batch`, `git mktree --batch -z`, and `git fast-import`. +- **Cross-Runtime Duplex Port**: Added an optional session runner contract for + Node.js, Bun, Deno, and custom runners while preserving one-shot execution. + +### Fixed + +- **Session Contract Validation**: Normalized validation and process failures, + bounded stderr collection, and hardened close, timeout, and poison behavior. + ## [3.1.0] - 2026-07-13 ### Added diff --git a/package.json b/package.json index a746234..dd920e8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@git-stunts/plumbing", - "version": "3.1.0", + "version": "3.2.0", "description": "Robust async, stream-first Git plumbing for Node, Bun, and Deno.", "type": "module", "main": "index.js", From e5cedb896b5e638d5cbd53edf9ba0c434cca25bd Mon Sep 17 00:00:00 2001 From: James Ross Date: Sun, 19 Jul 2026 01:53:41 -0700 Subject: [PATCH 2/2] fix: normalize Deno timeout completion --- src/infrastructure/adapters/deno/DenoShellRunner.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/infrastructure/adapters/deno/DenoShellRunner.js b/src/infrastructure/adapters/deno/DenoShellRunner.js index 9bf349c..6d2bf45 100644 --- a/src/infrastructure/adapters/deno/DenoShellRunner.js +++ b/src/infrastructure/adapters/deno/DenoShellRunner.js @@ -70,7 +70,7 @@ export default class DenoShellRunner { } } return { - code: processError !== null && status.code === 0 ? 1 : status.code, + code: status.code === 0 && (processError !== null || timedOut) ? 1 : status.code, error: processError, signal: status.signal, stderr: await stderrPromise,