mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-21 05:02:14 +00:00
fix: strip remaining escape sequences from bash output
stripAnsi misses some escape sequences like standalone ESC \ (String Terminator) which caused rendering issues when displaying captured TUI output. Now also removes any remaining ESC+char sequences and control characters after stripAnsi processing.
This commit is contained in:
parent
240064eec3
commit
9375384371
2 changed files with 12 additions and 1 deletions
|
|
@ -10,6 +10,7 @@
|
||||||
|
|
||||||
- **Print mode error handling**: `-p` flag now outputs error messages and exits with code 1 when requests fail, instead of silently producing no output.
|
- **Print mode error handling**: `-p` flag now outputs error messages and exits with code 1 when requests fail, instead of silently producing no output.
|
||||||
- **Branch selector crash**: Fixed TUI crash when user messages contained Unicode characters (like `✔` or `›`) that caused line width to exceed terminal width. Now uses proper `truncateToWidth` instead of `substring`.
|
- **Branch selector crash**: Fixed TUI crash when user messages contained Unicode characters (like `✔` or `›`) that caused line width to exceed terminal width. Now uses proper `truncateToWidth` instead of `substring`.
|
||||||
|
- **Bash output escape sequences**: Fixed incomplete stripping of terminal escape sequences in bash tool output. `stripAnsi` misses some sequences like standalone String Terminator (`ESC \`), which could cause rendering issues when displaying captured TUI output.
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,17 @@ export class ToolExecutionComponent extends Container {
|
||||||
|
|
||||||
// Strip ANSI codes and carriage returns from raw output
|
// Strip ANSI codes and carriage returns from raw output
|
||||||
// (bash may emit colors/formatting, and Windows may include \r)
|
// (bash may emit colors/formatting, and Windows may include \r)
|
||||||
let output = textBlocks.map((c: any) => stripAnsi(c.text || "").replace(/\r/g, "")).join("\n");
|
let output = textBlocks
|
||||||
|
.map((c: any) => {
|
||||||
|
let text = stripAnsi(c.text || "").replace(/\r/g, "");
|
||||||
|
// stripAnsi misses some escape sequences like standalone ESC \ (String Terminator)
|
||||||
|
// and leaves orphaned fragments from malformed sequences (e.g. TUI output captured to file)
|
||||||
|
// Clean up: remove ESC + any following char, and control chars except newline/tab
|
||||||
|
text = text.replace(/\x1b./g, "");
|
||||||
|
text = text.replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\x9f]/g, "");
|
||||||
|
return text;
|
||||||
|
})
|
||||||
|
.join("\n");
|
||||||
|
|
||||||
// Add indicator for images
|
// Add indicator for images
|
||||||
if (imageBlocks.length > 0) {
|
if (imageBlocks.length > 0) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue