MusicLib 1.70
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.shhas 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-playerreplaces--load-audaciousinmusiclib_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-playlistssubcommand replacesrefresh-audacious-onlyinmusiclib_mobile.sh. Reloads the active MPRIS2 player's playlist queue from generated.m3ufiles.- All remaining
audtoolQProcess spawns in the GUI (refreshNowPlaying(),refreshRating()) replaced with direct D-Bus calls viaQDBusInterface, eliminating the external-process overhead and dependency on the audtool binary. MUSICLIB_SYSTEM_CONFIG_DIRandMUSICLIB_BIN_DIRenvironment 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_DIRis also honoured in the shellload_configpath;KID3_CMDandSCROBBLE_THRESHOLD_PCTare 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.sharray initialization (=()) to preventset -uunbound-variable failures on bash 5.3. - Removed obsolete weather integration from
extract_metadata()inmusiclib_player_event.sh; the code was unreachable and caused spurious log output. - Removed duplicate log writes in
musiclib_player_event.shthat 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.shsplit, 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_VERSIONto 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.