mirror of
https://github.com/oven-sh/bun
synced 2026-02-10 10:58:56 +00:00
Fix Output.enable_ansi_colors usage to check stdout vs stderr (#24212)
## Summary Updated all 49 usages of `Output.enable_ansi_colors` to properly check either `Output.enable_ansi_colors_stdout` or `Output.enable_ansi_colors_stderr` based on their output destination. This prevents bugs where ANSI colors are checked against the wrong stream (e.g., checking stdout colors when writing to stderr). ## Changes ### Added - `Output.enable_ansi_colors` now a `@compileError` to prevent future misuse with helpful error message directing to correct variants ### Deleted - `Output.isEmojiEnabled()` - replaced all usages with `enable_ansi_colors_stderr` (all were error/progress output) - `Output.prettyWithPrinterFn()` - removed unused dead code ### Updated by Output Destination **Stderr (error/diagnostic output):** - logger.zig: Log messages and errors - crash_handler.zig: Crash reports and stack traces (10 instances) - PackageInstaller.zig: Error messages from lifecycle scripts (3 instances) - JSValue.zig: Test expectation error messages - JSGlobalObject.zig: Exception throwing - pack_command.zig: Progress indicators - VirtualMachine.zig: Exception printing (2 instances) - Test expect files: Test failure messages and diffs (10 instances) - diff_format.zig: Test diff output - ProgressStrings.zig: Package manager progress emojis (6 functions) - security_scanner.zig: Security scan progress emoji - output.zig: panic(), resetTerminal() **Stdout (primary output/interactive UI):** - hot_reloader.zig: Terminal clearing on reload - Version.zig: Version diff formatting - install_with_manager.zig: Package installation tree - update_interactive_command.zig: Interactive update UI (2 instances) - init_command.zig: Interactive radio buttons - create_command.zig: Template creation output (2 instances) - outdated_command.zig: Outdated packages table - publish_command.zig: Box drawing characters (6 instances) **Backward Compatible:** - BunObject.zig: `Bun.enableANSIColors` property returns `(stdout || stderr)` to maintain compatibility - fmt.zig: Removed unused `.default` field from Options struct ## Test Plan - ✅ All changes compile successfully with `bun run zig:check` - ✅ Verified all 49 usages have been updated to appropriate variant - ✅ Verified no remaining references to deprecated functions/variables - ✅ Compile error triggers if someone tries to use `Output.enable_ansi_colors` ## Stats - 24 files changed - 58 insertions, 77 deletions (net -19 lines) - 49 usages correctly updated - 3 items deleted/deprecated 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Bot <claude-bot@bun.sh> Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -131,7 +131,7 @@ pub const ProgressBuf = struct {
|
||||
}
|
||||
|
||||
pub fn pretty(comptime fmt: string, args: anytype) !string {
|
||||
if (Output.enable_ansi_colors) {
|
||||
if (Output.enable_ansi_colors_stdout) {
|
||||
return ProgressBuf.print(comptime Output.prettyFmt(fmt, true), args);
|
||||
} else {
|
||||
return ProgressBuf.print(comptime Output.prettyFmt(fmt, false), args);
|
||||
@@ -2212,7 +2212,7 @@ pub const Example = struct {
|
||||
);
|
||||
async_http.client.flags.reject_unauthorized = env_loader.getTLSRejectUnauthorized();
|
||||
|
||||
if (Output.enable_ansi_colors) {
|
||||
if (Output.enable_ansi_colors_stdout) {
|
||||
async_http.client.progress_node = progress_node;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user