Repository navigation
v2.0.0
[2.0.0] - 2025-11-03
⚠️ BREAKING CHANGES
- Output Format Standardization: Changed
list -n -poutput separator from semicolon (;) to double colon (::)- Old format:
/path/to/font.ttf;FontName - New format:
/path/to/font.ttf::FontName - Rationale: Consistency with fontnome and fontlift-win-cli; avoids confusion with semicolon-terminated shell commands
- Migration: Update any scripts parsing
list -n -poutput to expect::instead of; - Double colon provides clearer visual separation and reduces parsing ambiguity
- Old format:
Changed
- Updated all documentation to reflect new output format
- Updated internal comments and examples
Added
-
Test Coverage for Output Format: Added 4 integration tests (90→94 total)
- Verifies
list -p -noutputspath::nameformat with::separator - Verifies
list -n -palso uses::separator (flag order independence) - Regression tests ensure
::NOT used in single-flag modes (-por-nonly) - Fixed SIGPIPE handling issue in test framework (
set -euo pipefail+head -1)
- Verifies
-
Example Output in README.md: Added concrete example showing
::separator format (lines 73-77)- Shows actual
list -p -noutput with Helvetica fonts - Demonstrates
path::nameformat visually for users - Helps users understand format change immediately
- Shows actual
Verified
-
Edge Case Robustness: Comprehensive verification of
::separator behavior- Confirmed NO font names contain
::naturally across 5000+ system fonts - Confirmed NO font paths contain
::naturally - Verified file extensions (
.ttf,.otf,.ttc) are in path part before::separator - Tested parsing with
awk -F'::'- works perfectly - Tested fonts with spaces, dots, and special characters - all work correctly
- Single-flag modes (
-por-nonly) correctly omit::separator
- Confirmed NO font names contain
-
Error Message Quality: Reviewed all 30+ error messages
- All errors include ❌ emoji for visibility
- All errors include specific context (path/name)
- Every error includes actionable guidance with "Common causes:" or "Troubleshooting:" sections
- Copy-paste ready commands with proper shell escaping
- Good formatting with blank lines and indented bullets
Quality Assurance
- Round 11-14 Improvements: Completed 4 rounds of micro-improvements
- Round 11: Added 4 integration tests for output format verification
- Round 12: Updated documentation test counts (90→94)
- Round 13: Verified git status and binary functionality
- Round 14: Added examples, verified edge cases, reviewed error messages
- Final Test Results: All 94/94 tests passing (52 Swift + 23 Scripts + 19 Integration)
- Execution Time: 33s total (6s Swift + 20s Scripts + 7s Integration)
- Compiler Warnings: 0
- Code Quality: 819 lines, clean and maintainable