github fooyin/fooyin v0.14.0

4 hours ago

I thought v0.13.0 would remain the largest update for a long time, but here we are again with an even bigger release!

This update brings major layout and interface improvements, including drag-and-drop layout editing, a visual autoplaylist editor, and sticky artwork and headers in the Playlist. On the engine side, we've added native decoders for FLAC, MP3, Opus, and Vorbis, alongside JACK output support, A–B repeat, and drag-and-drop plugin installs. The Settings dialog is now searchable too, which should help with finding the right page more easily.

A lot of work has also gone into performance, library filtering, and expanding the scripting and query options, with large tag values like lyrics now supporting compression to save memory.

Note: The JavaScript Panels plugin is nearly ready and will be released shortly once documentation is finished.

As always, thanks to everyone who contributed, reported issues, and helped test the changes, and to all the translators keeping up with the new strings.

Oh, and due to popular demand, the original dragon icon is back with this release along with a few refinements.

New Features

  • Playback
    • Add an FLAC decoder plugin and DTS-FLAC support (#346)
    • Add an MPEG decoder plugin with MP1, MP2, and MP3 support
    • Add an Opus decoder plugin
    • Add a Vorbis decoder plugin
    • Add a JACK output plugin
    • Add A–B repeat with controls in seek bars (#1791)
  • Interface
    • Add drag-and-drop layout editing (#1728)
    • Add Track Viewer and per-widget playlist settings (#1699)
    • Add a standalone Library Tree window with integrated controls (#1708)
    • Add customisable toolbar layouts
    • Add configurable backgrounds to Lyrics, Script Display, and Queue Viewer
    • Add a full-track seekbar mode to Spectrogram
  • Playlist
    • Add options to keep headers and artwork visible while scrolling (#1739)
    • Add configurable artwork reflections
    • Add scriptable Playlist Tabs text with %playlist_name%
    • Add a visual rule editor for autoplaylists (#1798)

Improvements

  • Audio Conversion
    • Group output formats and add encoder backend selection
    • Arrange metadata options across two columns
    • Remember the current configuration between uses (#1756)
    • Show destination subdirectories in the preview (#1705)
  • Equaliser: Add built-in presets and auto-select the preset matching the current settings
  • File Operations
    • Improve keyboard focus and preserve destination path case
    • Sort preview paths naturally
  • Interface
    • Add favourite support to projectM presets (#1674)
    • Improve equaliser layout and size preamp and band columns independently (#1712)
    • Allow viewing artwork for mixed-metadata selections (#1702)
    • Allow filter columns, Library Tree groupings, and sorting presets to be enabled or disabled
    • Add widget margin controls to layout editing context menus
    • Refine the dragon icon and restore it as the default application icon
    • Add a layout button and command for opening the hidden vertical main menu
    • Show a vertical menu with Alt or F10 when the menu bar is hidden (#1483)
    • Unify Playlist Organiser and Queue Viewer display scripts
    • Add a per-widget track preference to Script Display
    • Clarify track preference labels in Script Display and Artwork (#1734)
    • Clear layout editing undo history when leaving editing mode
    • Keep configuration dialog reset buttons aligned left
    • Match Queue Viewer padding to other item views
    • Improve the General settings page layout
    • Add MusicBrainz release page link and scrollable release details (#1741)
    • Arrange Library Tree settings in two columns
    • Support transparent standalone lyrics window backgrounds
    • Add a configurable script for skipping automatic lyric searches
    • Cache the no-lyrics document
    • Suppress known noisy Qt log messages
    • Add custom frame rates with improved frame pacing for visualisations (#1736)
    • Use proper quotation marks and apostrophes (#1771)
    • Add horizontal scrolling and optional word wrapping to the log (#1777)
    • Show portal-assigned global shortcuts and track system changes (#1731)
    • Improve expanded tree view lookup performance
    • Add configurable volume curves to Volume Control (#1797)
    • Replace text hint symbols with themed icons
  • Filters
    • Add an option to remember the selected saved filter (#1690)
    • Add an option to restore Library Filter state on startup (#1699)
    • Improve metadata update performance
    • Scroll to the top for changed results and preserve position for unchanged results
  • Library & Metadata
    • Add Deezer and TheAudioDB as online artwork sources
    • Show all artwork types supported by enabled sources in the search dialog
    • Compress large extra tag values to reduce memory usage
  • Playback
    • Add TTA playback support (#764)
    • Add an option to skip automatic crossfading within albums
    • Reduce log noise from expected decoder probe failures
    • Support JSON-formatted ICY stream metadata
  • Plugins
    • Add drag-and-drop plugin installation
    • Add installation of .zip and .fyplugin bundles with staged upgrades
    • Standardise and translate plugin categories and statuses
  • Playlists
    • Add scripted separators and unify preset display scripts (#1732)
    • Add optional column layouts to playlist presets (#523)
    • Expand the default autoplaylist presets
    • Use the selected preset name for unnamed autoplaylists
    • Enable queue indexes by default in playlist-led mode
    • Improve autoplaylist update performance (#1787)
    • Improve track lookup and Queue Viewer update performance
    • Make the inline editing delay configurable
    • Move background controls to a separate configuration tab
    • Sort playlists naturally in Playlist Manager
  • Settings
    • Add search across settings categories, pages, and advanced options
    • Add buttons for opening cache and state directories
    • Add an option to use selection-only preset comboboxes
    • Clarify rating and Love editor options (#1684)
    • Add an FFmpeg decoder settings dialog
    • Show supported URI schemes in decoder tooltips
    • Migrate account and network settings from the configuration file to the database
    • Add a new Trace logging level
  • Scripting
    • Add playback output information fields
    • Add %avgbitrate% for the average bitrate of track lists (#527)
    • Add font weight formatting with <weight>
    • Add underline and strikethrough formatting tags with <u> and <s>
    • Add alignment tag support to rich-text HTML rendering (#1733)
    • Add Queue Viewer variables for current, upcoming, and played queue entries
    • Add Script Editor formatting tag highlighting and optional function parameter hints
    • Make playlist playback icon fully scriptable with %playingicon%
    • Add %queue_mode% for the current queue playback mode
    • Snapshot library metadata for background sorting, filtering, tree population, and file operations
    • Improve binding and evaluation performance
    • Reorganise Script Editor settings and move font configuration to theme settings
    • Reduce the default minimum height of script text editors
    • Add %lyrics_line% for the current line of synced lyrics
    • Add STARTS WITH and ENDS WITH query operators
    • Add IN and NOT IN queries for matching any value in a list, e.g. genre IN (Rock, Jazz)
    • Add HAS ANY queries for matching any substring in a list, e.g. title HAS ANY (live, demo)
    • Add HAS WORD and NOT HAS WORD queries for whole-word matching
    • Add BETWEEN queries for date ranges
  • Tag Editor
    • Start editing values when navigating with Tab (#1669)
    • Add an option for single-click value editing
    • Require a double-click or edit key to edit custom tag names

Fixes

  • General
    • Preserve cancellation across queued background jobs and make direct settings file access thread-safe
    • Sanitise path separators in metadata-derived paths during conversion (#1706)
  • Interface
    • Fix alternating row selection backgrounds in right-caption tree views
    • Fix artwork background flicker when changing selection
    • Fix a crash when closing a widget window with its configuration dialog open
    • Fix Shift + right-click selection when showing hidden actions
    • Fix painting lifecycle issues in item views and editors
    • Fix Properties action icons in Windows dark mode (#1691)
    • Update the search help link (#1715)
    • Fix truncation around bracketed text in Lyrics (#1737)
    • Respect conditional empty values in Filters (#1753)
    • Preserve configured columns in Radio Browser on startup (#1686)
    • Preserve track order when applying ReplayGain values in Properties (#1727)
    • Rescale the waveform when label visibility changes (#1689)
    • Preserve artwork fades when the upcoming image is unchanged
    • Fix WaveBar seek cancellation and high-DPI rendering
    • Hide unreachable played threshold markers in seek bars and WaveBar
    • Update documentation links (#1792)
    • Show scripts in line edits from the beginning when first shown
  • Library & Metadata
    • Fix Discogs artwork requests
    • Fix reading custom ReplayGain tags (#1775)
    • Fix DSD detection on Windows (#1633, #1735)
    • Initialise audio readers before metadata and artwork writes
    • Fix playback and playing indicators for Library Tree root tracks (#1759)
    • Update the Library Tree selection before handling middle-click actions (#1766)
    • Recognise spaced ALBUM ARTIST tags (#1693)
    • Make track update and deletion batches and playlist saves atomic
    • Update raw ratings while file writes are deferred (#1787)
    • Keep immediate and deferred playback statistics updates in sync (#1787)
  • Lyrics
    • Fix right-to-left word order (#1675)
    • Ignore instrumental placeholders from NetEase and QQ
  • Playback
    • Preserve active DSP preset identity across edits and restarts
    • Preserve played threshold state when restoring playback
    • Restore queued playlist references when the original playlist returns
    • Snapshot scripting state before background playlist population
    • Refresh queued track metadata when tracks change
  • Playlists
    • Avoid unnecessary history refreshes in queue-led mode
    • Fix dangling parent references during playlist population
    • Fix empty subheader editors in playlist preset settings
    • Fix extra padding in subheaders (#1725)
    • Follow the playing track by playlist entry ID (#1765)
    • Preserve column layouts while header restoration is pending (#1776)
    • Restore the correct scroll position at startup
    • Refresh single-column header when playlists are renamed
    • Restore queue-led source order for temporary playlists
    • Use folding for automatic playlist names (#1694)
    • Allow Return to commit playlist renames (#1700)
  • Scripting
    • Correctly escape metadata in rich-text scripts (#1729)
    • Preserve literal backslashes in formatted text (#1678)
    • Restore two-argument $split behaviour
  • Visualisations
    • Fix retention and timing with high-latency audio outputs (#1736)
    • Find lowercase texture directories for projectM (#1709)

Build/System

  • CI: Enable ccache for Linux, FreeBSD, Windows, and Flatpak builds
  • Dependencies: Add JACK, libFLAC, libmpg123, libopusfile, and libvorbis; make libarchive required
  • Flatpak
    • Include the version in bundle filenames
    • Allow access to /mnt and /media
  • Packaging: Update desktop entry text and translations (#1785, #1789)
  • Translations: Update translations and translation sources (#1687, #1688, #1701, #1713, #1714, #1748, #1749, #1762, #1763, #1772, #1773, #1799, #1800)
  • Windows: Sign release artifacts with SignPath

Dev/API

  • Database: Expose fooyin's database pool through CorePluginContext
  • Audio Encoders: Add the EncoderPlugin interface for registering encoder plugins
  • Playlists: Add PlaylistInteractor APIs to refresh whole playlists or individual entries
  • Plugins: Add API version checks and audio input priorities
  • Scripting: Add dependency-aware contexts, data sources, and live subscriptions

Contributors

Translators

Full Changelog: v0.13.1...v0.14.0

Don't miss a new fooyin release

NewReleases is sending notifications on new releases.