Skip to content

fix(ui): preserve CRLF lines in bang mode output - #4228

Merged
andrinoff merged 1 commit into
charmbracelet:mainfrom
remote-controlled-man:codex/prflow-6cdbd931af20
Nov 9, 2026
Merged

andrinoff merged 1 commit into
charmbracelet:mainfrom
remote-controlled-man:codex/prflow-6cdbd931af20

Conversation

@remote-controlled-man

Copy link
Copy Markdown
Contributor

Fixes #4220.

HTTP header dumps from commands such as curl -D - use CRLF line endings. The bang-mode renderer treated each CR as a cursor reset, clearing the preceding text on each of those lines.

Normalize CRLF in the visible output before stripping terminal controls. When the collapsed preview cuts off a CRLF separator, remove both bytes. Bare carriage returns still overwrite progress text on the same line.

Verification

  • The regression tests exercise CRLF headers in both collapsed and expanded output, including the last visible header in the collapsed preview, and cover a bare carriage return followed by an ANSI erase sequence.
  • On macOS arm64 with Go 1.27.0 and SDK 26.5, go mod tidy leaves the working tree clean. The race build, full race test suite, CI lint command, and log capitalization check pass.

Copilot AI balanced review requested due to automatic review settings November 4, 2026 13:32

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

@charmcli

charmcli commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@remote-controlled-man

Copy link
Copy Markdown
Contributor Author

I have read the Contributor License Agreement (CLA) and hereby sign the CLA.

@andrinoff
andrinoff enabled auto-merge (squash) November 9, 2026 10:42

@andrinoff andrinoff left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

@andrinoff
andrinoff merged commit 9698a7c into charmbracelet:main Nov 9, 2026
14 of 16 checks passed
andikapradanaarif added a commit to andikapradanaarif/crush that referenced this pull request Nov 9, 2026
* chore(legal): @themanyone has signed the CLA

* ci: bump brotli for grype

Signed-off-by: Drew Smirnoff <[email protected]>

* fix: bump snapshots and releases version

Signed-off-by: Drew Smirnoff <[email protected]>

* feat(skill): toggle skills (charmbracelet#3994)

Co-authored-by: Drew Smirnoff <[email protected]>
Signed-off-by: Drew Smirnoff <[email protected]>

* fix(ui): preserve CRLF lines in bang mode output (charmbracelet#4228)

* fix: crush run should not spawn a server if none is running (charmbracelet#4255)

Signed-off-by: Drew Smirnoff <[email protected]>

* chore: use the new charm.land/tone (charmbracelet#4260)

* fix: remove the Alias with hyper email (charmbracelet#4257)

Signed-off-by: Drew Smirnoff <[email protected]>

* feat(ui): Add elapsed time on tool call (charmbracelet#3600)

Co-authored-by: drew <[email protected]>
Co-authored-by: Drew Smirnoff <[email protected]>
Signed-off-by: drew <[email protected]>
Signed-off-by: Drew Smirnoff <[email protected]>

* fix(skills): honor repository overrides in prompts and catalogs

* fix(ui): handle missing options in skill toggle commands

---------

Signed-off-by: Drew Smirnoff <[email protected]>
Signed-off-by: drew <[email protected]>
Co-authored-by: Charm <[email protected]>
Co-authored-by: Drew Smirnoff <[email protected]>
Co-authored-by: Bruno Krugel <[email protected]>
Co-authored-by: Steven Huang <[email protected]>
Co-authored-by: drew <[email protected]>
andikapradanaarif added a commit to andikapradanaarif/crush that referenced this pull request Nov 9, 2026
* chore(legal): @themanyone has signed the CLA

* ci: bump brotli for grype

Signed-off-by: Drew Smirnoff <[email protected]>

* fix: bump snapshots and releases version

Signed-off-by: Drew Smirnoff <[email protected]>

* feat(skill): toggle skills (charmbracelet#3994)

Co-authored-by: Drew Smirnoff <[email protected]>
Signed-off-by: Drew Smirnoff <[email protected]>

* fix(ui): preserve CRLF lines in bang mode output (charmbracelet#4228)

* fix: crush run should not spawn a server if none is running (charmbracelet#4255)

Signed-off-by: Drew Smirnoff <[email protected]>

* chore: use the new charm.land/tone (charmbracelet#4260)

* fix: remove the Alias with hyper email (charmbracelet#4257)

Signed-off-by: Drew Smirnoff <[email protected]>

* feat(ui): Add elapsed time on tool call (charmbracelet#3600)

Co-authored-by: drew <[email protected]>
Co-authored-by: Drew Smirnoff <[email protected]>
Signed-off-by: drew <[email protected]>
Signed-off-by: Drew Smirnoff <[email protected]>

* fix(skills): honor repository overrides in prompts and catalogs

* fix(ui): handle missing options in skill toggle commands

* fix(skills): harden toggle paths against nil options and read failures

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* perf: send gzip-compressed http requests to hyper (charmbracelet#4100)

* Fantasy PR: charmbracelet/fantasy#425

Hyper now inflates gzip request bodies, so the conversation re-sent on every
turn uploads about four times smaller.

Assisted-by: Crush:prism

---------

Signed-off-by: Drew Smirnoff <[email protected]>
Signed-off-by: drew <[email protected]>
Co-authored-by: Charm <[email protected]>
Co-authored-by: Drew Smirnoff <[email protected]>
Co-authored-by: Bruno Krugel <[email protected]>
Co-authored-by: Steven Huang <[email protected]>
Co-authored-by: drew <[email protected]>
Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Andrey Nering <[email protected]>
andikapradanaarif added a commit to andikapradanaarif/crush that referenced this pull request Nov 10, 2026
* chore(legal): @themanyone has signed the CLA

* ci: bump brotli for grype

Signed-off-by: Drew Smirnoff <[email protected]>

* fix: bump snapshots and releases version

Signed-off-by: Drew Smirnoff <[email protected]>

* feat(skill): toggle skills (charmbracelet#3994)

Co-authored-by: Drew Smirnoff <[email protected]>
Signed-off-by: Drew Smirnoff <[email protected]>

* fix(ui): preserve CRLF lines in bang mode output (charmbracelet#4228)

* fix: crush run should not spawn a server if none is running (charmbracelet#4255)

Signed-off-by: Drew Smirnoff <[email protected]>

* chore: use the new charm.land/tone (charmbracelet#4260)

* fix: remove the Alias with hyper email (charmbracelet#4257)

Signed-off-by: Drew Smirnoff <[email protected]>

* feat(ui): Add elapsed time on tool call (charmbracelet#3600)

Co-authored-by: drew <[email protected]>
Co-authored-by: Drew Smirnoff <[email protected]>
Signed-off-by: drew <[email protected]>
Signed-off-by: Drew Smirnoff <[email protected]>

* perf: send gzip-compressed http requests to hyper (charmbracelet#4100)

* Fantasy PR: charmbracelet/fantasy#425

Hyper now inflates gzip request bodies, so the conversation re-sent on every
turn uploads about four times smaller.

Assisted-by: Crush:prism

---------

Signed-off-by: Drew Smirnoff <[email protected]>
Signed-off-by: drew <[email protected]>
Co-authored-by: Charm <[email protected]>
Co-authored-by: Drew Smirnoff <[email protected]>
Co-authored-by: Bruno Krugel <[email protected]>
Co-authored-by: Steven Huang <[email protected]>
Co-authored-by: drew <[email protected]>
Co-authored-by: Andrey Nering <[email protected]>
Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Invisible text in bang mode

4 participants