Added the ability to determine if WACUP only shows in the System Media Transport Control (SMTC) integration on appropriate Windows 10 installs when it's not the active program (this is also now the default behaviour due to feedback related to the OS provided action overlapping too much of the WACUP instance when working with it at the time)
Added a 'Windows 10' preferences page so it's easier to disable the options related to the Windows 10 Integration plug-in if appropriate (this also adds an option to disable the SMTC feature in the plug-in though completely disabling the plug-in is the preferred option via the General Purpose plug-in preferences page)
Adding the currently stored skin into the crash report log file so it's easier for me to see if it's using an obviously known 'bad' skin (e.g. a modern skin that keeps throwing divide by zero errors)
Added an option on the 'General' preferences page to control how the main right-click bookmark menus are handled when clicked with respect to playing, enqueuing or enqueue & playing as you may need
Added support for the 'browser next / previous' actions (e.g. those found on a mouse with additional buttons) to be handled by the hotkeys plug-ins which can be useful for moving forward / backwards in the main playlist or controlling the volume or any other available hotkey actions (note: this may not work consistently as a global hotkey depending on what other programs are possibly handling these actions)
Added an option on the new 'Shuffle' preferences page for controlling restoring the shuffle table between sessions for those not happy with this deviation from what Winamp did (it is enabled by default as minimising repeating plays of playlist items until the playlist has completed naturally is better & resolves a long standing complaint that Winamp would repeat files since there was no cross-session info)
Added initial support for natural sorting of string values (which relates to numbers within a string being interpreted as a sequence rather than their character value) such as within playlist titles or local library results to better match user expectations & the supported versions of Windows (if none of that makes sense, it should make values with both text + numbers in them sort in an expected manner)
Added additional hooking of the last.fm AudioScrobbler plug-in to minimise the potential for it sending messages to the main WACUP window for information to cause a deadlock / crash as seems to occur for some
Added a $StrBetween(,,) ATF method so it's a bit simpler to extract parts from a string if there's known start & end characters (e.g. $StrBetween('title [other info]','[',']') would provide 'other info' otherwise it'll return that there's no string)
Added compatibility improvements for the Volume Logic output plug-in so it should now be usable with WACUP (this involved making sure it's own loading of the other output plug-ins allowed them to be initialised correctly, by re-mapping the read / write of its settings out of the program folder & into the settings folder making it portable compatible, overriding the preferences handling so that the output plug-ins offering unicode descriptions now show as expected instead of just the first letter & a filename)
Added initial support for the Streaming Source plug-in to connect 'natively' as a Icecast source (this will need some testing & is only aimed at Icecast v2.4+ servers)
Added initial support for the Streaming Source plug-in to connect 'natively' as a SHOUTcast 2/Ultravox 2.1 source (this will need some testing & doesn't currently support sending in-stream artwork)
Changed some of the plug-in initialisation handling to better contend with (mostly older) plug-ins having issues & failing on loading which then causes WACUP to crash on loading
Changed the crash reporter to better report .NET runtime crashes (e.g. win10shell)
Changed some of the error handling in the Not So Asio output plug-in to try to minimise the crashes which keep occuring with it (am not expecting this to help but it's an attempt)
Changed how the older IPC_FORMAT_TITLE API is handled in relation to older plug-ins trying to use it to try to reduce the crashes seen related due to them passing incomplete data
Changed to not send 'ispodcast' to the input plug-ins as this is causing issues for some of the input plug-ins in relation to how it first accesses the file & cause a crash (this value is only meant to be sent to the local library plug-in & this change should resolve some of the odd crashes being experienced)
Changed how the shared metadata service treats 'streammetadata' in relation to how the input plug-ins are then directly queried
Changed how the internal ATF processing is done to reduce duplicate metadata queries being made to the shared metadata service &/or the input plug-ins depending on what is supported (this is primarily to reduce the amount of additional processing done as well as reducing the calls to the input plug-ins on fallback which for some can be slow to respond &/or cause stability issues based on some crash reports)
Changed the Audio CD, Archive Playback & Playlist Seperator input plug-ins to no longer rely upon subclassing the main WACUP window to do some of their integration (e.g. live menu updating)
Changed the Global Hotkeys & Taskbar Integration (Win7shell) plug-in to now no longer rely upon subclassing the main WACUP window due to the WACUP core calling it as needed for some of the required messages
Changed the Repeater & Undo plug-ins to lower the number of specific messages it's attempting to handle when subclassing the main WACUP window (still a bit more to do to be able to remove the subclass)
Changed the Format Converter plug-in to now no longer rely upon subclassing the main WACUP window for the handling of the API messages it implements
Changed the Bookmarks, Exporter & History, replacement Local Library & Playlists library plug-ins to no longer rely upon subclassing the main WACUP window to do some of their integration (e.g. detecting file changes)
Changed the default classic skin window positions with a new install to better show off some of the WACUP additions whilst reducing initial positioning overlaps based on recent feedback
Changed the /RESETCLASSICSKINPOS command-line option to also reset the double-size option to off
Changed the /RESETCLASSICSKINPOS & /REPAIR command-line options to then restart WACUP once the action has been completed (based on feedback received restarting is expected)
Changed the installer to better handle scenarios when the WACUP core dll cannot be updated (still not determine why this is happening for some) so it will fail gracefully sooner in the update process
Changed the IPC_GET_HMENU api to now also provide the menus for the main player button context menus (i.e. right-click menu on the play button)
Changed the majority of the WM_WA_IPC API messages that the Modern Skin engine (gen_ff.dll) sends to now be processed directly without going to the main window handler to see if it'll help resolve some of the weirder ui interaction issues (e.g. accessing menus triggering stack overflow crashes & possibly the embedding of the generically skinned windows causing random crashes for some setups more than others)
Changed the installer to check for ReactOS to prevent those inquisitive enough to try to do it from hitting the issues that are present (mostly due to it supporting a Windows XP level of API but WACUP relies upon a number of required Vista & newer APIs)
Changed more of the WACUP specific plug-ins & also parts of the core to move away from SendMessage(..) based API calls for direct usage where possible whilst still offering support for the SendMessage APIs
Changed the installer checks to better handle updating from an old 2019 era WACUP preview build to the current late 2020 / early 2021 builds so it's not re-extracting the Winamp installer when not required
Changed how the main right-click & windows (modern skin specific) menus are handled with the 'media library' entry to hopefully avoid some reported instances of the menu item appearing at the top of the menu (this should also gracefully get out of the way if the legacy media library plug-in is being used to avoid duplicate menu items)
Changed how the artwork cache is handled between sessions to now attempt to maintain it which depending on the usage can improve the initial loading experience to reduce some artwork related aspects being slow to initially render
Changed the podcast plug-in to automatically hide the info are with in the podcast library view & the the view layout options on it's related preferences page when running under WINE (this is to help avoid some stability issues seen with this feature on WINE related to the embedded browser mode used for the info pane)
Changed the handling of crash reports from WINE installs to make them easier to detect from those from Windows installs
Changed the shuffle related options on the 'Playlist' preferences page to now be on their own preferences page as a child of the 'Playlist' node
Changed the installer to help complete the transition away from using the Nullsoft DirectSound & WaveOut output plug-ins over to the WACUP equivalents of Not So Direct & Not So Wavey (the prior 68x0 builds only removed the Nullsoft plug-ins if they were not found to be the currently used output plug-in whereas this change will remove them & set the active output plug-in to the appropriate equivalent)
Changed the initialisation order of the Taskbar Integration (Win7shell) plug-in to minimise a tangible delay experienced when the plug-in is enabled (nothing revolutionary on the time saved but the delay was enough to be noticeable when looking for it at around 20-30ms on my development install)
Changed how visualisation plug-ins are handled to better ensure that high resolution timers (needed to ensure a more consistent frame rate) are used when one (or more) is running
Changed the library history plug-in to better cache some of the values it displays to avoid repeat processing for a small performance improvement with the responsiveness of the view
Changed the 'vorbis comment tag' tab (for FLAC & Vorbis files) on the alt+3 dialog to now sort the metadata to better match with the 'raw metadata' tab
Changed video playback handling to possibly improve the reported performance issues with it lagging (video in general is a pain & I need to re-do my initial attempt as it sucks)
Changed the 'update all' menu action on the 'downloads' library node causing the ui to be blocked when triggered & the podcast feeds haven't yet been loaded / viewed
Changed a number of UI blocking messageboxes to used timed ones if there's an issue when using Milkdrop & the plug-in attempts to report the issue (if not responded to in a timely manner it can trigger a crash)
Changed the error reporter to query the OS to determine if there's likely to be an active internet connection before continuing to attempt to auto-submit / email the crash report
Changed how the File Info (Alt+3) dialog attempts to deal with read-only files so its more obvious that editing of the metadata on the file is not going to be possible
Changed some aspects with how video in MP4 containers are handled to minimise some of the delays in actions reacting which might be contributing to some odd deadlocks (this may also improve seeking but there's more to do on this as it's still far from ideal)
Changed the $SubStr(,,) ATF method to support a negative offset so it can be used to work from the end of the string instead of working from the start with a positive / zero value
Changed how the ReplayGain processing deals with read-only files to now skip attempting to process them which is the better way to know that the calculated values won't be saved before wasting processing the file first
Changed the handling of the core ATF formatting string to allow for line breaks in the user edited version & effectively removed the size limit on the length of the string for a dynamically handled string
Changed how WACUP reacts to being run after a crash if there is a known newer version available to download by now waiting for user interaction with the update dialog instead of doing it normally & often allowing more crash reports to occur in quick succession as is the case for some (this might be annoying but so is trying to deal with large batches of crash reports from the same user despite an update existing which fixes the issue happening)
Changed the Shuffle diagnostics preference tab to now update when changes are detected instead of having to manually toggle away from the view & back to it
Changed how the the first item to be played from the current shuffle table is selected after it has been initially created to act more like Winamp (the prior preview build had temporarily been defaulting to the first playlist item in all situations which this change now attempts to pick a random item - so it could entirely keep picking the same item as is the joys of randomness)
Changed the Not So Direct output plug-in to attempt to live update its volume control settings when changed instead of waiting for starting playback of a playlist item
Changed the crash report collection dialog to stay around for a few seconds after the collection succeeds to help prompt about contacting to provide more information as well as making the email address into a clickable link
Fixed the probable cause of a deadlock seen in a crash report related to the Not So Direct output plug-in
Fixed the probable cause of a deadlock seen in a crash report related to the Not So Wavey output plug-in
Fixed the crash reporter not recognising running on Windows 8 with the OS compatiblity mode being enabled
Fixed the probable cause of a crash on opening the output plug-in preferences page (if this still happens then it's most likely an issue related to the atsurround output plug-in)
Fixed the probable cause of a crash within the NDE handling seen in a number of crash reports over the past two builds due to possible corruption / incomplete loading of the file
Fixed the replacement local library plug-in sometimes incorrectly handling updating the current view cache when removing items from the view
Fixed the initial processing of urls by the Streaming Url Processor (e.g. YouTube playlist links) causing WACUP to be unresponsive & sometimes triggering the crash reporter (it now should keep the program in a more responsive manner along with altering the playlist entry to indicate that something is happening compared to before)
Fixed the installer not removing the existing Win7Shell & Win10Shell plug-ins when updating which could cause post-update related failures due to internal api mis-matches
Fixed the probable cause of a crash within the settings cache when trying to read in some of the settings
Fixed the internet radio plug-in not always waiting for the first run download to complete before its quit() has completed which could cause a crash if the download was still in progress for some setups
Fixed a conflict with how the generically skin windows are handled vs the overall window positions & always on top mode under a classic skin that has been causing a hang with some setups
Fixed a number of issues which meant the MP4 Demuxer plug-in wasn't as thread safe as it should have been (this is behind a lot of the crashes seen with the 68x0 preview builds)
Fixed the probable causes of some hangs experienced related to their playback threads not relenquishing correctly
Fixed a massive regression in the performance when accessing MP4 based files especially those with artwork to show
Fixed a crash when trying to read in all items from an ini file section (this was seen with the Audio Capture plug-in)
Fixed placement of the built-in window positioning on loading to minimise the chance of them going off-screen if something went wrong during the prior instance so they should re-appear on the primary monitor
Fixed shift + left/right when playback is paused (along with shift + click on the previous & next buttons) not changing the current playback position as expected (under classic skins the seekbar won't update but this is something that'll be resolved when I take over the drawing of the classic main window & is currently due to a disconnect between the Winamp core & what WACUP is doing for playback handling)
Fixed an issue introduced before the 68xx installers which was sometimes preventing a sensible install path being set when checking to use the portable install type
Fixed a timing issue that could cause the Streaming Url Processor plug-in to crash on exit if it was processing an url request at the time
Fixed a timing issue that could prevent the History plug-in from being able to save the current playback position for the resume option when a file is intentionally stopped including it being paused
Fixed a regression preventing VGM files going to the VGM input plug-in instead of the vgmstream input plug-in (the fun of inconsistent / unofficial namings of files to do with video game based formats)
Fixed the tooltip in the Waveform Seeker window causing the window to be brought to the top & overlapping other windows
Fixed a crash on playback if the played history database (or any of the NDE based database files) has become corrupted thought it won't help to recover any data which may have been in the database file(s)
Fixed a performance regression with Milkdrop that's existed for over a year which has been preventing it from running at the desired frame rate (if the hardware can do it) or just running 10-20% below the specified frame rate irrespective of hardware capabilities
Fixed a number of small incompatibilities with some of the older plug-ins that are trying to be used to either gracefully fail (since they expect Winamp specific code layouts for things) or just because they send an invalid response (which also applies to when being used under a plain Winamp install)
Fixed the current main playlist edit item not being correctly scrolled into view during loading
Fixed the media library window when using the replacement media library core getting closed if WACUP is closed in a minimised state when using a classic skin (modern skins might still be funky but the modern skin engine also doesn't support starting minimised correctly)
Fixed a crash & a parameter validation issue during live editing of the ATF $decode(..) method which should now ensure the final parameter is provided
Fixed the current working directory not being correctly restored between sessions (& also reduced the memory overhead for the value when WACUP is running)
Fixed a visual regression with Milkdrop introduced when reducing some of the processing done which was not needed
Fixed the video window right-click menu not showing the correct one when using the simple window mode
Fixed some quirks with the selection tracking mode in the classic artwork & lyrics windows where it'd either show the wrong information briefly or completely (as per the lyrics plug-in) or trigger an update that would make the artwork aspect flicker due to it being removed & then re-drawn at a later time (more noticeable at times during loading where it could appear & disappear a few times)
Fixed the installer not always installing the supporting library for the MP4 Demuxer input plug-in when creating a minimal WACUP install
Fixed the reproducible issues with the video support being disabled & causing the classic skin main window not react after a first install / clearing out of the relevant settings
Fixed the reproducible causes of the Not So Wavey output plug-in sometimes deadlocking either on track change or if WACUP is set to resumes playback on start-up
Fixed disabling the info area in the podcast library view not immediately being hidden without manually resizing the library view
Fixed the lyrics window not setting the 'no lyrics found' message correctly when selection tracking & no lyrics could be found
Fixed some crashes seen in relation to the Get/Put ATF methods due to incorrect parameter validation
Fixed stopping an already paused SID (Commodore 64 Music File) taking a few seconds to respond to the request
Fixed the cause of the WASAPI output plug-in not allowing the main window vis to run due to an incorrect value provided when the output is being opened & that success of that is reported to the WACUP core
Fixed the possible cause of a crash seen in some setups when adding items related to local files into the main playlist
Fixed the about window getting hidden behind the main window of modern skins
Fixed the Waveform Decoder (in_wave.dll) plug-in not loading due to a missing dependency (mpg123.dll) against libsndfile.dll due to the installer not correctly handling that specific install type (if the OpenMPT Module Decoder or vgmstream input plug-ins were also being installed then this wasn't an issue - installers can be a pain to get done correctly at times if you forget about the dll dependencies)
Fixed the Ctrl+Alt+End global hotkey not working as expected (the default actions is to stop but it was toggling next on stop) due to the side effects of a workaround related to classic skin windowshading
Fixed the edit playlist entry dialog to focus & pre-select the text in the new entry field on opening instead of focusing the browse button
Fixed editing the 'comment' field in FLAC & Vorbis files when there's already a 'description' field not seeming to update the field on save
Fixed the 'comment' handling from ID3v2 tags to only provide the basic COMM field instead of returning any COMM field if there's not the basic one (this better aligns with user expectations & in_mp3's handling)
Fixed the shift+e batch metadata editing dialog in the main playlist editor crashing when trying to apply changes due to a number of issues in some of input plug-ins as well as how the local library plug-ins were accepting the strings to be applied (at least I hope this is fixed as my tests no longer crash but I'm not 100% certain for those that have been experiencing this issue for a number of the recent builds)
Fixed the probable causes of some quirks related to the shuffle table being incorrectly maintained between sessions when it's not meant to be (there is still some more refinement to follow including changing it to not default to the first item when a new playlist is created)
Fixed a possible deadlock in the NotSoDirect output plug-in
Fixed the wrong dll name being used when registering for elevation
Fixed a number of issues when manually adding metadata on files (e.g. FLAC or Ogg Vorbis) via the 'Vorbis Comment Tag' tab on the File Info (Alt+3) dialog (this could manifest as a crash, not saving the changes or removing existing metadata for the newly added key pair)
Fixed some visual issues with the ReplayGain processing dialog when using the replacement Media Library Core
Fixed the 'streamtype' metadata query to work correctly on forced https -> http stream urls so that the info pane of the Bento skins will show the current url information as http-only streams
Fixed the error reporter dialog not showing the desired version if auto-posting but emailing is enabled doesn't work (assuming the emailing error code is actually correct & not faking success)
Fixed a crash when using the IfStr* ATF methods due to incomplete parameter validation (side-effect from the VS2017 changes a while back)
Fixed a crash with the FLAC input plug-in & a legacy metadata query where the data provided was not being correctly validated
Fixed the $SubStr(,,) ATF method not working as expected due to an issue with the parameter validation (would either output the whole string or no string)
Fixed directory paths in playlists not being expanded out as expected to be the files within that directory (this is a regression related to dropping more of the hooks into the Winamp core for all WACUP handling)
Fixed viewing the agent's tooltip when WACUP is running either showing clipped / corrupted text or triggering a crash (this has been an issue for a lot longer than it should ever have been :'( )
Fixed the taskbar text & a few other things when using the 'Advance to next on stop' action not being updated to reflect the file that has now been set as the current file (which was showing ok elsewhere)
Fixed drag+drop from the Bookmarks library view with multiple items selected causing a crash &/or weirdnes after attempting to complete the drop action
Fixed a handle leak when the Streaming Source plug-in is trying to make a reconnection & is not able to complete / resolve the action (this is an interim fix with a non-Jnetlib based solution to follow)
Fixed the hybrid volume mode setting with the Not So Direct output plug-in sometimes using the logarithmic volume mode (this is the likely cause of a bug report that the hybrid volume was too low vs Winamp)
Fixed a divide by zero issue crash affecting some modern skins when playing a stream due to a length api compatibility issue (the fun of positive & negative numbers)
Fixed ATF error messages not showing the correct skin (issue from merging things some time back)
Fixed the custom taskbar preview not reacting when using the 'Advance to next on stop' action not being updated to reflect the file that has now been set as the current playlist item
Fixed some of the submenus on the main right-click menu (e.g. skins) not being populated &/or updated as expected when the menu is first opened from a generic skinned window frame
Fixed some more crashes related to ATF input handling issues with some of the lesser used methods
Fixed the start / double-click action on the Visualisation preferences page not always working when using the single visualisation plug-in mode
Fixed unchecking the "Recycle permanently deleted files" option not always working as expected if the General preferences page hasn't been viewed first
Fixed a number of issues across multiple components related to the handling of RSN files (RAR SNES audio archives) causing failure to parse them or to break playback via an endless loop
Removed the now no longer required crash fix patches related to the Nullsoft DirectSound & WaveOut output plug-ins
Removed a number of dll exports from the WACUP core dll which are no longer applicable / needed to export giving a 2KB size reduction
Updated cacert.pem to latest (19 Jan 2021)
Updated libcurl (libcurl.dll) to 7.75.0 (3 Feb 2021)
Updated libebur128 (ml_rg.dll) to 1.2.5 (2 Feb 2021)
Updated libjpeg-turbo (image.w5s) to 2.1 Beta 1 (25 Nov 2020) + latest Git commit up to 21 Jan 2021
Updated libopenmpt (in_mod.dll) to 0.5.5.14111 (31 Jan 2021)
Updated libnghttp2 (libcurl.dll) to 1.43.0 (2 Feb 2021)
Updated libsidplayfp (in_sidious.dll) to 2.0.5 (24 Oct 2020)
Updated libsndfile (libsndfile.dll) to 1.0.31 (24 Jan 2021)
Updated minizip-ng formerly called minizip (zlib.dll) to 3.0.0 (24 Jan 2021)
Updated Monkey's Audio (in_ape.dll) to 6.12 (15 Feb 2021)
Updated mpg123 (mpg123.dll) to 1.26.4 (24 Dec 2020)
Updated OpenSSL (libcurl.dll) to 1.1.1j (16 Feb 2021)
Updated Patreon list (8 Feb 2021)
Updated rapidjson to the latest Git commit from 6 Jan 2021
Updated taglib (tag.dll) to 1.12.0 beta 2 (23 Jan 2021)
Updated unrar (unrar.dll) to 6.0.3 (1 Dec 2020)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 17 Feb 2021
Updated WavPack (in_wv.dll) to 5.4.0 (10 Jan 2021)
Updated zlib-ng (zlib.dll) to latest re-based update (29 Jan 2021)