Bugfixes
- PICARD-428 - Plugins body gets executed when picard starts, even if plugin is disabled
- PICARD-1498 - Allow uninstalling plugins that cannot be loaded
- PICARD-1616 - Windows: File currently played in internal player cannot be saved
- PICARD-2003 - Picard installed via pip cannot find locales
- PICARD-2657 - "Open in Player" unclear in meaning
- PICARD-2675 - On GNOME Wayland the file chooser dialog is not transient to the main window
- PICARD-2678 - Wrong configuration and plugins path opened/shown in MSIX install
- PICARD-2782 - Extremely small font in dialogs and toolbar on Windows with display scaling
- PICARD-2826 - After saving the file info does not update
- PICARD-2829 - macOS: multi directory selection dialog does not allow access to external drives
- PICARD-2847 - Switching option profiles does not update menu items
- PICARD-2857 - Picard returns non-zero when loading files on the command line
- PICARD-2863 - Barcode sometimes not shown in "other versions" context menu
- PICARD-2878 - Crash in cover art when scan triggers recursion beyond python limits (e.g. 1000)
- PICARD-2879 - macOS: Chosen starting directory might not be used in file browser
- PICARD-2954 - Cannot scroll up while dragging items on Wayland
- PICARD-2990 - Disabled format plugins will still be used
- PICARD-3016 - Logging relative path broken on Windows with Python 3.13
- PICARD-3019 - Switching option profiles in application menu is not persisted and does not update menu quick options
- PICARD-3029 - Deleted Record Label field from m4a file persists in file
- PICARD-3038 - edittagdialog.py:271: IndexError: list assignment index out of range (dumped core)
- PICARD-3043 - Impossible to delete
performertag in ID3 - PICARD-3045 - Copying the value of "length" tag crashes if multiple files are selected
- PICARD-3056 - Picard crashes and closes if cover art is not provided in the file picker
- PICARD-3065 -
$rsearchfails if matching pattern contains a group that didn't match - PICARD-3067 - Dot remaining in title after track number parsing
- PICARD-3073 - Album covers download is inconsistent in search results dialog
- PICARD-3074 - Problem editing search text in search results dialog
- PICARD-3081 - On Windows, artist named "NUL." causes "Move Files" to fail
- PICARD-3093 - Sanitize HTTP origin header values in browser integration
- PICARD-3109 - Error saving option settings with new profile
- PICARD-3128 - Collections menu not usable with keyboard
- PICARD-3139 - Incorrect settings key used
- PICARD-3149 -
tracknum_and_title_from_filename()raises an exception with a file like '1.opus' - PICARD-3164 - Network drive for remote hostname ending with dot is broken
New Features
- PICARD-150 - Support for internal search/filter of the main two panes
- PICARD-860 - Add cover art processing to the plugins API
- PICARD-1861 - New plugin API and plugin management
- PICARD-2121 - Add cover art image processing options
- PICARD-2287 - Support copy and paste of one or multiple tags
- PICARD-2607 - Add
_genresand_folksonomy_tagsvariables - PICARD-2783 - Provide separate options for embedded and external cover art
- PICARD-2817 - Add support for macOS "Now Playing"
- PICARD-2842 - Add a CLI command to install a plugin
- PICARD-2921 - Allow manual setting of cover art from web url
- PICARD-2926 - Add option to filter out images below a given size
- PICARD-2936 - Add option to change cover art images' formats
- PICARD-2945 - Provide
_broadcast_datevariable - PICARD-2966 - Show file type in list views
- PICARD-3054 - Add artist country variable
- PICARD-3104 - Allow user to set plugin execution order
- PICARD-3107 - Add profile save warning on option settings page
- PICARD-3108 - Allow user to select checkbox option settings to include in a Quick Menu
- PICARD-3157 - Add support for MPRIS2
- PICARD-3165 - Support parsing raw SCSI TOC data file as created by redumper
Tasks
- PICARD-2393 - Code cleanup and refactorings
- PICARD-2784 - Drop support for Python 3.9 and below
- PICARD-2871 - Get rid of QtCore.QObject.tagger
- PICARD-3007 - Document
_genresand_folksonomy_tagsvariables - PICARD-3017 - Update documentation for
_filepathvariable - PICARD-3050 - Update documentation for lookup disc
- PICARD-3079 - Support Python 3.14
- PICARD-3106 - Use uv for dependency management
- PICARD-3119 - Refactor: all standard, icon, delegate columns to use new column API
- PICARD-3159 - Document broadcast date variable
- PICARD-3162 - Document keyboard shortcuts for internal player
- PICARD-3167 - Document new
redumperSCSI TOC file import option
Improvements
- PICARD-237 - Allow embedding cover art with lower resolution
- PICARD-271 - Avoid overwriting additional files when moving into folders that already have same file
- PICARD-442 - Allow sorting by whether release is complete
- PICARD-489 - Add extra field for ALL folksonomy tags in Picard
- PICARD-1092 - Add support for preserving the SYLT tag, for synchronised lyrics
- PICARD-1241 - Resize cover art to the new size configured in a new option
- PICARD-1248 - Show more technical details (Bitrate, Size) for tracks
- PICARD-1274 - Allow moving music files to system trash
- PICARD-1403 - Add explicit API for album requests
- PICARD-1404 - Management of third-party plugins
- PICARD-1477 - Option to never replace an image with a smaller one
- PICARD-1507 - Cancel outstanding album requests if album gets removed
- PICARD-1583 - Player: Adjust pitch when changing playback speed
- PICARD-1685 - Add
_filesizevariable - PICARD-2025 - Display old/new path/filename in Metadata list
- PICARD-2101 - Dynamic variable list for script editor auto completion
- PICARD-2103 - Support custom columns in panel views
- PICARD-2122 - Add a "cover dimensions" column to show primary cover art size
- PICARD-2192 - macOS: Support ARM (Apple Silicon)
- PICARD-2300 - Linux: Support org.freedesktop.appearance.color-scheme to detect dark / light appearance user preference
- PICARD-2331 - Update to PyQt 6
- PICARD-2529 - Move plugin directory to QStandardPaths.StandardLocation.AppDataLocation
- PICARD-2561 - Add context menu entry to play file(s) on internal player
- PICARD-2580 - Add keyboard shortcut for Artwork/Show more details
- PICARD-2729 - Allow disabling date sanitization for APE and Vorbis tags
- PICARD-2759 - "Clear Log" button is missing an ellipsis at the end
- PICARD-2765 - Use consistent quotation marks in translatable strings
- PICARD-2807 - Search-as-you-type text box in Options | Plugins
- PICARD-2828 - Separate options for standardized instrument and vocal credits
- PICARD-2832 - Add warning when select multiple directories option is enabled
- PICARD-2855 - Add an option to control network cache size
- PICARD-2856 - Improve logging regarding plugin paths
- PICARD-2858 - Make profile highlights colors configurable
- PICARD-2864 - Enable HTTP/2 for requests
- PICARD-2869 - Register a global exception handler to show the crash dialog
- PICARD-2875 - Options > Advanced > Maintenance: let the user choose the backup directory
- PICARD-2876 - Allow viewing unused options list without having to enable removal
- PICARD-2884 - Show icon tooltips for errors and unmatched tracks
- PICARD-2897 - Load supported file formats with unknown / uncommon extension
- PICARD-2899 - Number displayed in Other Versions submenu title isn't the actual number of versions available
- PICARD-2904 - Let the user restore default for one color only in Options > Interface Colors
- PICARD-2905 - Seed date when adding cluster as release
- PICARD-2912 - Highlight missing functions in script editor
- PICARD-2913 - Let the user configure script syntax highlighting colors
- PICARD-3003 - Allow setting disable-autoupdate on build with PEP 517 build system
- PICARD-3020 - Submit disc subtitles in add cluster release
- PICARD-3042 - Show medium format in disc ID lookup result
- PICARD-3060 - Script variable/function completer popup should limit number of choices
- PICARD-3062 - Add tag documentation to script editor help
- PICARD-3066 - Links displayed in dark mode are not using an appropriate color, hard to read
- PICARD-3069 - Add Disambiguation Field to Album Search Results Dialog
- PICARD-3072 - Add an optional
groupparameter to$rsearch - PICARD-3084 - Allow up to 3 characters for Windows file name compatibility replacements
- PICARD-3085 - Cover Art View - Display file size and dimensions on default view
- PICARD-3123 - Rename 'dont_write_tags' to 'enable_tag_saving' (value reversed)
- PICARD-3133 - Pre-Save File Hook for Plugins
- PICARD-3146 - Allow plugins to register global tools menu actions
- PICARD-3147 - Remove
ui_initextension point - PICARD-3148 - Use Python docstring for registered scripting functions
- PICARD-3161 - Add keyboard shortcuts to control internal player
- PICARD-3169 - Show hierarchical options tree for option profiles
- PICARD-3170 - Drop parameters from
$matchedtracks()