From af61c4bc8ded319afcdd21f9123589ca32c8322f Mon Sep 17 00:00:00 2001 From: soroshsabz Date: Sat, 7 Nov 2026 02:30:41 +0330 Subject: [PATCH] Release Bsn.Host 0.2.1 (bug fixes for issues #5-#8) Version bump + changelog + gallery release notes for the first published release of the recording-integrity fixes: - #5: persistent UTF-8 decoders survive chunk boundaries - #6: incremental flush keeps casts valid on abnormal exit - #7: -Command wrapped in pwsh -EncodedCommand (no cmd.exe mangling) - #8: terminating error when both stdin and stdout are redirected Note: Bsn.Host 0.2.0 was never published - the v0.2.0 release tag predates this module's version bump, so the idempotent Publish task skipped it (gallery still had 0.1.0). 0.2.1 aligns the module version with the release tag that will carry it. --- CHANGELOG.md | 32 ++++++++++++++++++++++++++++++++ src/Bsn.Host/Bsn.Host.psd1 | 4 ++-- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ca3698..c425138 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,38 @@ All notable changes to the modules in this repository are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the modules adhere to [Semantic Versioning](https://semver.org/). +## [Bsn.Host 0.2.1] - 2026-11-07 + +### Fixed + +- Cast recordings no longer corrupt multi-byte UTF-8 characters at + 4096-byte chunk boundaries: the ConPTY engine and the Unix converter + keep persistent `System.Text.Decoder` instances for the output and + input streams, so multi-byte sequences split across reads decode + correctly (verified with an oh-my-posh nerd-font prompt stress test: + zero U+FFFD in the cast). + [#5](https://github.com/BSVN/Lmt.Commons/issues/5) +- Cast files are written with incremental flushes (AutoFlush in the + ConPTY CastWriter; header + per-event flush in the converter), so a + recording whose process dies abnormally still leaves a valid, + playable cast instead of losing the header and tail to stream + buffering. [#6](https://github.com/BSVN/Lmt.Commons/issues/6) +- `Start-InteractiveTranscript -Command` values containing pipes, + quotes and other shell metacharacters are no longer mangled: the + command is wrapped in `pwsh -EncodedCommand` (Base64) instead of + `cmd.exe /d /c`. [#7](https://github.com/BSVN/Lmt.Commons/issues/7) +- Starting a recording from a host with BOTH stdin and stdout + redirected (CI, scripted harnesses) is now a terminating error with + guidance instead of silently producing an empty cast that reports + success. [#8](https://github.com/BSVN/Lmt.Commons/issues/8) + +### Notes + +- Bsn.Host 0.2.0 was never published to the PowerShell Gallery: the + v0.2.0 release tag predates this module's version bump, so the + idempotent Publish task correctly skipped it. 0.2.1 is the first + gallery release containing the fixes above. + ## [Bsn.SystemManagement 0.2.0] - 2026-11-06 ### Changed diff --git a/src/Bsn.Host/Bsn.Host.psd1 b/src/Bsn.Host/Bsn.Host.psd1 index 5de47fb..1caf669 100644 --- a/src/Bsn.Host/Bsn.Host.psd1 +++ b/src/Bsn.Host/Bsn.Host.psd1 @@ -1,6 +1,6 @@ @{ RootModule = 'Bsn.Host.psm1' - ModuleVersion = '0.2.0' + ModuleVersion = '0.2.1' GUID = '9d84a7b8-1f2b-4d60-a4bd-3d7ef1d9f337' Author = 'BSVN' CompanyName = 'BSVN' @@ -22,7 +22,7 @@ Tags = @('BSVN', 'Lmt', 'Host', 'Transcript', 'Recording', 'Terminal', 'Session', 'Asciicast', 'Asciinema', 'TUI', 'Audit', 'Screencast') LicenseUri = 'https://github.com/BSVN/Lmt.Commons/blob/main/LICENSE' ProjectUri = 'https://github.com/BSVN/Lmt.Commons' - ReleaseNotes = 'Initial release: Start-InteractiveTranscript records interactive terminal sessions (including full-screen TUI applications) to replayable asciicast v2 files; Stop-InteractiveTranscript stops a running recording; Show-InteractiveTranscript plays recordings back in the console.' + ReleaseNotes = 'Bug fix release: multi-byte UTF-8 survives chunk boundaries during recording; cast files stay valid when the recording process dies (incremental flush); -Command values round-trip safely through pwsh -EncodedCommand instead of cmd.exe; recording from a host with both stdin and stdout redirected is now a terminating error instead of an empty cast. Fixes issues #5, #6, #7 and #8.' } } }