Skip to content

MusicLib 1.70

Choose a tag to compare

@Harpo3 Harpo3 released this 13 May 18:47

MusicLib Release Notes


1.70 — 2026-05-13

New Features

MPRIS2 Player Migration
Replaced all Audacious-specific integration (audtool, Song Change plugin, musiclib_audacious.sh) with a player-agnostic MPRIS2 layer. Playback tracking is now handled by musiclib-mpris.service, a systemd user daemon that listens for PropertiesChanged signals on the MPRIS2 D-Bus interface. The daemon fires musiclib_player_event.sh on each play/pause/stop transition, matching the behavior previously provided by the Audacious Song Change plugin. Any MPRIS2-compatible player (Audacious, Strawberry, Clementine, VLC, etc.) now works with MusicLib without reconfiguration. musiclib_audacious.sh and all Audacious helper stubs have been removed.

Playlist Position / Length in Conky Output
musiclib_player_event.sh now writes playlistposition.txt and playlistlength.txt to ~/.local/share/musiclib/data/conky_output/ on every player event, enabling Conky widgets to display current position within the active playlist without an additional D-Bus query.

regen_task_list.sh
New script regenerates deliverables/TASK_LIST.md by scanning all task notes in deliverables/task_notes/ for open items marked with [ ]. Allows task tracking to remain distributed in per-task note files while producing a consolidated view on demand.


Improvements

  • musiclib_utils.sh has been split into focused modules (musiclib_utils_core.sh, musiclib_utils_tag_functions.sh, etc.) and the compatibility re-exporter shim has been removed. All 12 sourcing scripts updated to source the appropriate module directly.
  • --load-player replaces --load-audacious in musiclib_smartplaylist.sh. The flag now dispatches on player identity via D-Bus, sending the generated playlist to whichever MPRIS2 player is active rather than hard-coding Audacious.
  • refresh-player-playlists subcommand replaces refresh-audacious-only in musiclib_mobile.sh. Reloads the active MPRIS2 player's playlist queue from generated .m3u files.
  • All remaining audtool QProcess spawns in the GUI (refreshNowPlaying(), refreshRating()) replaced with direct D-Bus calls via QDBusInterface, eliminating the external-process overhead and dependency on the audtool binary.
  • MUSICLIB_SYSTEM_CONFIG_DIR and MUSICLIB_BIN_DIR environment overrides are now honoured in the C++ layer (CLI dispatcher and GUI). Setting these variables allows the application to run fully from the development tree without installing to /usr/lib/musiclib/.
  • MUSICLIB_SYSTEM_CONFIG_DIR is also honoured in the shell load_config path; KID3_CMD and SCROBBLE_THRESHOLD_PCT are now exported so child scripts inherit them without re-sourcing the config.
  • Star PNG images and bitrate display are now populated at application init and on every player event, not only after explicit user action.
  • CMake install() rule added for star rating PNG assets (config/gui/star_ratings/).

Bug Fixes

  • Fixed scrobble check progress being reset on Paused→Playing transitions for the same track. Progress is now carried across pause/resume cycles, and the scrobble handler fires correctly on the Paused→Playing transition rather than requiring a new track start.
  • Fixed regen_task_list.sh array initialization (=()) to prevent set -u unbound-variable failures on bash 5.3.
  • Removed obsolete weather integration from extract_metadata() in musiclib_player_event.sh; the code was unreachable and caused spurious log output.
  • Removed duplicate log writes in musiclib_player_event.sh that produced redundant entries in the player event log on every track change.

Documentation

  • ADR-001 through ADR-009 added to docs/adr/: records architectural decisions covering the MPRIS2 migration, musiclib_utils.sh split, tag schema design, and build system conventions.
  • MUSICLIB_USER_MANUAL.md: updated setup steps, player integration section, and CLI examples for MPRIS2 migration; removed Audacious Song Change plugin references.
  • BACKEND_API.md: updated BACKEND_API_VERSION to 1.70; documented MPRIS2 daemon interface, D-Bus call patterns, and updated script-to-function cross-references.
  • SCRIPTS_SUMMARY.md and DEPLOYMENT_PATHS.md: updated for removed scripts (musiclib_audacious.sh), new modules from utils split, and new conky_output files.