• v1.2.0 a8d2e89941

    v1.2.0 Stable

    Jan released this 2026-07-22 23:34:10 +02:00 | 17 commits to main since this release

    musicfix v1.2.0

    Highlights

    Version 1.2.0 introduces universal Apprise notification templates, configurable message formats, richer run summaries, and a clearer README introduction that explains the complete musicfix workflow.

    Notifications are now designed to remain readable across email, Telegram, Discord, Slack, ntfy, Gotify, and plain-text destinations without depending on fragile service-specific formatting. A rare outbreak of sensible interoperability.

    Added

    Universal notification templates

    musicfix now sends structured notifications for:

    • successful runs
    • failed runs
    • Apprise test messages

    The templates are available in German and English and include:

    • run mode
    • run ID
    • runtime
    • audio-file count
    • folder count
    • total library size
    • new files
    • modified files
    • deleted files
    • selected audio files
    • affected albums
    • log path
    • manifest path
    • installed musicfix version

    Failure notifications additionally include:

    • failed maintenance step
    • exit code

    Configurable notification format

    The notification format can now be selected in the configuration:

    [notifications]
    enabled = true
    notify_on_success = true
    notify_on_failure = true
    format = "markdown"
    urls = [
      "apprise://172.16.3.150:8000/jarvis/?tags=all",
    ]
    

    Supported values:

    format = "text"
    format = "markdown"
    format = "html"
    

    Recommended usage:

    • text for maximum compatibility
    • markdown as the default for mixed services
    • html mainly for email and other rich-content destinations

    Cross-service compatibility

    Notification templates intentionally avoid:

    • Markdown tables
    • complex nesting
    • service-specific markup
    • formatting that becomes unreadable as plain text

    The same message structure can therefore be used with:

    • email
    • Telegram
    • Discord
    • Slack
    • ntfy
    • Gotify
    • other Apprise-supported services
    • plain-text notification targets

    Apprise notification types

    musicfix now sends the appropriate Apprise notification type:

    • success for successful runs
    • failure for failed runs
    • info for test messages

    Services that support notification types may use their own icons, colors, priorities, or visual indicators.

    Realistic Apprise template preview

    The existing test command now sends the same structured template used by real maintenance runs:

    musicfix apprise test
    

    The test message contains realistic example data, including:

    • write mode
    • example run ID
    • example runtime
    • library statistics
    • incremental change counts
    • example log path
    • example manifest path
    • installed musicfix version

    This makes it possible to preview the selected format without running library maintenance.

    Improved README introduction

    The README now includes a concise English description of the project:

    musicfix is a safety-focused command-line toolkit for maintaining large,
    folder-based music libraries on Linux. It can validate and repair FLAC files,
    clean metadata and titles, normalize filenames, manage album and artist
    artwork, quarantine unwanted files, and keep detailed logs, reports, backups,
    and reversible run manifests.

    The introduction also explains:

    • dry-run and write behavior
    • incremental SQLite indexing
    • configurable cleanup protection
    • support for audio, image, lyrics, video, and custom formats
    • optional Apprise notifications
    • compatibility with multiple notification services

    Changed

    • Markdown is now the default Apprise message format
    • notification messages use a clearer section-based layout
    • run notifications now include incremental change statistics
    • failure notifications now identify the failed step and exit code
    • notification details now include the manifest path
    • notification footers now include the installed musicfix version
    • the Apprise test command now previews the real notification template
    • README documentation now reflects the complete current feature set
    • notification configuration examples now include the format option

    Configuration example

    [notifications]
    # Enable automatic notifications after complete musicfix runs.
    enabled = true
    
    # Send a notification when a run completes successfully.
    notify_on_success = true
    
    # Send a notification when a run fails.
    notify_on_failure = true
    
    # Message format: text, markdown or html.
    # Markdown is the recommended default across mixed services.
    format = "markdown"
    
    # One or more Apprise service URLs.
    urls = [
      "apprise://172.16.3.150:8000/jarvis/?tags=all",
    ]
    

    Example Markdown notification

    ✅ musicfix completed successfully
    
    ## Run
    
    **Mode:** `Write`
    **Run ID:** `20260722-224502-815491`
    **Runtime:** `12 min 38 s`
    
    ## Library
    
    **Audio files:** `8,197`
    **Folders:** `705`
    **Library size:** `157.80 GiB`
    
    ## Changes
    
    **New:** `12`
    **Modified:** `4`
    **Deleted:** `1`
    **Selected audio files:** `23`
    **Affected albums:** `6`
    
    ## Details
    
    **Log:** `/home/user/.local/share/musicfix/logs/musicfix.log`
    **Manifest:** `/home/user/.local/share/musicfix/runs/example/manifest.json`
    
    ---
    
    musicfix 1.2.0
    

    Example failure notification

    ❌ musicfix failed
    
    ## Run
    
    **Mode:** `Write`
    **Run ID:** `20260722-224502-815491`
    **Runtime:** `8 s`
    
    ## Library
    
    **Audio files:** `8,197`
    **Folders:** `705`
    **Library size:** `157.80 GiB`
    
    ## Changes
    
    **New:** `2`
    **Modified:** `1`
    **Deleted:** `0`
    **Selected audio files:** `7`
    **Affected albums:** `2`
    
    ## Details
    
    **Failed step:** `flac-repair`
    **Exit code:** `1`
    **Log:** `/home/user/.local/share/musicfix/logs/musicfix.log`
    **Manifest:** `/home/user/.local/share/musicfix/runs/example/manifest.json`
    
    ---
    
    musicfix 1.2.0
    

    Testing

    Verify the active configuration:

    musicfix config --check
    

    Check required dependencies:

    musicfix doctor
    

    Preview the selected notification format:

    musicfix apprise test
    

    Run an incremental dry run:

    musicfix all
    

    Run incremental maintenance with changes enabled:

    musicfix all --write
    

    Force a complete library pass:

    musicfix all --full
    musicfix all --full --write
    

    Safety

    • notifications do not modify the music library
    • notification failures do not change the maintenance run result
    • dry runs remain read-only
    • write operations still require --write
    • failed or interrupted runs do not update the incremental index
    • unsupported files are moved to quarantine instead of being deleted directly
    • logs, reports, backups, and manifests remain available for inspection and recovery
    Downloads