Releases: fooyin/fooyin
v0.10.8
New Features
Improvements
- Interface
- Move the Preserve timestamps option to Advanced settings
- Command Button: Highlight toggleable actions and add checkable states for mute and menu bar actions
- Playlist: Select the next track after removing or cutting a track (#1177)
- Add support for custom placeholder artwork
- Add an option to expand or collapse Library Tree nodes with a single click (#1195)
- Add
Add to current playlist and play if stoppedactions for filters, the Library Tree, and the Directory Browser (#1195) - Add a playlist context menu action for opening playlist settings
- Add configuration for the Selection Info properties tab and ReplayGain widget
- Improve settings page layouts, section headers, and script input fields
- Add support for compact DSP layout widgets and SoundTouch layout editors
- Library/Metadata
- Centralise artwork loading, request ordering, and thumbnail caching in a shared cover repository (#784)
- Improve ID3v2.3 multivalue tag compatibility, including optional semicolon splitting for compatible fields (#739, #1109, #1129)
- Add FFmpeg support for TAK files and APEv2 tag and cover art reading (#764, #1129)
- Media Controls
- Send embedded track lyrics over MPRIS with
xesam:asText(#1192)
- Send embedded track lyrics over MPRIS with
- Scripting
- Add
%_fooyin_version%,%isstopped%and%datetime%
- Add
Fixes
- Audio/Playback
- Interface
- Save shortcut changes on Apply/OK instead of shutdown (#1186)
- Fix themed playback icons after restart (#1174)
- Refresh playlist controls and highlight icons after palette changes
- Fix scrobbler toggle icon colours after theme refresh
- Fix stale Search Controller widget connections after layout edits (#1199)
- Prevent track selection actions on auto playlists
- Show Selection Info tooltips when text is elided (#1206)
- Fix file dimensions in artwork properties tab
- Prevent the elapsed progress dialog from opening after completion
- Refresh cover views after artwork cache invalidation (#1211)
- Library/Metadata
- Improve artist slash detection when reading metadata (#1181)
- Fix automatic rating scale detection for custom tags (#1175)
- Reject non-finite ReplayGain values (#1196)
- Fix writing of ID3 composer and performer tags (#1207)
- Fix duplicate ID3 track and disc total fields
- Fix rating/playback statistics not persisting after library rescans (#1212)
- Tag Editor
- Fix changing mixed tags when the selected tracks share the same value
- Fix doubled spaces in multivalue tag edits (#1210)
- Playlist
- PipeWire
- Scripting
Build/System
- CI
- Drop the Arch Linux CI job now that fooyin is available in Arch Linux extra
- Translations
Contributors
Translators
- ιΊιΊ BigELK176
- @numerfolt
- shuhei fujisawa
- @khagaroth
- @adem4ik
Full Changelog: v0.10.7...v0.10.8
v0.10.7
New Features
- Quick Tagger
Improvements
- DSP
- Add
View -> Equaliseroption when an equaliser DSP is present in a chain
- Add
- Interface
- Add track selection support to the Queue Viewer (#318)
- Add
Add to Playlistcontext menu actions to track selections, filters, the Library Tree, and the Directory Browser (#831) - Reorganise settings page categories and start categories collapsed by default
- Show a placeholder for empty settings categories and simplify single-page category display
- Replace Tab Stack cardinal direction labels with standard directions (#1156)
- Add a seekbar and WaveBar setting for whether mouse interaction takes focus (#769)
- Playlist
- Add settings to ignore playlist files when adding folders and prevent duplicate entries when loading playlists (#1160)
- Remove the playback queue size limit
- FileOps
- Move the single-operation confirmation setting to Advanced settings
- Lyrics
- Improve the layout of font and colour settings
- Scripting
- Tag Editor
- Add enabled and multi-value columns to tag editor fields
- WaveBar
- Cache supersampled waveform renders
- Add options to normalise waveforms, use a dB scale, and choose peak display mode
Fixes
- Audio/Playback
- Filters
- Fix filtered
Allselections using the whole library instead of matching entries (#1151)
- Fix filtered
- Interface
- Fix inline editors accepting changes after pressing Escape (#1170)
- Fix bottom viewport row selection repaint in tree views
- Sync widget configuration state after applying
- Library/Metadata
- PipeWire
- Sync PipeWire volume and mute state with the system mixer (#1147)
- Scrobbling
- Make the scrobbling threshold independent of the playcount threshold (#1152)
- Settings
- Fix relative positioning of settings categories and category identity across translations
- VU Meter, WaveBar
- Always set the active palette for the default highlight colour
Build/System
- Packaging
- Target Ubuntu 26.04 and update distro-specific dependencies (#1171)
- Translations
Contributors
Translators
- @numerfolt
- @khagaroth
- ιΊιΊ BigELK176
- @adem4ik
- @Mustlane
- @CarterLi
Full Changelog: v0.10.6...v0.10.7
v0.10.6
Improvements
- Filters
- Interface
- Add the Tag Editor as a layout widget (#1012)
- Add filter for searching shortcuts and improve the shortcut editor
- Add support for selecting built-in theme icons in Command Button widgets
- Add an unsplit/remove split action for single-child layout widget containers (#1132)
- Add an Advanced settings page and move technical settings there
- Move plugin settings pages under the Plugins category
- Make the layout editing context menu configurable
- Save and restore settings dialog page state and expanded categories
- Improve layout editing context menus and menu header appearance
- Split playlist settings into focused pages
- Add a separate action for clearing the current playlist
- Add autocomplete to inline playlist editing (#1136)
- Library/Metadata
- Lyrics
- Support finding local lyrics with directory wildcards
- Playlist
- Add setting to load directory when opening a single file (#841)
- Scripting
- Add date and time functions:
$year,$month,$day_of_month,$date, and$time - Add
$meta(field,index),$meta_sep,$meta_test, and$meta_num
- Add date and time functions:
- Tag Editor
- Add support for configuring multivalue separators (#1141)
Fixes
- Audio/Playback
- Discord
- Support sandboxed IPC socket locations (#1115)
- Interface
- Update the Script Editor track when the selection changes (#1122)
- Fix playlist header selection deleting tracks
- Fall back to the default or first playlist when restoring the active playlist fails
- Fix Library Tree sorting and searching when strings contain scripting syntax (#1117, #1125)
- Fix Library Tree row height with multiline titles
- Fix the cursor moving to the first row when adding new rows in extendable tables
- Library/Metadata
- Lyrics
- Fix LRC offset calculation (#1121)
- Playlist
- Fix 'Cursor follows playback' when restoring state on startup
- Scripting
Build/System
- Build
- Add a
PFFFT_USE_SIMDCMake option for the PFFFT library (#1110)
- Add a
- Translations
Contributors
Full Changelog: v0.10.5...v0.10.6
v0.10.5
Improvements
- Interface
- Add support for wildcard artwork directory paths (#1099)
- Split playlist and queue context-menu actions into separate configurable actions
- Improve playlist header appearance when artwork is hidden
- Add a playlist preset menu option for opening the preset settings page
- Directory Browser
- Add search support (#1106)
- Make context menu configurable
- Library Tree
- Add support for right-aligned text with
<right> - Add configurable summary node script
- Add
%trackcount%,%childcount%
- Add support for right-aligned text with
- Scripting
- Add support for preserving layout whitespace during evaluation
Fixes
- Audio/Playback
- Refresh active stream metadata on track updates so ReplayGain changes apply immediately (#1102)
- Interface
- Fix editable tab middle-click handling
- Library/Metadata
- Lyrics
Build/System
- Packaging
- Add zlib as an explicit dependency and Debian packaging dependency
- Drop Fedora 41 and add 44
- Plugin API
- Remove the legacy plugin settings API
- Translations
Contributors
Full Changelog: v0.10.4...v0.10.5
v0.10.4
New Features
- Interface
- Add
Playlist Manager - Add configurable context menu settings with ordering and separators for track, filter, and Library Tree menus (#495)
- Add inline metadata editing in playlist columns (#684, #846, #1010)
- Add a Properties dialog sidebar for multi-track editing (#758, #991, #1005)
- Add a standalone Playback Queue window from the View menu (#1051)
- Add
- Playback
- Add random track and album skip playback commands (#1054)
- Tag Editor
Improvements
- Audio/Playback
- Discord
- Add
Clear on pauseoption (#811)
- Add
- Filters
- Speed up icon layout size hints
- Interface
- Improve Library Tree performance for large libraries
- Improve large playlist loading and selection performance (#1053)
- Add multiline rich text rendering support across playlist, filter, and status widgets
- Add a copy action to Selection Info (#1072)
- Add
Copy file locationandCopy directory pathtrack actions (#496, #1020) - Add an option to show all tracks when a search is empty (#848, #1002)
- Add context menu actions to the Playlist Switcher (#985)
- Add settings actions to artwork and status widget context menus
- Add an option for the Status Widget to show current playlist information
- Add configurable artwork thumbnail grouping (#1082)
- Split Library Tree and WaveBar settings into tabs to fit smaller displays (#1062)
- Fix missing updates when inserting rows into hidden views (#983)
- Library/Metadata
- Serialise library scan commits and defer completion until changes are applied
- Normalise track ratings when writing to the database
- Cache metadata writability checks by extension (#1053)
- FileOps
- Add support for extracting archive entries
- Lyrics
- Playlist
- Scripting
- Add
%playlist_size%and boolean functions$and,$or,$not, and$xor
- Add
Fixes
- Audio/Playback
- Avoid restoring playback state on startup when playback is stopped (#980)
- Preserve shuffle history during next/previous navigation (#1034)
- Avoid unnecessary DSP chain output reinit on stale format predictions
- Preserve the restored active playlist track on shutdown
- Fix paused position synchronisation after seeking to the track start (#1088)
- Fix fade-in-only pause resume handling (#1085)
- Handle FFmpeg errors when interleaving planar samples (#1091)
- Filters
- Enable plain-text search matching in comment and custom metadata fields (#776, #975)
- Rewrite grouped filter state handling, refresh row heights after restoring view state, and fix the
Show headertoggle (#964, #1001, #1004) - Fix
Allselections including non-library tracks (#1066) - Refresh widget fonts on runtime font changes
- Interface
- Fix X11 desktop icon startup class handling (#959, #975)
- Fix status bar selection elision and multiline right alignment (#1049)
- Fix the base theme font not being applied in
StatusWidget(#1011) - Rename the mislabelled WaveBar remaining-time option (#1017, #1019)
- Use the hovered tab when renaming tabs in tab stacks (#1063)
- Restore active playlist artwork in the Cover Widget
- Restore the saved proxy type in network settings (#1077)
- Fix Script Display copy shortcut handling (#1078)
- Improve editable tab right-click and middle-click handling
- Lyrics
- Library/Metadata
- Notifications
- Query notification capabilities asynchronously (#1087)
- Playlist
- Rework the playlist model around stable entry ids to keep playback, queue, undo, and now-playing state consistent across edits (#1034, #1039)
- Fix
Cursor follows playbackduring engine-owned automatic transitions - Fix stale playlist tracks after FileOps rename and move operations (#1052)
- Fix range selection when shift-clicking playlist headers (#1067)
- Fix potential crash when reparenting children during header merges (#1061)
- Scrobbling
- Scripting
- Evaluate scripts even with an empty track list
- Tag Editor
- Fix copy and paste actions; use cell selection (#1083)
- VU Meter
- Fix static layer scaling on high-DPI displays (#1075)
Build/System
- CI/Release
- Translations
Contributors
Full Changelog: v0.10.3...v0.10.4
v0.10.3
Improvements
- Interface
- Add an option for tab stacks to remember and restore the last selected tab
- Notifications
- Add playback controls and a portal fallback to desktop notifications
Fixes
- Audio/Playback
- Fix ALSA device disconnection handling regression (#962)
- Fix prepared-track fallback after format changes, so the next track starts from the
beginning (#967) - Fix duplicate error dialogs for failed track loads
- Fix playcount incrementing after seeking to the end of the last track
- Preserve shuffle history on track updates and improve previous-track
availability (#968)
- Filters
- Ignore stale filter population results after resets (#964)
- Fix poor performance by avoiding eager cover loading in icon mode
- Interface
- Lyrics
- Preserve lyrics on track updates (#970)
- Library/Metadata
- MPRIS
- Fix cached album artwork being shown (#968)
- SoX Resampler
- Resolve a memory leak
Full Changelog: v0.10.2...v0.10.3
v0.10.2
New Features
- FileOps
- Add an action and shortcut to delete tracks (#932)
- Notifications
- Add track change desktop notifications (#801)
- Playback
- Add per-device output profiles and an output selector (#947)
Improvements
- Build/System
- Add CMake support for selecting which plugins to build (#941)
- Interface
- Add a Playback Statistics section to selection info (#942)
- Add a new Track Display settings page with configurable full, half, and empty star symbols for
%rating_stars%and%rating_stars_padded%(#938) - Support extracting artwork for archive tracks
- Add waveform render supersampling, and increase the max number of samples per channel to 8192 (#897)
- Library/Metadata
- Playlist
- Improve Playlist Organiser drag-and-drop handling
- Scripting
- Make contains queries accent-insensitive (#957)
Fixes
- Audio/Playback
- Fix PipeWire lifecycle issues during output switching and device enumeration
- Reinitialise playback buffering when
BufferLengthchanges during playback - Fix output volume being applied twice after fades (#944)
- Fix DSP preset save/load after removing DSPs
- Fix playback queue follow-up using the queued track playlist (#952)
- Interface
- Fix exported file naming in save dialogs and avoid portal-backed save target issues (#937)
- Fix translations for ScriptEditor references and the Interface settings page (#935)
- Fix seeking in faded areas of synced lyrics
- Fix leaked
ExtendableTableViewshortcut actions - Fix WaveBar rescaling double counting and RMS calculation
- Fix stale state in
ExpandedTreeViewafter model resets (#956) - Fix artwork cache clearing so playlist thumbnails do not stay cached as no-cover
- Integration
- Fix stale MPRIS play/pause capabilities after playback starts (#955)
- Library/Metadata
- Ignore empty embedded cover data when loading artwork
- Playlist
- Fix mixed playlist/file drops losing standalone tracks
- Fix right-click selection in Playlist Organiser
- Tag Editor
New Contributors
- @cheesetosti made their first contribution in #949
- @Agecaltin made their first contribution in #932
- @ripdog made their first contribution in #801
Full Changelog: v0.10.1...v0.10.2
v0.10.1
v0.10.0
The next release is here!
This is one of the biggest releases yet, bringing some of the most requested playback features to fooyin. The major additions are DSP support with a built-in DSP suite and a new equaliser, configurable crossfading and fading for track changes and seeking, and Discord Rich Presence integration.
There is even more in terms of improvements too. This includes playback queue persistence, incremental autoplaylist updates, per-widget configuration, new scripting features, richer formatting support across the interface and for more widgets, improved artwork tools, and a long list of playback, metadata, and UI fixes.
A huge thanks to everyone who contributed through code, translations, testing, bug reports, and feedback.
A later, smaller release is already in the works, which will include proper ReplayGain support for Opus, and inline editing of metadata in playlist columns.
Stay tuned!
New Features
- Discord
- DSP
- Lyrics
- Add configurable edge fading and a per-instance base line font override
- Equaliser
- Interface
- Playback
- Playlist
- Scripting
Improvements
- CLI
- Add seek commands (#760)
- Directory Browser
- Add options to show hidden files/directories and symlinks (#850)
- Engine
- Interface
- Add mouse forward/back support for playback controls (#925)
- Add a local artwork source preference option to choose between embedded artwork and local files (#657)
- Add rich text/script formatting support to
Status Widget,Queue Viewer,Library Tree,Filters, and related displays - Split general settings into separate layout and display pages
- Add conflict detection for shortcuts and validation error handling for settings pages
- Add configure actions for decoders and tag readers that expose plugin settings
- Resolve widget colours from the active palette and react better to icon theme/style changes
- Allow editing default script-based items in widget registries (#879)
- Add CoverWidget fading options and configuration
- Add a dedicated Playback > Fading settings page for fade and crossfade options
- Improve status widget double-click behaviour to jump to current playback context (#808)
- Reposition playlist tab remove action (#809)
- Improve seek label sizing to avoid clipped text
- Improve icon-mode resize performance in tree and filter views
- Improve supported-extension tooltips for decoders and tag readers
- Use clearer names for connected-widget actions
- Make rating stars respect the active style and selection state
- Move waveform seekbar to the Visualisations menu
- Show WaveBar cursor while paused
- Improve WaveBar precision and gradient rendering
- Add VU meter FPS and legend colour settings, and cache rendering
- Library/Metadata
- Add support for embedding
webp,bmp, andgifartwork (#855) - Handle tags
ARTISTandARTISTSseparately (#783) - Improve archive entry metadata handling and preserve entry timestamps where available
- Preserve rating, playcount, and played timestamps on file reload, with settings to control overwrite behaviour
- Improve metadata read/write handling and tag editing workflows
- Improve library scanning and batch progress updates (#900)
- Add support for embedding
- Lyrics
- Rewrite lyrics list/editor as
QListView(#818) - Add quick action to update current line and move to the next (#770)
- Add drag-seek and improve synced lyrics centering
- Add multi-line highlighting and smoother synced-lyrics behaviour
- Improve default played/unplayed colours, current line formatting, and word highlighting
- Apply configured margins and alignment consistently in lyrics views and "no lyrics" display scripts
- Adjust lyrics panel colours when the theme changes (#875)
- Always save lyrics when applying editor changes
- Respect hidden files when searching for local lyrics
- Seek only on left-click (#870)
- Rewrite lyrics list/editor as
- Playlist
- Add option to stop playback when queue finishes
- Add action to remove unavailable tracks from the database
- Add live evaluation of playback variables in playlists
- Add external drag support for playlist tracks (#927)
- Add a separate sort script option for library viewers (#117, #321)
- Improve Library Tree performance, grouping, sorting, and playback-following behaviour
- Add a
More...option to the playlist sorting menu - Add queue actions to
Search Playlistresults (#888)
- GME
- Enable
vgm/vgzplayback in GME - Make fading of non-looping tracks an opt-in setting (#826)
- Enable
- Scrobbler
- Submit cached scrobbles on startup
- Send "Now Playing" updates at regular intervals (#861)
- Utilities
- Add actions to copy log entries and full logs to clipboard
- Queue log messages to avoid potential main-thread stalls
- Use a dedicated
QCachefor cover caching
Fixes
- Engine
- Library/Metadata
- Playback
- Formats/Decoders
v0.9.2
Improvements
- Core: Add option to preserve file timestamps (#660)
- FileOps
- Add presets to track selection context menu
- Remove writable check on directory (#655)
- GUI/MPRIS: Always load album covers from file (#665)
- Info Panel
- OpenMPT: Add loop count option to settings (#643)
- Playlist
- Scrobbler: Add support for custom services (#672)
- Lyrics
- Add lyrics tab to properties dialog
- Add forward and rewind buttons for precise timestamp adjustments (#623)
- Allow removing lyrics
- Improve layout of editor controls
Fixes
- Engine
- GME/OpenMPT/LibVGM: Fix infinite looping (#668)
- Library: Fix parsing CUE sheets with multiple files/tracks (#582)
- Playback
- Always follow track if option is enabled, regardless of playstate
- Fix playback switching to queued playlist, even with 'Follow Playback Queue' disabled (#647)
- Playlist
- Scrobbler
- Fix MusicBrainz token not being saved
- Fix duration and listened_at types (#676)
Build/System
New Contributors
Full Changelog: v0.9.1...v0.9.2