From 06b86d378c85da97752b5235513b47572b962d78 Mon Sep 17 00:00:00 2001 From: Meta42 Date: Mon, 27 Apr 2026 09:56:07 +0800 Subject: [PATCH 1/2] fix: enable loguru color output for terminal display loguru's default handler does not emit ANSI color codes in non-TTY or certain terminal environments. Explicitly configure a stderr sink with colorize=True so that log output is colored regardless of the runtime context. When logfire is available, the colorized stderr sink is added alongside the logfire handler so both destinations receive output. Co-Authored-By: Claude Opus 4.6 --- src/bub/__main__.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/bub/__main__.py b/src/bub/__main__.py index 430baec5..bd8ea7e7 100644 --- a/src/bub/__main__.py +++ b/src/bub/__main__.py @@ -2,22 +2,27 @@ from __future__ import annotations +import sys + import typer from bub.framework import BubFramework def _instrument_bub() -> None: + from loguru import logger + try: import logfire logfire.configure() except ImportError: - pass + logger.remove() + logger.add(sys.stderr, colorize=True) else: - from loguru import logger - - logger.configure(handlers=[logfire.loguru_handler()]) + logger.remove() + logger.add(sys.stderr, colorize=True) + logger.add(logfire.loguru_handler()) def create_cli_app() -> typer.Typer: From 099dc2fc3df0ae23ee1bd684252df551c0607237 Mon Sep 17 00:00:00 2001 From: Meta42 Date: Wed, 29 Apr 2026 17:22:04 +0800 Subject: [PATCH 2/2] refactor: move loguru handler setup before try block Per review feedback, logger.remove() and logger.add(sys.stderr, colorize=True) are always executed regardless of logfire availability, so move them before the try block for cleaner control flow. Co-Authored-By: Claude Opus 4.6 --- src/bub/__main__.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/bub/__main__.py b/src/bub/__main__.py index bd8ea7e7..9d50eaa1 100644 --- a/src/bub/__main__.py +++ b/src/bub/__main__.py @@ -12,17 +12,16 @@ def _instrument_bub() -> None: from loguru import logger + logger.remove() + logger.add(sys.stderr, colorize=True) + try: import logfire logfire.configure() - except ImportError: - logger.remove() - logger.add(sys.stderr, colorize=True) - else: - logger.remove() - logger.add(sys.stderr, colorize=True) logger.add(logfire.loguru_handler()) + except ImportError: + pass def create_cli_app() -> typer.Typer: