Skip to content

v2.2.0 — the readable seat

Choose a tag to compare

@B1ueMu3ic4m B1ueMu3ic4m released this 01 Oct 16:38
· 50 commits to main since this release
63a290f

Patch-grade fix, minor-grade confidence: the local-seat transcript stays readable.

The asymmetry this closes

tmux seats capture via tmux capture-pane -p — escape sequences stripped by construction. Local pipe seats (v2.0.0) streamed the process's RAW stdout/stderr. An interactive claude REPL speaks ANSI: SGR colors, spinner frames redrawn via CR, OSC window titles. Those bytes were being appended verbatim into the per-seat transcript — escape garbage on exactly the seats Windows users start.

The fix

ANSIStreamNormalizer at the transcript door:

  • reuses the cursor-aware normalizer the preflight matchers already trust (CR overwrites, BS, CSI-K erases, OSC stripped; \n/\t kept, other control bytes dropped)
  • carries a trailing PARTIAL escape sequence across chunk boundaries — a CSI split by a pipe read degrades into nothing, not garbage
  • flushes the carry exactly once at end-of-stream

Test: a real seat ECHOING an ANSI-wrapped marker: the marker survives, the transcript contains zero ESC bytes.

macOS app: unzip, drag to Applications. Windows shell unchanged (this is core-side); its v2.1.0 build remains current.