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:
- 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
- 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
--leveloption 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
--verboseto--verbose/--quietfor clearer semantics - Changed per-command default from verbose to quiet mode (less noisy output)
- Global logging default changed to
infolevel (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
--levelreplaces the previous implicit logging behavior - Per-command
--quietis now the default (previously verbose) - Scripts relying on status messages should add
--verboseflag - 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
--leveloption works with all log levels (debug, info, error) - ✅ Per-command
--verbose/--quietoptions 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 options81d7ed1- 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