Releases: regorxxx/Playlist-Manager-SMP
v0.19.0 - JSplitter (SMP and x64) support
Script should be installed as package, using the package manager at the Spider Monkey Panel/JSplitter Configuration window. Old method -as file- is still supported anyway.
The package is the file named '*-SMP-X-X-X-package.zip ' fond -at assets section- at bottom.
REQUIRES SMP 1.6.1+ or JSplitter 3.6.1.0+.
(SMP mod version attached -at assets- on this page has some improvements by marc23)
See full changelog here.
0.19.0 - 2024-10-09
Added
- Auto-saving: new setting at 'Playlist saving\Skip overwriting Playlists on file loading' submenu to avoid overwriting the active playlist when sending selections from the album list or loading a folder or file(s). In such case, auto-saving may also overwrite the associated playlist file which may be undesirable or happen without the user noticing it. When this option is enabled, the playlist will be restored back to the previous state automatically and no saving will be performed. Note playback will start anyway with the selected track(s) although now they will not be visible on any playlist. This "overwrite lock" safeguard is only applied to playlists with a playlist file associated, not to UI-only playlists. Also, if enabled, some extra garbage logging may be produced when manually applying undo on a playlist (which can not be avoided since every undo action counts -internally- as deleting the entire playlist).
Changed
- UI: 'Export and convert' presets can now be cloned or moved into another position.
- UI: 'Export and convert' presets are now removed directly using every preset submenu instead of the 'Remove preset' submenu.
- UI: filter/sorting bottom toolbar can now be hidden.
- UI: reset filters button is now renamed to 'Filter and sorting' button, and has a dual purpose allowing to clear all filters or set sorting and filtering options via menus (replacing the bottom filter toolbar if desired). Note, however, the filter/sorting bottom toolbar has an advantage since it allows setting 2 filters at the same time.
- UI: header buttons list is now sorted by order of appeareance at the 'UI elements' submenu.
- UI: cleanup of quick help popup.
- Configuration: changed the remove duplicates bias to prefer tracks containing 'BEST' within a 'TRACKDSP' tag.
- JSplitter (SMP) support and ES2021 compatibility.
- Helpers: in case saving a file throws an error due to long paths (+255 chars) a warning popup will be shown.
- Helpers: updated helpers.
Removed
- UI: categories and tags submenu on settings menu is now hidden if there is a 'Filter and sorting' button on UI, since both offer the same functionalit
Fixed
- Auto-saving: fix for playlist update debouncing while panel was busy and tracks were deleted.
v0.18.1 - Bugfix
Script should be installed as package, using the package manager at the Spider Monkey Panel Configuration window. Old method is still supported anyway.
REQUIRES SMP 1.6.1 (mod version attached has some improvements by marc23)
See full changelog here.
0.18.1 - 2024-08-13
Added
Changed
- Helpers: updated helpers.
Removed
Fixed
- Subsongs: fixed path handling for tracks with subsongs when using 'Export and convert'. Indexes were being added at the output playlist (like my track.mp3,16), instead of being removed (since the converted tracks are always individual files). Seems to be a long time bug, which was not fixed previously and went unnoticed because the tracks were converted fine with proper paths (but the playlist did not point to the file).
- Playlists maintenance tools: fixed handling of files with tags showing '.' as value at Playlist revive tool, being reported as exact matches in some cases.
- Playlist Manager Path: disk checking not working properly when setting the playlists folder via menus.
- Relative paths: relative path handling not working properly -on saving- if tracks were not on the same disk than the playlist file. Now it uses absolute paths in such cases.
- API: updated with latest ListenBrainz API changes.
v0.18.0 - AutoPlaylists and Smart Playlists improvements
Script should be installed as package, using the package manager at the Spider Monkey Panel Configuration window. Old method is still supported anyway.
REQUIRES SMP 1.6.1 (mod version attached has some improvements by marc23)
See full changelog here.
0.18.0 - 2024-07-30
Added
- Exporting Playlists: new 'Export and convert' preset for FiiO devices. Uses a SD card named 'external_sd1', but adjust as desired.
Changed
- AutoPlaylist: AutoPlaylists are now refreshed when exporting them, updating the cached size, duration, etc.
- XSP: Smart Playlists are now refreshed when exporting them, updating the cached size, duration, etc.
- Helpers: updated helpers.
Removed
Fixed
- AutoPlaylist: creation and modification date not being added properly to AutoPlaylists.
- XSP: creation and modification date not being added properly to Smart Playlists.
v0.17.0 - UI and Exporting Playlists improvements
Script should be installed as package, using the package manager at the Spider Monkey Panel Configuration window. Old method is still supported anyway.
REQUIRES SMP 1.6.1 (mod version attached has some improvements by marc23)
See full changelog here.
0.17.0 - 2024-07-24
Added
- Folders: new setting to select a destination folder for newly created playlists according to their format or action. Issue 83.
- Remove Duplicates: added multi-value parsing to features related to duplicates removal. i.e. A track with multiple artists but same title can be considered a duplicated if at least one of those artists matches (instead of requiring all to match). This is used for AutoPlaylist and Smart Playlist cloning, merge-load, etc. This setting can be switched at the 'Duplicates filter...' submenu. See this for more info.
- Exporting Playlists: new option to set a fixed output path (without a popup asking for it). #EXPORT#, #PLAYLIST#, #EXT# and #PLAYLISTEXT# may also be used as placeholders for the default playlist export folder, playlist name, extension or name + extension.
Changed
- Exporting Playlists: changed the output path to default output path. At execution, the playlist name and extension will be appended and suggested as output via popups. When left empty, the default folder for the panel will be used instead.
- Folders: enabling or disable the folders feature should now hide/show them instead of totally deleting them from data files. Now is possible to temporarily switch to a flat view without losing the entire folder tree on the process.
- Remove Duplicates: improved performance of duplicates removal in multiple places.
- Configuration: changed the remove duplicates bias to prefer lossless tracks with 16 bits per sample, 44.1 Khz sample rate and greater %DYNAMIC RANGE% values (if present).
- Lite Mode: loading delays set to zero on this mode by default.
- Lite mode: statistics mode feature is now disabled by default.
- Quick-search: pressing Ctrl allows to find the pressed chars/words at any position, equal to Shift behavior. i.e. both can be used now.
- UI: SMP main menus entries (at File...) are now cut to 50 chars in length before creating them.
- UI: panel now tries to maintain the current position instead of centering the view on the last focused item after some actions (i.e. no "jumping"). Issue 84.
- UI: restoring a deleted playlist within the panel will also highlight it afterwards.
- UI: popups opened via contextual menus related to a playlist now show the playlist name at the window title.
- UI: added album art caching for panel background whenever selecting/playing track changes but belongs to the same album. It checks for same album name and parent directory. Setting can be switched a the panel background selection mode submenu.
- UI: renamed most submenus, removing '...'.
- UI: new columns added reuse the last font, width, align and color settings used.
- Online controllers integration: improved exporting of playlists and menu entries.
- Helpers: updated helpers.
- Improved compatibility when running foobar2000 on drives without recycle bin.
Removed
Fixed
- ListenBrainz: updated with latest ListenBrainz API changes.
- Lite mode: drag n' drop to new playlist and 'New playlist from selection' not working properly.
- UI: merge-load not working in multiple selection if one of the selected playlists was empty.
- UI: new columns missing the default color.
- UI: re-setting the background to use front cover did not properly disable the font shading option selected if it was already enabled.
- UI: minor UI cosmetic fixes on double click on some buttons or switching columns view.
- UI: minor UI cosmetic fixes on selection and highlight rectangle over bottom buttons in some cases.
- XSP: duplicates not being removed on playlist exporting + convert using SMP main dynamic menus.
- Playlists maintenance tools: fixed handling of files without tags at Playlist revive tool, which were supposed to match by paths similarity.
- Configuration: removed unnecessary saving of cover paths when setting any panel background option.
- Configuration: .json files at 'foobar2000\js_data\presets\global' not being saved with the calculated properties based on user values from other files.
- Fixed possible crash renaming UI-only playlist on main program.
- Fixed possible crash handling web request while closing foobar2000. See this, although current methods don't use 'WinHttp.WinHttpRequest.5.1' but 'Microsoft.XMLHTTP' which hasn't given any problems yet.
v0.16.1 - Playlist handling fixes
Script should be installed as package, using the package manager at the Spider Monkey Panel Configuration window. Old method is still supported anyway.
REQUIRES SMP 1.6.1 (mod version attached has some improvements by marc23)
See full changelog here.
0.16.1 - 2024-04-26
Added
- XSP: new entry at Playlist maintenance tools to check for circular references in all playlists.
Changed
- XSP: Smart Playlists are now checked for infinite recursion or circular references when they are created, loaded or cached. This avoids situations where Playlist A tries to load Playlist B, which at the same time tries to load Playlist A. Or if it references itself. There is also a new recursion limit of 100 steps; any playlist which tries to look for sources with nesting higher than that will also throw a warning.
- UI: all list items color settings will be lost, make a backup if needed of property plm_15 and reapply later after updating.
Removed
Fixed
- UI: tracks duration and size was not properly refreshed in some cases for playlist files.
- UI: wrong handling of colors when upgrading from old versions. Crash when opening the settings menu.
v0.16.0 - Playlist revive, UI improvements + import text
Script should be installed as package, using the package manager at the Spider Monkey Panel Configuration window. Old method is still supported anyway.
REQUIRES SMP 1.6.1 (mod version attached has some improvements by marc23)
See full changelog here.
0.16.0 - 2024-04-22
Added
- Playlists maintenance tools: ported the Playlist revive functionality from Playlist Tools, available now at Playlist maintenance tools, for the active playlist. Pressing Shift + L. Click on the menu entry will select the dead items instead of replacing them. For more complex usage, check the other script.
- Importing file: feature similar to the one found at Playlist Tools-SMP, lets you find matches on library using a mask against a text list (for ex. ARTIST - TITLE per line). Additionally, not found items may be replaced with YouTube links. It also works directly on a URL as long as the content is only text. There is an array of configurable query filters to tweak how tracks are preferred (for ex. non live tracks first).
- UI: total track's size is now available as sorting method, tooltip info (next to duration) and display column. Value is calculated at startup for playlist files (and never saved at the playlist file nor cached) or after loading any of them. This calculation is done without an additional performance impact in case playlist caching is already enabled due to specific search settings (for ex. enabling query searching); it may also be forced with a new setting at 'Playlist behavior\Update other Playlists...' submenu. For UI-only playlists, is always calculated at startup independently of any other setting.
- UI: added tip at quick help popup ('?' button) about tooltip font settings.
- Configuration: expanded user configurable file at '[FOOBAR PROFILE FOLDER]\js_data\presets\global\globSettings.json' with a new setting for console logging to file. Disabled by default. Now this is a change from the previous behavior, where console was always logged to 'console.log' file at the [FOOBAR PROFILE FOLDER]. It can now be switched, but since it's probably not useful for most users is disabled by default.
Changed
- XSP: smart playlist are now also refreshed when the playlist sources change by drag n' drop, mouse actions, deleted or restored, in addition to changes when they are loaded in UI (introduced at 0.13.0).
- Clone: .xsp playlists and Auto Playlists will now make a copy of the loaded playlist (if possible) when cloning as UI playlist, instead of re-calculating the playlist to create the copy. This ensures the clone has the same sorting than the loaded version.
- UI: changed all builtin tooltips during external drag n' drop to use the native ones (which also span outside the panel).
- UI: all sorting methods now also sort elements by name in case they have the same priority (for ex. all 0-sized playlists sorted alphabetically instead of randomly).
- UI: smoother scroll bar movement when using the mouse and dragging the bar.
- Helpers: most json data files are now saved with Windows EOL for compatibility improvements with Windows text editors.
- Helpers: updated helpers.
Removed
Fixed
- UI: sorting not applying properly to folders when sorting by size or duration.
- UI: wrong offset for first child item within nested folders when the root folder was not shown on the list.
- Drag and drop: conflict drag n' dropping and pressing Ctrl over the "+" button, unintentionally triggering last edited playlist highlighting at the same time (feature introduced at 0.14.0).
- UI: drag and drop and other features requiring a playlist selection did not work properly with selections from other panels which were not using a playlist as source. Issue #81
- Playlist locks: workaround for SMP bug related to playback on locked playlists. It should now work fine, but the 'default action' lock can not be switched anymore. Issue #82
v0.15.0 - UI improvements
Script should be installed as package, using the package manager at the Spider Monkey Panel Configuration window. Old method is still supported anyway.
REQUIRES SMP 1.6.1 (mod version attached has some improvements by marc23)
See full changelog here.
0.15.0 - 2023-03-21
Added
- UI: settings to switch the playlist status icons at the right (loaded/playing now/active). Active playlist icon has been added too.
- UI: settings to change the standard playlist color and header buttons independently of general text color. Therefore the playlist status icons color can now be changed without affecting the rest by setting the other colors if desired. Beware this update will probably reset all colors customization on existing panel to default values.
- UI: move to folder submenus now have a 'New folder...' entry to directly create a new folder and move selection to it.
Changed
Removed
Fixed
- UI: fixed crash due to infinite recursion trying to move a folder into one of its own subfolders. In the case of drag n' drop, the tooltip now warns about it. If there are multiple items selected but at least one of them can be moved to the child subfolder (for ex. when selecting both playlists and folders), then non valid items are skipped.
v0.14.1 - Init hotfix
Script should be installed as package, using the package manager at the Spider Monkey Panel Configuration window. Old method is still supported anyway.
REQUIRES SMP 1.6.1 (mod version attached has some improvements by marc23)
See full changelog here.
0.14.1 - 2023-03-16
Added
Changed
- Lite mode: some improvements when switching from/to lite mode to maintain playlist metadata and folder structure. Now it tries to merge old and new data, without overwriting. In any case, it is not recommended to switch modes frequently, since some info may be lost for playlist files (like sorting, which can not be merged).
- UI: move to folder submenus now have a 'No folder' entry to move them to the root.
- UI: move to folder menu entry now highlights the folder destination if the folder is closed. This is in addition to current behavior, playlist highlighting when it's opened.
- UI: panel no longer displays a background message about no playlist files on tracked folder on Lite mode or when playlist loading has been delayed. It now shows a blank list.
Removed
Fixed
- Configuration: due to internal changes at init loading, folders were being removed in some cases at startup (but not on panel reload). Issue 80
- Configuration: due to internal changes at init loading, no playlists were shown of first setup on lite mode.
- Configuration: 'Panel behavior\Loading delays' input not working.
- UI: filters not applying properly at init in some cases.
- UI: filter button was highlighted while loading playlists (even if no filter was active). Cosmetic change, it was properly set after playlist loading.
- UI: sorting errors in some cases when moving items to folders using menus.
v0.14.0 - QOL and UI improvements
Script should be installed as package, using the package manager at the Spider Monkey Panel Configuration window. Old method is still supported anyway.
REQUIRES SMP 1.6.1 (mod version attached has some improvements by marc23)
See full changelog here.
0.14.0 - 2023-03-15
Added
- Playlist formats: new menu entries on playlist contextual menu to convert UI-playlists to physical files. Works in single and multiple selection. Request 79
- UI: new action on list button (+), using Shift + L. Click to send selection to a new playlist.
- UI: new action on list button (+), using Ctrl+ L. Click to send selection to last modified playlist. Meant to be used with the previous action to first create a new playlist and then keep sending tracks to it. When pressing Ctrl over the button, the list will jump to target playlist and highlight it. Last modified playlist detection skips any playlist including 'library viewer' or 'filter results' in their name, which are modified frequently and would not be the desired target in any case.
- Configuration: added new settings at 'Panel behavior\Loading delays' submenu to control how the panel delays loading\applying some actions. It may come useful in cases where foobar2000 startup takes a lot of time, for ex. delaying playlist loading 30 secs after startup.
- Configuration: expanded user configurable file at '[FOOBAR PROFILE FOLDER]\js_data\presets\global\globSettings.json' with a new setting for panel repaint debugging purpose. Disabled by default.
- Configuration: expanded user configurable file at '[FOOBAR PROFILE FOLDER]\js_data\presets\global\globSettings.json' with a new setting to check OS features on every panel startup. Enabled by default. This has been the default behavior since OS' features check was implemented, but it can now be disabled to improve init performance a bit, specially at foobar2000 startup (since it seems to hang in some cases when running it on slow HDDs or systems).
Changed
- UI: current position on list is now maintained while resizing the panel (instead of jumping to the top).
Removed
Fixed
- Playlist formats: creating a playlist file from active playlist when the playlist was an UI-only playlist did not properly convert it in some cases, complaining duplicated names. Request 79
v0.13.0 - Importing and Search revamp
Script should be installed as package, using the package manager at the Spider Monkey Panel Configuration window. Old method is still supported anyway.
REQUIRES SMP 1.6.1 (mod version attached has some improvements by marc23)
See full changelog here.
[0.13.0] - 2023-02-28
Added
- Importing JSON: allows to import any available playlist metadata from UI-only playlists, .fpl, .xsp, .pls and .srtm files (which is only saved in the JSON file). In such case, the playlist file (with same filename and name) must already reside in the tracked folder to be matched at the importing step and overwritten with the metadata found.
- Importing JSON: allows to import the folder structure saved in the JSON file.
- Importing JSON: allows to selectively choose which formats will be imported. i.e. files, AutoPlaylists and Smart Playlists, UI-only playlists, folders, ...
- AutoPlaylists: it's now possible to directly import all AutoPlaylists from native foobar2000 (v1.6 and V2.0+) to the manager using 'Import AutoPlaylists from UI...'. It will read the config files at the profile folder and try to parse the playlists found there (retrieving the query, name and sorting). This should automate the process of importing AutoPlaylists the first time the manager is installed, instead of going one by one.
- Search: new search mode against tracks' metadata. Internally loads all tracks from every playlists and looks for the search input within specific tags (by default ALBUM ARTIST, ALBUM, TITLE and DATE). It may produce some lag while searching if there are a lot of playlists, so disable it if not needed. The tracks are cached, so consecutive searches are faster (or performing it some seconds after startup); but it greatly increases startup time when using search is maintained at startup (since cache has not been built). In such cases, make sure to have the setting 'Reset search on startup' enabled.
- Search: new search mode against playlists' metadata. Retrieves track's metadata from the playlist file (available on .m3u8, .m3u, .xspf and .pls formats) and tries to match ARTIST or TITLE. This mode is much faster than looking for the track's tags (see above).
- Search: new search mode using queries. If the query outputs at least a track from a playlist, is considered a match. Caching is used (see above).
- Search: using drag n' drop on search box when query search mode is enabled will create a query to show only playlists containing such tracks by title and artist.
- Search: using drag n' drop on search box when tags search mode is enabled will show only playlists containing tracks matching title and artist.
- Search: the different drag n' drop search modes can now be set by priority. i.e. If query and path search are both enabled, query search may be set as as higher priority than path search, so it will always use queries if possible. In case query search is disabled, path search would be used instead.
- XSP: Smart Playlists are now automatically refreshed whenever a playlist source changes (not in any other case, use AutoPlaylists for that). i.e. if a Smart Playlist has a query like "#PLAYLIST# IS A", and "A" playlist changes, the Smart Playlist is automatically refreshed now (tracks added/removed). If the playlist is not loaded, only metadata is updated (like duration or size). This behavior can be disabled at settings.
- Backup: added more backup procedures when editing playlists. Original file is restored in case of errors.
- Statistics: new 'size' data mode for statistics, which shows statistics according to playlist's size (num of tracks) grouped by 25. Ex. Empty, >0, >25, >50, ... Clicking on any data point will filter the panel, as usual, with playlists with such condition.
- Statistics: data source can now be set to All playlists, Playlist files, AutoPlaylists, UI-only playlists or Selected playlists (by name).
- Configuration: added integrity checks to global user settings files, found at '[FOOBAR PROFILE FOLDER]\js_data\presets\global[...].json'. In particular queries are now check to ensure they are valid and will throw a popup at init otherwise. Other settings are check to ensure they contain valid values too.
- Configuration: expanded user configurable file at '[FOOBAR PROFILE FOLDER]\js_data\presets\global\globSettings.json' with a new setting to output to console profiling logs at script init. They work globally. Disabled by default.
- Folders: added menu entries to create [child] playlists from current selection or active playlists at the folder contextual menu. Request 71
- Folders: playlists can now be created within folders using drag n' drop (pressing ALT or ALT + CONTROL as usual). Request 71
- UI: added drag n' drop actions to the quick help popup (shift click on help button).
- UI: added settings for UI-only bound playlists deletion behavior when deleting a playlist file: always ask, delete both (file and UI-only playlist) or delete only playlist file. Request 76
Changed
- Importing JSON: importing logic has been rewritten to be more robust. If an existing playlist has the same name than one imported, a popup will ask to overwrite or omit it. In case extensions differ, will show an error (since they are probably not the same playlist). Overwriting a playlist involves replacing the old metadata with the new one, which in the case of AutoPlaylists means the query is replaced (plus other data), but for other playlists formats, things like tags, categories, etc. are also transferred. Items will also be compared before overwriting, so in case there is no changes (filtering on-init properties like folders being opened or not), they will skipped.
- Importing JSON: suggested JSON file path is now automatically retrieved from clipboard (instead of being empty).
- Search: added validity checks to input to avoid crashes or errors.
- AutoPlaylists: added checks to sorting inputs to ensure they are valid expressions.
- AutoPlaylists: AutoPlaylists created via native foobar2000, instead of the manager, are now flagged as 'AutoPlaylist (UI)' when opening their contextual menu at the manager, as an indication of playlist being an UI-only playlist. Some menu entries also show a warning about cloning needed to fully integrate them.
- AutoPlaylists: cloning an AutoPlaylist created via native foobar2000, instead of the manager, also opens the AutoPlaylists properties now to easily copy the query and sort patterns.
- XSP: added checks to sorting inputs to ensure they are valid expressions.
- XSP: Smart Playlists are now locked when loading them, similar to AutoPlaylists behavior. If there is no sorting, then tracks can be reorder, otherwise sorting is also locked.
- XSP: improved caching in multiple playlist actions.
- XSPF: improved caching in multiple playlist actions.
- XSPF: .xspf playlists now follow the complete specification, allowing multiple locations per track. In case one is not found, the next one is used. Previously only one location per track was allowed. Content resolution via tags has not changed since that was already implemented.
- Folders: drag n' drop now allows to move items to any specific position within a folder, not just to the end, on manual sorting.
- Folders: improved filtering in some cases with nested folders or showing only specific playlists within a folder.
- UI: 'Move to folder...' submenu now shows an indicator when there are no other folders to move to.
- UI: Added a tip at all input popups for sorting, to specify when 'SORT BY' and similar statements must be used.
- UI: optimized repainting to use less resources on statistics mode.
- UI: changed tooltip for multiple selection to only show the available actions which work on the entire selection.
- Shortcuts: global shortcut to search (F9) uses now the new search methods added for tracks.
- Shortcuts: Shift + F9 now displays the report with selected tracks (previously it was only used when pressing F9 if no compatible search methods was enabled to look for tracks).
- Shortcuts: all global shortcuts related to playlists (F1 - F6) now work recursively on multiple selection and folders (without level limits). Exceptions: F2-Rename (since renaming on batch is not allowed), and DEL-Remove playlist (deleting in batch can only be done via menus and multiple selection to avoid accidental deletions of multiple items).
- Shortcuts: global shortcut are now shown on the related menu entries and/or buttons. For ex. the menu entry to create a new playlist now displays the shortcut F7 if global shortcuts are enabled.
- Clone: wrong warning about not found tracks when using relative paths in some cases.
- Clone: when cloning playlists within a folder (via menus or shortcuts), the new items will be created now at the same folder level (not at the root of the list).
- Playlist formats: added some checks when parsing corrupted playlists to avoid crashes (and instead omit the line).
- ListenBrainz: input when using playlist importing by MBID is now checked to ensure it's a valid UUID (before attempting the web retrieval).
- Startup processing has been changed to not run any secondary process while caching the library (for ex. AutoPlaylist size updating, etc.); these steps will be run sequentially after library caching has been done. Using multiple panels, one of them will cache the library and the rest run the other steps if possible.
- Configuration: changed the remove duplicates bias to prefer tracks with higher play-counts and positive feedback t...