Skip to content

v0.3.0

Choose a tag to compare

@RicknotDev RicknotDev released this 23 Jun 01:18

Added

  • parser.py: validate_lrc(), repair_lrc(), offset_timestamps(), merge_lrc(), split_lrc(), parse_metadata()
  • exporters.py: export LRC to SRT (subtitles) and JSON
  • importers.py: import SRT and JSON back to LRC
  • core.py: backup_file() helper with auto-backup before overwrite in save_lyrics()
  • CLI: --dry-run flag for lrc-fetch
  • CLI: rich progress bars, colored output, elegant error handling (rich.traceback)
  • CLI: --help with usage examples for all entry points
  • TUI: refactored from 1002-line monolith to 8 screen files + 2 widget files
  • Tests: 69 new tests (test_parser, test_exporters, test_splitter, test_puller, test_cli, test_utils)
  • GitHub: lint workflow (ruff + mypy + bandit), issue/PR templates
  • Community: CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md

Changed

  • rich>=13.0 promoted to base dependency
  • save_lyrics() now creates .bak before overwriting existing files; skips backup if content unchanged
  • Version bumped to 0.3.0

Fixed

  • prompt_threads(): if default: -> if default is not None: (broke --search-threads 0)
  • display.py render_block_text(): non-ASCII characters (é, ñ, ü) now render as base letters
  • fonts.py: added FALLBACK_CHARS map for accented character support
  • config.py: guarded import yaml with try/except for missing PyYAML
  • Cross-platform: 15 issues fixed across audio_player, player, display, install scripts, Makefile