Added playback support for BeatSaber song files along with trying to correctly determine the artwork file that is associated with them (as long as the expected json file is found)
Added a 'delete current song' to the notification area icon support (icon packs would need to be updated using ico9=delete.ico to support customising this in the icp files) to offer a different way for deleting the current playlist item with appropriate handling to deal with it also playing (this has been done to remove the need to patch around non-WACUP issues with the old 3rd party gen_delete plug-in)
Added an 'extension' filter to the offered local library plug-in filters so it's a bit easier to distinguish the different potential file types within the local library database without having to remember to do things like ?(filename ends "opus")|(filename ends "mp3") to manually filter the search results
Changed how invalid / corrupted MP3 files are handled to massively minimise their impact & causing in some cases during my testing up to a minute of the process hanging (could be worse for others but more often it'd just trigger the OS unresponsive crash handler)
Changed the modern skin getExtensionFamily(..) script method via a live patch so for now it'll return a null / empty string instead of what appears to incorrectly be the plug-in description associated with the passed in extension (isn't entirely clear what this is meant to return, just that in 2008 plague noted that it was returning an invalid string so for now this will just make it safer for those curious)
Changed the patching of the AVS plug-ins so their calls to get the current WACUP process text are done directly to avoid some instances where it can end up causing a potential process lock-up
Changed the wording of the refresh options on the library playlist root menus to better reflect they only update the cached information about the playlist & are not for refreshing the playlist titles within (maybe an equivalent refresh all titles option needs to be added)
Changed the library plug-ins that prompt if its ok for WACUP to close due to them doing something that needs confirmation to cancel it (e.g. replaygain processing) to set the default button to be 'No' just to avoid accidentally triggering the action
Changed the local library plug-in to prompt if an import is currently happening when attempting to close WACUP so it can either be left to continue or for it to be aborted instead of causing a closing crash
Changed some of the common library view handling to reduce some code duplication & better ensure there's a consistency in the sorted column & selection preservation related handling
Changed how the local library plug-in handles file metadata update notifications to better ensure that if done as part of a batch edit of files it's less likely to cause a ui hang / crash during processing
Changed some more the initialisation & multi-threaded handling of the in_mp4 input plug-in to make it better behaved when playing youtube videos especially if there's not been any other video file played
Changed some more of the no metadata found handling when trying to generate internal titles to show which should resolve some of the remaining reports of seeing the raw filepath instead of the expected filename for such scenarios (assuming the default ATF formatting)
Changed the library playlist views so they can show a simplified form of the blank separator as it's expected instead of showing the raw playlist entry along with reducing repeated calls to get metadata for these playlist items when it's never going to return anything
Changed some of the file info / alt+3 dialog handling to reduce the time it takes to load the information due to some of the metadata being requested causing a number of complete re-reads of the file
Changed how metadata requests (e.g. for ATF title generation) deals with the file being known to the local library database whilst not having that value stored so it will now use it even if it's empty & avoid doing a fallback check that then attempts to re-read that empty metadata value from the file itself which should also help to reduce some of the hang crashes seen (mostly due to gen_ff script calls)
Changed some of the handling when it comes to reading replaygain values from files to minimise multiple reads being attempted which in some extreme situations could trigger a slow response & a hung crash
Changed some of the c++/winrt handling in the Win10Shell plug-in to try to resolve some odd on closing issues that's been seen within the recent beta crash reports
Changed how the library playlist import handling is done to reduce lots of messageboxes being spawned (mostly due to laziness & forgetfulness on my part by re-using something aimed at single file import for the batch import handling) when a playlist is already being managed with the library playlists (this should make it a lot cleaner especially if trying to import more than a few playlists at a time)
Changed the look-up handling for artwork so it now should directly load any supported image files passed to it before following the artwork loading preferences which avoids folder.* matches on passed jpeg, etc (this could explain a few odd reports of some actions showing the wrong artwork though most of those have stemmed from bad / incorrect metadata when doing the appropriate fallback searches for artwork)
Changed how the selection handling of the library playlist root view is done so it should finally work as intended to minimise duplicate selection changes whilst also improving the initial & multi-selection behaviour of the view
Changed the waveform seeker plug-in to try an alternate mode to get the length of the item trying to be rendered if the usual metadata request fails (e.g. due to file access locking) so that the calculation can still be attempted (this will likely have been seen as some incomplete / file refuses to be processed on first go situations that some have noted as being an occassional issue)
Fixed (finally / hopefully) a long running issue where the tooltip in the waveform seeker window can depending on the direction of mouse movement vs when a click is happening preventing the click registering
Fixed some additional whitespace being output in the currently playing information string that the modern skin engine plug-in needs to work for playback related information (this shouldn't break things...)
Fixed a regression where the action to rebuild the titles in the library playlist view of the actual playlist wasn't working as expected if there were no items currently selected
Fixed toggling the library playlist preference option to show the playlists as child nodes in the library window navigation node not always allowing drawing of the tree to continue
Fixed the probable cause of a hang seen when the local library plug-in is trying to update the currently playing item shown whilst a view query (new or updating) is also running
Fixed an internal api implementation issue that could prevent the clearing of metadata values (e.g. the comment field) not always working especially if done via a batch edit via the local library views
Fixed the probable cause of some youtube playback issues causing a long hang when trying to stop / advance to the next track which could then cause the player to hang & crash
Fixed a regression going back a few builds where the sorting of the library playlist root list wasn't working as expected (e.g. sorting only in one direction)
Fixed the initial size of the about window so it shouldn't be double sized if there's no previously stored window height (another legacy from disabling the skinned preferences implementation)
Fixed the use system keep-alive playback preference option not being correctly saved if the setting is set to off
Fixed the spacebar handling in the main window to better ensure it'll only do the main action as long as it's the only key held down whilst ensuring shift+spacebar if the main window is focused will trigger the currently playing item into view (if not already) in the main playlist editor (to complement the specific handling the playlist editor window gained a few builds back)
Fixed shift+spacebar not always working as expected if the playlist spacebar preference was set to do nothing which incorrectly had that behaviour being applied instead of scrolling the current item into view
Fixed the current playlist iten not always being correctly scrolled into view on playback changes as expected depending on the playlist spacebar preference & how it was interacting with things (thanks Samey)
Fixed the incorrect positioning of the manage playlist button in the main playlist editor window due to weirdness with the handling of dynamically added menu items vs the sizing of the menu items if skinned
Fixed the double-click action on the classic skin playlist editor buttons being incorrectly run if the menu is cancelled when using the escape key
Fixed some inconsistencies with the handling of removing the currently playing item across a number of the plug-ins so a better attempt at releasing any file locks should occur as well as the song-ticker & the current playlist item being correctly updated to reflect the changes (more often it wouldn't update as expected if not already playing)
Fixed some compatibility issues with older versions of the pacemaker dsp plug-in which could cause the occassionly lock-up or window titlebars to be messed up (the fun of a unicode program vs an old ansi plug-in)
Fixed the song-ticker not showing the expected ATF based string (if configured that way) when drag + dropping file(s) onto the classic skin main window due to the string not being triggered to be re-built
Fixed a handling issue with in_mp3 if it's set as the default / fallback input plug-in & a file without an extension is passed to it which depending on its contents could cause a crash to occur (e.g. extensionless mp4)
Fixed a number of issues experienced with getting metadata if the local library is not loaded & only querying the file directly for metadata is being used including slower than expected responses to get a batch of metadata from the file due to it incorrectly re-reading the file for every metadata request attempted
Fixed a number of ui deadlocks that could occur if there was a critical failure whilst attempting to read metadata & a catch all error handler was triggered preventing an internal lock being from freed
Fixed a number of inconsistencies with the handling of title refreshing with the library playlist views mostly due to an optimisation incorrectly using the main playlist information even if that was stale
Fixed a library history view update handling issue that could cause an instance to crash if the history view is open when it's trying to live update the currently playing item to reflect the playback state
Fixed a regression which broke the correct right-click menu appearing on the local library filter pane header control (broke a few months back so erm shows how much that is even used)
Fixed a timing quirk with the asynchronous adding of new local library smart views which could in some instances prevent the new view from being seen again after restarting WACUP
Updated cacert.pem to latest (19 Jul 2022)
Updated Monkey's Audio (in_ape.dll) to 8.35 (25 Jul 2022)
Updated mpg123 (mpg123.dll) to 1.30.1 (7 Jul 2022)
Updated Patreon list (10 July 2022)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 23 Jul 2022