Skip to content

v0.5.0 - Logging and Verbosity Refinement (2025-12-25)

What Changed?

This release refactors the logging and verbosity system to clarify two distinct concerns: infrastructure logging control and user-facing status messages. The global --level option now controls structured logging (debug/info/error), while per-command --verbose/--quiet toggles status message display. These changes improve CLI clarity and reduce confusion from previously overlapping options.


What's New

Main Feature: Separated Logging and Verbosity Controls

What it does: Previously, the --verbose flag conflated two different concerns: controlling infrastructure logging and controlling user-facing status messages. v0.5.0 separates these into independent, purpose-specific options with clearer semantics.

How to use it:

  1. Global logging level (--level): Controls console logging output for all commands
kazunoko --level=debug read 100        # Show DEBUG logs + status messages
kazunoko --level=info read 100         # Show INFO logs (default)
kazunoko --level=error read 100        # Show only errors
  1. Per-command status messages (--verbose/--quiet): Toggle status message display for individual commands
kazunoko read 100 --verbose            # Show status messages (progress feedback)
kazunoko read 100 --quiet              # Suppress status messages (default)

Combined usage:

# Debug logging with no status messages (for scripting)
kazunoko --level=debug read 100 --quiet

# Info logging with status messages (for interactive use)
kazunoko --level=info read 100 --verbose

# Error-only logging with no status messages (for production)
kazunoko --level=error read 100 --quiet

Installation

Quick Start

# Get the release
git checkout v0.5.0

# Setup
task env:setup

# Run CLI
uv run kazunoko --help

What's Different from the Last Version?

✅ Added

  • Global --level option for controlling console logging (debug/info/error)
  • Three-level verbosity control system for consistent logging across all CLI commands

🔧 Changed

  • Renamed per-command verbose option from --verbose to --verbose/--quiet for clearer semantics
  • Changed per-command default from verbose to quiet mode (less noisy output)
  • Global logging default changed to info level (was previously error-only)
  • Updated setup_logger() to accept string verbosity levels (debug, info, error) instead of boolean

🐛 Fixed

  • Removed f-string prefixes and trailing whitespace from linting

Is It Safe to Upgrade?

Backward Compatible: Mostly

  • Library API is unchanged; all public functions and classes work identically
  • CLI options have been clarified but may require script updates:
  • Global --level replaces the previous implicit logging behavior
  • Per-command --quiet is now the default (previously verbose)
  • Scripts relying on status messages should add --verbose flag
  • Recommended for new usage; existing scripts should be tested with new flag structure

Tests Passed

  • ✅ Builds without errors
  • ✅ All modules lint correctly with ruff
  • ✅ Type checking passes with mypy
  • ✅ CLI commands execute with new logging options
  • ✅ Global --level option works with all log levels (debug, info, error)
  • ✅ Per-command --verbose/--quiet options function correctly
  • ✅ All logging combinations tested and working

Release Details

  • Date: 2025-12-25
  • Version: v0.5.0
  • Files Changed: 6 (log.py, options.py, cli.py, command.py, parser.py, measure.py, device.py)
  • Commits: 3 feature/refactor commits

Major commits:

  • 204fd27 - feat: add three-level verbosity control (debug, info, error)
  • aecbdf8 - refactor: clarify logging and status message options
  • 81d7ed1 - bump: version 0.4.10 → 0.5.0

Next Steps

  • Future Work: Consider log filtering utilities for post-analysis of JSON logs
  • Roadmap: Enhanced CLI option discoverability (e.g., interactive help system)
  • Community: Share configuration patterns and scripts utilizing the new logging levels