Tags

Tags give the ability to mark specific points in history as being important
  • v0.5.1

    v0.5.1: Fix cached lyrics metadata tags
    
  • v0.5.0

    v0.5.0: Cache system for lyrics and album art
    
  • v0.4.8

    Release v0.4.8: Complete MEDIUM level refactoring
    
    Major refactoring improvements:
    - Centralized utility modules (json_utils, trim_whitespace, build_path)
    - URL encoding and JSON parsing consolidation
    - Improved bounds checking and error handling
    - Simplified complex goto logic
    - Standardized file path construction
    - Enhanced logging system with 3-character tags
    - Global config encapsulation
    
    Technical improvements:
    - Removed ~500+ lines of duplicate code
    - Added safety checks for buffer operations
    - Improved code organization and maintainability
    - Better error handling throughout
    
    All CRITICAL, HIGH, and MEDIUM priority refactoring issues completed.
    
  • v0.4.7

    Release v0.4.7 - Duration-based lyrics matching
    
  • v0.4.6

    Release v0.4.6 - Clear lyrics when player exits
    
  • v0.4.5

    Release v0.4.5 - Code Quality and Safety Improvements
    
    This release focuses on critical bug fixes, code safety improvements,
    and major refactoring for better maintainability.
    
    - Reorganized parsers: src/parser/{lrc,srt,lrcx,utils}/
    - Reorganized utilities: src/utils/{curl,file,pango,render,shm,mpris,wayland}/
    - Reorganized providers: src/provider/{lrclib,lyrics}/
    - Reorganized user experience: src/user_experience/{config,system_tray}/
    - Simplified lyrics_types.h to src root level
    
    - Fixed memory leaks in lyrics_provider.c (strdup NULL checks)
    - Fixed memory leak in main.c font string allocation
    - Fixed NULL pointer dereference in argv0 handling
    - Fixed buffer overflow risk in srt_parser.c (unsafe strncat)
    
    - Extracted duplicated timestamp validation code (47→22 lines)
    - Improved error handling (removed backward goto patterns)
    - Replaced magic numbers with named constants
    - Added proper cleanup paths for all allocations
    
    - 9 commits total
    - 5 commits: Directory structure improvements
    - 4 commits: Bug fixes and code quality
    - ~100 lines of code deduplication
    - Multiple CRITICAL/HIGH priority issues resolved
    
    All changes maintain backward compatibility and pass build tests.
    
  • v0.4.3

    Release v0.4.3 - Text rendering optimization and alignment fixes
    
  • v0.4.2

    Release v0.4.2: Wayland reconnection and stability improvements
    
    - Full Wayland reconnection after screen lock/TTY switch
    - Automatic overlay restoration when compositor becomes available
    - Fixed segfaults during reconnection
    - Improved error handling and logging
    - Moved Wayland surface management to dedicated module
    
  • v0.4.1

    Release v0.4.1 - Code Refactoring
    
    This release focuses on major code refactoring and maintainability improvements.
    
    - **main.c**: Reduced from 1,258 to 904 lines (-354 lines, 28% reduction)
    - **render_to_cairo()**: Simplified from 428 to 74 lines (82% reduction)
    - Created dedicated `render_helpers` module (428 lines) for all rendering logic
    
    - `render_karaoke_segments()`: LRCX karaoke rendering with progressive fill
    - `render_ruby_segments()`: LRC/SRT ruby text (furigana) rendering
    - `render_word_segments_static()`: LRCX static display without karaoke effect
    - `render_plain_text()`: Simple text rendering
    - Helper functions for ruby height calculation and color utilities
    
    - `parse_init()`: Common parser initialization (removed 39 lines of duplication)
    - `free_ruby_segments()` / `free_word_segments()`: Unified memory management
    - `is_text_only_whitespace()`: Whitespace validation utility
    - `apply_timestamp_offset()`: Inline timestamp offset calculation
    
    - Improved code maintainability and readability
    - Separated concerns - each rendering mode has dedicated function
    - Easier to test and debug individual components
    - Reduced code duplication across parsers
    - Better module organization
    
    - No functionality changes - pure refactoring
    - All rendering modes tested and verified
    - Compilation successful on all targets
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
  • v0.4.0

    Release v0.4.0: Simplify format detection using file extensions
    
    - Refactored format detection to use file extensions (.lrcx, .srt, .vtt, .lrc) instead of complex runtime checks
    - Added is_lyrics_format() helper function for consistent format checking
    - Fixed SRT/WEBVTT lyrics not clearing during instrumental breaks
    - Simplified karaoke mode detection from 24 lines to 1 line
    - Reduced code complexity by 20 lines (43 deletions, 23 insertions)
    
  • v0.3.2

    Release v0.3.2: Automatic lyrics file reload
    
    New Features:
    - Automatic lyrics file reload when content changes
    - MD5 checksum-based file change detection (checks every 2 seconds)
    - No need to restart application or switch tracks when editing lyrics
    
    Technical Changes:
    - Add OpenSSL dependency for MD5 checksum calculation
    - New file_utils module for file operations
    - Store source file path and checksum in lyrics_data struct
    - File change detection integrated into main event loop
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
  • v0.3.1

    v0.3.1: Ruby text alignment fixes
    
    - Fixed ruby text alignment to appear directly above base characters
    - Improved CJK kanji detection for word boundaries
    - Fixed multiple ruby annotations in LRCX word-level timestamps
    - Removed unnecessary spacing between segments
    
  • v0.3.0

    v0.3.0: Ruby Text (Furigana) Support
    
  • v0.2.5

    Release v0.2.5
    
    - Extension priority system: Respect user-defined extension search order (lrc,srt vs srt,lrc)
    - Empty line handling: Treat empty/whitespace-only lines in LRC/LRCX as instrumental breaks
    
    - Code refactoring: Centralized constants, eliminated code duplication
    - Parser utilities: Shared timestamp and metadata parsing across formats
    - CURL utilities: Reusable HTTP request helpers
    - Better error handling: Consolidated cleanup patterns
    
    - Fixed double-free crash in extension priority system
    - Fixed log spam from instrumental break detection
    - Fixed color macro usage across codebase
    
    - Created constants.h for all magic numbers
    - Created parser_utils.c/h for shared parser code
    - Created curl_utils.c/h for HTTP request handling
    - Made config_trim_whitespace() public to avoid duplication
    - Improved display line pattern to prevent state oscillation
    
  • v0.2.3

    Release v0.2.3 - Configuration file support
    
    - Add INI-based configuration system with user and system-wide configs
    - Support RRGGBBAA hex color format for all colors
    - Add configurable lyrics file extension filter
    - Add font, color, margin, and display settings
    - Auto-copy system config to user directory on first run
    - Prevent /usr/bin directory search when installed system-wide
    - Move help processing before config loading to avoid spurious messages
    - Match default config values to original hardcoded values
    
    Configuration file locations (in priority order):
    1. ~/.config/wshowlyrics/settings.ini (user config)
    2. /etc/wshowlyrics/settings.ini (system-wide config)
    3. Built-in defaults
    
    Default values:
    - Font: Sans normal 20
    - Margin: 32px
    - Background: #00000080 (50% transparent black)
    
  • v0.2.2

    Release v0.2.2 - LRCX parser improvements and smooth karaoke highlighting
    
  • v0.2.1

    Release v0.2.1 - System tray improvements
    
  • v0.2.0

    Release v0.2.0 - LRCX Karaoke Mode
    
    New Features:
    - LRCX format support for karaoke-style lyrics with word-level timing
    - Progressive fill effect that smoothly fills words from left to right
    - Automatic file extension-based parser selection (.lrcx, .lrc, .srt)
    
    Changes:
    - Removed -l/--lyrics-file option (MPRIS-only mode)
    - Simplified error messages to suggest --help
    - Improved lyrics search in same directory as music file
    
    Technical:
    - New lrcx_parser.c/h for LRCX format parsing
    - Cairo clipping-based progressive fill rendering
    - Extended lyrics_line structure with word_segment support
    
  • v0.1.0

    Release v0.1.0 - First Stable Release
    
    This is the first stable release of wshowlyrics, a Wayland-native lyrics display for MPD with online fallback support.
    
    Features:
    - Wayland-native lyrics overlay display
    - MPD integration for real-time lyrics synchronization
    - Online lyrics fallback via lrclib.net API (synced lyrics only)
    - Smooth scrolling with configurable animation
    - Customizable fonts, colors, and positioning
    - Support for both embedded and external .lrc files
    - Long options support (--help, --version, etc.)
    
    Recent improvements:
    - Clarified synced lyrics only policy in documentation
    - Improved log messages for lrclib API responses
    - Enhanced help messages with proper program name
    - Code cleanup with stricter compiler warnings
    
    Installation:
    Available on AUR as 'wshowlyrics'