Exaile Changelog

What's new in Exaile 4.1.3 Beta 1

Mar 3, 2023
  • When playing a stream the artist tag is correctly set upon change (#812)
  • BerkeleyDB is used instead of bsddb, if available (#770)
  • Some improvements to playlists view and query view (#782, #820, #821, #825)
  • Plugin handling (#792)
  • Users can override built-in plugins with newer versions and remove the overrides as well
  • Users can remove custom installed plugins via plugin manager
  • Fixed a bug that prevents Exaile from starting hidden (#831)
  • Added preference to remove a track from queue after playing (#808, #662)
  • Fixing bug that shows hidden preferences after switching pages in the preferences (#855)
  • Track start and end is now triggered also for streams
  • AppData files now uses more translations (#826)
  • Exaile is now available on FlatHub
  • Experimental: Read from and write rating to audio file metadata (#218)
  • Translation updates: Portuguese (Brazil), Chinese (Simplified), Occidental, Russian, Turkish, Korean, Spanish
  • Plugins:
  • lyricwiki: Removed (#835)
  • cd: Now using libdiscid and musicbrainz (#824)
  • icecast: Working again
  • winmmkeys: Now using pynput (#848)

New in Exaile 4.1.2 (Mar 3, 2023)

  • Tests do not depend on mox3 anymore.
  • The full test suite can now run with no unexpected failures on Windows or as root.
  • When running tests with make test, PYTHONPATH is now only prepended to, instead of being replaced.
  • Translation updates: Arabic, Catalan, Chinese (Simplified), Croatian, Estonian, French, Galician, German, Polish, Portuguese (Brazil), Russian, Spanish.
  • Regression fixes (for bugs that were not present in Exaile 4.1.1):
  • Track counts in the status bar no longer show up as "%d" (#809).
  • Fixed error when attempting to load some UI elements, e.g. the Preferences page for the replaygain plugin.

New in Exaile 4.1.2 Beta 1 (Feb 26, 2022)

  • Fixed sorting on Rating column when there are unrated tracks
  • Fixed a bug causing the tracklist to scroll to the top when adding or reordering tracks
  • Fixed a bug causing the window title to not update on track change if the current track has been paused
  • The status bar can now be hidden
  • The stop button does not move around anymore when hovered for the first time
  • Fixed error if files are removed during scan
  • Playlist columns are added next to the currently selected column
  • The status bar now does not ignore zero track counts; they are displayed as normal
  • Log files are now created only when/if we write something to it
  • Fixed test failures on newer GLib
  • Fixed test warnings
  • New callback while installing plugins
  • Worked around potential hang when running tests (#783), possibly due to a bug on GLib < 2.70.3. Technically it can happen when running any GStreamer app but so far we've only observed this on GitHub Actions (and only on recent OSes), so we don't apply this workaround to Exaile itself.
  • The install makefile target now preserves file timestamps (requires install -p).
  • A lot of UI strings were mistakenly not marked as translatable; this has been fixed
  • The status bar track counts are now translated using ngettext for proper internationalization.
  • Translations are now available on Windows (#800).
  • Translation updates: Arabic, Chinese (Simplified), English (Australia), Estonian, Finnish, Indonesian, Marathi, Norwegian Bokmål, Portuguese, Portuguese (Brazil), Russian, Sinhala.
  • Plugins:
  • inhibitsuspend: Added support for Sway
  • notify: Fixed wrong text: "by {album}" should be "from {album}".
  • previewdevice: Will be shown after disabling and enabling again
  • quickbuttons: This is a new plugin providing quick shortcuts to some settings.

New in Exaile 4.1.1 (Mar 29, 2021)

  • Restored Python 3.6 compatibility, broken since 4.1.0-beta1 (#749).
  • The last playlist export directory is now saved between calls and between sessions (#745, #747).
  • Added tooltip text to the Clear buttons in the Properties dialog (#744).
  • Plugins:
  • console: When encountering a very long "word", the console will now wrap between characters instead of widening the window to fit the word.
  • grouptagger: Fixed i18n issues in some strings. Translations for these strings may be broken until they are updated.
  • Translation updates: Catalan, Croatian, Greek, Sinhala, Spanish.

New in Exaile 4.1.0 Alpha 1 (Mar 9, 2020)

  • Fixes and improvements:
  • The Files panel dropdown list now also lists filesystem mounts (#195).
  • Fix crash when fetching covers with the Cover Manager.
  • Some dialogs that were previously orphans now have parents.
  • Allow -symbolic fallback and SVG on some icons (#690).
  • Update the .mod file support to work with latest libmodplug.
  • Empty search entries now show the "Search" placeholder text.
  • Many accessibility issues were found (due to gla11y) and fixed (#688).
  • Translation updates: Catalan, Marathi, Portuguese (Brazil), Slovenian, Spanish, Telugu.
  • Dependency changes:
  • Exaile now depends on Python 3.6. All Python module dependencies need to be upgraded to their Python 3 versions accordingly.

New in Exaile 4.0.2 (Jan 14, 2020)

  • Fixed Unicode errors on the tracklist view (#643).
  • Fixed icon display on Plasma/Wayland (#653).
  • Translation updates: Asturian, Catalan, Chinese (Simplified), Croatian, Danish, Finnish, Hindi, Italian, Portuguese, Spanish, Swedish, Turkish.

New in Exaile 4.0.0 (Jun 7, 2019)

  • Fixes and improvements:
  • Exaile's playback engine has been rewritten. There is only one engine now, which supports gapless, fade in/out, and crossfade features (the latter is still experimental).
  • Massive speed improvements, can handle 50000+ song library (#457, #458, #465).
  • On RTL locales, keep playback controls in LTR order (#144).
  • Disallow mouse scrolling on numeric tags in the tag editor to prevent accidental changes (#6).
  • Ogg Opus tags can now be read correctly (#150).
  • Show loading indicator when opening large playlists (#135).
  • Fixed bug on tracklist selection when a new track plays while the tracklist is being filtered (#80).
  • New tracklist columns: Year (#127), Language (#252, tagger support in #208), Website.
  • Save the Track Properties dialog location and size (#212, #236).
  • MP3 transcoding now uses the lamemp3enc GStreamer plugin instead of lame (#214).
  • Smart playlists can now be correctly exported (#216).
  • The progress bar now seeks on mouse scroll (#230).
  • Fixed Track Properties dialog not showing up when the BPM tag is non-numeric (#209, #235).
  • Unknown tags are now shown as empty instead of "Unknown", except in the title field (#250).
  • Matroska files with no TimecodeScale are now supported.
  • Fixed showing of Matroska discnumber and tracknumber tags.
  • Exaile now includes a 128x128 icon.
  • When going up the directory hierarchy in the Files panel, the previous directory is selected.
  • Searching on the collection and tracklist can be done regardless of diacritics (#176).
  • Fixed intermittent segfault when quickly browsing through menus (#97, #283).
  • Support for .aac files.
  • Fixed reading certain wav files.
  • Improved support for reading .aif/.aiff/.aifc files (#463).
  • Fixed failure on deleting tags from certain formats (#152, #286).
  • Smart playlist now supports filtering by bitrate (#274).
  • Smart playlist now supports matching by a whole word (#486).
  • Smart playlist now supports a user-specified default sort order (#469).
  • The search language now supports the "contains word" (w=) and "does not contain word" (!w=) operators. They have also been added to the smart playlist dialog.
  • A lot of dialog windows that were previously parentless are now properly attached to an Exaile window.
  • When using PulseAudio, other PA clients such as volume controls will classify Exaile's stream as music and correctly show Exaile's application name and icon (#324).
  • Exaile now comes with Bash and Fish completion scripts (#132 for Bash).
  • When Exaile fails to play a file due to missing GStreamer plugin, it tries to give the option to install the plugin using gstpbutils (#35).
  • New dialog to list available shortcuts: Help ? Shortcuts.
  • A few new keyboard shortcuts have been added.
  • New menu entry: Help ? Open error logs.
  • Pressing Spacebar on the tracklist now triggers the play/pause action (#441).
  • Covers are now associated with album+artist+date instead of just album; if the musicbrainz_albumid tag is available then it is used instead (#306, #501). This may require covers to be re-fetched.
  • Playlist widget: implement sorting across multiple columns (#510).
  • Fixed track and disc number parsing on remote tracks (#520).
  • There is an option to tell GTK to use a dark theme if available.
  • New shuffle mode: random playback.
  • When editing smart playlists, entries with spin button + combo box are now loaded correctly (#582).
  • The Collection panel has new options for grouping by album artists (#576).
  • Added Album Artist tracklist column (#576).
  • Many track tags are now directly editable in the playlist view by clicking the cell twice or pressing F2 (#594, #614)
  • Plugins:
  • New plugins:
  • mpris2 implements most of the MPRIS 2.2 spec for external control of Exaile from compatible clients (e.g. GNOME Shell, KDE Plasma, and Playerctl). A few minor functionalities are still missing, and there is no plan to implement the optional TrackList interface.
  • keybinder replaces the xkeys plugin, providing multimedia keys support for setups where D-Bus is not available. It requires libkeybinder3, which uses Xlib directly and thus won't work on Wayland or MS Windows.
  • Fixes/improvements/changes:
  • All plugins distributed with Exaile now have version numbers identical to Exaile's (#82). This is mostly to keep things more consistent than they have been in the past. External plugins are not affected and may use any versioning scheme they consider appropriate.
  • Plugins can now specify dependencies and supported platforms in their PLUGININFOs. Plugins with missing dependencies are shown with a warning icon (#503). Plugins for the wrong platform are hidden by default.
  • bpm can detect track BPMs using GStreamer's bpmdetect element.
  • daapclient shows track years, disc numbers, and album artists.
  • equalizer presets have been normalized so they are of somewhat similar loudness (#104). Existing configs may not be affected.
  • grouptagger can export group tags to JSON. It can't import them yet.
  • ipconsole has been updated for IPython 5, although some features are still buggy.
  • minimode's Playlist window now acts more like a normal window than a popup (it doesn't hide automatically) (#222).
  • moodbar has been rewritten for GTK+ 3.
  • When previewdevice is enabled, moodbar also replaces the secondary (preview) player with a moodbar (#81).
  • screensaverpause also supports MATE and Cinnamon Screensaver.
  • winmmkeys now has experimental support for the keyboard Python module.
  • Plugins that need love:
  • abrepeat, lastfmdynamic, librivox, minimode, and podcasts are in various levels of disrepair.
  • amazoncovers, bookmarks, currentsong, lastfmlove, massstorage, multialarmclock, shutdown, and streamripper need testing. If you use any of these plugins, please let us know whether they work.
  • Removed plugins:
  • awn integrates with Avant Window Navigator, which appears to be an abandoned project. If you still want to use the plugin and are willing to help testing it, please contact us.
  • contextinfo, droptrayicon, and ipod depend on APIs or libraries that are not compatible with the new PyGObject API.
  • exfalso has not worked with up-to-date versions of Ex Falso for a while now.
  • gnomemmkeys and mpris are superseded by mpris2.
  • lyricsviewer has been merged into core Exaile (#421). To download lyrics from online services you will still need a lyrics provider plugin.
  • notifyosd has been merged into notify (#404).
  • xkeys is superseded by keybinder.
  • Any help in porting forward some of the missing functionalities will be appreciated.
  • Dependency changes
  • New dependencies:
  • Exaile now requires the bsddb or bsddb3 Python module.
  • [optional] libkeybinder3 is required by the new keybinder plugin.
  • See the New plugins section above for limitations of the plugin.
  • [optional] The following Python modules used to be bundled with Exaile plugins; now they depend on system libraries:
  • feedparser, for the podcasts plugin (#242).
  • musicbrainzngs, for the musicbrainzcovers plugin (#206).
  • pylast, for the lastfmlove plugin (#183).
  • spydaap, for the daapclient and daapserver plugins (#445).
  • Upgraded dependencies:
  • Exaile now depends on GTK+ >=3.10 and GStreamer >=1.6.
  • The Python version requirement has been bumped up to 2.7.
  • [optional] WebKit2 is now used instead of WebKit on the wikipedia plugin.
  • The only other user of WebKit was the contextmenu plugin, which has been removed.
  • Removed dependencies:
  • [optional] HAL (hald) and UDisks 1 are not supported anymore for hardware detection.
  • The only supported hardware detection method now is UDisks 2.
  • bsdisks (which provides the UDisks 2 API on FreeBSD) is not tested but should work.
  • In practice, only the cd plugin is affected by this change because it is currently the only component using Exaile's hardware detection facility.
  • [optional] The previously-bundled simplejson module is not required anymore by jamendo, which now uses the built-in json module from Python (#205).
  • [optional] The following dependencies are not used anymore due to the removal of the respective plugins:
  • EggTrayIcon (from libegg), due to removal of the droptrayicon plugin.
  • Ex Falso (sometimes packaged as part of Quod Libet), due to removal of the exfalso plugin.
  • libgpod, due to removal of the ipod plugin.
  • mmkeys, due to removal of the xkeys plugin.
  • PIL (Python Imaging Library) or Pillow, due to removal of the contextmenu plugin.
  • The full dependency list can be viewed in the DEPS file.

New in Exaile 4.0.0 RC 5 (May 27, 2019)

  • Fixed playlist column editing click/drag issues
  • F2 now also triggers track tag editing
  • Fix accelerators issue that caused bug in audioscrobbler plugin
  • Remove AWN plugin
  • Windows installer: Upgrade to GStreamer 1.16
  • Other minor bugs
  • Some translation updates

New in Exaile 4.0.0 RC 4 (May 11, 2019)

  • ipconsole: Don't swallow ImportErrors
  • Equalizer: save present correctly
  • Fix unicode issue in saved playlists
  • Fix rating setting in playlists
  • Fix SmartPlaylists with timestamps
  • Improved support for AlbumArtist: collection pane, playlist column, track properties
  • Build automation: releases are now built automatically by Travis and Appveyor (thanks @X0rg for all the work!)
  • Moodbar improvements
  • Many tags are now directly editable in the playlist view
  • Drop support for HAL and UDisks v1
  • Many translation updates
  • Many minor fixes and enhancements

New in Exaile 4.0.0 RC 3 (Sep 23, 2018)

  • Fix cairo issues on pygobject 3.30
  • Fix issues reading tags when tagless media are in a collection
  • Plugin updates for DAAP/Last.fm
  • Fix bugs in parsing track streams
  • SmartPlaylist bug with empty collection

New in Exaile 4.0.0 RC 2 (Sep 2, 2018)

  • Exclude WASAPI plugin from Windows installer
  • DAAP fixes
  • Add random shuffle mode

New in Exaile 4.0.0 RC 1 (Jul 3, 2018)

  • Reduce size of Windows installer
  • Fix dependency issue on Windows

New in Exaile 4.0.0 Beta 3 (Mar 14, 2018)

  • General changes:
  • Exaile now depends on GTK+ >=3.10 and GStreamer >=1.6.
  • Exaile now requires the bsddb or bsddb3 python module
  • The Python version requirement has been bumped up to 2.7.
  • Exaile's playback engine has been rewritten. There is only one engine now, which supports gapless, fade in/out, and crossfade features (the latter is still experimental).
  • Fixes and improvements:
  • Massive speed improvements, can handle 50000+ song library (#457, #458, #465)
  • On RTL locales, keep playback controls in LTR order (#144).
  • Disallow mouse scrolling on numeric tags in the tag editor to prevent accidental changes (#6).
  • Ogg Opus tags can now be read correctly (#150).
  • Show loading indicator when opening large playlists (#135).
  • Fixed bug on tracklist selection when a new track plays while the tracklist is being filtered (#80).
  • New tracklist columns: Year (#127), Language (#252, tagger support in #208), Website.
  • Save the Track Properties dialog location and size (#212, #236).
  • MP3 transcoding now uses the lamemp3enc GStreamer plugin instead of lame (#214).
  • Smart playlists can now be correctly exported (#216).
  • The progress bar now seeks on mouse scroll (#230).
  • Fixed Track Properties dialog not showing up when the BPM tag is non-numeric (#209, #235).
  • Unknown tags are now shown as empty instead of "Unknown", except in the title field (#250).
  • Matroska files with no TimecodeScale are now supported.
  • Fixed showing of Matroska discnumber and tracknumber tags.
  • Exaile now includes a 128x128 icon.
  • When going up the directory hierarchy in the Files panel, the previous directory is selected.
  • Searching on the collection and tracklist can be done regardless of diacritics (#176).
  • Fixed intermittent segfault when quickly browsing through menus (#97, #283).
  • Support for .aac files.
  • Fixed reading certain wav files.
  • Improved support for reading .aif/.aiff/.aifc files (#463)
  • Fixed failure on deleting tags from certain formats (#152, #286).
  • Smart playlist now supports filtering by bitrate (#274).
  • Smart playlist now supports matching by a whole word (#486)
  • Smart playlist now supports a user-specified default sort order (#469)
  • A lot of dialog windows that were previously parentless are now properly attached to an Exaile window.
  • When using PulseAudio, other PA clients will classify the stream as music and correctly show Exaile's application name and icon (#324).
  • Exaile now comes with a Bash completion script (#132).
  • Plugins:
  • Added:
  • mpris2 implements most of the MPRIS 2.2 spec for external control of Exaile from compatible clients (e.g. GNOME Shell). A few minor functionalities are still missing, and there is no plan to implement the optional TrackList interface.
  • keybinder replaces the xkeys plugin, providing multimedia keys support for setups where D-Bus is not available. It requires libkeybinder3, which uses Xlib directly and thus won't work on Wayland or MS Windows.
  • Improved:
  • bpm can detect track BPMs using GStreamer's bpmdetect element.
  • equalizer presets have been normalized so they are of somewhat similar loudness (#104). Existing configs may not be affected.
  • ipconsole has been updated for IPython 5, although some features are still buggy.
  • When previewdevice is enabled, moodbar also replaces the secondary (preview) player with a moodbar (#81).
  • wikipedia now uses WebKit2 instead of WebKit.
  • winmmkeys now has experimental support for the keyboard module (you may have to tick "Show potentially broken plugins").
  • Changed:
  • All plugins distributed with Exaile now have version numbers identical to Exaile's (#82). This is mostly to keep things more consistent than they have been in the past. External plugins are not affected and may use any versioning scheme they consider appropriate.
  • jamendo now uses the built-in json module from Python instead of bundling simplejson (#205).
  • lastfmlove now depends on system pylast instead of bundling its own (#183).
  • minimode's Playlist window now acts more like a normal window than a popup (it doesn't hide automatically) (#222).
  • moodbar has been rewritten for GTK+ 3. However, some visualization options have not been reimplemented.
  • musicbrainzcovers now depends on system musicbrainzngs instead of bundling its own (#206).
  • podcasts now depends on system feedparser instead of bundling its own (#242).
  • Need love:
  • abrepeat, lastfmcovers, lastfmdynamic, librivox, minimode, and podcasts are in various levels of disrepair.
  • amazoncovers, awn, bookmarks, currentsong, lastfmlove, massstorage, multialarmclock, musicbrainzcovers, shutdown, and streamripper need testing. If you use any of these plugins, please let us know whether they work.
  • Removed:
  • contextinfo, droptrayicon, and ipod depend on APIs or libraries that are not compatible with the new PyGObject API.
  • exfalso has not worked with up-to-date versions of Ex Falso for a while now.
  • gnomemmkeys and mpris are superseded by mpris2.
  • xkeys is superseded by keybinder.
  • Any help in porting forward some of the removed plugins and functionalities will be appreciated.
  • Packaging:
  • Please note the dependency changes in the General changes and Plugins sections.
  • Some of the Makefile variables have changed. Some are now not configurable through environment variables, but rather have to be passed in to the make command (e.g. make FOO=1 instead of FOO=1 make). Please let us know if this is inconvenient to use in your packaging system.
  • There is a new MANPREFIX variable to set where manpages are installed (#70).
  • The Bash completion script is new. Please check that it ends up in the right location.
  • The Makefile will now only install config files to /etc when PREFIX is /usr; otherwise they are installed to $PREFIX/etc (#62).
  • On Windows and OSX, we now use pyinstaller to produce frozen executables, and our installer will no longer require installation of external dependencies

New in Exaile 4.0.0 Beta 2 (Feb 13, 2018)

  • Force usage of bsddb/bsddb3
  • Fixes Windows database creation issues
  • Various fixes

New in Exaile 3.4.5 (Oct 19, 2015)

  • This release fixes the following bugs:
  • Errors loading Smart Playlists that filter based on a playlist
  • Missing icon issue
  • Disable equalizer by default

New in Exaile 3.4.4 (Oct 19, 2015)

  • This release fixes the following bugs:
  • If you installed Exaile by makefile, or in slightly nonstandard ways, translations wouldn’t actually work
  • Various minor bugs

New in Exaile 3.4.3 (Oct 19, 2015)

  • One minor bug was fixed:
  • Smart Playlists with criteria involving timestamps do not work

New in Exaile 3.4.2 (Oct 19, 2015)

  • Fixes the following bugs:
  • Exaile did not always update individual files when changed externally
  • Add an option to ‘force rescan’ of files for users with misbehaving external tagger programs
  • GroupTagger plugin: Potential tag loss when using externally modified files

New in Exaile 3.4.0 (We're not dead yet) (Oct 19, 2015)

  • General:
  • Audio output device can now be switched while playing songs
  • Official support for OSX!
  • Improved unicode support
  • An option has been added to disallow playback while another song is playing
  • Linux: UDisks/UDisks2 support
  • Covers: cover manager improvements, saving to disk
  • UI:
  • Playlists can be shown in multiple panes
  • The left tab panels are now closable
  • BPM counter plugin has better UI integration
  • Enhanced smart playlists:
  • Create playlists based on other playlists
  • Support for filtering over 20 different tag types
  • Plugin:
  • A simpler plugin API is available (but the old one still works!)
  • Plugin manager doesn't show users potentially broken plugins anymore

New in Exaile 3.4.0 Beta 2 (Oct 19, 2015)

  • Fix for the Preview Device, docs update, appdata.xml inclusion.

New in Exaile 3.3.2 (Oct 19, 2015)

  • - Tracks were sometimes selected incorrectly when searching a playlist
  • - Sometimes the main window wouldn't appear when minimizing to the system tray
  • - More tags supported for MP4/M4A/FLAC/OGG files
  • - Locale bugs when executing --help
  • - Updated Windows installer dependency download versions
  • - Fixed plugins: librivox

New in Exaile 3.3.1 (Dec 10, 2012)

  • Accessibility related fixes
  • Dynamic playlists are now working correctly
  • WMA files are properly supported now
  • Playlist import is now more robust
  • Internal tags (those starting with __) were clobbered when being restored to playlists, so things like ratings and other such things would disappear mysteriously. This is no longer the case.
  • Fixed plugins: ContextInfo, mini-mode, osd, last.fm