Help us keep the list up to date and submit new video software here.





Software Home »


Complete Version history / Release notes / Changelog / What's New for WACUP


Preview Version: 1.99.16.19516 (x86)
Released: 27 June 2024

Everything done as part of preview build v1.99.15.19320

Added a default on option to the local library preferences to control whether for files without artist & title metadata or just tagless files in general will attempt to get that from their filename (this looks for [track #. ][artist -][title] so anything that doesn't match that might generate unexpected results)
Added a default on option to the local library preferences to control whether for files without artist metadata but albumartist is present to store it in the db as 'artist' (masks missing metadata but helps other aspects work in an expected manner)
Added a "Missing Metadata" preset to the local local library add / edit view dialog so it's a bit easier to find any entries missing either artist, album, title or length to then be able to resolve them
Added forced mono decoding support to the Monkey's Audio plug-in to follow the Playback preferences page & match the other common format plug-ins
Added a one time integrity check during the initial local library database loading which re-builds the database files as needed to help resolve some issues introduced from recent builds (e.g. the potential for the duplication of files) along with removing any existing duplicate entries
Added the ability to re-order the child nodes in the media library navigation tree for the local library & library playlists related items
Added an option to the Skins preference page to allow for picking a random skin during loading (this gets things comparable to Winamp whilst allowing for more control over when the random skin is picked)
Added a new experimental (opt-in) feature to the General -> Windows 10 | 11 preference page to allow for Toast Notifications to be shown via the OS handling on playback changes (this is a w.i.p. & is a bit limited in some aspects compared to the modern skin notifications & the old but often not working correctly 3rd party toaster plug-in) which might be useful more for those using classic style skins
Added an option to the Skins preference page to allow for picking a random skin during loading (this gets things comparable to Winamp whilst allowing for more control over when the random skin is picked)
Added a native "rate current song" mode to the General -> Notification Area preference page as an alternative to using the old 3rd party gen_trayrate plug-in (which has a thing for breaking skinned menus) so a notification area icon can be configured to show for a potentially quicker way to set the rating of the currently playing file
Added a loading check if the in_midi input plug-in is enabled & hasn't yet been configured to try to make it use a more appropriate output device which allows for direct volume control to avoid the default behaviour of this re-used Winamp 5.666 plug-in often overriding the WACUP process volume level & blasting your ears out

Changed the local library preferences to have all of the view filter related options now on their own preference tab (the 'fun' of having too many options with long rambling descriptions of what they do)
Changed the main playlist loader to further reduce it's impact on initial loading (e.g. going from ~125ms to ~97ms for a 34K entry test playlist) so the impact of the changes should be better for much larger playlists & less for smaller ones
Changed some of the plug-in initialisations to use a safer way of getting the internally localised strings (no localisation is still not properly implemented to allow this to be enabled) to avoid some further concurrency issues from multi-threaded string access along with avoiding some unnecessary memory allocations
Changed how the folder monitor processing threads work to now better account for other requests being made to the local library plug-in for metadata which could in some instances cause a ui hang crash to occur
Changed modifying the local library metadata guessing options being to now prompt to run a full database refresh
Changed the internet radio play/enqueue/enqplay handling to now be done via a background thread which should avoid the odd hang that was still happening
Changed the CD playback plug-in to avoid using any additional resources if there's clearly no available drives
Changed the local library view results pane default sorting to favour album over artist (as was done to mimic Winamp's local library) which should give a more consistent ordering of items when interacting with the upper filter panes &/or when using the albumart view modes so they should be much more likely to appear in track order
Changed when loading the main playlist begins to happen earlier in process loading which reduces the overall loading time with the impact of this more obvious with a large main playlist
Changed the tooltip handling of the generic emebedded windows under classic skins to be able to share a single tooltip window instead of generating one for every embedded window for a small resource saving
Changed how some of the larger strings are internally stored in the core & plug-ins to reduce their impact on the compiled files as part of some pre-emptive work towards eventual localisation support
Changed the list of output plug-ins which are reported as known to cause stability issues when they're selected via the output plug-in preference page
Changed the installer to still try to install the in_dshow plug-in from the 5.666 installer (if available) for WMA playback if selected & video support is disabled during the installation process
Changed the messages shown for known compatibility loading issues (e.g. FaultTolerantHeap) to better detail what the user can do to resolve the problem
Changed the string shown when in_mp3 is incorrectly reporting "Sorry cannot write streams to disk" due to the configured output device not being valid to show a more appropriate message (this doesn't avoid the problem that this re-used input plug-in is generating a message that is incorrect for what's actually happening with playback)
Changed some of the internal string handling for the local library & history plug-ins to avoid some re-processing of them whilst adding / updating them to avoid a whitespace stripping issue
Changed the handling of the media library window divider to adjust its width based on the current classic skin scaling if there's not been a manual reposition (this makes things a bit nicer after an initial install & changing to double/triple-size mode without having to immediately resize the divider position either via the mouse or by double-clicking on the divider to auto re-size it to the navigation window) (#19516 specific change vs #19512)

Fixed the classic skin main playlist windowshaded text either not showing when using the non-skinned fonts, showing but incorrectly overpainting parts of the window when using skinned fonts or not showing the queued playlist indicator string for items without a playback length when using skinned fonts
Fixed a timing quirk which could allow the slow main playlist loading dialog to show when the loading thread had already completed causing a somewhat confusing experience
Fixed the probable cause of a recurring random crash related to the taskbar preview handling
Fixed a small performance issue with some of the internal path handling which meant some strings were double processed when a single pass could instead be made
Fixed a crash due to a missed handling check related to a recent set of api compatibility fixes which could cause the scrobbling support to fail when the main playlist was cleared
Fixed a small performance issue with the inital loading of some of the generically skinned windows (this affected the excluded files window more than most)
Fixed an unintended change which has affected how the nde handling related to the local library & other uses of the nde db implementation to avoid duplicates of already found file records (this may require manually running wacup.exe /compactlibrary to allow it to re-build the database contents to allow things to be indexed correctly again)
Fixed a crash when trying to extract the extension from some playlist entries & de-duplicated some of the code to process the strings
Fixed a few instances of output device failures not being correctly reported by some of the output plug-ins (is still possible for some where the timing of trying to open vs input plug-in trying to query the opening state doesn't quite align)
Fixed an inconsistency in the selection restoration within the local library albumart view mode which could cause it to either drop the selection or select the wrong item between running instances
Fixed some quirks with the playlist undo handling which could prevent a few actions from always working in an expected manner
Fixed the local library view results pane selection not always being maintained when doing a full view refresh when filter panes are visible
Fixed a regression with the playback history pruning not working as expected (this isn't enabled by default) due to a combination of issues from the recent builds since changing how the history db is handled
Fixed new podcasts automatically being added into the local library not triggering the current local library view to refresh to try to show the newly added file (the handling of this is not ideal per prior feedback & making the views be smarter to only do a refresh if there's actually a need is planned for a later build)
Fixed a number of issues related to restoring WACUP from a minimised state especially when some of the visualisation plug-ins are running which could cause a noticeable delay in the UI to update
Fixed some more slowness issues with the restoration of selected items in different media library plug-in views which could for some setups cause an unresponsive hang crash to occur (e.g. history)
Fixed a timing issue with the TipTop plug-in initialisation which could cause it to not appear as expected (more likely to happen with classic skins) without having to manually re-toggle it back on
Fixed a rating api compatibility issue which broke the old 3rd party gen_trayrate plug-in & some other quirks within the local library views
Fixed the output plug-in handling when chosing 'no' to some of the warning prompts about the selected plug-in causing issues not always resetting the active output plug-in back to the last selected
Fixed some small quirks with the crash report information collection which is causing issues with the server side parsing of those files
Fixed the Bento / Big Bento skins triggering a guru meditation error when the browser is disabled & clicking on the file info homepage link
Fixed some of the modern skins including the Defix ones causing a crash on loading due to a live patch made against the gen_ff dll failing
Fixed a crash triggered by the gen_bptypes plug-in calling the playlist manager api & it not correctly handling one of the api methods
Fixed a crash when trying to interact with some of the re-used portables plug-in (ml_pmp/pmp_*) if its loaded after normal plug-in loaded due to the metadata api it relies on not having been registered
Fixed an internal message api handling issue which could in some instances trigger problems (as seen with build 19500) from related code being run when it isn't yet in the appropriate state
Fixed a couple of crashes from the 19320 & 19504 builds due to missing some api parameter validation checks related to some actions running in an unexpected order due to prior optimisations
Fixed using the triple-size mode toggle with classic skins incorrectly triggering the add main playlist into the local library due to a menu item id conflict (#19516 specific change vs #19512)
Fixed an intermittent crash when moving / changing items in the main playlist due to a lazy loading change in the internal handling with the 1950x/12 builds (#19516 specific change vs #19512)

Other small miscellaneous changes for possible crash report related fixes & internal clean-up

Updated c-ares (libcurl.dll) to 1.31.0 (18 June 2024)
Updated libopenmpt (in_mod.dll) to 0.7.8.20990 (9 June 2024)
Updated libsidplayfp (in_sidious.dll) to 2.8.0 (9 June 2024)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 18 June 2024
Updated zlib-ng (zlib.dll) to 2.2.0 (19 Jun 2024)


Preview Version: 1.99.15.19320 (x86)

Released: 5 June 2024

Everything done as part of preview build v1.99.13.19100

Added support to be able to add Spreaker urls as podcast feeds that WACUP is then able to handle
Added to the General preference page the option to change how drag + dropping files onto the main window work so it can be changed from the default play action (which'll intentionally replace the playlist)
Added a preference option to control how the library history plug-in maintains the limited tracking with so it can be made to prune the old items instead of (by default if limited tracking is enabled) to only filter the results (enabling this makes the plug-in behave more like older WACUP builds when it was mimicing how Winamp's history plug-in was working)

Changed to use a slightly faster way to check if a file or a directory exists (is a fraction of time but that adds up with the local library & metadata refreshing actions when dealing with many 10s & 100s of 1000s of files to be inspecting)
Changed the playback history plug-in to no longer mimic Winamp's behaviour to limit the playback history to 30 days
Changed how some of the rating actions are internally handled to better avoid calling the local library if it's disabled
Changed the big clock & waveform seeker plug-ins to use a safer way to get colours from the modern skin engine plug-in as part of avoiding a possible crash issue that could otherwise occur previously
Changed the handling of some of the output plug-ins to give a more direct warning when trying to use them for where they're known to have stability issues (not due to WACUP specific issues)
Changed some of the input plug-in api handling to simplify & remove some duplication of the calls along with nop'ing some aspects that afaict only one plug-in makes use of & this removes the need for them
Changed how the installer handles & reports issues with trying to close any existing running instances found related to the install location being attempted which should hopefully resolve some confusion
Changed some of the playlist saving to reduce some duplicated string processing to make it take a little bit less time (unlikely to be noticed by most)
Changed how the WACUP provided plug-ins can attempt to add an item into the main playlist at a specific location to use a much quick method vs the WM_COPYDATA method (e.g. makes batch inserts quicker)
Changed the Alt+3 / File Info dialog to better indicate if edits can be made especially when interacting with read-only & some url based formats
Changed to use libdeflate for db loading actions which reduces time to parse them between 6 to 20% depending on the size & spec of the machine (typically is in the middle of the range for the x86 builds)
Changed to use libdeflate for db saving actions which reduces the time to save them compared to the prior pigz based implementation & also usually generates smaller files compared to the prior pigz based implementation making reading them be quicker
Changed the interaction between the Global Hotkeys & Win10Shell plug-ins so a failure to get the SMTC implementation will now be reported to the Global Hotkeys plug-in so it can process the multimedia keys which otherwise should be handled by the Win10Shell plug-in if it's correctly enabled
Changed the installer to reset the 'threads' config option to be able to properly test out the db saving changes & hopefully shouldn't be even needed with the installs going forward
Changed the Yar-matey! Playlist Copier plug-in (gen_yar) to do the actual file copying on a background thread to avoid it causing the main ui to block (based on crash reports seen)
Changed the installer to better ensure the currently re-used directshow input plug-in will handle more of the formats that it can without having to mess with configuration options on unmodified installs & patched the configuration dialog to better reflect the file extensions it'll be used for as well as fixing some clipping of the text on the dialog
Changed how the library history db is managed to now periodically compact it along with applying some integrity checks in an attempt to resolve issues from prior builds vs db saving

Fixed the cause of the db saving issues which have been plaguing the recent builds (though was likely the cause for a lot of the random failures going back over the years) by changing from pigz to libdeflate
Fixed a couple of deadlocks seen in the build 19100 crash reports whilst attempting to get metadata &/or albumart due to either incorrectly handling some of the internal locks or from not using the appropriate calling mode at the expense of some more re-reads of file metadata (using the local library to cache the file metadata helps avoid this)
Fixed a crash when looking at the shuffle table diagnostics preference tab & a title string isn't available mid-update
Fixed a crash seen with the 2SF input plug-in due to it trying to incorrectly allocate too much memory than's allowed
Fixed the additional notification area icons not being restored on loading if the main notification area icon also isn't set to be enabled
Fixed the notification area icons from the Playback Controls section of Preferences -> General -> Notification Area not being added in loading if the main program icon also hasn't been configured
Fixed the asio output plug-in not correctly verifying some api responses which caused it to then crash when reacting to the input plug-in trying to pass through the requested output volume to use
Fixed some ui glitches with the podcast downloads view not updating all of the items during initial loading
Fixed some repeated calls for ui related strings which could in some instances cause a ui related corruption
Fixed a deadlock when the history plug-in is trying to get the length of the newly playing item which was incorrectly calling back on itself due to the item not being in the local library & how metadata fallback is handled
Fixed using stop with fadeout & restarting playback when Ignorant Output was the active output plug-in not resuming playback as expected due to incorrectly getting stuck in a paused playback state
Fixed a potential crash on closing if podcast related aspects were still running & the action to signal process closing hasn't been actioned within the expected time scale
Fixed some regressions after build 17040 which caused the waveform seeker window to not always show the currently selected playlist item as expected (e.g. after restoring the hidden window) or if the file had already been processed & the needed window paint trigger didn't happen as expected
Fixed a compatibility issue related to how the customisable program icon is applied during loading which could cause the titlebar text for windows &/or dialogs from non-unicode plug-ins to show as gibberish
Fixed some inconsistency with the handling of the main right-click window settings submenus causing them to be enabled when it's not appropriate to the skin &/or plug-ins enabled that might try to use them
Fixed the revert playlist to last backup menu option in the library playlist root view not always triggering the current playlist view to refresh to show the reverted playlist contents
Fixed some ui deadlock issues with the library playlists (especially when dealing with 100s of playlists) when doing some of the play / enqueue actions vs sorting happening & a few more
Fixed some possible issues with internally getting the filepath or title from main playlist items vs the access lock on it which could allow it to have changed mid-call before being copied
Fixed the classic skin main window visualisation sometimes not rendering the bottom vu meter bar along with another possible reason for some of the reports of the vis area stopping updating
Fixed a crash happening with the automatic generic window global hotkey registration if there's an issue with the window failing mid-processing (e.g. a failed visualisation window opening)
Fixed the probable cause of the reported failures when doing physically removing batches of files from the main & library playlists due to an incorrect handling of the OS api used to perform the action
Fixed the vgmstream plug-in looping options not working due to a mistake when doing a code merge a long time back
Fixed the kbps element of the main window under classic skins when running under WINE which would show an unexpected unknown character / square control code if the bitrate was less than 100kbps due to a weirdness seen with how the text string is being generated which wasn't present under Windows
Fixed a number of sub-song handling issues with the playlist items the vgmstream plug-in adds including files incorrectly being reported as missing or for some it getting stuck in an endless expansion loop
Fixed the probable cause for processing some youtube playlists into playable links in WACUP causing it to hang inconjunction with some other ui related interactions but it's still not as nice as intended
Fixed the probable cause for a hang on close if podcast downloads are active when doing the ok to quit check & other unrelated actions are causing slow running ui related aspects to be happening which then blocks our attempt to check the status of things
Fixed the probable cause of a memory corruption when using the Milkdrop plug-in which depending on when it occurred could either cause a crash on loading or might cause some rendering failures later on
Fixed a closing performance issue if the missing files highlighting option has been enabled & there's an in-progress check being done when WACUP is about to be closed
Fixed the probable cause of a long standing random podcast feed processing failure where it'd get stuck due to mis-handling the libcurl multi interface
Fixed a number of plug-in api compatibility issues which appeared when trying to use the gen_livefolder plug-in (this would either crash or get stuck in an endless loop which caused a hang on closing)
Fixed the lyrics window not scrolling as expected due to how a prior change to avoid a massive performance issue especially on initial loading meant it didn't correctly calculate the number of drawn lines when there's line wrapping involved compared to the raw line size that the lyrics api is reporting to the plug-in
Fixed the current playing position in the Milkdrop window (enabled via the F3 window shortcut) not showing the expected time string for less than 1 second of playback or for whole minute values
Fixed some of the open/save files dialogs not showing in the expected dark mode (there's some elements that still need to be looked into due to this OS provided dialog not really being coded to do it)
Fixed the probable cause of a crash with the Win7Shell plug-in from not handling multi-threaded actions related to updating the cached metadata for the currently playing item
Fixed how the plug-ins are queried if it's ok to close to avoid some actions which trigger a prompt for the user to react to misbehaving (more of an issue with modern skins) preventing the prompt from being seen &/or the cpu sitting in a constant loop until some rub your tummy & pat your head at the same time shenanigans are attempted
Fixed the db file diagnostic handling since some point after build 18980 not being able to correctly report any duplicated records
Fixed a long term intermittent crash with the first run skin selection dialog often appearing as WACUP not starting despite the checkbox on the last page of the installer being checked

(note: these 4 fixed entries are the specific changes made compared to build 19312)
Fixed crashes happening when trying to save the playback history triggered in most installs the first time the recently introduced compaction & integrity checks into build 19312 are run on the db
Fixed a memory leak with the lyrics window if it was having to show the not found image as well as incorrectly trying to get a copy of it if showing albumart in the window background was disabled
Fixed a hang on closing as well as some other interactions after having attempted to load a broken / invalid history database
Fixed a ui related hang which could occur if the library history view had all of the items selected & a view refresh triggered

Removed the use of pigz & pthreads from the nde db handling

Other small miscellaneous changes based on possible causes of issues seen within the crash reports & all of that fun stuff

Updated c-ares (libcurl.dll) to 1.29.0 (24 May 2024)
Updated giflib (image.w5s) to 5.2.2 (19 Feb 2024)
Updated libcurl (libcurl.dll) to 8.8.0 (22 May 2024)
Updated libjpeg-turbo (image.w5s) to 3.0.3 (8 May 2024)
Updated libnghttp2 (libcurl.dll) to 1.62.1 (19 May 2024)
Updated libopenmpt (in_mod.dll) to 0.7.7.20802 (12 May 2024)
Updated libsidplayfp (in_sidious.dll) to 2.7.1 (19 May 2024)
Updated lzma (lzma.dll) to 24.06 (26 May 2024)
Updated Monkey's Audio (in_ape.dll) to 10.73 (14 May 2024)
Updated OpenSSL (libcurl.dll) to 3.3.1 (4 Jun 2024)
Updated unrar (unrar.dll) to 7.0.9 (12 May 2024)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 27 May 2024


Preview Version: 1.99.13.19100 (x86)

Released: 10 May 2024

Everything done as part of preview build v1.99.12.18980

Added better handling for the SoundSpectrum visualisation plug-ins (G-Force, WhiteCap & Aeon) with scaled window support when being used under a classic skin (manually copying the plug-in dlls into WACUP's plug-in folder is required for those interested in trying to use these after first running the SoundSpectrum installers)
Added support to change the skins folder along with offering to move the skin(s) from the prior directory to the new one
Added videologo.(bmp|png) support to allow for either a skin provided image (not something Winamp offered) or an image placed within the root of the WACUP settings folder to be shown within the center of the video window when there's no active video playback
Added handling & an option to the General -> Internet preference page to attempt to fix HTTP & HTTPS streaming urls with the wrong default port being set for them causing playback to not work (e.g. port 80 specified for an HTTPS based url when it should typically be trying to use port 443)

Changed the IPC_GETINFO api to report the syncing status along with returing a method so that plug-ins querying the api can do it without hammering SendMessage calls
Changed the Streaming Url plug-in to report a syncing state when it's first attempting to process the urls given to it so classic skins can give some better feedback
Changed the error saving metadata message on the Alt+3/File Info dialog to now have a 10 second timeout instead of a 3 second timeout so there's more time to read it
Changed the visualisation configuration trigger handling to better deal with such plug-ins failing mid-loading which could otherwise cause a full process crash
Changed the way the local library view selection is maintained on view refreshes to use a slightly faster implementation to save re-copying some of the internal strings
Changed how failures loading the playback history or local library database files are handled to now attempt to automatically use the backup files if they are available
Changed the classic skin skinned font text mapping to support a wider range of characters (this'll never be great & using the non-skinned font option is recommended)
Changed the background title refresher thread to avoid a deadlock seen with some crash reports at the expense of some titles maybe taking longer to be refreshed
Changed some of the podcast feed & download handling in an attempt to resolve the on-going problem of it sometimes ending up in a hung processing state for some
Changed the sorting actions in the library playlist root & also within the playlist views along with bookmarks to now be done on a background thread to avoid ui blocking along with resolving some painting issues
Changed how the local library plug-in will now by default (there's an option to disable this change) to store the folder name as the album for files where it is not available during adding / metadata refresh (this will mask where this metadata is missing but makes us be closer to the expectation of how the local library should be working compared to those using older WACUP builds or migrating from Winamp which did a load of metadata guessing by filepath)
Changed the classic skin song ticker handling to be closer to the prior build when handling streaming so the initial connecting / buffering updates should be less jittery whilst avoiding it jumping back to the start for most other instances (per the request which led to the change which has now incurred this change)
Changed how trying to restore WACUP from a minimised state is done to be more consistent & possibly resolve some issues where it might not appear in the foreground
Changed the patched method used to report playback information to the modern skin engine plug-in to report "syncing" as applicable (per the IPC_GETINFO change above)
Changed the detection on the output plug-in preference page to show a warning message before trying to access other ASIO output plug-ins due to them having issues
Changed how some aspects of the gen_ff / modern skin engine plug-in are queried to determine if a modern skin is loaded as a potential fix for some random crashes

Fixed the syncing status indicator for classic skins not working for the input plug-ins that are coded to report this (e.g. during some buffering actiosn with in_mp3)
Fixed an initialisation timing issue which was able to cause a crash due to some of the input plug-ins attempting playback before the rest of the core has been loaded
Fixed a crash with the taskbar / alt+tab preview implementation due to releasing the background element lock used for the preview drawing too early & related changes
Fixed a crash from a metadata processing issue with the Streaming Source plug-in due to not meeting a runtime requirement which triggered the invalid parameter handler
Fixed some problems with the handling of the installer when running it in silent mode which could prevent some of the intended post install actions being triggered
Fixed a random crash seen when trying to update the currently playing title string
Fixed a dll load timing quirk with the delay loading of libcurl vs multi-threading
Fixed a ui related deadlock with the podcast view if there are podcast downloads already happening (e.g. if set to happen on loading) but the view hasn't yet completed
Fixed a handling issue with the multi-threaded saving of the local library & history db files which is the likely cause for most of the crashes seen against the 189xx builds
Fixed the probable cause of a crash seen when attempting to update the status bar text of the local library view
Fixed the probable cause of a deadlock seen with the history playback plug-in & reduced the scope of some of the locking attempted especially when changes need to be saved
Fixed the main playlist atf string not being regenerated if the local library plug-in is disabled but the playback history is enabled & playcount information is shown
Fixed the probable cause of a crash seen with how libsndfile might try to leverage mpg123 as part of it's use as a fallback for playing MP3 based files
Fixed some more issues with the crash reporter not working as intended when triggered due to a process heap corruption which could prevent some OS apis used working
Fixed a potential hang during closing with the WASAPI output plug-in if other factors including input plug-in weirdness are then causing problems with what's running
Fixed a locking issue within the metadata service which could in some instances cause the main ui thread to deadlock (e.g. when rating is changed & plug-ins try to update themselves to reflect the change)
Fixed doing Alt+Click on the main playlist not behaving as expected especially when classic skin scaling was active along with some other actions not working correctly
Fixed a crash seen with the podcast downloading due to a timing mis-match with how the internal services could be accessed in combination with external feed processing
Fixed some more cases of using the wrong localisation api call in the plug-ins which could cause problems due to multi-threaded access especially a problem for history / local library import actions
Fixed the probable cause of a delay loading related issue with in_mp4 whilst trying to obtain the h264 video decoder
Fixed the probable cause of a crash when using the batch edit metadata dialog from within the local library views
Fixed some changes made to the current library playlist not being saved as expected on view selection changes as well as toggling the side view on/off & on process closing (manual save was always working)
Fixed dragging items in the shown library playlist not updating the currently playing item position as expected
Fixed the skin menu selection handling sometimes not working correctly & it selecting the wrong skin or reverting to the base skin if invalid skins might've been found before it
Fixed the local library import from folder dialog not showing the embedded upper dialog in dark mode if that's what the OS is set to use
Fixed the "no album" item not being shown in the local library albumart filter (if applicable) which was being shown in the non-default album artist based grouping mode along with the text filter mode
Fixed a deadlock which could occur for some of the local library metadata add / refresh actions when trying to re-check the albumart whilst it looping back to determine the album if not present
Fixed some more playback related issues due to Ogg+Vorbis & Opus files being mis-labelled by their file extension (e.g. Opus with the ogg file extension) & some changes from the beta builds which inadvertently regressed the fallback handling to allow these files to still play as expected
Fixed a possible crash when removing media library navigation node items & a painting related optimisation which could prevent the navigation tree updating when nodes were removed (e.g. podcast downloads)
Fixed scrobbling not working as expected when playing items over 8 minutes due to some last minute changes in the prior build causing it to incorrectly scaling a millisecond value into milliseconds (doh)
Fixed the File Info / Alt+3 dialog's handling of non-default genre strings to workaround how the combobox / dropdown control will select the nearest matching string (e.g. "Symphonic" as "Symphonic Rock") which could potentially cause the genre string being incorrectly modified along with patching in_mp3's ID3v2 tag tab which was affected by the same issue as the Basic Info tab on the dialog
Fixed the batch metadata edit dialog not working as expected when accessed via the local library views (e.g. not triggering the metadata to be saved into the file(s) or removing cleared values)
Fixed some more instannces of the local library views not triggering a refresh if there's a related metadata update happening (this is still far from being done in the manner I'd prefer it to do so yes it can cause the view to refresh in a full manner when it might not be needed depending on the current filter states, etc)
Fixed a number of issues with the Playlist File Remover hotkeys preference tab not working as expected along with it incorrectly closing the preference window after a self triggered restart of WACUP
Fixed the background of the base video window being double-drawn when not using the dedicated video window mode with classic skins
Fixed the patched method used to report playback information to the modern skin engine plug-in sometimes generating an incomplete " (null)" response when missing info
Fixed a ui related deadlock when using modern skins which display the now playing albumart in combination with a local library related request to obtain some metadata
Fixed a compatibility issue with the 3rd party lyricsplugin where having its window on a a monitor with a different dpi to the monitor WACUP is started on would incorrectly see it try to adjust it's size to the monitor dpi instead of staying sized to fill the skinned window frame

Updated Monkey's Audio (in_ape.dll) to 10.72 (4 May 2024)
Updated unrar (unrar.dll) to 7.1.1 (25 Apr 2024)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 3 May 2024


Preview Version: 1.99.12.18980 (x86)

Released: 24 April 2024

Everything done as part of preview build v1.99.11.18916

Changed the send-to library playlist handling to make things quicker when using the new playlist option (aka less clicks)
Changed the import folder & legacy database local library related actions to reduce the chance of the browse folder dialog being slow causing issues
Changed how the expat based xml handling is implemented to avoid on going issues with anti-virus software blocking the now removed w5s component dll
Changed how the delay loading for some of the w5s component dlls occur for a small load time reduction by removing the wbm checking for known cases

Fixed a deadlock when trying to process some youtube playlists whilst trying to get metadata for the playlist atf string
Fixed the native scrobbling support not correctly disabling itself & some related ui problems if the external plug-in was enabled
Fixed the scrobbling preference option to only work for files known in the local library database not working as expected
Fixed a logic issue with the time needed to wait for scrobbles to actually be attempted which could prevent some happening
Fixed the local library plug-in sometimes returning the metadata for items which have been soft-deleted which wasn't intended
Fixed a change with how metadata updates are notified which caused the Yule Log plug-in to incorrectly see duplicate play events
Fixed a long running intermittent skin selection issue which could prevent the skin from being used until restarting WACUP
Fixed the procdump running mode incorrectly terminating if a visualisation plug-in is attempted to be run due to thread naming
Fixed a compatibility issue with the input plug-in api handling for the basic fallback information if a length parameter is missing due to some of the older input plug-ins not double-checking null parameters
Fixed another crash from trying to send an unsupported file type to some of the input plug-ins as part of the default fallback handling being used
Fixed a local library view updating issue when running under WINE which can make it look like items are missing if the view was scrolled & what's then needing to be shown doesn't require any scrolling
Fixed the glitchy playback of MP3 files when using the basic fallback mode to play them via in_wave (e.g. due to incomplete installs where the 5.666 installer & it's in_mp3 plug-in cannot be obtained)
Fixed the probable cause of an ATF handling issue which could in some instances trigger a crash whilst the string is generated
Fixed some issues with the wrapper plug-ins which could for non-local storage incur higher overheads to determine if they need to handle the playlist item being queried or not
Fixed a concurrency issue with the in_ape, in_mod & in_wv input plug-ins which could cause crashes to occur when receiving multiple metadata requests from different threads (e.g. dual playlist title refreshes)
Fixed an inconsistent handling of trying to scrobble the playing item if playback is paused & eventually resumed which could in some instances not handle the pause event correctly & still report the scrobble
Fixed the probable cause of a delay loading related failure with the Not So Direct output plug-in with a specific config loading order
Fixed a lock mismatch with the db file saving which might be involved in the crashes that have been happening for some (mostly during closing) when the playback history &/or local library changes are saved
Fixed a COM vs OLE initialisation issue introduced in an attempt to resolve some prior loading & closing problems which ended up being unrelated but inadvertently broke some drag & drop support including installing skins by dragging them onto WACUP's windows (which then appeared as weird problems in trying to play them as media files)
Fixed some issues with trying to locate the needed input plug-in to handle some of the metadata which could cause an unresponsive crash due to getting stuck trying to use the input plug-ins already rejected
Fixed a small performance issue when trying to do batch metadata edits of a file due to some internal states being repeatedly cleared
Fixed metadata for items only stored in the local library not being read in via the batch edit metadata dialog from the main playlist
Fixed an issue with the initialisation for some of the local library asynchronous actions which could cause things to be accessed too early causing a crash to occur (e.g. some prior local library imports)
Fixed some quirks with the classic skin main song-ticker where it might reset it's position awkwardly on some title events or was trying to auto-scroll the title when it was able to show without needing to
Fixed another possible deadlock when the modern skin engine plug-in (gen_ff) & the local library plug-in (ml_ll) are interacting with albumart related actions (so much pain from gen_ff not being thread safe)
Fixed inconsistent handling of soundcloud urls due to changes on their side & what yt-dlp was returning which no longer matched to the streaming formats that are currently supported (this'll be improved)
Fixed a live patching on the modern skin engine plug-in (gen_ff) not working correctly for some setups with extra checks now added
Fixed an install conflict causing crashes due to a mis-matched freetype.wac not from the required 5.666 installer trying to be used

Removed the placeholders for dynamic library playlists on the new library playlist dialog since I've no eta on getting it implemented

Updated libopus (libopus.dll) to 1.5.2 (10 Apr 2024)
Updated Monkey's Audio (in_ape.dll) to 10.71 (19 Apr 2024)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 19 Apr 2024


Preview Version: 1.99.11.18916 (x86)

Released: 18 April 2024

Everything done as part of beta preview build v1.9.20.17040

Added an initial native equaliser implementation along with the changes needed to remove the legacy mode handling (i.e. WACUP no longer uses winamp.original from 5.666 to be able to run for all setups)
Added options on the equaliser on/off button right-click menu for classic skins & the modern skin equaliser sub-menu to change the frequency bands & limiter options without neeing to go to the Playback preferences page
Added an initial native last.fm scrobbler feature to the Yule Log plug-in targeting their 2.0 API which allows for it to show 'scrobbling now' before the actual scrobble occurs (those using the existing official scrobbler plug-in can continue to do so as this implementation will self-disable itself if it's found to already be present & enabled so there should be no conflict)
Added an initial WACUPified version of in_qsf (Highly Quixotic QSF Player) for playing Capcom Q-Sound Format (QSF) files
Added actions to the local library view / library button to refresh the metadata for the view / local library as a whole only for files determined to have changed since the last read of data by the library
Added a warning confirmation prompt before the ASIO output plug-in is attempted to be set as the active output plug-in due to the issues that using the plug-in may have (especially resetting volume on track changes depending on driver / device handling)
Added better help messages for some of the actions that may require admin access to complete (e.g. skin installation & enabling the agent mode) incase they fail or the user cancels things &/or doesn't get the then expected result
Added options to the Local Library sub-menu on the Library button menu to go to the Folder Monitor preference page along with triggering a rescan of any actively enabled folders set to be monitored
Added WACUPified versions of the old 3rd party Thinger & Yar-matey! Playlist Copier plug-ins for better integration (these are installed but not enabled by default on new / updated installs if not already present & removes the need for the extra_plugins archives that the beta testers had needed to get access to these)
Added a tooltip on the library podcast navigation node when feeds are being updated to give a better indication if some appear to be taking longer than expected to be processed to help track them down
Added /SEEK= to the command-line options as a more obvious action compared to /WA_IPC 106
Added an option to the General preference page to allow for disabling the physically delete item handling in the core & native WACUP plug-ins (this will disable menus, shortcut handling & for some of the ui related aspects hide the icons that might appear when this is set to disabled)
Added to the advanced prefs page a set of options to control the playlist formats (real & virtual) that WACUP will attempt to handle (this is more for debugging purposes but might help in some scenarios)
Added an option to the Playlist preference page to allow for the item lengths to not be shown (this complements the existing option to hide the playlist item positions) & some related library playlist view handling to get this working with it
Added a workaround for WINE installs to try to use the 'DejaVu Sans' font for the library clear search / edit view buttons instead of relying on the main ui font since it all too often will show as an empty box (which is what'll still happen if the desired font cannot be found & is something afaict about how WINE does it's font mapping for extended characters vs what Windows is able to do)
Added an option to the Classic Skin preference page to be able to disable the song timer flashing between showing the current position & not if playback is paused (default behaviour is to flash it)
Added a workaround for files going through the re-used DirectShow (in_dshow) plug-in to avoid some file access sharing conflicts
Added a workaround for the AjaxAMP plug-in to avoid it causing a hang on closing due to getting into an infinite waiting state
Added a workaround for the modern skin engine & related skin scripts used to open the folder a file (typically what's playing from the in-skin albumart panel areas) to try to be more like the rest of WACUP & have it open the folder with the file selected (this should hopefully not break any modern skins but you never know & would need to have this modified later on - if it breaks anything report it!)
Added an option to try to provide a copy of the albumart for currently playing item in a manner that allows Discord to show it instead of just being limited to the predefined logo branding image
Added forced mono playback support to the FLAC, Musepack, Vorbis & WavPack input plug-ins (for when the option is enabled via the Playback preference page)
Added 24-bit output support for Musepack when the option is enabled via the Playback preference page
Added an option to the native scrobbling support so it can be made to only scrobble what's known to be in the local library database as a means to control what might be scrobbled (e.g. ignoring temp files)
Added processing time to the /*DIAG command-line options to help give an indicator of any perf issues when trying to load the specified database
Added an option to the classic skin prefs page so it's possible to disable the ' *** ' part appended to the songticker text if it needs to be scrolled due to being too large to fit within the skin area
Added a $rating([filename][, star_mode]) ATF method to make it hopefully simpler to have the current playing or a custom file's rating shown using unicode stars (imho nicer to look at vs asterisk unless setting star_mode to zero)
Added all of the created generic embedded windows to be accessible as toggle window global hotkey action instead of relying on the core &/or plug-in creating such windows to set things up which meant some were missed
Added support for skins to override the default big clock window colours which follow the main skins colours by either a bigclock.txt or via plugin.bigclock.* colours from modern skins (done in the same manner as the waveform seeker plug-in)
Added an option onto the History media library node to try to refresh the current titles it has cached which can be useful if the main ATF has been changed to help keep things looking the same (this new action will not refresh the title for urls as that's often not going to be viable without playing them & I doubt anyone would appreciate them all being pinged)
Added matching refresh & remove menu items from the local library node right-click menus to the local library view settings button menu which should make it easier for some to find that don't know about the node right-click menus
Added a remove view item(s) menu action to the local library view settings button menu as a complement to the additional menu items noted in the line above
Added a workaround for those trying to use dsp_altacast.dll (though it's installer will break WACUP's FLAC support due to replacing it's dll with a much older one) so it can now find WACUP's lame_enc.dll without needing to manually install a copy of that dll in the root of the WACUP program folder
Added making backup copies of the bookmark related files when they're being modified incase of there being any issues during the modification process
Added basic panning / balance support to the Not So Yasapi output plug-in but only if the source is stereo (mono / more channels is something for later) which should suffice for most when this plug-in didn't do anything (it's somewhat at odds with the intent of WASAPI but its been asked for a few times now so here we go)
Added a /PROCDUMP command-line option to aid in debugging issues if it's not possible to get WACUP started to be able to access the Error Reporting preference page to run the equivalent mode this now adds
Added a workaround for modern skins being used where the gen_ff plug-in won't correctly clean-up some of the temp files it creates in the OS TEMP folder causing a load of wtf*.tmp files to potentially build up over time (as for whatever bizarre reason it insists on making copies of some of the OS provided fonts before trying to use them instead of oh I dunno just using the actual font the OS is providing...)

Changed how the input plug-in metadata cache clearing action is triggered which should better avoid some issues seen by them trying to provide a response for the fake file that's being given to them (e.g. could cause some weird hangs on closing with some of the older input plug-ins)
Changed how main playlist title updates are handled when process closing is started to avoid closing taking too long & triggering the OS unresponsive handler
Changed how the preference window works to better verify that the dialog attempting to be created is likely to be valid before creating it to avoid a crash
Changed how the missing files highlighting is initialised to hopefully avoid causing a hang crash
Changed some of the metadata loading handling for the CD input plug-in to avoid a timing conflict when metadata for the loaded CD is trying to be obtained
Changed how the supporting dlls defined to be delay loaded by the input plug-ins is handled to attempt to resolve the loading failures (or unexpected dll unloading) seen by some in combination with some of the multi-threaded actions being made of those input plug-ins
Changed a number of the library plug-ins to no longer use delay loading which should resolve some of the crashes experienced by some with the recent build along with a small file size reduction across them
Changed the initial loading of the podcast & its related downloads view so it now won't attempt to pre-prime the local library database (if being used) as that was causing some ui elements to hang if starting / resuming playback on load (this reverts a change that was made a while back within the beta builds where at the time it had actually improved the ui elements hanging but other changes have since negated the need for this)
Changed the visualisation preference page to try to reflect more changes live without having to manually start / stop things (e.g. when selecting a sub-module)
Changed how exporting bookmarks are handled to use a quicker internal solution which also makes things nicer when using the pls output mode
Changed the streaming url plug-in to try to obtain some of the title information if not playing & the core requests a title (e.g. after adding a youtube url) though this can be slow (normally seeing 3-5 seconds for yt-dlp to resolve the information being asked for)
Changed how the local library albumart cache works (again) to avoid a collision which could cause "Artist1\Hits" & "Artist2\Hits" to show the same albumart due to matching things on "Hits" for the album
Changed the local library view handling to use playcount as part of the associative sorting when the rating column is the selected column to sort by (this better aligns with how the removed ml_local worked)
Changed some of the internal listview related calls when dealing with item selections to try to minimise reprocessing done in some instances which could in rare cases trigger the unresponsive handling
Changed some of the internal main playlist title update handling to hopefully resolve the slow to respond / deadlock that a number of crash reports implied
Changed a number of the plug-ins to make use of a new internal api call that attempts to get all of the needed metadata in one call from the local library (which is usually faster) with it falling back to getting the metadata on a per value basis whilst hiding all of that to simplify what the plug-ins need to do
Changed some of the internal playlist calls for getting & setting information (mostly related to the length) to avoid a deadlock & concurrency related issues
Changed the async albumart requests work to avoid a deadlock seen in some crash reports (e.g. due to the lyrics plug-in window & cache priming conflicting)
Changed the streaming url plug-in to remove a small delay in the processing of urls (this however doesn't resolve the fundamental slowness with yt-dlp's processing)
Changed how the taskbar text string is updated to try to workaround a rare hang crash that can occur to have it abort the action if things are likely to block
Changed some of the tooling related handling to consistently use async downloading which should resolve some of the ui related hang crashes that some have had
Changed the add / open url dialog to now attempt to process any url based playlists entered into it to use a non-blocking method to process the downloading (still need to apply this to other aspects)
Changed some more of the in_2sf initialisation to halve the remaining initial dll loading time & reduced the memory usage until the plug-in is actively used for playback
Changed how skins are being parsed to now ignore instances of a single skin archive within a sub-folder within the skins folder as that is not correct (occurs when extracting some "skin packs") so they will not appear in the menus / preferences as it's not worthwhile to re-work a load of the skin handling at this time
Changed some of the handling when trying to get the items within a local library view to elsewhere to hopefully resolve the deadlocking issues that have been seen in some crash reports
Changed how podcast feeds once downloaded are handled to try to avoid blocking in the libcurl callback handler which from some crash reports might be blocking actions for too long on some feeds causing weirdness to then occur once it's released & able to spin back around to process any remaining feeds
Changed the internal list of extensions to be ignored when getting metadata requests to avoid some more based on recent crash reports (e.g. ini)
Changed the checks made for an unhandled crash on the next time WACUP is run to verify the files needed have some data in them before trying to submit them
Changed the local library plug-in to do some more caching of api call responses to minimise instances of the calls blocking on another call on the same file
Changed how the lyrics plug-in handles initial loading of the background albumart to reduce it's initial loading impact to avoid a potentially large image resize action occuring on the main ui thread
Changed how the api calls to seek within the playing item are handled to be more reliable especially if it's from a quick stop & restart of playback where some of the input plug-ins can action the call but might be incorrectly reporting that seeking is not possible (this could cause some of the playback resume handling to fail but isn't the only cause for it)
Changed the milkdrop DirectX 9.0c not present handling to show the messagebox for longer before it'll then attempt to then auto-install it unless no is selected
Changed some of the WINE related handling including for now disabling WACUP's dark-mode detection if running under WINE as visually it's a mess due to afaict incomplete handling on WINE's side for things
Changed how the podcast library views handle tooltips for the feed / downloaded items to better condense down multiple linebreaks which can come from the source html so the tooltips use up less space
Changed most of the handling around thread creation to resolve some issues if they fail (e.g. due to low process memory) & to reduce code duplication throughout
Changed the local library & history database handling to attempt to recover the database if there's determined to be some indexing related issues within the files (e.g. due to dat & idx file mismatching)
Changed the podcast plug-in to attempt to determine incomplete downloads more consistently though this is still not 100% due to a lot of feeds not providing the correct file size of what will be downloaded
Changed the initial installer text to better reflect the current state of WACUP & it's feature support
Changed libcurl to make use of the c-ares library for the asynchronous DNS handling which reduces the time with large podcast updates
Changed the lyrics window loading so it'll avoid drawing the not found image when actual albumart is known it'll be drawn for a small time saving during initial process loading
Changed saving the current shuffle table to be done on it's own background thread to avoid it triggering a main ui thread hang for some setups where saving out was taking too long
Changed the global hotkeys plug-in to not be enabled when running under WINE since support between it & WINE & the user's desktop environment doesn't seem to be working per feedback (if WINE improves then this can be re-enabled at a later time & there's the command-line actions which can be used as needed via shortcuts which seems to get close to what's needed as a workaround)
Changed how closing works so WACUP will now attempt to minimise itself to avoid any ui related aspects updating whilst any potentially slow running actions (e.g. saving out playback changes) could previously cause the ui to stay shown in a somewhat unresponsive state which has in some instances allowed the user to try to still interact with it & that then causes the unresponsive handler to take over
Changed (again) the main image resizing implementation to something which does it much quicker (e.g. 220ms to 60ms for one 2900x2900px test image in the albumart window to go in a near 4K albumart window) which should make a number of aspects feel smoother along with allowing the local library cover view to process & populate things quicker overall (especially if set to prepopulate the albumart in the view)
Changed how the child library playlist view is handled to do item title load / refreshes on a background thread (e.g. for playlist items missing a pre-generated title on loading) to avoid ui related blocking (especially helpful during initial WACUP loading)
Changed the preference option to control the visual style of the plug-in preference page lists (icon + description vs simple list) to be on the root Plug-ins preference page instead of being part of the Advanced preference pages along with some other reworking of the advanced preference page layout for other changes made to it with this build
Changed the waveform decoder preferences to now be done as an integrated preference page along with adding an option to control the old floating point file normalising behaviour (which could make some files sound louder than expected)
Changed the installer to prevent it installing on WINE instances prior to 7.0 to avoid a number of issues that WINE 6.x & earlier have causing aspects of WACUP to break or not run correctly at all for some
Changed the minimum size allowed for the classic skin embedded windows to now be 250px (or the scaled equivalent) from the 275px minimum due to how the skin frame elements are defined (may look into adding additional skin elements to allow for small window sizes but that would require skin updates to occur so may not happen)
Changed how the crash reports are generated to make it easier for the Error Reporting preference page to now be able to show the crash summary for the last crash that occurred (depending on the type of crash this may still not be able to show a reason but it's doing the best it can for now)
Changed how IPC_STARTPLAY is handled from some of the gen_ff related plug-in calls to try to have it avoid a weird hang crash seen by hooking it & changing it to be proxied on as a PostMessage call
Changed the handling around the re-used in_mp3 plug-in to minimise the chance of it causing a hang on close crash (e.g. due to older dsp plug-ins not behaving correctly) during stopping / process closing
Changed some of the library plug-in loading to do a better job in avoiding non-WACUP named copies of plug-ins from being used (related to some work done to provide a newer 3rd party ml_sony.dll compile)
Changed the handling around the gen_ff metadata calls to try to further reduce the chance of it causing such calls to make a long running query occur on the main ui thread which can cause the OS to treat it like a hung process (until a replacement gen_ff is made this is always going to be an issue as it's scripting doesn't like asynchronous ways of doing things which is needed when it comes to metadata)
Changed how the crash reporter handles auto restarting so the dialog now cancels the restart if using the action button or clicking the close window button instead of triggering the restart immediately which is useful for when there's a core bug which might get it stuck in a restart loop
Changed the message shown if there's an issue to load any of the needed w5s component dlls to make it more obvious that re-downloading the WACUP install is required if it failed after a self-update attempt
Changed some of the native WACUP input plug-ins to attempt to react to the main replaygain preference option being toggled if playback is happening (there's still cases where it will not fully live update)
Changed back the global hotkeys plug-in to be loaded under WINE again as it can work for some setups & was unbeknownst to me being actively used so this should resolve that for those users
Changed how the WACUP core dll is built to now have the cpu optimised image handling aspects in a supporting dll (pucaw.dll) which is mostly to help save time when compiling the core dll
Changed the diagnostic preference page & crash reporter system details for WINE setups to better handle things when some of the information isn't provided despite the API calls giving a successful response
Changed some of the plug-ins, supporting libraries & core dll loading to reduce the memory & some aspects of initialisation to be done when they're going to be used instead of always done if never used (this is a small reduction compared to work done a year or so back but every byte saved & fewer calls needed to allocate more memory helps)
Changed the crash reporter to skip reporting the current skin in it's summary log file where it's know that a heap / process memory corruption has occurred which is likely to cause ini reading issues
Changed some of the plug-ins & core dll to remove some duplicate processing done on internally generated strings to reduce some of the cpu overhead for small per-call savings (aka micro optimisations)
Changed how WACUP is shown in Task Manager for its running process name depending on which loader exe is used
Changed IPC_GET_GENSKINBITMAP to expose the core's viscolor.txt related information for those skins supporting it
Changed some of the nde memory handling for a small reduction in database loading times (typically a few ms per db)
Changed the missing files highlighting of the main playlist to now do the periodic checking on a background thread to avoid it causing ui redraws & potentially blocking the main ui thread when the view of the playlist hasn't changed nor has the missing status of the items shown which avoids some main ui thread contention & triggering playlist redraws & the associated cpu load for no useful benefit
Changed the Taskbar Text sub-page to allow for the option to control appending ' *** ' to the end of the taskbar string if scrolling is enabled to be available under the default taskbar text string (previously it was only available if a custom atf string was selected to be used for the taskbar text though disabling this may break some external tools that scrape now playing from the process text)
Changed how the tooltips for the generic skinned windows are created to minimise their impact during initial loading (they tend to take 5-10ms to be created on my dev setup which adds up with multiple windows)
Changed the streaming source plug-in to avoid lame_enc.dll being immediately loaded if there's no streams configured to automatically be run on load
Changed how resuming playback on loading works to avoid a potentially noticeable delay in playback starting if replaygain handling is also enabled
Changed how the podcast plug-in saves out feed changes to avoid it causing as many ui related blocks along with getting it begun sooner during closing if there's a need for it
Changed how the native window tooltips are handled to skip creating them if a modern skin is being created
Changed how current playing information from the input plug-ins is handled to avoid too many calls causing higher than expected cpu loads especially for some modern skins which run unrestricted on their System.onInfoChange(..) handlers (e.g. when responding to bitrate changes)
Changed the modern skin timer frequency option to now offer a lower 15 fps target (this can help to reduce cpu load but will more noticeably affect some modern skin related animations & responsiveness) as well as hooking the timer responsible for the main visualisation so the option now applies to it (for some skins this will cause them to now see it running at 60fps instead of at around 40fps as seems to be gen_ff's default based on the timer interval specified)
Changed the WAV handling input plug-in's "formatinformation" response to try to report the sub-format of the file (e.g. "Signed 24 bit PCM")
Changed some more of the aspects related to modern skin plug-in handling to better ensure it's only created when a modern skin is being used for a small load & memory saving when only using classic skins
Changed how the vertical padding around the skinned buttons is determined to help avoid the lower part of characters like y being clipped (more of an issue for those on Win7)
Changed how the w5s components are loaded so more is done to check the expected callers of them to allow the core loader to avoid registering those that are not going to be needed (e.g. vp6/vp8 for in_nsv)
Changed the visualisation plug-in menu to now show a running or stopped text next to it to better indicate the known status of the plug-in by the core instead of it just showing as checked or un-checked
Changed how things occur after a known crash to attempt to clean-up any wtf*.tmp files which may have been left by the modern skin engine plug-in not being able to complete it's normal (albeit buggy) clean-up
Changed how the local library plug-in db change syncing is handled to minimise running whilst other queries can occur
Changed some playlist item length handling to avoid quirks seen when zero was specifically set (treated as no length)
Changed the installer to skip the Win7Shell plug-in being installed for those trying to use the Vista Extended Kernel
Changed the native media library plug-ins to update the currently playing item on next / previous if it's not playing
Changed the installer to auto-disable the Not So Asio plug-in if not actively used to reduce bug reports involving it
Changed the podcast view handling to reduce the scope of any internal locks & minimise the chance of that deadlocking

Fixed some of the crash issues seen with the Not So Direct output plug-in due to timing &/or input weirdness due to issues experienced prior to the output stage
Fixed a crash if the playlist editor window was sized to nothing whilst trying to scroll within it at the same time
Fixed a crash hang on closing if the preference page to show WACUP's current version information is slow to respond whilst also trying to close the WACUP instance
Fixed the probable cause of a deadlock with in_mp4 due to trying to process a stop request whilst other actions are still in progress (e.g. starting youtube playback)
Fixed the probable cause of a crash seen if there's an issue in trying to create a generic skinned window for a visualisation plug-in which is then destroyed as part of the failure clean-up related to this
Fixed a timing issue with how some internal aspects of visualisation plug-ins & the classic skin main window vu meter work which could cause it to randomly fail especially after doing fast switching to an item with different output format (e.g. sample rate changing)
Fixed a number of issues related to visualisation plug-ins with multiple modules within them when interacting with things via the visualisation preference page
Fixed a crash for some setups when trying to export the current bookmarks file to another format
Fixed opening to the crystal classic skin prefs page not working correctly & causing painting issues from the prior classic skin preference page that would've been shown before the plug-in forced it's own
Fixed a text clipping issue on the streaming source status text which appeared when it's been running on the same connection for many days
Fixed the add / edit view dialog getting stuck if having tried to edit the root local library view first & then going to add a new sub-view
Fixed a regression causing newly added library playlists to not always appear or react as needed within some ui elements until restarting
Fixed some issues with the handling whilst getting titles from yt-dlp which could cause them to show with question marks instead of the intended characters
Fixed a number of youtube urls not playing as expected (no playback & causing high cpu, super slow fps & missing audio, odd frame pacing)
Fixed a deadlock which could occur whilst trying to do a local library import / refresh & an item doesn't have a known 'album' metadata value whilst trying to determine associated albumart details whilst doing other interactions with the local library plug-in views &/or database
Fixed the probable cause of a crash when using the send-to menu in the bookmarks library view
Fixed some actions incorrectly trying to process CD related items using the alternative CD path format which could then cause WACUP to become unresponsive due to multiple actions trying to access the disc
Fixed some of the audio from the last played 2SF file being heard at the start of playing another 2SF file
Fixed a crash with out_neo if there's an issue with the selection of the output plug-in which is used by it
Fixed a crash seen when checking if a JPEG file was valid prior to trying to fully decode the image file
Fixed some issues due to input plug-in corruption / unexpected member overrides (e.g. due to in_mp3pro)
Fixed the probable cause of a crash seen when downloading a podcast in low memory / other process issues
Fixed some duplicate processing when internally converting strings to save time & avoid object lifetime issues
Fixed the waveform seeker not drawing cue points correctly due to a painting optimisation change from months back
Fixed some overpainting & flicker issues with the adding / processing status area at the bottom of the playlist window
Fixed a number of small issues related to how local library view sorting is handled across threads to hopefully resolve some of the odd crashes seen especially when doing fast local library view switching
Fixed read-only OGG files failing play due to incorrect file permissions being requested when attempting to open the files
Fixed a crash issue due to an internal api issue related to the handling of library window node creation & localised strings
Fixed a crash due to being able to trigger the skin right-click menu on the skin preference page if no item had been selected along with the menu incorrectly appearing when it shouldn't if clicking on the dead area of the list
Fixed a crash on close due to the Win10Shell plug-in where in some instances it's able to cause the process closing message to be received twice which then caused the plug-in to deadlock itself on the first call to close whilst receiving the second self-induced call to close
Fixed the probable cause of a hang / crash on closing (especially if doing quick load & closes with autoplay enabled) when using Not So Direct due to mishandling output device releasing which could cause the DirectSound threading to not like what's happening
Fixed some threading issues with the Streaming Source DSP which could cause a hang / crash on close to occur due to the title update thread still trying to acquire metadata when it's no longer viable
Fixed the waveform seeker plug-in sometimes trying to open a file for processing when the overall process is trying to close
Fixed a number of thread handling issues with some being able to keep running after they should've been stopped (e.g. bookmarks loading during a quick load & close)
Fixed in_mp4 triggering a crash under procdump instances when stopping playback due to a mis-timing in some of it's clean-up
Fixed the probable cause of a crash on closing with the history plug-in due to it's processing thread not exiting correctly
Fixed a number of issues with video only MP4 based files which either wouldn't begin playback correctly or metadata wouldn't be returned as expected
Fixed the format converting api getting stuck in an endless loop when trying to find an appropriate input plug-in for video only formats which could appear as the waveform seeker plug-in locking up / preventing closing from happening as expected
Fixed some items being incorrectly flagged as unsupported due to trailing characters / sub-file designations when checking for files being missing
Fixed a number of small memory leaks with the audio & video decoder handling in in_mp4
Fixed Alt+ not working if set as a global hotkey due to a conflict with the Alt+Click action on the stop button
Fixed a crash due to a timing issue with adding some of the preference pages whilst an unrelated attempt to get a localised string was also happening
Fixed a path generation issue with the ML_IPC_PLAYLIST_ADD api when using the import flag preventing the specified playlist from being copied over to be a library managed playlist
Fixed the local library not being able to correctly detect PNG albumart for the 'has artwork' & related metadata columns
Fixed the local library plug-in sometimes not accepting podcast additions if the item was already in the local library database but a re-download / podcast feed parse is attempted
Fixed the probable cause of some of the jtfe related actions on the send-to menu causing a crash due to incorrectly parsing the string list
Fixed a few instances where the handle from CreateThread was not being correctly released which could cause the process handle count to grow unexpectedly which for some could cause a process crash to occur
Fixed the podcast image handling not correctly trying to re-download the branding image if what's found locally isn't complete when a feed is being updated
Fixed some of the input plug-ins crashing if there's a delay between playback being attempted, their playback threads starting & a received stop / restart playback action
Fixed a crash seen by some when closing the folder monitor preference page
Fixed a memory leak for some instances where a local library internal query is mid-processing & is cancelled for another call (impact of this massively depends on machine speed & size of library database)
Fixed a loading quirk with the albumart window which could cause it to show the unpopulated cache image if the local library is taking too long to respond to the request
Fixed importing some older local library databases due to incorrectly handling the stringfields which could cause some actions to unexpectedly fail despite things seemingly looking to be correct
Fixed some small performance issues with the local library plug-in from the style of internal queries used to avoiding some reprocessing when it's determined it's never going to succeed with it
Fixed non-real filepaths incorrectly being reported as missing when the local library is checking for missing files when they are actually there & a check wasn't using the actual filepath for it
Fixed some deadlocks related to the visualisation plug-in handling especially when the multiple visualisation plug-in handling is enabled & actively being used
Fixed a crash due to how a file path conversion api was being called not handling multi-threaded access correctly
Fixed a classic skin loading issue which could prevent bitmaps with palletised colours being displayed correctly
Fixed a playback issue for DFF / DSF files via the in_dsd input plug-in if a DSP was currently active
Fixed a multi-threaded crash issue when trying to save multiple files from online responses at the same time (e.g. updating associated artwork for podcasts)
Fixed the probable cause of a crash when resizing some images especially in low available memory scenarios
Fixed a crash seen by some when doing clean-up of string data being passed into NDE based database files
Fixed a number of reproducible issues with trying to install skins into WACUP when a manual file association for the wsz & wal file types has been setup along with better handling of user cancellations
Fixed some issues with the Streaming Source & Server plug-ins where disconnecting & reconnect might not work correctly along with a possible audio glitching issue due to how title updates were handled
Fixed some title update requests from the main playlist incorrectly causing the local library to show a processing state with its navigation tree icon when what was attempted has long since been completed
Fixed some more dark-mode related issues with the Milkdrop (& possibly other plug-in) preferences due to mis-alignment of the drawing of some of the control texts
Fixed some file extension to input plug-in matching not working as expected when the file extension contains multiple periods (e.g. sc68.gz) causing the file to not play or go to the wrong input plug-in
Fixed some test metadata calls not getting the correct response for MP4 based file types (e.g. the type of the file not reporting video when it would normally be based on the assumed file extension)
Fixed a playback failure with Youtube urls via in_mp4 which mostly appeared in the dev / interim builds but was potentially able to appear within the prior builds
Fixed a deadlock issue if opening the history database fails along with some other related handling changes if there's a loading failing within the other plug-ins
Fixed the intended live loading of disabled library plug-ins via the media library preference page not working correctly in all instances along with the list not being sorted to place all active plug-ins at the top
Fixed the Ctrl+Alt+E / refresh playlist metadata action not handling all actions correctly depending on the main playlist title metadata reading options which could prevent changes from being observed
Fixed a visual issue with the bottom area of the queue manager window & library view when there's queued items
Fixed the queue manager library view not being created if the library core is enabled after WACUP has been loaded
Fixed the adlib based input plug-in not reporting the family string correctly for some file types (e.g M as A2M)
Fixed a handling issue if the artwork cache wasn't able to process the passed in image correctly which could cause the default / fallback image to incorrectly be used despite the source image being valid
Fixed the local library taking far too long to resume processing some of the background actions if a ui related call occurs which needs to interupt things (e.g. getting album metadata for artwork loading whilst doing a background refresh of metadata within the local library database)
Fixed a performance issue with the local library ingress thread by not properly caching the supported list of file extensions which caused it to be re-generated on all files attempting to be processed (e.g. going from around 60 seconds to do a quick check of metadata changes against 30K items down to 2 & a bit seconds)
Fixed some MP4 based files not playing / rendering all elements due to not correctly parsing the sample size information
Fixed a conflict between the Autoplay & History handling during initial loading which could prevent the resumed playback from being tracked though the playback offset (if that's enabled) would be tracked
Fixed a regression which broke the fallback handling of misnamed opus files with the ogg extension & vice-versa not being passed onto the appropriate input plug-in if the first match cannot play the file
Fixed a number of inconsistencies with the physically delete items handling between the core & plug-ins (e.g. main playlist right-click menu shortcut style & incorrectly being hidden when disabling plug-ins)
Fixed some quirks found with the albumart window due to the sped up image resizing sometimes allowing things to get out of sync visually during some quick playback & selection related changes
Fixed the child library playlist view incorrectly trying to re-generate titles for items that are missing one & had already been attempted to have a title generated for them which could cause some ui lag
Fixed the podcast download view list loading text not spinning
Fixed an mpg123 dll compilation issue causing it to be larger than needed
Fixed the in_mod input plug-in configuration incorrectly mentioning the option to treat files with sub-songs as a single file would only play the first sub-song when it should be playing all of them (that was only a thing during an interim build & was long since resolved between the config option being added & the prior preview build having been released over a 2.5 year time range)
Fixed a seeking issue with the in_mod input plug-in if configured to treat files with sub-songs as a single file due to a library bug
Fixed floating point encoded WAV file formats having their output incorrectly normalised which could cause some files to play much louder than expected (there's a preference option to be able to re-enable the old behaviour for those that might not like this default behaviour change)
Fixed some debugging code incorrectly being triggered by some setups which could cause a crash on initial loading
Fixed the link on the Error Reporting preference page to open the crash reports folder incorrectly selecting all of the crash report archives found in the folder instead of only selecting the most recent
Fixed a crash hang due to trying to determine albumart for cue files (this isn't a currently supported mode & the re-used in_mp3 just doesn't behave well for this)
Fixed an issue with in_midi sometimes causing a hang on closing due to the call to clear metadata cache as part of the main playlist title refresher sending an api message to the main window from within the main window processing
Fixed an api compatibility issue between the replacement local library plug-in & the re-used portables plug-in from 5.666
Fixed the version information on the snesamp wrapper about messagebox not being loaded correctly due to an api call issue
Fixed some issues reported with the installer whilst trying to obtain the Winamp 5.666 installer which should improve the reliability of the action (small refinement over the big overhaul done earlier on)
Fixed a weird crash with the gen_ff plug-in patching due to a timing issue in setup vs getting the plug-in hooked on load
Fixed the AVS window preset submenus not appearing requiring hard disabling of the skinned menu handling (might be something to do with cross-threaded handling but for now its simpler to disable it here)
Fixed the probable cause of a crash on closing due to the modern skin engine plug-in unloading or skin switching from modern to classic whilst some actions might have still been trying to determine the type of the skin as part of skin changing related notifications
Fixed the geiss visualisation plug-in incorrectly being compiled to always show the running frame rate as that ironically will reduce the frame rate (also re-worked a few things to minimise it's impact if enabled which gets it close to running at 30fps for some of the modes with 4K resolutions)
Fixed another handling issue which could cause a crash when switching from a modern style skin to a classic skin if an albumart request was in-progress from the modern skin engine
Fixed the replacement local library plug-in not implementing some non-unicode apis which some plug-ins not previously tested require to fully work (e.g. ml_sony)
Fixed the in the /WA_IPC command-line calls incorrectly being limited to 0-65536 when it should be 0-4294967295 due to the validation being re-used on
Fixed a thread handle resource leak caused by the in_mp3 input plug-in if it attempts to play something it cannot handle which over time can cause the process to fail due to too many open handles (aka the fun you can hooking dlls to workaround bugs without source code)
Fixed the spawned menus in the main playlist editor window when using a modern skin not triggering some of the intended core to plug-in callbacks which prevented some of the per plug-in submenus appearing
Fixed some of the font lists showing duplicate fonts (seen when running under WINE where it doesn't appear to de-duplicate instances of the same font which could cause some setups to lag enumerating them)
Fixed the probable cause of some modern skins showing random colour blocks when the skin is set to be scaled below the default size
Fixed the extraction of file extension changes from the prior build not working as expected which caused some files with multiple dots/periods in their full file paths from being played due to the wrong extension having been extracted which could not then be matched to any of the appropriate input plug-ins (this reverts some of the change as aspects are still needed for virtualised vgm related file paths)
Fixed the refresh metadata action in the local library filter panes not working due to a bug preventing the contextual data being passed to the processing thread
Fixed the local library view albumart cache not generating a consistent hash for the file when the media file was located within the first level folder (e.g. d:\music) which could cause some actions including refresh the albumart to not always work as expected
Fixed some albumart in the local library views not being displayed correctly (e.g. part of it being wrapped to the other side of the image) if the original size of the image vs the requested scaled down image didn't align in an expected manner against the desired output size for the image vs any centering that might be needed
Fixed using the built-in null output plug-in under some modern skins causing a crash when trying to interact with the skin crossfading controls (this isn't supported by the null output & neither is crashing)
Fixed the IPC_UPDTITLE api & similarly related internal actions not always appearing to work due to the background metadata request processor not always being created in an expected manner which also manifested in streaming url title updates not being shown
Fixed the equaliser window button right-click menus getting corrupted due to the wrong menu being worked on with the newly added actions on the on/off button from the prior build
Fixed a playback failure with in_mp4 in relation to the crash fixes introduced from the prior build due to some iTunes related metadata for gapless playback being incorrectly re-applied on all audio samples
Fixed the possible cause of some installs experiencing crashes when there is a playback event triggering the Windows 10+ SMTC feature due to some aspects of the cppwinrt instance having not been initialised
Fixed a crash with the recently added native scrobbling feature if playback is happening & the scrobbling setup has not been completed at the time of a new playback event
Fixed an in_mp4 related crash more likely to be seen if still playing whilst closing has been triggered due to an incorrect status check
Fixed in_mp4 not applying ReplayGain to AAC audio because someone didn't remember to do it when libfaad2 was introduced for AAC playback
Fixed another crash in the notsodirect output due to a mishandled device sharing update
Fixed how ReplayGain information is obtained so it should no longer cause a potential long blocking action on the main ui thread (e.g. due to the local library already being busy at the same time) which has been causing some setups to crash due to the OS treating it as a hung process or for refreshing the newly playing item title updates to fail or for ReplayGain to not be applied as expected for any MP3 files
Fixed a playlist item title formatting crash issue (possibly a weird side-effect of the issue above this)
Fixed a libpng build configuration issue which could cause valid png files created under much older libpng versions to fail to be decoded as expected which could cause full process crashes to occur or aspects of some modern skins / albumart to fail to render as expected (this explains some of the weird skin loading related failures over the years as libpng 1.6.x changed some handling on chunk load)
Fixed NSF/NSFE playback not working due to an internal api change no longer passing the internal object to the playback thread (along with some related changes to avoid the thread handle from leaking)
Fixed the crash report summary incorrectly handling crash reports from WINE configurations due to them having an extra line in the message body which wasn't being clipped along with not being able to access the zip comment if it's already open in another process as long as it doesn't have an exclusive lock & allows for shared read-only access
Fixed a hang / crash that could occur in some instances when trying to use the preference option to completely reset the local library database if there's some actions already running against it which are taking longer to abort than expected
Fixed a small closing performance issue with the NSF/NSFE (in_notyansf) input plug-in which caused it to appear in the profiling output when most of the time it shouldn't have been
Fixed the JTF window initial search on load incorrectly following the search delay input time which depending on the configured delay would make the window loading feel really slow
Fixed some parts of the skinned JTF window incorrectly changing the text font seen when moving the window between monitors (more of an issue if the dpi of the monitors is different)
Fixed the unskinned JTF window not showing the search results in the listbox using appropriate colours if dark mode is enabled & WACUP is following that OS styling
Fixed some of the local library queries incorrectly allocating more memory for the item records than is needed when the number of results is known instead of allocating with the default padding
Fixed some deadlocks related to getting metadata from the local library plug-in which was more likely to occur when using a modern skin which displays metadata for the currently playing item within it
Fixed the play/enqueue/enqueue & play handling from the local library plug-in incorrectly allowing the thread used to avoid a main ui blocking action (e.g. if made to play all local library items) to be created as many times as possible when an action was already in process (aka don't hold down enter on a selected library node)
Fixed a crash when trying to update the internal shuffle table due to too many actions from different threads trying to start playback
Fixed the albumart plug-in window sometimes not showing the metadata that's expected for the playing / selected file if it's not present in the local library database (this wasn't a consistent failure)
Fixed some issues with a number of the input plug-ins not liking being called too fast as part of some of the fix testing in the lines above this
Fixed a thread safety issue with an internal api used to generate unique values which could in rare situations cause a processing related crash
Fixed the local library plug-in incorrectly enumerating over all of the extended metadata values when being used to generate item titles & a "stream" prefixed tag is requested (e.g. streamtype) which will never succeed as only non-stream values are supported by the local library
Fixed a performance issue with obtaining AAC audio data from MP4 based files which often affected the waveform seeker plug-in preview for such files (e.g. taking 15 seconds vs under 2 seconds for a 3 minute test file)
Fixed the JTF window flickering (still not 100% on the groupbox) on resizing or when moving it around (much more of a problem for the unskinned version) due to the native listbox control not doing double-buffered painting & some of the JTF window drawing code being slower than it should have been (it's now much faster) along with the skinned version incorrectly pre-filling all of the window background when only the area not showing items needed to be filled in
Fixed the JTF window not correctly handling DPI related monitor changes which could cause the window to appear in an odd manner making it unusable for some setups
Fixed the new library playlist action not always creating the initial empty playlist file which would cause the playlist view to show the no source playlist error
Fixed an recurring failure when trying to send files to be processed for replaygain due to a timing & feature validation conflict when checking writing replaygain metadata is supported
Fixed a crash for some replaygain processing attempts due to a conflict with trying to update the local library metadata for the file in a way that was needed when WACUP was using ml_local but is no longer needed for it's native plug-in
Fixed some FLAC files incorrectly playing which could appear as too much gain being applied
Fixed MP4 based files with AAC not showing the appropriate progess when processed for replaygain (due to decoder handling changes it often meant they'd jump from 49% to 100%)
Fixed the folder monitor status column being auto-resized incorrectly if there's no folders set to be monitored
Fixed the wrong reason being shown in the replaygain processing list when the file(s) trying to be processed are handled by any input plug-in(s) which are unable to save the metadata into the file(s)
Fixed the library navigation tree handling incorrectly handling the bookmarks & local library plug-ins when moving them in the tree by not putting them into the new position due to them also acting as drag & drop source points (aka not getting the api right & returning the wrong value for the intent of the action needed)
Fixed the library navigation tree incorrectly indicating that sub-node items can be moved when it's not currently implemented in WACUP's library core (will be considered as a feature to add later on)
Fixed some inconsistency with the way controls on the history preference page were being handled causing some to be incorrectly disabled from unrelated options
Fixed the 'is podcast' option on the batch metadata edit dialog being always checked due to not verifying that the value from the local library had been obtained
Fixed an internal api change exposing a title handling issue in the Streaming Source DSP when it's set to use the v2 protocol causing the current playlist string being used for the title parameter causing it to display incorrectly (e.g. as 'artist - artist - title' instead of 'artist - title' when using the default ATF formatting)
Fixed some typos related to the word library (libary & libray)
Fixed the podcast downloads view running its processing timer when there's no active downloads running for a small cpu reduction
Fixed a small performance issue with the classic skin song ticker due to not caching the length of the generated string for later drawing
Fixed the classic skin song ticker not reflecting the changed song in some instances (more of an issue since the above fix altered the timing of things happening to expose this occuring on going backwards)
Fixed some main window timer actions incorrectly being double processed which could cause for slightly more idle cpu load than intended
Fixed some more unwanted initialisations in some of the plug-ins for aspects not needed immediately along with a small performance issue on applying colouring to some of the image elements
Fixed the handling after a crash not always clearing out the last crash message which could cause it to keep embedding the first crash message into any other crash reports instead of the actual crash reason which would cause the error reporting preference page to show the wrong reason (all due to trying to avoid calling some actions during the crash collection stage that would fail if using the native OS ini handling)
Fixed a missing reason being shown for plug-ins intentionally not loaded by the core under WINE due to it not offering the support needed to use them
Fixed a random crash when attempting some podcast downloads due to a timing issue preventing the needed internal service from having yet been created
Fixed some of the menu items on the import sub-menu of the library button menu showing the folder monitor sub-menu instead of doing the intended mode
Fixed the library view buttons being double processed for some of the plug-in views on loading for a small reduction in view loading times
Fixed a possible crash issue when closing the internet radio or podcast views due to incorrectly handling the clean-up of the imagelists used by them
Fixed a resource leak when modifying the albuamrt on the Alt+3 / File Info dialog due to some debug code incorrectly still being enabled for the build
Fixed a resource leak when the library navigation tree needed to set the icons within it & they didn't already match to the existing native icon sizes
Fixed a loading performance regression with the Playlist Separator plug-in (in_text.dll) along with using a less than ideal way to register itself in time to have it's separator items shown in the correct visual state as soon as WACUP's playlist editor window is visible
Fixed a crash when trying to add some google podcast feed urls
Fixed memory leaks related to the hotkey registration mis-handling the display string being used for them due to a regression from a prior bug fix a year or so back
Fixed a timing issue with the about preference page where the build version information could stay showing as checking for updated information when the connection had already failed but was not indicated
Fixed the local library view filter pane columns not reflecting things correctly when they're being re-ordered (if supported within the view handling)
Fixed some issues with the custom mp3 encoder setting handling which could cause it to be ignored & use the default encoder settings vs what's expected
Fixed an ini parsing issue when priming the settings cache which could cause the processing to get stuck in an endless loop due to unexpected differences in the linebreaks found in some ini files
Fixed the core incorrectly trying to update some of the notification area icon tooltips when those icons aren't configured to be shown
Fixed a loading performance issue with the Not So Direct output plug-in causing it to equate to a third of the initial time to load the default output plug-ins
Fixed a regression which broke double-clicking in the waveform seeker window to start playback around the position of the double-click
Fixed how podcast downloads are verified to better handle the feed file reporting a completely different size to what is downloaded which could cause some feeds to keep re-downloading already downloaded episodes
Fixed unicode stars not shown in the classic skin songticker when set to use the skinned font (now it's handled like a normal asterisk character instead of showing as blank spaces)
Fixed the internet radio plug-in running a timer to update it's navigation node which hasn't been applicable for a few years
Fixed opening the about dialog before any other dialogs (e.g. preferences) not applying dark mode as expected
Fixed the titlebar text of the generic classic skin windows sometimes flickering during painting (aka double-buffering to the rescue)
Fixed playback resuming on start-up & showing what's playing in Discord is enabled could sometimes show as paused despite playback happening due a timing issue with how some of the plug-ins resume playback
Fixed a drawing issue with the big clock ocsilloscope visualisation mode where there could be seen a partial line from the centre line to the first plotted value (e.g. more obvious with sine waveforms)
Fixed the big clock spectrum analyser visualisation mode still moving / flickering when playback is paused instead of sticking with the last processed state per all other spectrum analyser instances seen
Fixed the visualisation preference page not showing the currently selected plug-in as selected if it's not actively running when the page is loaded (the plug-in would still be run via other actions but the page would effectively act like no visualisation had been selected)
Fixed some inconsistencies with the visualisation preference page & the main window menus which could make it seem like the selected visualisation setting had been lost when it was tied to the running state instead of the prior preference / menu selection
Fixed an issue with the multiple visualisation support which due to changes related to dropping the re-use of the Winamp core meant some of the WACUP visualisation plug-in handling now wouldn't trigger the quit method to be called on closing the whole process (closing a single visualisation plug-in would do as expected) which could prevent some window positions, etc from being saved out as expected
Fixed the streaming url plug-in incorrectly trying to react to some metadata requests which can at times cause slow responses
Fixed a copy of gen.bmp being incorrectly loaded when using modern skins which due to some un-understood weirdness is causing some modern skins to crash on loading (if not it saves a resource handle & around 70KB of memory)
Fixed a full copy of the default classic skin images incorrectly being cached when using a modern skin for resource, memory & time to load the skin reductions (this related to the above fix but was applied in a generic manner for any skin & not ones that seemed to have issues due to a coding logic that didn't avoid the main classic skin loader from being triggered)
Fixed a parameter check within the albumart handling preventing some of the modern skins with embedded albumart panels from changing to the not found / default image & stayed showing the last valid image
Fixed a small performance issue with some of the replacement drawing code the WACUP core provides to allow the modern skin engine plug-in to run under it (how noticeable this'll be I'm not sure as it's a bit of a percent reduction according to the profiler & there's a lot more work that needs to be done or better still just getting on with a native WACUP replacement plug-in to handle modern style skins)
Fixed the classic skin song ticker & some related handling being incorrectly triggered when using a modern skin (e.g. changing the playback volume) which is a waste of cpu when it's not going to be seen
Fixed switching between some modern style skins was causing an unhandled crash (i.e. WACUP's crash reporter would not be triggered) due to service callbacks registered by the modern skin engine not having yet been removed by the plug-in causing them to be called when they're no longer valid which is not going to work out too well (aka another reason I do not like the gen_ff plug-in)
Fixed the lack of a video config group for the modern skins to be able to query the "autoopen" & "autoclose" values
Fixed a crash when the re-used in_mp3 plug-in is sent some file path strings which cause it to get an response that the runtime it uses doesn't like instead of the plug-in doing some extra checking first
Fixed the modern skin script timer handler incorrectly running some aspects when starting WACUP under a classic skin & never changing to use use a modern skin
Fixed the reproducible instances of the modern skin related windows briefly flashing white whilst WACUP is still loading (this is quirk of the OS vs timing to create the windows & is jarring on a dark mode / low light setup)
Fixed the mode switching button of the Vortex modern skin not displaying which prevented the action from being able to work (is unclear if the cause of this issue affected other modern skins or not)
Fixed the region map image related handling in a number of modern skins not working which would typically appear as missing seeker position bar / elements due to the elements being treated as a null region
Fixed a crash when trying to resize some of the moderns skins when the scaling setting has been set to less than 100%
Fixed an image handling issue which for some skins could cause an obvious black block to appear during resizing of the main window (this was affected cpro skins more obviously but was also present with the bento based skins & likely most other modern skins)
Fixed the modern skin window entries not appearing in the expected block of the menu if video support has been disabled
Fixed the mouse cursor when moving over some of the windows under a modern skin sticking on the resizing cursor instead of showing the expected arrow cursor (this was a problem for windows using custom classes)
Fixed a problem with the replacement modern skin script timer implementation which could cause it to not correctly manage some of the timer instances being registered which could cause the list to keep growing which over time could either cause the process to run out of memory or to make things slow / laggy
Fixed an issue with modern skins not restoring as minimised between instances due to the modern skin engine plug-in doing weird things with focus vs minimisation related messages (now being patched around)
Fixed most of the flickering on closing if a modern skin is being used related to how the WACUP core attempts to reduce UI related interactions within closing that can in some instances cause hang crashes
Fixed some issues with IPC_PE_GETDIRTY which due to changes in how WACUP handles main playlist changes to be done off-thread to avoid it blocking & taking less time but inadvertly broke plug-ins like AjaxAMP so they wouldn't see that a change had occurred (primarily due to the change having been saved out & the internal modified flag reset before the plug-in was next going to poll the api for changes)
Fixed the unskinned menus not always showing using the OS dark mode style if that's the expected view due to not triggering the initialisation needed if no dialogs have already been shown during the instance
Fixed a deadlock in the playback history handling for new installs or ones with an empty history database when there's a request for the metadata due to the local library plug-in also being empty & the option is set to query this as a fallback metadata source
Fixed a local library plug-in api call incorrectly reporting back whether a file is known in its database or not which could cause some incorrect behaviour such as in the file info pane of the bento / BBM skins
Fixed a crash seen by some setups where checking for updated podcasts & for updated supporting tools happen around the same time during initial process loading (which can seem like a failure after updating)
Fixed editing individual file metadata from within a local library view causing further access to the database to deadlock within the running instance which would in most cases cause a hung process crash
Fixed the selected but inactive visualisation plug-in menu not showing a checkmark next to the shown plug-in in single visualisation plug-in mode (inadvertently broke the fixes the prior build introduced)
Fixed a number of aspects of the local library plug-in which should either remove or minimise some of the ui hangs that have been reported along with reducing the amount of time need to lock the database (still not 100% where I'd like it to be especially when using a modern skin due to how it handles metadata requests on the main ui thread which can often cause things to hang vs other aspects of WACUP)
Fixed the local library view results pane sometimes staying showing as 'scanning...' when the search has completed due to a single result being returned which could prevent the final repaint being triggered
Fixed an nde empty integer related field optimisation check sometimes mis-reporting a field as being empty which prevented the data from being seen (e.g. song lengths) especially during metadata refreshing
Fixed the taskbar / process text not always updating as expected during some of the playback stopping actions especially if advance to next on stop is enabled
Fixed a metadata caching issue related to an api request from the modern skin engine plug-in used to populate the file info pane in certain skins (e.g. the bento based ones) causing files not known to the local library to not always show the current items metadata as expected (either getting stuck on the first file shown or lagging behind to show the metadata for the previous file which has been shown)
Fixed an alignment issue which prevented the processing status bar appearing in the main playlist editor when using a modern skin along with it showing a message not related to some of the processing modes
Fixed a sporadic crash when in_zip attempts to obtain metadata from in_mp3 if it's already trying to play an mp3 file
Fixed a crash in vis_classic when the timing of things is out of step between init & it trying to draw the background
Fixed a deadlock when trying to add items into the main playlist whilst triggering playback & shuffle is also enabled
Fixed a crash seen with the nde implementation when the setup is suffering from extremely low available memory to use
Fixed the possible cause of a weird hang during closing issue when trying to save out some of the nde based databases
Fixed an in_wav caused issue where it could incorrectly make a file existence check for core file is supported checks
Fixed another deadlock related to modern skins & the local library interacting due to the metadata some skins request
Fixed the local library plug-in triggering a local library view refresh on playcount updates if the file is not found
Fixed the history preference & navigation node text disappearing after disabling the history plug-in tracking options
Fixed the /debug command-line option preventing the created WACUP instance from completing its attempt to finish load
Fixed a loading quirk with waveform seeker which could cause lots of metadata requests for length in quick succession
Fixed various problems when obtaining metadata from MP3 files due to too many active api calls from different threads
Fixed some handling issues on the input & general purpose preferences which could cause a crash with enable / disable
Fixed some issues related to the classic skin window snapping due to the change a few builds back for smaller windows
Fixed in_wave not reporting the expected playback bitrate of any MP3 based files when it's used for fallback handling
Fixed the local library plug-in not updating it's api result cache (view cached was ok) with playback related updates
Fixed a small performance issue with the local library plug-in when it attempts to restore the view filter selections
Fixed the reproducible cause for the local library view handling which prevented it maintaining the filter selections
Fixed the local library view settings files incorrectly having changes re-saved when there's not been any differences
Fixed a performance regression with some local library view handling which caused them to take much longer to display
Fixed a handling issue which could prevent starting WACUP with file(s) to play not correctly triggering that playback
Fixed a number of issues with fullscreen video playback which prevented the on screen display being hidden or updated
Fixed a performance issue with some of the local library view actions when there is a need to find the selected items
Fixed a deadlock on trying to right-click within the local library view results pane & a slow action is still running
Fixed a hang on close if the waveform seeker has gotten stuck on trying to process a file which reports no audio data
Fixed a hang on close when video playback is active & is more likely to occur if fullscreen playback had been enabled
Fixed the lyrics window not doing well with large amounts of text which causes all of the ui to hang whilst rendering
Fixed the taskbar preview with it flickering on updates, not showing albumart or not working with no preview text set
Fixed the option to auto add an imported local library folder to the folder monitor not live updating the preferences
Fixed the reset metadata handling which could cause some of the input plug-ins to do unwanted initialisation on files
Fixed a handling issue which prevented title generation working for playlist separators with background title reading
Fixed a local library api compatibility issue which could cause a crash when the re-used portables plug-in is copying
Fixed the waveform wrapper plug-in for some situations mis-reporting things internally or not releasing a file handle
Fixed the waveform wrapper plug-in doing more processing on the "is it our file?" related checking than was necessary
Fixed some aspects of modern skins not updating if the title matches the previous one sent (aka memory patching fun!)

Removed legacy mode handling support as WACUP no longer has a need to leverage the winamp.original program file from 5.666 (it still needs a few of its plug-ins but that's not what legacy mode involved)
Removed the "Use Artist for Album Artist if not available when reading metadata" option from the local library preference page as WACUP's local library plug-in hasn't used it since July 2023 as it doesn't store the re-mapped value in the database unlike the 5.666 ml_local plug-in did & instead does the handling as part of the view filter queries which are handled via their own preference option on that page

Updated ASAP (in_later.dll) to 6.0.3 (9 Mar 2024)
Updated AVIR/LANCIR to 3.0.10 (18 Jan 2024)
Updated cacert.pem to latest (11 Mar 2024)
Updated cppwinrt (gen_win10shell.dll to 2.0.240111.5 (12 Jan 2024)
Updated c-ares (libcurl.dll) to 1.2.7 (23 Feb 2024)
Updated libcurl (libcurl.dll) to 8.7.1 (27 Mar 2024)
Updated libexpat (xml.w5s) to 2.6.2 (13 Mar 2024)
Updated libfaad2 (libfaad2.dll) to 2.11.1 (14 Nov 2023)
Updated libjpeg-turbo (image.w5s) to 3.0.2 (24 Jan 2024)
Updated libkss (in_msx.dll) to 1.2.0 (16 July 2023)
Updated libnghttp2 (libcurl.dll) to 1.60.0 (1 Mar 2024)
Updated libopenmpt (in_mod.dll) to 0.7.6.20445 (24 Mar 2024)
Updated libopus (libopus.dll) to 1.5.1 (4 Mar 2024)
Updated libpng (image.w5s) to 1.6.43 (23 Feb 2024)
Updated libsidplayfp (in_sidious.dll) to 2.6.0 (1 Jan 2024)
Updated libvgm (in_vermas.dll) to 0.51.1 (31 Dec 2023)
Updated minizip-ng (zlib.dll) to 4.0.5 (6 Mar 2024)
Updated Monkey's Audio (in_ape.dll) to 10.65 (16 Apr 2024)
Updated mpg123 (mpg123.dll) to 1.32.5 (17 Feb 2024)
Updated OpenSSL (libcurl.dll) to 3.3.0 (9 Apr 2024)
Updated pugixml to 1.14 (1 Oct 2023)
Updated sc68 (in_sc68k.dll) to the latest commit from 19 Nov 2023
Updated Spout2 (vis_milk2) to 2.007.013 (30 Dec 2023)
Updated unrar (unrar.dll) to 6.2.12 (3 Oct 2023)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 13 Apr 2024
Updated WavPack (in_wv.dll) to 5.7.0 (29 Feb 2024)
Updated zlib-ng (zlib.dll) to 2.1.6 (10 Jan 2024)
Updated Zstandard (libcurl.dll) to 1.5.6 (30 Mar 2024)


Preview Version: 1.9.20.17040 (x86)

Released: 30 September 2023

Everything done as part of beta preview build v1.9.19.16956

Added an import folder option onto the root local library navigation tree node so it's more obvious & consistent with other menu actions
Added an option to the import folder dialog for the local library plug-in to control if the chosen folder will also be added to the Folder Monitor

Changed some of the library navigation node right-click menus to make them more consistent with the import vs export wording & groupings
Changed how visualisation & dsp plug-ins have their sub-modules enumerated to better handle plug-ins not being implementated correctly which could cause an infinite loop causing the process to crash
Changed the internal metadata cache handling to do a better job in triggering its own & any input plug-in specific file caches to be released in a more timely manner to resolve file locking problems
Changed the hooking of some of the runtime methods for the 5.666 plug-ins to hopefully resolve some of the random memory related failures
Changed the output plug-in loading to prevent out_multi.dll from being loaded until investigated / replaced as it's currently causing instant crashes when it's loaded

Fixed a crash related to the local library album art filter refreshing
Fixed the credits page showing the wrong year so it's now correctly updated based on the compile information pulled from the core dll
Fixed the version history page in the installer not following dark-mode
Fixed the discord now streaming button handling incorrectly reporting cda & zip entries as streamable links when should just be urls
Fixed the yt-dlp handling not giving an appropriate error message if the download couldn't be completed (e.g. due to server issues)
Fixed an internal lifetime issue which could cause a crash when items in the main playlist are being refreshed & changes are happening
Fixed a memory leak within the database engine inadvertently introduced in a beta build from a few months prior whilst fixing a different issue
Fixed a memory leak in not correctly handling some libopenmpt generated failures when trying to process corrupted files (leaking ~65KB / file)
Fixed a crash in the vorbis input plug-in when processing some metadata edit requests
Fixed the input plug-ins currently being queried for "playcount" when it's not provided by them (only the local library / history plug-ins) which could for some setups cause the input plug-ins to acquire a file lock when not needed as part of trying to obtain the metadata
Fixed the streaming source dsp not automatically connecting if the server type dropdown has been changed from the default & then enabling the use built-in server option
Fixed the local library plug-in not importing some of the files which have virtual filepaths when they contain multiple files within them (e.g. MOD, IT & SID)
Fixed the import folder dialog for the local library plug-in to remember it's last opened position
Fixed the load plug-in profiling handling causing a file handle to be left open throughout the process lifetime
Fixed the add folder / current playlist to menu items for some of the modern skin menus not working (ml_ll didn't know to handle them)
Fixed a compatibility issue between in_mp3 & the core visualisation api handling which could cause it to trigger a crash for some
Fixed a crash related to the metadata caching added around some of the modern skin engine plug-in calls to reduce it's overall impact
Fixed a crash on close due to the 3rd party gen_g15_ray.dll plug-in causing a messaging deadlock (this should also reduce its overhead)
Fixed a crash in the replacement modern skin script timer implementation due to an invalid timer received from the skin engine calls

Other misc small changes in relation to some of the crash reports where it's inconclusive what was going on but additional checking has been added which might help

Updated Monkey's Audio (in_ape.dll) to 10.24 (29 Sep 2023)
Updated mpg123 (mpg123.dll) to 1.32.2 (27 Sep 2023)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 28 Sep 2023


Preview Version: 1.9.19.16956 (x86)

Released: 23 September 2023

Added support under Windows 10 / 11 for most configuration dialogs / messageboxes / windows shown to follow the OS dark mode setting (note: this is mostly relying on the OS to do the drawing so some controls &/or dialogs may not be supported depending on the OS version &/or specific revision being used) - if there's anything obviously missed &/or from 3rd party plug-ins then do let me know so I can try to handle them!
Added support under Windows 10 / 11 for the installer & uninstaller (once updated to this version or newer) to follow the OS dark mode setting
Added the ability to run the modern skin engine plug-in (gen_ff.dll) in WACUP's non-legacy mode (aka a big step closer to finally dropping the need for legacy mode & using the original Winamp exe to run)
Added a triple-size mode for classic skins (Ctrl+Shift+D menu shortcut) for those finding double-size is still too small (this depends on plug-in support much like some of the earlier WACUP changes to allow the generic skinned windows to support double-size)
Added an initial input plug-in for playing local Opus audio files (streaming support will follow later once the base plug-in including it's handling of metadata editing has been confirmed as working ok)
Added an input plug-in based on the recent in_vgm/libvgm solution (v0.51) by Valley Bell (named in_vermas so as not to conflict with existing in_vgm copies for those still preferring that) with the expected WACUP integration changes (transcoding, unified fileinfo / alt+3 dialog, removing legacy client support, etc)
Added 4 input plug-ins to the installer which add support for DS Sound Format (in_2sf.dll), Game Boy Advance Sound Format (in_gsf.dll), DS Nitro Composer Sound Format (in_ncsf.dll) & SNES Sound Format (in_snsf.dll) which increases the out of the box support for video game related format (these are modified from https://github.com/CyberBotX/in_xsf/ to improve WACUP the integration & resolve some issues)
Added reporting of the overall initial loading time (more might be happening after this time) & the time for the main aspects of the core to load into the load profiling output (some might find it useful if your WACUP install seems to take an unreasonable amount of time as a means of confirming if that is the case)
Added options onto the equaliser window 'auto' button right-click menu & the appropriate equaliser under modern skins to control additional equaliser preset handling to auto-select based on the reported genre of the playing item (this is the merging of the old 'Auto EQ' plug-in into the WACUP core to make things a bit quicker & more seemless with this feature that many had wanted over the years)
Added the helper IPC_TOGGLE_MUTE & IPC_IS_MUTED api for plug-ins to use to be able to toggle the current playback volume between muted & the previous level (if the user hasn't changed it since the api was called) & to check if the muted state is currently set (please note that this does not relate to the self managed mute option that modern skins offer)
Added a .beat time (Swatch Internet Time) mode to the Big Clock plug-in base on a request from the Discord server (niche player gets a niche feature so it somewhat makes sense)
Added compatibility changes to allow the old (circa 2003) Bouncing Cube visualisation plug-in to work under WACUP (this helps resolve it needing to be run as an administrator for the configuration options to be applied as well as resolving issues with the window size & position due to a conflict with OS DPI scaling vs a non-DPI based API that the plug-in uses with it's window position handling)
Added /REMOVEPLAYLIST which accepts a playlist guid (such as from /ENUMPLAYLISTS) to complement the existing playlist command-line actions
Added an 'Appearance' preferences page under the 'General' preferences node where the playlist editor font controls now reside (this has applied to everything instead of just the playlist editor which is why it's been moved from the 'Playlist' preferences page) along with using skinned preferences & skinned menus as well as some other non-skin specific options (more will be moved / added to this preference page in later builds)
Added options on the 'Appearance' preferences page to make it possible to adjust the font used for the skinned menus (new addition which Winamp didn't offer which should make them less jarring to use)
Added a new IPC_WACUP_HAS_LOADED notification to know that loading should have completed enough
Added an OS compatibility check for the 'FaultTolerantHeap' being enabled which can occur due to the OS being helpful if there are too many crashes (e.g. during development) but it can cause more problems such as modern skin loading issues & more crashes on closing (hence the need to make it more obvious if this has been enabled as it's caught me out a few times)
Added support to the appropriate WACUP provided media library plug-ins to allow for type to find to work (e.g. with the list focused it'll jump to the item that matches based on what's entered which Explorer & other instances of listview controls do & something I'd missed compared to the Winamp versions of the plug-ins)
Added the ability to specify a custom songticker ATF string (which works for all skin types) on the Appearance preferences page for those wanting more customisation over the look of their WACUP install
Added a configuration option to the Milkdrop plug-in to have it not recursively load presets found in the sub-folder of the currently specified root preset folder (this is not enabled by default as the abaility for the plug-in to find & render any of the available presets is less monotonous for most users out of the box vs this option which enables the 'classic' Milkdrop preset loading behaviour)
Added an option to the Lyrics plug-in to not show the albumart for the current item being shown (taken from a Discord request)
Added the option to the add / edit view dialog for local library views when using ml_ll to have the filtered results list aligned to the right of the view instead of to the bottom (still the default style)
Added remove item actions to the ml_ll local library views (including to the upper pane filters unlike Winamp's plug-in) & the navigation tree view right-click menus doing either removing the selected through to the ability to remove missing &/or unsupported items (where there is no input plug-in claiming ownership) which should make ml_ll better at purging items no longer needed
Added batch edit metadata (the ctrl+e in-view shortcut) to the ml_ll local library vies selection right-click menu which enables a mode that hasn't been working in the ml_local plug-in this replaces
Added support for the ml_ll local library database to be handled via the export -> local library option if it's the currently used local library plug-in (more to do with the old vs new handling but this'll do for now :) )
Added a save as csv file option to the ml_ll save as action as a more obvious version of the export smart view option (via the library button menu) which will save the current view results
Added tooltips on the classic skin equaliser window for the 'hidden' areas for setting the bands to maximum/default/minimum
Added an input & encoder plug-in for the True Audio (TTA) lossless audio format (this is lesser known but might be useful to some users with older audio collections that still need its support)
Added play/enqueue/enqueue & play options to the library podcast root node menu that allows for sending either all or only the newest podcast episodes into the main playlist editor
Added the ability to now also edit the title for a playlist entry (main & library playlists) in addition to being able to edit the entry that the playlist item relates to (dunno how this was never requested before nor why Winamp didn't have the functionality for me to replicate as part of WACUP but this is why WACUP is like a WinAmp++ :) )
Added support for the podcast & downloads views to show the last time the podcast episode was played (either as the url or the locally downloaded file) to make it easier to determine what ones have been played or not as well as making use of information that is present from other parts of the media library without having to go to another library view (e.g. history)
Added support for modern skin tooltips (unless the skin does it's own tooltip handling) to follow the scaling of the skin instead of staying super small (thanks to eris & mirzi for getting this working)
Added a non-linear peak fall off option (used only with the falling peak mode) to the classic spectrum analyzer visualisation which may look better depending on your taste
Added initial support for the Milkdrop visualisation plug-in to use Spout (https://spout.zeal.co/) & for it to act as a sender (dunno how useful this'll be as nestdrop seems to have it already handled but this native inclusion saves those needing something basic vs having to use an older modified version of the Milkdrop plug-in which is less than ideal vs what WACUP offers)
Added a check for update action to the agent mode right-click menu (the main WACUP program will still do it's own things but this is useful for testing & might help others)
Added in a placeholder preference page for appropriate installs to make it easier to change WACUP between running in legacy (uses the Winamp program file) & non-legacy modes
Added support for trying to skin the context menu (if the skinned menu support is enabled) which is shown when right-clicking within a skinned edit control (e.g. search field of a local library view) for better consistency with the rest of the skinned look
Added an option to the replacement local library plug-in so it's possible to control whether the newly added associative sorting is used or not (if enabled this will do additional sub-sorting of the view results for cases that make sense e.g. sorting by album will then sub-sort by the disc & track values to better group the album results) which some may not like or prefer the faster speed of the simple sort
Added a playback remapping so that opus files which don't play with the primary opus input plug-in will be attempted to be played using the vgmstream plug-in if present (e.g. incase they're lopus files that haven't been correctly named)
Added some more options to the big clock plug-in for the time of day mode so it can now be in either 12hr/24hr mode along with not showing the seconds & how the PM indicator is displayed in the 12hr mode
Added Windows on ARM detection to the crash reporter (as running WACUP on Windows 10 for ARM on a Raspberry Pi 4 is now a known to work configuration which runs surprisingly well though a native ARM64 verison of WACUP would likely make for a nicer experience on such hardware...)
Added checks on loading for OS version compatibility being enabled which in one case was set to Windows 98 & was causing a slew of crashes so it's better to warn where possible as OS compatibility really isn't needed
Added the ability to now configure & use up to 10 active stream sources when using WACUP's streaming source DSP plug-in which can be configured via Preferences -> Streaming (this is compared to a fixed 3 streams from prior builds)
Added support for holding shift + arrow key up / down or shift + mousewheel scroll up/down to offer finer resolution of volume change compared to the normal level that matches Winamp's behaviour
Added a $year alias to use within the NDE queries which can make it easier to have a local library smart view which automatically updates to only show files from the current year (if there's more aliases that make sense to add then let me know & I'll consider them if they make sense :) to add)
Added support for @WINE@ in modern skin script parameters so it's possible for the skin (sparingly) to know if it's being used under WINE or a normal Windows setup (incase of needing to work around WINE bugs for the hopefully short term)
Added an option to control whether the text shown in the classic skin windowshaded playlist editor is capitalised or not (am going non-capitalised by default going forward so this allows for getting the Winamp style back for those that want it)
Added official command-line handling support for interacting with the player when using non-legacy mode or native only mode with the 64-bit builds with limited support provided for legacy mode instances (this is not something that has been formally supported in all prior WACUP builds & is why the functionality has been broken for at least 9 months with the beta builds prior to this build being released)
Added the ability when using non-legacy mode or native only mode with the 64-bit builds to specify multiple items via the command-line handling options related to play / enqueue / enqueue & play (this is also a new addition over what Winamp was able to offer which is why it's not available when using the legacy loading mode)
Added the current running time for the current WACUP instance to a 'Statistics' block on the 'About | Updates' preferences page as sometimes it's useful to know this without forcing WACUP to crash :)
Added a 'duplicate at bottom' action on the playlist editor's send-to menu which is equivalent of the 'enqueue' action that Winamp's send-to menu would show but better reflects the action without the imho confusion of having an 'enqueue' action on there (added based on feedback from discord)
Added %samplerate_khz% to complement the previously added %samplerate% ATF metadata variable which preformats the output (if available) in a kHz style (e.g. 44100 -> 44.1 or 22050 -> 22.05) without having to do weird ATF string processing :)
Added the ability for the crash reporter to now check when a crash happens for any post-install updates for the build that's failed to be applied in-between full builds (this has been done due to too many of the beta testers just not bothering to check the forum as per beta testing instructions when there are repeated crashes especially after a new build has been released so this should make my life easier!)
Adding a ML_MSG_TREE_ONDESTROYVIEW notification for the media library plug-ins which'll send the current hwnd about to be destroyed so the plug-in knows & can trigger any clean-up as needed in a more timely manner vs a last minute reaction to the views getting the WM_DESTROY message (dunnoy why this was never something Winamp did as it'd have made a few things simpler plus it helps move things a bit more away from relying on Windows messages for things :) )
Added /UPDATE=noui to offer a pure command-line mode for triggering an update which assumes that by running the command you do want to do an update check
Added an option to the dedicated album art window (via gen_classicart.dll) so it's possible to now have the artwork slightly blended with the window background if enabled (some may like this so here's another option to add to the mix!)
Added support for module files (e.g. MOD, XM, UMX & any of the other 56 extensions) to be treated like a playlist if there are any reported sub-songs within them (there's an option to go back to the older style of treating them as one big file if that's preferred but automatic expansion is the default behaviour going forward)
Added a 'Volume' tab to the main Playback preferences page so it's possible to check the internal WACUP volume level & the reported external process volume level from the OS mixer so that the effective playback volume level can be determined (e.g. if the OS mixer volume level is 25% & the internal WACUP volume level is 100% the effective volume level is 25% which would make it sound a lot quieter vs other programs)
Added support for the modify option to be enabled via the add/remove OS preferences (subject to Windows supporting allowing it) which may be helpful in some situations if there's an issue or the user is unclear about what might have been changed (this will not be available for portable installs)
Added an on closing notification message for the plug-ins to hook so it's easier to know what the type of close is (currently normal or self-restart) so the likes of the autoplay plug-in can update their stored states before the full closing process is commenced
Added the ability to revert back to the last library playlist (if one exists) via the right-click menu on the playlist child nodes or from within the root of the library playlists node (this is not currently done within the specific library playlist views for now as a proper undo mode makes more sense to be implemented into them but this will at least help with making use of the backup playlist files)
Added ability to either manually or from the current skin to override the taskbar preview & overlay icons with the files needing to go into a 'Taskbar' sub-folder in the WACUP settings folder or root of the skin folder/archive being used
Added using Shift + Spacebar in the main playlist editor to force scroll the currently playing item back into view depending irrespective of the default Spacebar setting (this makes it easier to get close to the old Winamp behaviour whilst embracing some of the WACUP adjustments to the handling based on feedback to try to make things more consistent in their handling vs different Winamp skins & other players)
Added initial WACUP versions of a NSFPlay/NSFPlug v2.5 based input plug-in (in_notyansf) for NSF/NSFE support, an MSXplug based input plug-in (in_msx), an AdPlug (AdLib) based input plug-in (named in_addanotherplug so as not to conflict with existing in_adlib), an ASAP (8-bit Atari) based input plug-in (named in_later so as not to conflict with existing in_asap) & an sc68 (Atari ST & Amiga) based input plug-in (named in_sc68k so as not to conflict with existing in_sc68) to further expand the native playback support for video game based formats as per user requests (more needs to be done to some of these plug-ins mostly related to format conversion support)
Added support to the listview header skinning to show the column sorting direction in a more legible way as it's using the filled up/down unicode arrow character from the font instead of a fixed small image as Winamp's media library implementation was doing which wasn't scaled to fit unlike this new implementation :)
Added support for classic skin loading to look for cursors in a 'Cursors' sub-folder within the skin (folder or archive format) so it's a bit cleaner for skinners who want to use it instead of dumping everything in the root of the skin folder / archive
Added resetting of the 3rd party lyricsplugin window settings to the /RESETCLASSICSKINPOS & /REPAIR command-line actions
Added an option on the playlist preferences page so it's possible to enable a behavioural change to prevent the currently playing item being always scrolled into view when there's an item selected
Added Ctrl+Shift+A as a playlist window shortcut to quickly remove the selection from any of the playlist items (this is applied in both the main playlist editor window as well as library playlist views)
Added Ctrl + double-click on the classic skin playlist editor's 'selection' button to trigger the invert selection action
Added support to the button skinning to now handle the split style in a more legible as it's using the filled down unicode arrow character from the font instead of a fixed small image as Winamp's media library implementation was doing which wasn't scaled to fit unlike this new implementation :)
Added support to the /enableplugin & /disableplugin command-line options so that specifying gen_ml or gen_ml.dll or library will allow for WACUP's media library core to be controlled with this option in a comparable manner to what the earlier builds which used the separate Winamp plug-in required for it to be controlled
Added better plug-in support for those shipped with WACUP that can be forced to output mono audio if the playback option to force mono playback is enabled (this is still incomplete & a post-processing step will most likely be implemented so there's not a reliance on plug-ins to be updated to support this playback mode)
Added compatibility improvements for the iZotope Ozone Free DSP plug-in so it's settings will be saved without needing to run everthing as an administrator, fixing it causing WACUP to massively lag when it's window is visible & avoided an issue during it's unloading which could cause the WACUP process to hang on closing if it was active at the time (nothing WACUP is doing wrong, just an old plug-in being weird)
Added Alt+B & Alt+R for toggling the Big Clock & Wavefork Seeker plug-in windows respectively as global keyboard actions when WACUP is focused (taken from a user request & hopefully doesn't break anything)
Added a command-line helper mode that can be used to attempt to collect a running process dump & submit it like a crash report if a WACUP instance is hanging (though the chance of needing this should be much lower since recent beta build changes to resolve what was determined to be the cause of that issue especially when using Windows 7)
Added a workaround to deal with some older visualisation plug-ins that can at times throw un-helpful error messages whilst still being able to run
Added a workaround to deal with the AVS visualisation plug-ins sometimes locking up the process when they're being loaded (it still doesn't help AVS crashing especially in the convolution.ape)
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
Added a means to prevent the dedicated album art window for modern skins (if they follow a standard way of defining the window) from being created if the album art plug-in is being used (this helps to avoid the double album art window & menu items which can be confusing at times without having to mess around with editing / recompiling aspects of the modern skins)
Added an option on the Media Library preferences page to have the navigation tree located to the right of the current view
Added a 'freeze windows' option for the classic skin handling so any native / generically skinned windows handled via the core will have their position effectively locked (using the control key can override this to allow for resizing / repositioning as needed - the classic skin options preferences page details more about this)
Added a clarification on the taskbar preferences page for where the custom icon (taskbar.ico) needs to be put to be used
Added an option on the classic skin preferences page so it is now possible to use either the classic skin text font or a real text font for the song info area (where the kbps / kHz values are displayed) as this might be useful for some depending on the skin aesthetic & font options available
Added better handling of the tooltips in the podcast & downloads views to deal with the descriprion from the feeds being provided in html so they now should appear in a reasonable plain text format
Added a tooltip for the kbps / kHz areas of classic skins so it's possible to see the actual value if playing something which causes the clipped version of the value to be shown
Added a native replacement of buggy timer.w5s from 5.666 which provides the Timer script object for modern skins (far too many hours taken going over the Winamp3 SDK to figure out the interfaces, etc to get this working!)
Added setting the currently playing stream as a button on the Discord Rich Presence (this will however only work for others viewing your profile & won't work if done yourself because that's what Discord does)
Added a workaround for invalid mp3 files that may be sent to in_mp3 to prevent that plug-in causing a crash
Added smooth scrolling support for the classic skin song ticker (there's an option on the Classic Skin preferences page so the Winamp style of scrolling can be re-enabled for those who prefer that)
Added better icon support for the media library navigation tree items so it does a better job of resizing the icons as needed compared to the hackish workaround that was used to attempt to achieve it with the media library core plug-in from 5.666 (aka what's seen with the prior preview builds)
Added preference options for the media library tree so the icon support can be enabled or disabled along with whether the buttons on the nodes (as seen for however many months its been) is preferred if not wanting to have the icons shown
Added a processing set of images for the local library to make it visually more obvious that something is happening for some of the long running actions along with the number of items remaining (which mirrors what's seen with the remaining podcast downloads to complete)
Added new images for the WACUP provided library navigation tree items so they have a higher native resolution instead of 16x16px as per 5.x
Added changing the main ui font to now be done via any supporting windows instead of just via the main playlist editor window (e.g. using Ctrl + NumPad Plus, Ctrl + NumPad Minus or Ctrl + Enter) along with classic skins being shown an indication of what the change was via the song ticker status
Added to the library window button menu an update all podcast feeds item (this mirrors the item on the right-click menu of the podcast & download view items)
Added to the library window button menu refresh all metadata & remove all missing / unsupported items (this mirrors the item on the right-click menu of the local library root view item)
Added reporting of some additional information on the 'misc' diagnostics preference tab which mirrors some of the information found in the crash report logs & can be useful for seeing if there's a possible resource leak for some (am aware of some 3rd party plug-ins that can & will cause such issues)
Added specific library window button menu handling for a new import submenu as well as internal handling changes to simplify getting the export menu & a slew of other small changes related to this
Added the ability to see how many possible file types are reported by the currently active input plug-ins on the File Association tab on the Diagnostic preference page including if there are duplicates with any found having (!) prefixed before the shown file extension in the tree for the item after the first instance of a file extension based on the order of parsing through the input plug-ins as they were loaded
Added better reporting of what the issue is when parsing an ATF string & resolved issues with the wrong error string being used
Added a maintenance section to the Local Libray preference page so its easier to determine if there might be an issue (e.g. incorrectly added duplicate entries due to bugs in earlier builds) whilst offering some modes to help resolve those issues along with a compaction mode if needed (useful to run if a lot of items have been removed to reduce the memory usage & how long it takes to load the database)
Added the initial WACUP implementation of a folder monitor feature for the local library (under Winamp's local library plug-in this was known as Watch Folders) which allows for per-folder configuration on how often scanning is done (unlike Winamp's plug-in which ran all scans at the same time) for added / modified / removed files (unfortunately this doesn't have live monitoring support for when WACUP is already running to remove the need to do full scans as I'm just not happy with how it needs to be done for now)
Added a tataki.dll compatible replacement to be able to drop needing to re-use that supporting dll from 5.666 (it's been an on/off effort to do this over the past 3 or 4 years due to time & needing to be in the mood & from having to massage aspects of the Winamp3 / Wasabi sdk into a manner that works for what the modern skin engine plug-in gen_ff.dll & a few of the other plug-ins require so there will likely be some issues related to this change vs the crashes that the original dll were causing particularly on closing)
Added an option on the Modern Skin General preference tab to control the loading of the Color Editor (default loading is off as most will not need this so it saves some resources & time on loading & avoids some potential conflicts that can occur from trying to load this old component)
Added an initial implementation for handling local MP4 files containing dash / fragmented data frames along with resolving a number of other problems with some invalid / missing frames (e.g. for bitrate)
Added a number of compatibility improvements for the 3rd party lyricsplugin from window styling (follows the classic skin scaling options now) to menu items not working correctly & so on
Added a WACUPified build of the classic full-screen Geiss visualisation plug-in (it won't use settings for existing older copies of the plug-in due to this build of it not using the OS registry to allow it to be usable with portable installs)
Added an option to the skin preferences page to limit the option for selecting a random skin on playback to only select classic style skins
Added a native implementation of the Jump To Track (gen_jtt) plug-in (originally from 2003) which completes the trio of the Jump To dialogs now being implemented within the WACUP core :)
Added double-clicking on the vertical divider in the library window between the navigation tree & the currently selected view to act as a way to resize the navigation tree to only take up the width needed to see the currently visible items within it (something that I've been wanting for a long time to make the alignment of things a lot simpler vs trying to eyeball it)
Added double-clicking on the vertical divider in the internet radio & podcast views to resize to the radio station genre tree & the podcast channel list respectively
Added double-clicking on the vertical dividers in the local library views to align the divider to the right edge of the filter to it's left to make it easier to align things based on the intended sizings
Added an option to the Playlist preferences page to control whether existing title information in playlists if present is used or if it'll be ignored when added from outside of WACUP (e.g. via drag & drop or from Explorer) causing the titles to be regenerated based on the current ATF string
Added drag & drop support for some of the media library navigation child nodes onto the main & playlist editor windows instead of only being able to use the right-click options &/or doing it from within the selected library view (e.g. podcast downloads or a bookmark category)
Added support as well as an option to the Video preferences page to allow supporting plug-ins (aka in_mp4) if the option is enabled to attempt to fallback to using OpenH264 for decoding that data format (this will attempt to get the required dll & is aimed more at WINE setups where Media Foundation support is lacking but is off by default as most setups do not require the additional processing this adds)
Added a libfaad2 based AAC decoder instead of trying to re-use the Fraunhofer based aacdec.w5s from 5.666 for M4A (MP4 using AAC) files (may also look at a Media Foundation based solution later but this is more portable e.g. for WINE)
Added an option on the File Association diagnostics preference page so it's possible to save the currently reported file associations to a text file
Added a patch for out_sqr v1.7.9.1243 to correct issues with it's preference dialog along with some related in-core handling to resolve tab placement issue
Added support to allow manual title refreshes in the main playlist editor (e.g. via Ctrl+Alt+E) to now by default trigger the local library plug-in (if enabled & the item(s) are known in it's database) to refresh the metadata it has cached for those playlist items before the new title is generated (there is an option on the playlist preferences page to disable this)
Added the ability to change the view mode of the local library root instead of mimicking the plug-in from 5.666 where it'd only over show the results in a simple list
Added a preference option on the Notification Area preference page to control the click behaviour of the notification area between click to show/hide or to always show it (with ctrl+shift+click doing the opposite to the currently selected mode)
Added a preference option to control the 'show all by/from artist/album' action in the local library results right-click menu (done as part of the replacement of the local library plug-in)
Added an option when running modern skins to have the script timers run at a lower frequency compared to the default that WACUP now applies (60fps vs 30fps) which is closer to what 5.666 & earlier would run them at & may be of use for WINE / slower setups where the 60fps target can cause a higher CPU load than would be expected (the 60fps target was to provide consistency with the classic skin main window vis)
Added a ProcDump based mode to try to use for cases where WACUP is crashing & it's crash reporter is not being triggered (still not 100% certain how well this mode will work & may itself need some tweaking)
Added a basic debugging mode when running WACUP under a debugger to report the last file that the local library plug-in has attempted to process (via an add or update action) to try to determine some reported failures (this is primarily aimed at being used in addition to the ProcDump based 'debugging')
Added more proxy mode options related to the updated libcurl & updated the proxy help documentation
Added an option to the local library plug-in to control whether it'll do case insensitive sorting (default) or not for the view filter handling (not doing this might be useful for finding mis-cased typos)
Added a small information dialog that'll appear during loading if the main playlist is taking much longer than would be expected (e.g. could be due to slow network resolution or from trying to load all files from a drive due to folders being allowed as playlist entries) & should not appear for the majority of setups (famous last words)
Added support for the spacebar to trigger the process wide play/pause/show active main playlist item handling if the library navigation tree is focused (this should help to improve the likelihood it works depending on how the WACUP instance was made to be the active program)
Added support for using a mlnotfound.png/bmp from within the root of the skin being used or the WACUP settings folder to allow using a different image for when there's no albumart able to be shown within the album cover view modes
Added an option on the format converter preference page so it can be made to convert any spaces in the final generated filepath to underscores
Added support for Ctrl+F8 to trigger a full reload of the current library view unlike F8 which (if supported by the view) will try to refresh things based on the current search parameters (this is mostly just a quicker way to help when testing without having to change to another library navigation node & back again to the one wanted)
Added support for an ATF based custom matching rule with the album art reading preferences (General -> Album Art)
Added %fullfolder% to the ATF support to return the complete folder path for an item (if applicable) instead of just the current folder as %folder% does (this can be used with the above additional albumart reading mode)
Added an 'Audio from this Year' local library view preset so it's easier to see if $year query variable in use
Added an option on the Notification Area preference page so it's now possible to have the right-click menu show a minimal playback menu instead of the full main right-click menu
Added an option to the classic spectrum analyzer visualisation to vertically flip the image (bug found during some clean-up & made into an option as some liked it)
Added an option to the local library preferences to control whether albumart (if set to be shown) will be preloaded or not in the background for album items not yet viewed (this is off by default for now as it can cause excessive CPU levels whilst all of the items are being processed which isn't ideal for laptops or older devices)
Added the ability to customise the name of podcast feeds shown within the podcasts library view (not the local library sub-view that shows podcasts from the local library database) to aid in better organising the list
Added export support of WACUP's current podcast subscriptions to an OPML file (this is done via the export sub-menu shown from the button menu in the library window)
Added import support of OPML files containing podcast feeds into WACUP's current podcast subscriptions (this is done via the import sub-menu shown from the button menu in the library window & the podcast navigation node right-click menu)
Added a workaround to hook the modern skin guru meditation error window to be able to auto-close it after a few seconds to avoid it causing problems if left unattended as seen in some crash reports
Added a /FIXWAMODSHADE command-line option to fix an issue with the Winamp Modern skins where the modern skin engine can incorrectly save a height for the windowshaded main window causing an unexpected band appearing below the normally seen part of the window (this is to save those users who experience the issue from otherwise having to wipe their modern skin related config file if it happens to them)
Added the ability to check & report in the plug-in preference pages if a plug-in dll failing to load is likely due to it not having been built to support DEP/NX-bit (aka very likely to be an old plug-in)
Added a WACUPified version of the MatrixMixer plug-in (out_neo.dll) to aid in up/down-mixing the audio channels along with some other audio processing whilst using the other available output plug-ins & is configured via Preferences -> Plug-ins -> Output -> Channel Mixer (for beta testers this will remove the interim build of the dll so those of you not paying attention to things will no longer get an error message on loading along with disabling the original out_mixer from being loaded as it doesn't support the other WACUPified output plug-ins)
Added export actions to the appropriate library navigation tree right-click menus where an export option is implemented to mirror those also provided via the library button's export sub-menu
Added an option to the Playback preferences page's audio modes section to control (subject to input plug-in support) if files with video will have that rendered as well or if only the audio will be used
Added some handling to try to determine why in_mp3 is giving a generic error message if it's not able to save metadata edits to files to try to determine if it's a locking issue or a different issue
Added initial opt-in support to the Streaming Source plug-in for when configured to use the SHOUTcast 2 connection mode to send the albumart for the currently playing item (this will if needed resize the albuamrt down to avoid the server limitations with albumart support & depending on how well this addition works, stream branding support might be added for those also requiring full parity with dsp_sc)

Changed the classic skin main & equaliser windows to now be drawn & handled just by the WACUP core instead of letting the Winamp core do it - this is a MASSIVE change & there's likely to be some minor issues with things maybe not reacting like Winamp did though it's also allowed for refining some actions (e.g. easier access to the known equaliser presets via the menus instead of going into a dialog)
Changed the installer to no longer try to re-use a Winamp compatible uninstall entry in the Windows registry & instead use a WACUP specific one due to winget / other application management software incorrectly trying to update & then breaking WACUP installs using unrelated "winamp" installers (this unfortunately breaks the ability to have plug-in / preset pack installers see the WACUP install & will require either having to manually enter the WACUP program folder to use &/or extract their contents & manually copy things over - am sorry about this but I can't fix those installers & "winamp" updates effectively wiping out valid WACUP installs is not acceptable)
Changed the skinned menu handling implementation to not be provided via Winamp which is a bit visual different but should improve consistency to the OS menu handling & when WACUP is on high-dpi displays
Changed how the WACUP loader is managed so it will now only remain running to do the update check (if applicable) before closing instead of just sitting there waiting for the spawned Winamp process to close (this is in response to an issue with Stereo Tool DSP v9.70 where it causes WACUP to hang on loading until the waiting loader process exits - not sure what that DSP changed from v9.63 but this change was going to happen eventually as part of the work to remove the use of winamp.original so why not do it now :) )
Changed some of the metadata handling to avoid some more non-metadata specific values being queried from the taglib based handling (seen in a waveform seeker crash when the 'type' was being queried)
Changed how some of the internal main playlist title sanitisation is done in response to a crash report seen within that handling
Changed how the reading in of the configuration is done to hopefully work around an odd runtime handling issue seen in some crash reports which prevents WACUP from being able to complete its loading
Changed libvorbis.dll to export some more methods that are needed by the recent updates below (the downside of trying to size optimise dlls at times)
Changed the handling of plug-in unloading to try to deal with some odd crashes seen when trying to determine the validity of the plug-in information (e.g. related to stacked plug-ins)
Changed the media library plug-ins to be able to directly indicate they want their preferences to be placed under the 'media library' node so the media library core doesn't need to figure it out (that behaviour is still maintained for compatibility with older media library plug-ins)
Changed ml_wire.dll to now be named as ml_podcast.dll since this makes more sense when browsing the plug-ins & because I no longer need to maintain compatibility with the legacy media library core plug-in
Changed the Waveform Seeker plug-in to not process any files supported by the newly added in_xsf plug-ins (see top) due to it triggering thread-safety issues within the plug-ins (not ideal but it's better than it crashing until something can hopefully be done to the upstream copies of the plug-ins to fully resolve this issue)
Changed the media library plug-ins provided with WACUP to use a newer revision of the media library plug-in interface (this won't prevent older media library plug-ins from being used & like has been done with other plug-ins under WACUP offers better integration for the native WACUP plug-ins)
Changed the media library plug-ins to use more shared code for a small saving whilst changing them to use some direct library api calls instead of the slower SendMessage(..) based calls
Changed how the export menu on the library button & window menu (if using a modern skin) are handled to better ensure they update if there's changes with the library views available (this also removes the plug-in trying to pre-populate on loading for a small performance improvement on loading)
Changed how the album art plug-in works to use a simple cache to help minimise its overall impact on WACUP's load time as well as reducing how often it re-queries metadata
Changed the references to use of the spacebar in the milkdrop window to better reflect that shift+spacebar is the preferred soft-cut to next preset action from trying to better ensure that spacebar works uniformly for toggling the playback state)
Changed how the Win7shell plug-in & related DWM (desktop window manager) methods are handled when attempting to use WACUP on some esoteric setups where the DWM methods needed aren't available
Changed how the main playlist editor drawing is handled to minimise the chances with some modern skins on loading / change from another skin (e.g. Big Bento) for it to show the items using the classic base skin colour with a fallback system font (this also offers a small reduction on loading times but the main thing is to avoid the jarring mixed look whilst the skin engine is still doing it's initial loading)
Changed how playlist entries are handled when read to minimise associated drive activity (especially when using HDDs over SSDs) & to avoid offline UNC based paths triggering validity checks to help resolve reported issues with excessively long initial loading times (e.g. a 1200 entry test playlist went from 33ms to 6ms be loaded on my development machine - 6ms is how long a 300 entry playlist before the changes would take for comparison - the change also meant a 4.6s wait with a playlist containing an UNC path went away)
Changed how the library bookmark & podcast download views work to reduce their impact on initial loading time if they were the last view prior to closing (is more work that needs to be done for the other library plug-ins)
Changed how the classic skin oscilloscope is handled to have it better fill the available area it's drawn into whilst making it less likely to appear as top heavy when using the solid drawing mode
Changed some of the handling around the Alt+3 File Info dialog to better deal with edits failing to be saved (e.g. if it cannot be applied on the currently playing file)
Changed some of the handling around trying to update the metadata of the currently playing file (still more to do but this should help with some of the reported issues)
Changed the plug-in profiling support to release its log file where possible once loading has finished
Changed the skinned preferences handling to prevent trying to override the winamp.ini setting to manually enable it when running WACUP on WINE
Changed the write ratings option to be disabled if the replacement local library plug-in is being used (still need to sort out a better shared handling for this so it's not reliant on a local library plug-in though it will still remain as a default option when re-implemented - we can all thank a certain singer user for that)
Changed how the splash screen on start-up action is handled so it will now be cancelled just after it's loaded instead of waiting for a generic time (also from testing, the splash screen seems to add around 10% to the initial loading time so keep that in mind if you want WACUP to load as fast as possible)
Changed how the oscilloscope data is rendered in the main window visualisation & related plug-in api calls so it should now be oriented in the correct way compared to other software
Changed how Milkdrop deals with running on a monitor in portrait mode to now by default attempt to fill the monitor instead of only filling half of it (this can be manually done via the 'dualhead' options)
Changed how the library playlists root & child playlist views (if enabled) are managed to reduce the delay / impact of them upon the initial load time of WACUP if they're the last view being restored
Changed how the classic skin equaliser window is handled compared to Winamp to better ensure that it's not going to appear as can sometimes happen (this change replaces a prior WACUP patch for this issue)
Changed the /RESETCLASSICSKINPOS to also reset the double-size mode to off & better ensure that the classic skin main window will be in a visible non-windowshaded state when using this command-line option
Changed the /STARTMIN & /STARTMAX command-line actions to now be handled by the WACUP loader which makes loading cleaner & also prevents it being applied to an existing running instance (which Winamp is incorrectly doing e.g. starting with /STARTMIN & then calling it again will trigger the already started instance to come into view when that's not the right behaviour for a loading only related option)
Changed some of the paramater validation of the volume & panning apis to make them more robust to bad input (to prevent values wrapping around oddly) along with having the new value returned in the api calls (this might be helpful for some to check what was actually set, etc)
Changed the library playlist view handling to now save any metadata information obtained when viewing playlist items that didn't already have that information stored (this reduces duplicate processing when viewing the playlist & also can improve loading times due to not needing to trigger an immediate loading of the local library database)
Changed to have WACUP provide the base services manager & callbacks implementations instead of Winamp (this isn't the final implementation as there's patching & hooking required to get it working but it's enough to help test that it works as this took a few days to get it to a seemingly stable solution)
Changed how the child process determines the path of the WACUP loader (e.g. wacup.exe or winamp.exe) to resolve some issues now that the loader program isn't kept around after starting
Changed to have WACUP now provide the 'PE_Info' & 'VID_Info' implementation (the video support has been broken for a while) once I finally figured out the 3 files from the Winamp3/Wasabi SDK that were needing to be used directly or slightly modified or provided enough information to be able to create the definition for the dispatchable class that needed to be interacted with (aka it took months of on/off work to figure this out)
Changed how the Win7shell plug-in handles its rendering to now be done in it's own thread which should help resolve some of the hang related crashes seen with some setups (e.g. due to the OS fonts folder containing lots of fonts which can be slow to enumerate &/or triggering a font parsing crash)
Changed some of the core & plug-in menu handling (e.g. the exporter plug-in menu insertion) to resolve some issues found as part of replacing the skinned menu handling
Changed some of the preference pages to now have an obvious ATF help link if ATF is used on it (e.g. the Discord preferences now make it more obvious what is used to be able to refine what's shown to others)
Changed the podcast view's edit action to now support changing the feed url without having to manually add a new feed & remove the existing feed (there might be some more work required to refine this)
Changed the installer to no longer rely on the helper findwinamp.dll by using the equivalent handling from the WACUP core dll instead (this also saves ~50KB from the installer size)
Changed the album artwork & lyrics plug-ins to respond to a new IPC_PLAYLIST_ITEM_REMOVED api to better ensure they update as expected if the item they are showing has been deleted from the main playlist
Changed the autoplay handling so it now waits until WACUP is known to be in a loaded position which should help to avoid some issues experienced with modern skins not receiving some notification messages (this removes the need for the delay load option)
Changed how the vgmstream input plug-in handles file conversion to make it more compatible with the common formats (e.g. to MP3 which only supports mono or stereo input) - there's more to do for this but it'll do as a workaround for the time being
Changed how the WACUP files are compiled to better leverage the build machine's capabilities to save around 1min 30sec
Changed the main implementation of the Three Mode Repeat plug-in (gen_3mode.dll) to now be done directly within the WACUP core as part of taking over the classic skin's main window handling
Changed the Windows 10 references in the gen_win10shell plug-in to now also reference Windows 11 since the main SMTC feature relates to it (the preview so far seems to make the SMTC integration actually useful instead of just being related to the volume change flyout that appears with Windows 10)
Changed the skinned menus to not be enabled when running under WINE as it really doesn't like them (will need to be figured out later on)
Changed how some of the crash report handling is done in an attempt to resolve some of the odder crashes
Changed the SID Player plug-in to support the HVSC songlengths.md5 format as well as the older songlengths.txt (for those still using it)
Changed how going into double (or the new triple) size mode works for classic skins to better ensure that the skinned windows will not be placed outside of the available screen(s) - this may cause some layouts to get messed up but it's the better choice compared to not being able to find the windows as some have been complaining about for years)
Changed how the sizing of the classic skin playlist editor is handled to no longer use a Winamp core compatible mode which made things like window docking less ideal with the addition of the 3x mode scaling
Changed how the WACUP provided non-library plug-ins deal with skinning to leverage the new shared skinning core so that disabling the media library core will not force them to be unskinned (unlike the ~18 years it's been with Winamp & it's media library / skinning implementation)
Changed the installer to ensure I can't generate a build where the reported version number & the compiled version don't match (e.g. it being 1.1.1.8256 but appearing as 1.1.0.8256)
Changed how the Waveform Seeker plug-in works to make it more thread-safe which should help with some processing oddities along with a processing conflict that can cause it to fail
Changed the option on the Taskbar Text preferences tab to be disabled if the override option is enabled for using the playback state to control how the taskbar text reacts (this avoids some confusion about the top option seemingly not working when the override has been enabled)
Changed the classic skin main window windowshaded visualisation handling to make better use of the space available when running in a non-scaled skin mode (may need some more tweaking though 38x5 isn't much to work with to start with)
Changed how the replacement local library plug-in (will just refer to it as ml_ll from now on) deals with its initial view loading to minimise the overall impact it has on WACUP's load time (this means it typically won't block things whilst loading the database which can be noticeable depending on its size)
Changed the ml_ll upper view panes (if applicable) to show a scanning state instead of nothing when things are being processed (this makes things a bit more consistent between the upper & lower panes during searching / initial loading of the view)
Changed ml_ll to not temporarily remove the sub-view nodes when the local library database was cleared as the feedback this was more confusing & didn't work reliably vs having the add new media / db load error dialog when accessing any of the local library views
Changed the lyrics & albumart plug-ins to minimise how much they save into the settings file so only config values changed from default will be saved (need to apply this to everything where possible so it'll be an on-going change as time allows)
Changed the lyrics & albumart plug-ins to better handle there not being anything in the main playlist from updating when the playlist is cleared & nothing is currently playing to not showing the 'no lyrics' message & the albumart plug-in making the missing artwork image less jarring so it's slightly faded into the window background (this should just make things a bit cleaner & nicer if there's no active playlist)
Changed the installer to have it avoid extracting some aspects that aren't going to be used if updating an existing install in a known good condition
Changed the AVS visualisation plug-ins to be part of the WACUP installer instead of a via a helper installer (isn't worth the hassle with repeated false positives on the helper dll that aren't being cleared vs a 0.26MB overhead on the installer)
Changed some of the add bookmark handling (playlist editor menu / keyboard shortcut / base api) to minimise the chances of adding an existing file / url that has already been added as a bookmark (aka one for benno)
Changed how the history plug-in works to try & avoid a timing quirk when cross-fading is enabled & things take longer than expected to update internally causing the title & duration of the prior playing item being used for the newly played item (still not 100% this change will resolve the issue occassionally being seen but it might make duneflower happier with me)
Changed the default playlist type to save to be m3u8 instead of m3u which may annoy some but it's better for ensuring what is output will be 'good' for many more users
Changed how the various plug-ins are loaded to avoid anything that's not got a plain 'dll' extension (e.g. dll-off) being incorrectly matched & loaded as a plug-in (a bit of how the OS file search works vs me not doing more to avoid loading invalid matches aka duneflower broke things in a weird way when trying to determine a different issue)
Changed how the installer deals with closing an existing WACUP install vs the process taking too long to close whilst causing other checks to believe there is no longer a running process (this manifests as a file being reported as not able to be updated with a user facing prompt but work when using the retry action - if it does still happen then I'd need to know what the file(s) unable to updated so I can adjust things)
Changed how the WACUP provided library plug-ins trigger undo actions on the main playlist to be registered which should resolve some of the weirdness seen (e.g. needing to do a double undo action to get back or it not always catching the changes in an expected manner)
Changed the installer to do a check incase it may have crashed previously & attempt to remove any of the locally cached file (this is based on 2 weird setup failures that have been experienced related to other aspects of the WACUP install process crashing in earlier beta builds)
Changed how the installer & the crash reporter deal with an update being seen whilst having just had a crash & the option to restart WACUP after a crash (not the default behaviour) work to try to better ensure that there are no processes keeping things locked (it still might be possible but this is a non-default scenario
Changed the crash reporter to now attempt to recover & send the collected information (if that succeeded) if the crash reporter could not complete or ironically it crashed (this also should do a better job at ensuring any temp file created during the crash report phase are now cleared once a succesful launch of WACUP has been achieved)
Changed the skin selection description for the Big Bento Modern (BBM) skin to make it more obvious that the skin is general 2x the default size of other comparable skins based on feedback via Twitter
Changed a few things with the crash reporter's collection stage to try & resolve some of the odd hang failures that have been noted (still not 100% sure about this but self-handling crashes is messy)
Changed how the send-to menus on the classic skin main window song ticker & also the one in the playlist editor right-click menu works to now work irrespective of the media library core being enabled (if nothing is using it then the menu will be disabled) as well as hopefully resolving a weird positioning issue when the menu is set to be skinned (seems to be relate to how the send-to sub-menu was generated)
Changed how single / double-clicks work with the agent icon handling to minimise it being able to trigger multiple instances if those that have been started are taking to long to respond (e.g. due to a hard drive waiting to spin-up) which is then making the existing instance checks timeout & so cause multiple instances to appear
Changed how the self restarting action works to do it a bit earlier on in the closing process to see if it'll resolve some of the reported failures along with adding in means to hopefully detect if it was attempted but the self restart didn't run
Changed the crash reporter to also attempt to collect the winamp.original.pid.dmp file that relates to the crashed WACUP instance (there's no guarantee the OS will have also generated this file but it might be there so it's better to try & get as much information as possible when it comes to crashes to be in a better position to try to resolve the crash issue)
Changed how the bookmark submenus are handled with their dynamic creation to resolve a Windows 11 beta visual issue when skinned menus are enabled (one of the bookmark sub-menus appears with rounded edges instead of the expected square corners for the WACUP skinned menus)
Changed how the Win7Shell plug-in works with regards to it's checking for the need to render it's preview in reponse to changes with the Windows 11 beta preview (this is a temporary change to prevent the preview constantly running once it's been triggered until things are much closer to a non-beta Windows 11 release when it should be more feasible to improve the checks that are otherwise having to be done)
Changed how the WACUP provided library plug-ins deal with maintaining view selections to prevent them processing their view items when there isn't a known selection already present (this has the benefit of reducing some of the pressure that can be placed on keeping a view updated including triggering some of the odder crashes seen due to slowness to process 100,000s of view items before the OS thinks its hung)
Changed how generic window titlebars under a classic skin are drawn for skins which haven't been updated to support numbers & some extended characters to instead condense the text drawn instead of leaping potentially large empty blocks (e.g. when skinned prefs is enabled & looking at the preferences window titlebar which normally tries to show the current WACUP build number)
Changed the skinned scrollbar handling to reduce some of the overhead needed to get to the actual drawing which may help resolve some of the weirder crashes due to them
Changed a callback method that the WACUP media library plug-ins were using for getting skinned listview column size changes to now be done via the new shared skinning support (this has the bonus of removing a window subclass done on the listviews which is a good thing as less subclassing means less overall overhead)
Changed the library history plug-in & anything else WACUP provided using it's database to now use a differently formatted history database which resolves some issues the Winamp layout was having (this will migrate the old format over to the new one automatically so there shouldn't be any loss of valid history)
Changed the library history plug-in view initialisation to make it less likely to block WACUP on initial loading
Changed how the podcast downloads view deals with loading to provide some feedback something is happening instead of showing a blank list (this is more of an issue for larger stored lists of downloads)
Changed how the WACUP provided library plug-ins deal with tracking the currently playing item to reduce the memory overhead from duplicating some of the handling
Changed how the ml_ll local library handles playcount updates to minimise loss of that information if WACUP happens to crash (it'll now trigger a save after 3 events which should average a save every 10mins based on average song lengths)
Changed some of the plug-ins to further reduce or if possible remove the subclassing that they're doing (especially of the main, library & generic skinned window frames) for a small performance improvement
Changed the flags used for the mini dump collection by the crash handler to try to get some more information from the WACUP process whilst not causing it to generate massively large crash.dmp files
Changed how the missing files detection is handled within the main playlist editor so it's using less memory & also uses a much simpler implementation so the missing status is now stored on the playlist item (this may also help with a few of the random crashes where this wasn't handling large playlist changes well at the same time)
Changed some of the internal variables & related data structures to reduce the memory usage for them (not a massive saving but bytes across duplicated items builds up quickly with 100k+ playlists, etc)
Changed the /DIAG & root diagnostics preference page to use the same method for reporting some of the key file paths instead of using their own versions (a legacy from how WACUP initially developed which saves a small amount of code from the WACUP core)
Changed how the prompt informing that modern skin support is not available handles things so it'll now revert to the base skin which with some of the other changes going on helps to avoid a crash occuring
Changed how the overall & dialog class icons are applied (i.e. what you see in the taskbar & on dialog titlebars respective) to use a faster method to help reduce the loading overhead (this saves ~30ms on my machine which is into the slightly noticeable time range & means my main test installs are now closer to loading around half a second on average :) )
Changed the splash screen initialisation to reduce it's impact on loading times (before this change I was seeing on average a ~50ms overhead on loading times when enabled whereas it's under ~20ms post change)
Changed how the w5s (winamp 5 components) are found & loaded to reduce some of the overhead in trying to find them &/or their delay loaded versions for a small reduction in their overall overhead on loading
Changed how the input & general purpose plug-ins are loaded to avoid some double processing of them related to filtering out dlls with the same name but from doing things with betas that aren't supported or older versions (this is primarily to avoid version conflicts but the checks weren't sharing some of the information which meant there was a small amount of time per dll being wasted on loading)
Changed how the native windows are created to remove some duplicate processing to get them correctly positioned & sized along with avoiding a white flash that could sometimes be seen during WACUP loading
Changed when the Win7shell plug-in creates it's list of icons to use is created to remove the delay it caues during WACUP loading (this was taking upto 30ms on my development install & now has negligible impact)
Changed how the DirectShow plug-in (in_dshow.dll) gets some information it needs via a live patch so it's SendMessage(..) call no longer hits the main window (just makes things a bit quicker during loading)
Changed how the library history plug-in loads & stores its settings to help reduce the time taken to load along with keeping the settings file cleaner so only changes from the defaults will actually be stored
Changed some of the library view resizing handling to reduce some of it's overhead & to make things a little bit quicker to complete (it's still not as buttery smooth as I'd like but some of that is down to Windows afaict)
Changed the handling of the information pane in the podcast view to try to match the text rendering to use the skin defined font instead of just matching the font size (there's some quirks to this depending on the font being used but that's down to how the integrated browser control seems to work in relation to using non-scaleable fonts)
Changed how the artwork cache works to remove some duplicate processing as well reducing the impact on closing times so it should only happen now if there's an actual change to the cache (before it could be triggered by the priming of the cache on loading which ends up being wasteful when it's not required)
Changed how the shared skinning service handles closing to lower it's impact on closing times (this now removes the system components from appearing in my on closing profiling file under normal conditions)
Changed how clicking on the notifier for the Winamp provided skins (i.e. Winamp Modern, Bento) so it won't try to open a now playing url which due to other aspects of WACUP's handling to avoid hitting broken old Winamp site urls would send you to the WACUP forum (it will now just skip the action even if the skin is configured to open the url (this is a semi-permanent change until a solution is decided on with what service to use for now playing links)
Changed how the global hotkeys plug-in creates & destroys it's registered hotkeys to help improve overall loading & closing times when the plug-in is fully enabled
Changed how the generic skinned windows handle the Ctrl+F4 (close window) shortcut to better ensure it's going to work consistently without some of the windows not always working or needing custom handling
Changed how the generic skinned windows handle the Alt+F4 (close program) shortcut to better ensure it's going to work consistently without it not workign in some windows (e.g. classic spectrum analyzer)
Changed the unskinned menu handling to now try to follow the OS dark mode support (this is something that has a number of limitations due to Windows not really offering much to 'classic' programs since it was first introduced in Windows 10 1809 & newer - more will likely be done with WACUP to try to better follow the OS dark mode handling but some of it is ironicallly going to have to involve using it's skinning support to achieve this vs letting the OS just handle things nicely for us)
Changed how the generic skinned windows deal with child windows to try to reduce some of the messaging overhead that was happening prior (e.g. sending more window changing messages than needed) which shouldn't cause issues for more plug-ins out there but it did mess up the re-worked thinger plug-in so an updated build of that will be needed
Changed the Yule Log plug-in to now run most of the actions on a background thread instead of doing it delayed on the main ui thread which should make it more tolerant of slow internet connections, drive access, discord, etc so it's much less likely to trigger the unresponsive handling which has been happening for some (this is one of the earlier WACUP plug-ins & I should have made this change a long time ago based on the experience gained from the plug-ins & core changes that came afterwards)
Changed the crash reporter & how it handles the dmp files to better suit my needs as part of the automatic submission process in relation to other recent changes that have caused much larger dmp files to be created depending on the crash & other aspects of the install
Changed all of the WACUP compiled files to now use the VS2019 compiler instead of VS2017 which has saved just over 0.5MB across all of the files & related runtime whilst making compilation of WACUP much faster (it's halved the time it takes for me to run a full project re-build to take just shy of 4 minutes)
Changed how the library podcast view is handled with it's resizing & dealing with WACUP being restored from minimised to remove a load of duplicated resizing of the window to ensure things will be redrawn (specifically for the embedded browser control for showing the currently selected feed/episode information) which should now make resizing of the view better compared to before
Changed how the MP4 input plug-in deals with metadata requests for urls to try to avoid a multiple access related crash
Changed how the update check is done on initial loading so for normal checks it'll no longer block loading though any triggered due to a crash will maintain blocking until the check has been completed & user action has been taken as needed (especially when there's a newer build to use & it has a fix for the cause of the crashes being experienced!)
Changed the main visualisation handling to now run at 60fps by default (as that's what most screens have used for many years) & for it to run at that update rate when using a modern skin (since this drives the api that the modern skin engine plug-in queries)
Changed how the modern skin engine plug-in & some related dlls for it to operate are handled on loading to override a number of the runtime methods related to memory & string handling as part of trying to resolve some crashes by the plug-in due to incomplete initialisation & parameter validation of some key string methods (the aim is for this to improve modern skin stablity by working around it's problems)
Changed the library history plug-in to do a better job of live updating the view results as applicable instead of triggering a full refresh which should be faster & minimise resource pressure especially when updating a large history database (this should hopefully resolve some of the last remaining issues related to using the view & keeping it open to monitor what's going on over time)
Chnaged how long the DirectSound output plug-in might hang around for on closing to account for the overall output buffer size including fade out on closing so it won't wait up to 20 seconds for it to close on some setups (one of my Windows 7 VMs will always take the maxiumum amount of time before it completes it's clean-up of the DirectSound device being used which makes no sense when it's fine on everything else)
Changed the initial drawing of the main playlist editor window to wait a bit longer which helps to avoid the default classic skin colours from showing when loading with the Bento/Big Bento skins (there's still some delay in the colour seen when switching from a classic skin to a modern skin that needs to be figured out)
Changed how ReplayGain is handled especially for MP3 files to better ensure that if a file has the appropriate ReplayGain metadata present it'll be applied (if ReplayGain is enabled) instead of relying upon the input plug-ins to do it (they still can handle this themselves though for now when in non-legacy mode the WACUP core will do the processing for files being processed via in_mp3 re: feedback that it doesn't work right so am using this as a means to help test out what might be going wrong)
Changed the in_mod input plug-in to report -1 for the bitrate on starting playback instead of reporting the current channel count (why?) & to report some more information for 'formatinformation'
Changed the shared metadata handling to do a better job in skipping trying to process requests for metadata requests that are always going to fail before triggering relatively time consuming calls
Changed the handling of the Nullsoft Midi plug-in so it's provided bitrate to the core is corrected since it appears to be providing it as bps instead of kbps as all other input plug-ins are doing (e.g. it'd show as 160000 instead of 160 for modern skins which doesn't often fit nicely)
Changed some of the input plug-ins to do a better job in only calling the 'SetInfo' if there's a change in the information instead of just spamming this & the impact it can have (related to the TTA plug-in change below)
Changed the handling of separator playlist entries so it is possible for them to generate blank titled entries (e.g. when using the newly added separator://! option) without the entry being used for the title as it's fallback (this makes sense for most other things but this doesn't work well with playlist separators where it might be wented e.g. turning of showing playlist numbers & using it to block out albums)
Changed how the CD playback plug-in initialises itself to minimise the delays on loading that it can cause (this still isn't ideal but it's better than a normal 2 second wait) & it should have negligible impact on loading times if there are no compatible drives present
Changed the installer to no longer set the CD playback plug-in to be disabled even if selected to be installed since the plug-in is no longer causing the loading delays that earlier revisions of it had
Changed the update action on the 'About | Updates' preference page to avoid it triggering the unresponsive handling when getting the new build update due to slow connection to the update server
Changed how the settings cache works on closing to avoid it causing up to a 1 second delay on the overall process close time
Changed how the podcast download manager works to avoid it hanging on closing as well as improving it's theoretical top speed as long as your internet connection is able to support it
Changed how the MP3 (in_mp3.dll) & DirectShow (in_dshow.dll) input plug-ins from 5.666 are handled to avoid a delay loading related failure for their dependency on the nsutil.dll (seen this with a few crash reports so am now pre-loading the dll if these plug-ins are loaded to avoid this problem)
Changed the WACUP provided media library plug-ins to use a faster way of getting the current selection from listviews which for some views with 10,000s of items can resolve unresponsive related hangs
Changed some of the WACUP provided media library plug-ins to use a background thread for handling sorting changes when clicking on the view columns instead of doing it synchronously as there's been some crash reports where this is taking too long & makes the OS think that it's hung
Changed the installer to make a better attempt at determining if there's an existing portable install preset to try to default to want to update that if there's no traditional install detected
Changed how the 'type' & 'length' metadata values are obtained so that the local library values will be used if they're plausible instead of hitting the input plug-in responsible for the file (this may also help with some reports of things not working correctly e.g. the waveform seeker preview) when the length cannot be obtained due to something else having exclusive access to the file which blocks metadata reading
Changed how the volume, balance/panning, position seeker & equaliser bars work under classic skins when using double/triple-size modes to offer finer resolution of the change being attempted in relation to the larger size of the controls versus the internal mapping of the values used to represent them
Changed the scrolling into view behaviour when using the enter/return key to start playback on a partially seen item of the main playlist editor so it'll just scroll the playlist enough for it to appear instead of centering it in the window (this better aligns the behaviour with the double-click fix further below)
Changed how some of the internal memory handling works to better ensure that what was allocated is cleared out when it's finished being used (this may cause some more crashes in the short term but should be worth it though hopefully it won't cause more crashes)
Changed how the calculated ReplayGain values are attempted to be saved into the files to try & avoid running on the main ui thread to avoid some of the file updates inadvertently triggering the hung handler
Changed how the main playlist is restored between sessions to better ensure that the stored title will be used instead of it incorrectly trying to re-read or generate the title (should make it a bit faster)
Changed the manually forced refreshing of titles in the main playlist editor to now allow unc/samba based paths to be processed (this relates to a change from some time back to avoid hitting them unnecessarily & having hangs / crashes due to slow processing &/or blocking waiting on the path to resolve when it's not going to due to the device it relates to not being available at the time)
Changed how the delayed unloading of the internet radio view is done to avoid it causing ui hangs & potentially triggering the unresponsive handler
Changed some of the artwork & metadata handling to better ensure that the portable plug-ins as currently re-used from 5.666 can keep working without hopefully crashing as they have a tendency to do
Changed some of the plug-ins (artwork, lyrics, history) & parts of the core metadata & artwork handling to de a better job of dealing with relative file paths - there's a load more that needs to be done to better ensure that anything officially provided with WACUP will be able to work with relative file paths especially for media so it's easier to move a WACUP install around (especially with portable installs) so it'll have more chance of "just working" which the use of absolute filepaths can often cause problems)
Changed to now use yt-dlp instead of the seemingly abandoned youtube-dl which other than being supported gets starting youtube playback back down to a reasonable time after they began throttling connections (this is ironically re-doing a change done over a year ago where we briefly moved to using yt-dlc which is the basis for what has become yt-dlp)
Changed how the installer checks if there is meant to be an available internet connection to use as the prior way could fail (e.g. on Windows 10 for ARM when running on a Raspberry Pi 400) even if there was a valid connection (I can see the ethernet cable & a browser was able to access things without issue!)
Changed how the classic spectrum analyzer visualisation plug-in handles it's window updates to try to avoid what is the likely cause of it triggering a crash with some setups (mostly when using a modern skin)
Changed the handling of the playlist separators so if the default has been set to be a blank separator (e.g. using separator://! ) then when inserting singularly or as a batch action it won't use the inserted item's file path like is done with normal separators so that the blank ones will work correctly as expected
Changed how the installer is built to improve the automation used to better ensure that any updated supporting files will use the correct hashes for them to hopefully avoid any pebkac issues with updating
Changed the Milkdrop plug-in to reduce it's base memory usage by ~247KB by changing how some of the default parts for the pixel shaders are read & stored along with doing more to strip comments prior to compilation
Changed some of the file exists handling to reduce the chances of it causing the ui to lock-up when interacting with items that are on an offline mapped network drive share (this is never going to be a 100% fix & there's more that will need to be done but this is a start to at least alleviate loading & some of the more obvious playback related hangs)
Changed how visualisation plug-ins are handled if set to be loaded as WACUP is starting to prevent them blocking loading as much as they are doing at the expense of them appearing slower to load (this may also help with some quirks related to the modern skin engine & how it handles windows created on a different thread from the main ui thread as is the case with visualisation plug-ins)
Changed various aspects of the installer to allow the NSIS script to be used to make the existing version whilst being able to be used to make the 64-bit installer as well as removing the need for a plug-in
Changed the installer to simplify the post-setup updates that might be done so it's now all done in a single action instead of multiple spawned child processes which some of the A/V / test solutions didn't like
Changed the installer to rely less on some of the NSIS plug-ins that can sometimes be flagged as false-positives when used which is a hassle to deal with at times along with resolving some performance issues
Changed the project build settings for debug file generation which is meant to help improve my ability to debug things (the fun of default settings changing between compilers & me missing it until now)
Changed the gen_win10shell plug-in to now use a non-C# based solution which simplifies the WACUP loading process, halves the size of the plug-in & should make things a bit simpler for me with crash reports
Changed the XSPF & WPL playlist handling to no longer rely upon the libexpat based xml.w5s & instead it now uses the pugixml based handling which makes it simpler & helps to remove a need for xml.w5s in 64-bit builds
Changed how libcurl based connections are initialised to better handle the cacert.pem file being missing so it'll attempt to use an OS provided fallback to try & ensure HTTPS connections will still work
Changed how the active output plug-in is handled to better ensure that it's going to find a valid plug-in to use before it eventually reverts to the built-in null output plug-in (this change should also better handle the main settings file getting wiped vs what's actually been installed instead of assuming a default plug-in will be present because often users do things you don't expect!)
Changed how the Streaming Url (in_url.dll) plug-in handles getting yt-dlp if it's not already present so it goes back to only getting it if needed instead of getting it all of the time (this should help avoid some concurrency issues with the WACUP core & the plug-in both potentially trying to update / download this at the same time)
Changed the flac file handling to attempt to better ensure shared access to a file is possible (this may be the cause of a reported playback failure when waveform seeker is also enabled which might be conflicting with normal playback)
Changed the input plug-ins which don't have actual config dialogs to not report they do/redirect to the about dialog so it's clearer where there's configuration options available (this will not help with 3rd party plug-ins where the Winamp assumption is there is a config method provided no matter)
Changed the SID plug-in to use an embedded preference page (i.e. it appears as a child node under Plug-ins -> Input) & for it to only save out actually changed configuration values from their defaults
Changed the autoplay vs command-line /play handling so it shouldn't cause a double play event to be triggered
Changed how some of the plug-ins initialise their internal data structures to help reduce the time to initially load the dll along with only allocating / running some initialisation code when it's needed
Changed some of the overall loading process to attempt to minimise the potential of some slow / long running actions happening immediately on start-up which should make WACUP load faster (e.g. an older install with a larger database should be less likely to feel like it's lagging on loading compared to a clean install / small database setup)
Changed IPC_CB_MISC_AA_OPT_CHANGED to not be sent on initial loading of the metadata / albumart component which should prevent the plug-ins monitoring it from doing artwork refreshes unnecessarily on load
Changed the waveform seeker to use a cache to reduce some of the drawing overhead & adjusted the drawing refresh rate to minimise the impact of the plug-in on load time
Changed the lyrics & albumart windows to better ensure they're showing the missing artwork (subject to the configuration to show it or not) on initial loading to avoid the jarring pop-in that can occur (this makes loading a little bit slower but visually is a nicer experience)
Changed the WACUP provided media library plug-ins to use the newly added ML_MSG_TREE_ONDESTROYVIEW notification
Changed the ATF implementation to reduce the number of calls needed to get to it as well as making it better suited to being called from multiple threads at the same time (this set of changes should help resolve an odd crash that's been seen related to the background Discord now playing update thread)
Changed the in_mod plug-in to not sniff for Windows messages & instead handle seeking / detecting the need to stop playback in a non-Windows centric manner (this was based on it showing as a possible issue in a crash report)
Changed the WACUP provided input plug-ins to use a helper method to consolidate the end of file handling in playback threads
Changed some of the internal handling when needing to retrieve metadata from the currently playing item if it's not already in the local library database whilst an attempt is then made to add it or another file of the same type into the database which could potentially misbehave due to the multi-threaded nature of what's going on
Changed the CD audio metadata look-up to reduce how many calls are involved to internally get it by avoiding a loop through the shared metadata service which will just come straight back to the plug-in (this is related to a crash seen where it was attempting to process metadata in a manner that doesn't really make sense for how that plug-in works as its 'virtual' metadata as such)
Changed closing of the Milkdrop window to not force set the main window as this happens anyway & was the cause of a hang on closing
Changed Milkdrop to use an asynchronous message instead of one that can block the main UI thread when going into/out of fullscreen
Changed where the running time of the process is reported in the crash report to make it easier to diagnose long vs short run issues
Changed the open/explorer folder handling to try to just open the folder that the file(s) are within if the OS api to do the same but also select the items within the explorer view fails (e.g. when running WACUP under WINE due to SHOpenFolderAndSelectItems(..) not currently being implemented)
Changed the soundcloud stream handling to try to form an 'artist - title' title string from the information returned (why it's not pre-formatted like other services I don't know)
Changed the shared metadata handling to attempt to use taglib for SPC files incase they've been tagged with APEv2 tags before reverting back to the normal ID666 metadata tags (this allows for access to ReplayGain values as some other players are applying to these files)
Changed some of the string & filepath conversion methods to use a consolidated implementation where possible to reduce code re-use which makes some of the plug-in dlls smaller & removes some OS dependencies
Changed how the Streaming Url plug-in works so it minimises doing anything on initial playback & validation of the streams to be played to avoid it blocking the main UI thread which can trigger the crash reporter due to it seeming like things have hung when they've not (e.g. due to a slow internet connection &/or yt-dlp taking a long time to complete processing of the url it's been given to parse)
Changed the final stage of setup to attempt to clean-up the existing crash reports folder instead of potentially allowing it to grow out of control as has been the issue for some setups where stability has been an issue
Changed the format information for module files to make it more obvious what the subsong is instead of just reporting that there were subsongs present
Changed the volume changing status message in the classic skin songticker to now report the effective volume level when taking into account the process volume level as reported by the OS volume mixer
Changed the handling of non-unicode dialogs (as used by many old 3rd party plug-ins) to hopefully resolve the issue of some showing garbled characters instead of the expected titlebar text (this is a weird compatibility issue with WACUP being a native unicode program & other things going on that cause the older ANSI style methods to misbehave causing the titlebar issue)
Changed how the hooking of OS apis used by the plug-ins is done to reduce a large amount of the duplicate processing that goes on when trying to find & then hook the function exports (it also makes things a bit cleaner to follow in my code :) )
Changed a load of internal & inter-dll dependencies to consolidate some of the handling, etc (this is mostly to make things for me potentially easier to deal with going forward without some of the Windows centric aspects)
Changed how the Streaming Source plug-in handles title updates to try & better ensure its metadata retrieval won't block the main UI thread (i.e. causing WACUP to hang / crash) as well as insertion into the stream is better aligned to song changes
Changed how the playback history & local library playcount is managed to do it's best to avoid saving out the changes to the database file from the main ui thread or during the immediate playback event to avoid issues with it blocking the ui for longer than would be liked which can then trigger the OS unresponsive handling when it's not really crashed (aka making it more asynchronous in nature whilst hopefully not causing new issues)
Changed how the nde database files are handled when saving them to reduce the time taken to save them (e.g. going from 290ms to 180ms for a local library database with 100K items on my dev machine, YMMV) which with the changes to avoid issues with multi-threaded saves of these files should better minimise issues especially if it's triggered against the main UI thread (where long slow running actions is bad)
Changed the current shuffle table & position within it to be saved out if periodic configuration saving is enabled which should better help avoid unexpected reversions in playback if there's a crash / unexpected power failure & this hadn't been saved (it will still by default only save the shuffle table & it's position on normal closing but this may help e.g. for streaming / unstable machine setups)
Changed the safe mode handling (only for x86 builds) so it will force WACUP to run in non-legacy mode (i.e. not using the original Winamp core process to get WACUP loaded & also without the ability to use modern skins for now)
Changed the installer to clean-up the settings folder of incomplete database file updates (due to crashes) which for some setups may have grown to an excessive level & may be introducing other issues
Changed the main playlist handling so it will now save out an updated copy if a batch of title updates completes to avoid some issues seen if there's a crash before it's fully saved vs some library a loading related issues seen
Changed the handling of adding a playlist via internal methods to try & pick a random playlist item to start with if shuffle is enabled instead of defaulting to the first item (this is a safety behaviour that it will still fallback to so that it will be able to start playback as long as there's something in the playlist) which may better match with user expectations of playback behaviour if shuffle is enabled
Changed the soxr library to use a shared copy of pffft from the WACUP core just to make things easier to manage & reduce some otherwise unwanted code duplication with recent changes for the classic skin visualisation handling
Changed the Streaming Source DSP to try not to do anything intentionally against the main ui thread which should avoid it causing ui blocks on slow actions (e.g. some title updates)
Changed the handling of the IPC_GETRATING/IPC_SETRATING with the Win7Shell & global hotkey plug-ins to avoid them blocking the main ui which can be an issue if trying to set the rating on media that takes a relatively long time to complete (this is to help avoid it causing crashes)
Changed the end of file handling if there's a critical core handling issue to better try to avoid things getting stuck in an unresponsive state
Changed the OS timer handling to use the preferred disabled exception handling behaviour which is at odds with the default OS behaviour of trying to help out (go figure MSDN documentation & all of that)
Changed how the playlist / song change works so that if there's a selection in the playlist it will no longer force the new item to be played to be force scrolled back into view which was done to mimick Winamp's behaviour of forced scrolling into view but that can be really annoying having it do that
Changed the history plug-in to now use a background queue to avoid it's attempt to record the playback event (start or stopping) from blocking the main ui thread if the history db saving is in progress (this better matches the handling used with the replacement local library plug-in to help it avoid any slow / long running actions from getting in the way & blocking processing on the main ui thread)
Changed how colour theme changes from the modern skin are propogated by effectively blocking the notification it tries to send out & triggering the behaviour it does later on as part of trying to workaround stability / crashes seen with repeated colour theme changing (this is not ideal but it's the only obvious way I can try to minimise some of it's internal issues whilst avoiding WACUP crashing)
Changed how classic skin loading is done to now attempt to support older style skins created for the likes of XMMS where the Windows LoadImage(..) method doesn't like the extended bitmap format used (this is not a 100% solution as colour profiles & a few other things are not being handled but it should suffice based on what's been provided for testing so far)
Changed some of the NDE failure handling & command-line diagnostic reporting to hopefully prevent massively corrupted db files from looping on processing
Changed how the embedded windows are handled to better ensure the linked list is less likely to be something invalid being accessed based on some modern skin enginge related crashes seen
Changed how some of the internal metadata queries are handled to better avoid the input plug-ins being queried for values that are not going to be responded to as part of helping avoid dual file access for the currently playing item vs things that some of the modern skins might be trying to request which can in some causes cause a hang/crash
Changed the in_mp4 input plug-in to try & make better use of the information from the currently playing file if that's also being queried for metadata instead of trying to keep things separate (based on a recent crash report where the action of trying to re-open the currently file & it not going well)
Changed the handling of some of the older supporting dlls from the Winamp 5.666 installer that are still needed in an effort to work around some memory handling issues & also to lessen what is installed to only those absolutely needed against the plug-ins that have been installed
Changed the ML_MSG_PLAYING_FILE api so the param2 now provides a media library core managed copy of the currently playing filepath string so the media library plug-ins don't also have to make a duplicate copy (unless how they work means it makes more sense) for a small saving on memory usage & keeping the plug-ins somewhat cleaner in their implementation as well as it being sent before IPC_PLAYING_FILEW so the library plug-ins (mostly for the local library plug-in) can get a head start which is often useful for the other plug-ins when it comes to metadata related actions
Changed the Songticker Text ATF option to allow for the playback_time* ATF values to trigger timed updates so it's possible to have the current playing position as part of the string being shown (based on a request via Discord) though if this is active it can cause increased CPU & lag in the updating of modern style skins due to how the songticker update trigger has to be done (not a clean solution as I'd like) with the ATF string to achieve this is %playlist_position%. [%artist% - ]$if2(%title%,$filepart(%filename%)) '('$if2([%playback_time% / ]%length%,%length%)')'
Changed how the Streaming Url plug-in handles updating it's cache to delay it until a while after playback has started to help avoid too much contention & potentially causing a deadlock on song change / start
Changed some more of the NDE handling to better ensure that it's not going to fail when there's unrelated machine stability issues during it's multi-threaded saving of a database & it's index file to storage
Changed how the settings cache is implemented to split out the external file modification watching to now be done as a shared internal service instead of specific to just this (e.g. for ml_ll watch folders)
Changed the handling of the patched call that relates to the modern skin engine's getSongInfoText(..) script call so it'll offer up some of the information about what's playing instead of requiring everything to be present (e.g. for MOD files where the bitrate is not known) so the skins can at least still show the appropriate channel & sample rate values which was not happening previously
Changed the send-to menu handling with all of the native WACUP plug-ins so they no longer rely on the SendMessage(..) based api that Winamp required the plug-ins to use (that api still exists for compatibility purposes but this makes things cleaner in less duplicate code & also minimises hitting things on the main ui thread which can be slow for some actions & incorrectly trigger the crash reporter)
Changed the ReplayGain processing plug-in to now prompt if there are files being processed when WACUP is attempted to be closed so it doesn't immediately close & lose any processing results not yet saved
Changed the restart WACUP handling to no longer attempt to do it if the reason for it closing is due to an in-progress system shutdown
Changed how the closing for WACUP is handled to better consolidate everything into a common handler instead of having to do things to keep the Winamp core happy as the code had evolved to do which makes it simpler for me to maintain going forward & should resolve some inconsistencies seen between normal closing & a quick close as the OS shutting down triggers which wasn't always being handled correctly
Changed some of the WACUP library plug-in initialisation to remove some duplicate processing that technically reduces load times but is probably not going to be noticeable outside of the profiling support
Changed how the WACUP provided media library plug-ins handle LVN_GETDISPINFO messages from their virtual listviews to now try to avoid processing requests for column information that cannot be seen (this is something that Windows seems to do where all of the columns are queried even if they're not within the visible area which especially for the local library results if many columns are set to be shown can make the scrolling & some interactions with them slow which this change helps reduce at the expense of doing some more processing to figure things out)
Changed the settings cachce to avoid milkdrop presets being loaded into it which could cause problems with long running instances & a never ending set of presets being added into the cache along with some loading & closing related issues due to lock contention
Changed the loading & closing profiling handling to reduce it's impact when enabled & to output some additional information for closing as well as trying to align the information so it's easier to read
Changed the vgmstream input plug-in to avoid doing additional processing in it's isourfile(..) method unless the plug-in configuration requires it (i.e. for the non-standard / additional file extensions)
Changed a bunch of the input plug-ins to drop their isourfile(..) when it's just a return 0 anyway which makes things a bit simpler so only those needing it (or are older 3rd party plug-ins) provide it
Changed the WACUP native w5s to use a modified implementation which better aligns with the x64 implementation whilst not breaking backwards compatibility with any 5.x compatible component files still used (this is a small optimisation for the loading & closing of them & makes the code more consistent between the different build types)
Changed the SNESamp wrapper handling of the SNESamp plug-in so it'll now be a bit quicker during process closing by avoiding the need for the snesapu.dll from being unloaded (it'll happen anyway once the process fully terminates so it can be safely leaked without the explicit handling to do it)
Changed the waveform wrapper handling of the old wave plug-in so it'll now be a bit quicker during process closing by avoiding the need for the read_file.dll from being unloaded (it'll happen anyway once the process fully terminates so it can be safely leaked without the explicit handling to do it)
Changed how the notification area icon is removed to lessen the delay doing it causes to the overall closing of the WACUP process (aka more threads)
Changed the ordering of the initial files needed from within the installer to help reduce the time to get it to initially run however this doesn't really help if any A/V solutions are doing live scanning which is what led me to look into why I was seeing a long delay the first time the installer was run after being built but was ok on repeated runs with the same installer file (I know it's needed but A/V just causes too many issues at times)
Changed how the Streaming Source plug-in responds to being unloaded to make it much quicker instead of waiting for a fixed time before being able to react
Changed the playlist core to now be built into the WACUP core dll instead of being done as a w5s component which is a legacy from how WACUP was started & having this part of the core just makes things simpler to manage & ensure it's going to be there plus there's an ~59KB saving from merging things (the standalone dll size was 91KB so that's the fun that monolithic can sometimes bring!)
Changed the podcast downloads cache loading to minimise the impact of trying to obtain the length for downloads that were incompletely stored in the cache file
Changed how the core determines if there are video capable input plug-ins being used to reduce the impact on loading by having to query them via the metadata api with it now using either a reported flag for WACUP specific plug-ins or by looking for known input plug-ins with the older behaviour used where needed
Changed the DS Sound Format (in_2sf.dll) & Game Boy Advance Sound Format (in_gsf.dll) input plug-ins to minimise their initial loading impact which between them were approaching trying to allocate around 100MB of statically initialised buffers causing much longer dll loading times than was expected (this reduces the overall time for my dev install to load all of the input plug-ins by ~20% before the change)
Changed the Alt+3 File Info dialog handling to better reflect when it's viewing an item that does not have known write support & those changes either cannot be made at all (effectively treating it as read-only) or will only go to the local library database assuming it's even a valid file to start with) as it was otherwise less obvious for some formats where it's expected there is metadata write support but due to the file / format / supporting library it doesn't yet exist
Changed the first load handling of the podcast view to better ensure the help message appears (the web control sometimes wouldn't or would incorrectly get cleared out) along with how the add / delete handling works to make it more reliable in ensuring the podcast view will update in an expected manner
Changed the styling of the podcast information pane area links so they better match with the current skin colours instead of using the often jarring default OS colours
Changed around some of the NDE file handling on saving to better prevent against the idx & dat files getting mis-matched when an asynchronous save is being processed
Changed the autoplay preferences page to just be a single one instead of a dual tab page (will likely move some options of it later on as it's not the best of layouts)
Changed how file extensions are matched for initial playback to better deal with some of the weirder formats that can exist where pseudo metadata is part of the path
Changed the installer handling to simplify getting the files needed from the 5.666 installer vs other things done previously related to the local cache used to reduce the need to redownload, etc on updates
Changed when the DSP plug-ins are unloaded on closing to avoid some compatibility issues with some plug-ins that can cause a hang on closing due to still processing things from prior playback calls to them
Changed how metadata for files not known by the local media library (or if it's not been installed &/or enabled) is queried to reduce some duplicate processing going on which could cause ui hangs for some
Changed the audio cd handling to minimise the time spent on checking for disc information on device arrival messages to avoid some instances appearing to hang & trigger the OS hung instance handling
Changed how the Not So Direct plug-in works if configured to keep playing on closing to try to avoid some of the odd hangs on closing that have been cropping up within the recent crash reports seen
Changed how the Win7Shell plug-in deals with WACUP being minimised & set to show the skinned window to better ensure the OS will not ignore showing the taskbar controls as well as rendering the process icon instead of blank / old state (when minimised the main window irrespective of skin being used will not be internally rendered to reduce what's being used which isn't helpful for taskar previews so this is something)
Changed the Format Converter plug-in to not register itself as a fake library plug-in to get the send-to related messages
Changed the ReplayGain Analyser plug-in to be a general purpose plug-in instead of a Library plug-in so it can now be used irrespective of the media library core being enabled or not
Changed the library history plug-in to respond to metadata requests for item lengths if the call to the local library plug-in cannot find it within its database as a way to avoid accessing the file directly (for some situations this can help to avoid a long blocking action that the OS may interpret as a hang & trigger the crash handling)
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 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 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)
Changed the wording on the HTTP POST preference tab so it's more obvious where the url along with the parameters for it need to be entered
Changed the handling of some metadata attempting to be read from some module files where subsongs exist so their titles (if possible) are now used instead of the generic module title
Changed how the ingress threads used for different import / update / long running actions across the plug-ins work to better ensure that they'll be destroyed on closing to avoid some hangs seen as well as preventing them sitting around for a long time basically doing nothing & wasting resources (not a lot but there's no point in wasting them if they're not being used for anything at that time)
Changed how the WACUP plug-ins register their global hotkeys to avoid a conflict with how string duplication is handled which could cause a crash in some rare situations
Changed some of the internal updates related to the currently playing item to attempt to avoid it ending up using the loader exe as the file path & allowing some actions to be incorrectly triggered due to it
Changed the podcast plug-in to notify the local library plug-in when it's finished downloading so it can start saving out the changes made to the database with the additions
Changed the Streaming Url handling so it's no longer going to have to wait for it complete it's processing if stop is triggered to help avoid some issues with slow connections & not having the immediate reaction to stop being triggered (aka eris breaking things in weird ways yet again)
Changed the waveform seeker plug-in to ensure it'll skip processing some more formats that are known to be not currently supported as well as image files that can be present in the main playlist editor
Changed the album art plug-in to skip the metadata related checks if the playlist item being shown is an image file to reduce processing that is attempted
Changed a lot of the internal core handling related to trying to access the local library for metadata so that database loading failures will now be much better handled (a scenario that shouldn't occur but this change can massively reduce the lag that is experienced when trying to run WACUP in such a state due to every metadata request causing the database to attempt to be opened - this now massively reduces the number of opens attempted)
Changed how the Bento / Big Bento skins are dealt with during installation to make the process consistent with the other modern skins
Changed the Yule Log plug-in to ensure it's been configured correctly before responding to any actions (this should resolve an issue with some actions like sending tweets happening when it's been turned off due to the default value being used as the configuration values hadn't yet been loaded at the time of a play event)
Changed the handling of comments being saved into Vorbis Comment tags so that "DESCRIPTION" will be used over "COMMENT" to match the spec (reading from "COMMENT" will still occur if "DESCRIPTION" isn't found)
Changed how some of the re-used plug-ins are patched to minimise any related dependencies & to make non-legacy mode to use fewer resources
Changed the handling of batch play/enqueue/enqueue all from numerous aspects of the player to minimise the amount of processing done to lessen the chance of really big additions causing ui hangs / potential crashes (e.g. enqueue all of the local library into the main playlist editor going from 5 seconds to around 2 seconds for approx. 120K of library items) which should make things nicer with larger libraries / playlists
Changed some of the plug-in & related dll handling to make things more consistent with how loading is handled whilst using a bit less code to do it
Changed how the multiple instance handling is done to avoid the settings folder copy if chosen to be done happening on the main ui thread of the running instance which could easily trigger an unresponsive process crash along with a number of other small related changes to ensure things are much better behaved within the spawned process (not that running multiple WACUP instances is necessarily a good idea!)
Changed the handling of the timer service that the modern skin engine uses so it's now defaulting to use an ~60fps target (the 5.666 default was ~30fps) along with removing the preference option to "optimize" the timer resolution as it's not needed with this hard-coded default
Changed the handling of the main right-click menu when using a modern skin so it's handled in a more direct manner (effectively halving the call stack) which may help resolve an issue seen in the crash reports with the action blocking the main ui
Changed the installer to better ensure dependent dlls will be installed for any included plug-ins needing them or that they'll be removed if there's nothing left to use them
Changed how delay loaded dlls are handled to try to improve load success for some edge cases
Changed libflac.dll to now delay load libvorbis.dll since it mostly isn't needed to minimise FLAC playback failures in specific configurations (though the installer changes mostly negate the need for this)
Changed some aspects of how NotSoWavey works to hopefully reduce the chance of it causing a deadlock for some as well as some improvements to the digital audio handling to reduce it's processing overhead
Changed the wording used to indicate there are no lyrics found in the lyrics plug-in window
Changed how the dll delay loading search order is performed to prefer the root of the WACUP program folder instead of going for the plugins folder first to minimise the impact of multiple dlls with the same name which can cause some unexpected issues from the wrong one trying to be used (e.g. due to lacking the required dll exports needed by WACUP / the plug-in that's trying to load the supporting dll needed)
Changed how updating the taskbar text is set to minimise updating it if it's not changed from the prior update which minimises the number of WM_SETTEXT messages seen within the main window (small CPU saving)
Changed how some aspects of video playback are handled to be able to drop the re-use of a supporting file from 5.666 (saving around 358KB from the installed size)
Changed the handling of some of the classic skin / built-in windows so that attempts to force them to be visible when not done via the expected api / user interactions won't cause incomplete to appear (e.g. the equaliser window could still react to input causing the sliders & buttons to appear when really no drawing should have been possible though it doesn't explain why the window was forced to have been shown)
Changed the crash reporter to be able to better identify delay loading related crashes
Changed how autoplay / restoring of the playing position on loading is handled to reduce the impact of the local library database (if that plug-in is enabled) has on loading which could noticeably affect the time to get a file playing &/or causing ui hangs especially if a large database is trying to be loaded (tested against an ~250K entry database)
Changed how the history plug-in responds to closing if it's reacting to a stopping playback event it'll now trigger the save immediately to minimise it's overall impact as well as triggering a save if not playing & there are changes still waiting to be saved out
Changed how the main playlist handles background reads of titles to now try doing them on a background thread to reduce the instances of some crashes seen due to the metadata updates taking too long
Changed a few things with the main playlist loading to save a small amount of time when working with very large playlists
Changed how the legacy xml service component is handled so it will now be lazy loaded which is better for classic skin users (i.e. one less thing being loaded that's not going to be used) though it can be used by some of the other legacy plug-ins allowing it to be accessed when needed
Changed how the EOF (end of file) / playback starting failure handling to use a different way which shouldn't break anything & instead resolves the main ui becoming unresponsive whilst it's spinning through the next item(s) to be played (this is more of an issue when dealing with the main playlist set to repeat & none of the items present being valid e.g. offline storage or no longer valid stream urls)
Changed how playing a file type where multiple plug-ins claim to handle it (e.g. DSF or mis-labelled Opus files with the generic OGG extension) so that the core will now if the first attempt to play fails search for any other input plug-ins to increase the likelihood of the attempt to play working (though really you should just ensure that files are correctly named including what their file extension is)
Changed how WACUP's vgmstream build is done to have it link to zlib.dll instead of using the miniz implementation for an ~8KB file reduction (we ship with a zlib.dll so can rely on it being there)
Changed more of the remaining plug-ins using subclassing of the main window to no longer do it with the internal targetted callback system being used instead (aka less overhead & simplifies debugging)
Changed some of the settings cache internals to reduce the duplicate processing done with string checks
Changed the handling of M3U8/M3U/PLS playlist entries with file:// prefixes to avoid them being incorrectly treated as urls on initial load
Changed how the library plug-ins interacting with their db files work to avoid a possible deadlock due to a small window between lock calls
Changed the podcasts root node to give a clearer indication of how many feed(s) are remaining to check when a refresh all action is running
Changed the handling of the double-/triple-size menu options from the main right-click -> options submenu so they're no longer present when using a modern skin since even if they were disabled it was reported as being confusing that they weren't also updated to match the modern skin scaling settings (not something I've worked out how to query from the modern skin engine yet so it's easier to remove them)
Changed the handling of the direct hooking of IPC_GET_IVIDEOOUTPUT calls (e.g for in_dshow) to better deal with quirks seen between main ui vs off thread creation of the video renderer
Changed the handling of the the midi plug-in sysex editor dialog to resolve an issue with the plug-in showing gibberish for the dialog title
Changed how the library plug-ins work to get & interact with the library window button menu so it's simpler & automatically does some of the handling that is otherwise required to make the insertion work
Changed the replaygain processing until a replacement in_mp3 is provided to make use of the already provided mpg123 so the processing of MP3 files can be done irrespective of the input plug-in support (this is a relatively temporary change until the replacement plug-in is provided)
Changed the preference on the core implementation to be used so non-legacy (aka not needing the Winamp core even though most of the running core code isn't from it which is an option with this build) is now preferred with handling in place to prompt to switch to legacy mode if needing the equaliser &/or modern skins (the setup process will adjust this as needed based on the current skin & configuration options if applicable for new & existing installs)
Changed a slew of things related to the handling of files when not running with a local library database to get the cached metadata from files to reduce ui lags & other repeat access of the files for metadata
Changed how some of the plug-ins handle their caching of metadata to avoid the wrong values being stored which could then trigger unexpected local library database loads much earlier on during initial load
Changed the File Association tab on the Diagnostic preference page to use the more direct WACUP core method for determining the information vs the original method used for checking plug-in api compatibility as well as having it pre-collapse the entries for in_mod & in_vgmstream so the tree is a bit easier to read due to those plug-ins implementing support for so many file extensions
Changed again some of the delay load handling for the supporting dlls to better ensure that only our dll will be loaded & to prevent the input plug-in from crashing if that is not able to be completed
Changed the Win7Shell handling when the preview is open & WACUP is closed to reduce the time it takes for the action to complete
Changed the global hotkey plug-in handling to reduce it's impact on closing time if no global hotkeys have been actively enabled
Changed the handling of M3U based playlists to reduce the time it takes to process each entry especially when there's a title present which can make for noticeable reductions in the time taken to load (e.g. 89K entries in winamp.m3u8 with titles went from ~220ms down to ~165ms)
Changed some other aspects of file reading (viscolor.txt, bookmarks & skin information) to leverage the changes also made for playlist loading but to a lesser level of time reduction as they're already quick to load
Changed how some of the internal image library handling is done to reduce the impact of code paths that'll never be used from it
Changed how the database handling copes with some issues from a slightly corrupted idx files so it's more likely to find some results instead of just completely giving up
Changed some more aspects of how the podcast download view works to better ensure if there's an issue getting the last played time for items during initial loading of the view that it's not going to block the ui in the manner that it's been able to do previously due to locks not being released in a timely manner (this will do more processing compared to before but it's worth it not locking up & crashing us)
Changed the listview selection preservation handling to reduce the number of messages sent which may help reduce some of the random lock-ups being experienced if multiple actions have been triggered
Changed a few aspects of the NDE implementation to further reduce some of the duplicate processing done to locate specific values which makes the process a little bit quicker (e.g. when updating the last played time for downloaded podcasts)
Changed the list of files ignored when showing the 'readme' for a skin (updated based on files excluded by webamp including dialogs.txt which is an early file used by Winamp 1.92+ for skinned preferences)
Changed some of the navigation node handling within the native library plug-ins to simplify processing & avoid the need for SendMessage(..) based calls that could in some instance cause a ui hang / crash
Changed the emdedded window handling to better ensure that the inner window created into it (normally a Windows dialog) is pre-sized to the outer window to resolve issues with some showing artifacts during loading in the 'wrong' position
Changed how the updating of the branding image for a podcast feed is done to better deal with invalid images & it not always finding the newer image if it's changed in a timely manner
Changed the podcast root view initialisation (to get to showing the loading feeds text) to reduce it's impact on initial load times (this view is still too slow compared to the others)
Changed the send-to menu handling to reduce the time needed to generate the items to be sent from the main playlist editor as well as reducing some of the plug-in actions (e.g. almost a second saved from an ~12k entry playlist if sent to be a new library playlist)
Changed how the autoplay handling works when trying to restore the playback position to reduce the processing overhead needed to do this
Changed how some of the C runtime overrides are done to attempt to resolve an issue seen with some setups when using modern style skins which could end up with a crash
Changed the crash reporter to attempt to give an indication if it was from an issue during process closing
Changed the video renderer initialisation to reduce the chance of a deadlock when doing quick play / stop / play / stop actions (not a full fix)
Changed the handling of the Info Tool & Backup Tool to use the new site urls for getting the tools (this means all prior builds won't get them)
Changed the HTTP POST buffer sizes in the Yule Log plug-in to better accomodate sending long strings due to large metadata values (e.g. comments)
Changed the MP4 file loading to better deal with files that do not correctly follow the specification but are with some more processing able to be handled (not the best of options as these files should never exist but such is how it goes)
Changed some of the metadata reading overrides when it comes to MP3 files so it's less likely to report no metadata if it happens to be a misnamed file (e.g. an MP4 based file)
Changed the classic skin seekbar handling to allow for finer seeking when using the double-/triple-size scaling modes (more pixels to map to smaller time slices in the file being played)
Changed a mass of aspects of the audio cd plug-in works to resolve as many of the random lock-ups & failures that were reported & found during additional testing (this plug-in has ended up being far more sensitive to other changes with how WACUP & it's replacement media library core work which introduced a number of issues that almost 4 days worth of changes & testing should finally get to the bottom of)
Changed how the audio cd plug-in is triggered on loading to register itself with the media library core to reduce the guessing done & better ensure that if one of it's views was last selected on closing then the media library core will be able to restore that view on loading
Changed the loading of the lyrics information on the Alt+3 / File Info dialog tab to now be done in a way that should be less likely to cause the UI to become unresponsive when loading very large lyrics which also reduces the overall loading time of the dialog even if there's no lyrics present :)
Changed the xml parser to reduce some of it's overhead which gives a small reduction in modern skin load times
Changed how the output plug-ins & the handling of xfade requests from the modern skin engine plug-in are handled to reduce the impact during initial process loading
Changed how monitor resolution / dpi related changes are handled when using a classic skin to better ensure that the windows will be kept docked &/or in their expected position (subject to how much the screen resolution has changed) though there's a load of dpi related changes that still need to be worked on with later builds (e.g. to better ensure the menus & native dialogs will be matched to the monitor)
Changed in_mp4 to use the OS H.264/AVC decoder which improves playback support (the re-used component from Winamp didn't support a lot of newer format features nor could it decode 1080P/4K content fast enough)
Changed the default position of the classic skin albumart, lyrics & waveform seeker windows when the media library core is not enabled to avoid oddly spaced out windows on first install
Changed the multiple visualisation support to now correctly remember the chosen visualisation plug-ins between running instances (this is going to require some reconfiguring for those using this feature as the prior implementation would run visualisation plug-in that was able to be used)
Changed the waveform seeker plug-in to reduce it's impact on CPU load when WACUP is not playing & if the plug-in is not processing any file(s)
Changed the error message Milkdrop shows if using the multiple visualisation mode & anything else that's running in fullscreen using DirectDraw happens to run before it (e.g. Geiss)
Changed how the podcast related xml files are parsed to save a bit of time with much larger files by changing how the xml parser is used to allow for some aspects to be better primed prior to population
Changed a few of the plug-ins to reduce their memory usage (e.g. undo now only allocates what's needed instead of what might be needed to store the backup file paths) as well as reducing some memory handling (e.g. shaves a bit more time off a full local library database load)
Changed some more of the internal NDE handling to reduce the peak memory overhead of the loaded database records with upto 55MB saved for a 300K entry database used during testing (savings will be less with smaller databases)
Changed how the local library calls to get an ATF title for a file are handled to massively reduce the time it takes (e.g. 4500 podcast downloads when dragged onto the main window could take around 6 minutes to be processed with it now down to a few seconds if set to read all of the titles when added into the main playlist) whilst also reducing the cpu load to process things (double win on this!)
Changed the main playlist metadata reading options to remove the non-background reading version of the default option as both options had ended up doing the same thing with other changes to the core over recent months & had been a bit confusing to some (tl;dr this won't make a difference to most when it comes to metadata reading)
Changed the checks made for lyrics information within file metadata to improve it returning lyrics when it's known it's in file
Changed how the internet radio cache database is generated to better ensure duplicate listings will not be added whilst reducing the overall size of the archive by ~3MB & improving load times for all builds by making the database files smaller (with it being faster still with the nde changes in this build)
Changed some of the handling of the artwork cache priming to further reduce it's impact on loading
Changed some of the SMTC handling to try to avoid a full process crash if winrt unexpectedly fails
Changed some of the internal window message handling to better avoid doing some aspects which are only needed when a modern style skin is used
Changed how the podcast downloads are handled to use less memory whilst initially parsing the downloads file (saves ~3MB with a file of ~4.5K downloaded podcasts)
Changed some of the supporting code used when the main playlist is being loaded which reduces the overall time to parse it (bigger time savings the larger it gets)
Changed a number of the plug-ins to better ensure they're only creating internal aspects when needed which reduces the idle memory & can slightly reduce load times
Changed how the artwork in the lyrics & albumart windows are drawn to reduce the time required to initially display the image & reduce the cpu load when resizing the windows
Changed the Win7Shell plug-in to do it's jumplist setup not on the main ui thread to avoid it blocking during loading
Changed some of the plug-in loading checks to better avoid doing any loading of unwanted / disabled plug-ins & reduce the need to double-check it's a valid file for slightly faster per-dll load times
Changed how the AppUserModelID is generated during loading (needed for some aspects of taskbar pinning) to take less time if WACUP is installed in it's default location in non-portable mode
Changed how the native dialogs are handled when moving between monitors with different DPI / OS text scaling so they should now be sized as expected (subject to appropriate OS support & whether the OS is correctly doing things e.g. some messageboxes can act oddly)
Changed the installer to now be able to continue if the user selects to do so if there's no internet connection &/or it's not possible to get the 5.666 redux installer though depending on the installation options chosen this may or may not end up with a WACUP install not working as expected (e.g. no MP3 playback & modern skin support for now)
Changed the audio cd playback handling to double-check the type of the first track when trying to play it & skipping playback if it's not reported back as being an audio track (this is to contend with mix-mode cds (e.g. PC games) where in some instances it may incorrectly be attempted to be played & in some instances even seeming to play (more of an issue with some solutions mounting images of cd's)
Changed the taskbar preview rate current item popup dialog to now indicate the current rating value instead of just showing a 0-5 set of buttons
Changed how the output plug-ins are handled if out_sqr is trying to be used so the dynamic load / unload handling if playback hasn't been started will not be used which resolves some stability issues with that plug-in
Changed how self restarts are handled to hopefully resolve the reported issues of it sometimes not seemingly starting a new WACUP instance (it did but the timings of things meant it could then still see the current instance & abort loading so this now changes things to avoid the failure in the scenarios I was able to use to replicate this issue)
Changed some more of the compiler & dependency handling to reduce the size of some of the plug-in dlls whilst also reducing the time to load them
Changed things to reduce the amount of WINE specific checking is needed since WINE 7.x & newer requires fewer things to be worked around compared to WINE 6.x (not that anyone should be running that now)
Changed some of the installer clean-up handling when it's needed to re-copy / update the modern skins to reduce the time it takes for completing the clean-up of some temporary files used with skin updates
Changed how build expiry is reported & handled to better deal with longer development intervals & build issues where updating may not happen at the expected time (using your beta download code will give you a better experience when a build reaches expiration)
Changed the installer & uninstaller to do a better job removing files from older/unknown installs
Changed the installer to do some additional checks to try to minimise the chance of removing the typical settings folder if also being used by the opposite bit-type of a non-portable install
Changed the add/open folder handling to try to avoid some crashes seen when trying to trigger playback &/or setting the first item in the playlist where there seems to be contention on accessing metadata
Changed the artwork cache handling to reduce it's initial memory usage & impact on load & closing
Changed (again) how the crash reporter is attempted to be triggered which depending on the nature of the crash may now be more likely to generate at least the summary information about the crash though it's still likely if it's related to memory / heap corruption that the WACUP process will just close without seemingly collecting anything (unless running a child process all of the time which is not acceptable then this is expected for memory failures as the OS api calls needing to be made rely on being able to allocate memory using the mode that's ironically failed)
Changed slightly how the CD plug-in sets the initial title so it should now avoid staying indicating "checking drive..." for some setups when it had completed
Changed how the streaming url plug-in handles metadata in an attempt to minimise using the underlying input plug-in used for playback vs offering the cached metadata for the youtube & other url(s) played (this should help reduce some of the conflicts / silent crashes that can occur especially when using the in_dshow input plug-in)
Changed some of the painting of the waveform seeker plug-in to reduce the overhead of playing vs not playing as well as using less GDI objects to achieve the same visual result
Changed the initial setup of aspects of the Milkdrop visualisation plug-in to roughly halve the basic amount of memory the plug-in is attempting to allocate
Changed the big clock plug-in when set to show whole seconds in time remaining mode to try to lessen some of the mismatch in the value shown vs expectations
Changed the crash reporter dialog to give a better indication of whether its just going to close or if configured that it's then going to attempt to automatically restart WACUP
Changed the default view mode of the root local library view to be the album cover view (can be easily changed via the edit view mode using F2, navigation right-click or the in-view settings menu button)
Changed the local library plug-in to no longer store artist in the albumartist field if no albumartist value is read on import / metadata refresh so it's easier to indentify items without a specified albumartist field (this will require a refresh of the items already in the local library database to reflect this change) & makes the replacement local libary plug-in slightly differ in behaviour vs ml_local
Changed how the vis_classic plug-in works to reduce it's overhead when rendering the base aspects of the window which should make it smoother when being moved around especially if docked to other windows
Changed how the MP3 file override handling to always use the built-in mpg123 based handling (to avoid in_mp3 related issues) is determined for the transcoding api to try to resolve a WINE on macOS failure
Changed how the post setup handling to clean-up the crash reports folder is done so it'll now better avoid anything recent which may not yet have been submitted (e.g. crashes before the installer runs) along with better ensuring that any OS generated dmp files are removed to avoid the folder filling up for some setups
Changed the handling of some of the WACUP output plug-ins to better avoid attempting playback for samplerates known not to be supported along with trying to indicate the failure for classic skins in the songticker text instead of moving on / restarting the current playlist item without any context for what may be going wrong
Changed the edit bookmark dialogs to now remember their last opened position along with making the layout more consistent with the edit playlist dialog
Changed how the zero padding of playlist numbers can be done so it's now also possible to set it (via preferences -> playlist) to pad them even if there's less than 10 items (the normal padding behaviour will only start padding the playlist numbers if there are 10 or more items present in the playlist)
Changed the installer to no longer do a pre-check for there being an active internet connection & instead just rely on the results when it needs to acquire files from online as applicable
Changed how a number of the core dlls are created so they should now no longer cause issues during installation related to how they are able to access their associated runtime files which should resolve most issues reported when installing on a pre-Windows 10 system
Changed the main playlist scrollbar under older modern skins (i.e. those not reporting as wasabi skin version 1.3 or newer with the needed image elements) to now use the scrollbar elements like is use by the library window to offer a more consistent visual look including up/down buttons instead of using the classic 2.x style slider only element that was being used (this change also makes the scrollbar much easier to see & use especially on higer resolution displays)
Changed the WACUP lyrics plug-in to be automatically disabled if the 3rd party lyricsplugin is being used to avoid some issues with duplicate menu items & the modern skin engine mis-handling the windows
Changed out some of the early image resizing code WACUP had been using to now make use of a better optimised implementation (this helps reduce some of the impact of the albumart view mode support in ml_ll) along with reducing some of the reprocessing done to generate the wanted scaled images
Changed the splash screen if enabled to not be shown when running WACUP after a crash (especially if that's somehow caused the crash)
Changed some of the beta token handling to avoid some beta aspects incorrectly being disabled if configuration files have been altered beyond expectations though sometimes re-running the installer is needed
Changed the albumart writing options to also consider front.* as a potential for the file naming depending on what other options are currently enabled
Changed some of the update dialog handling along with a few other aspects that could cause it to show the wrong message
Changed importing or refreshing metadata in the local library so it'll look at the genre returned being "podcast" along with some additional in-tag metadata fields to mark them as ispodcast=1 (this is a mostly virtual metadata value for files in the local library db when added by the podcast plug-in but there's cases where prior files not handled by it need to be checked & flagged in an appropriate manner & should give a more consistent behaviour for such files compared to how the now replaced ml_local plug-in would do things)
Changed the query used for the default Local Library/Audio sub-view on new installs to not include items flagged as a podcast so the dedicated podcast sub-view can instead be used to see those files (the view query can always be changed to select the 'audio' preset to get the older query back via the settings button or right-clicking the view in the navigation tree or by pressing F2 if already within it & this will not alter existing configurations)
Changed how the skinned dividers within the library window or anything else using the common skinning are drawn to try to show a different colour on the center band subject to the colours available from the skin being used as a means of making it a bit more obvious that it's an interactable element when the mouse is moved over them
Changed the exporter plug-in to now run most of it's actions on a background thread to avoid it triggering the unresponsive handling (with it showing something is happening on the library window button)
Changed some more of the setting saving to avoid default values being saved out (is more cases of this to resolve but this helps in addition to prior work done)
Changed the output plug-in fallback handling to migrate any pre-existing install configurations over to the preferred settings value if the handling is triggered
Changed how plug-ins unable to be loaded (either intentionally disabled or not) are shown to try to extract a description from their version resources (if present) so it's hopefully a bit easier to determine what it might relate to vs just looking at a short form filename
Changed how the core reports failures to load some of the required components as well as adjusting the crash reporter to better differentiate these enforced on load failures
Changed the albumart conversion api to be more forgiving of the input parameters given to it so it should work more reliably now without having to remember too many specifics
Changed how the taskbar preview is handled so the peek handling should work far more reliably instead of it looking like WACUP has crashed (due to the OS showing a spinning progress indicator instead of the expected main window) though there might be some visual quirks if using a skin with faux transparency due to the OS api being provided with a bitmap of the main window not supporting alpha within bitmaps
Changed how some of the ok to load a plug-in checks are done to improve the handling when dealing with plug-ins with non-english characters as part of their filename (not common but there's some which could prevent the disable plug-in mode on the preference pages from not working as expected)
Changed how the "album" metadata is obtained if it's checked for by the albumart service to try to use the metadata if present in the local library database instead of only going directly to the file (this can help reduce some of the delay to find the albumart especially for files on slower storage which has been seen to cause a hang crash in some instances)
Changed the installer to better reflect if a portable install is being updated vs the generic messaging that was previously being used along with removing the superfluous portable install mode during updates
Changed the installer to no longer try to internally update the install location being used when an update is being attempted which might help to resolve the reports of beta installs incorrectly updating preview installs
Changed the podcast view handling to try to a better job in populating the duration &/or file size columns if the feed doesn't provide that information (as some don't) by double-checking if it can be obtained from the existing library contents or downloads (this may cause some lag in initial view loading for some until it's been able to be cached) along with trying to update any local library results where it's not already flagged as being a downloaded podcast
Changed how the core during loading handles trying to get the string to show for the taskbar text so it's less likely to block process loading if the item doesn't have an already cached main playlist title string & for where the file or the local library database are slow to respond to getting the metadata needed to generate the title (this should avoid some initial on loading hang crashes seen)
Changed some of the actions used to reset preference options back to their default values to have prompts to confirm if the action should be done or not
Changed the installer messaging if the supporting installer verification stage fails due to an unexpected error instead of showing the somewhat confusion no internet connection message (not that either messages should ever need to appear)
Changed the installer to use the helper dll throughout the whole setup process instead of trying to switch to the newly installed WACUP core dll as there's some setups where this doesn't work causing an incomplete install to be made (might only affect some older Win7 setups but as this change appears to work ok for all Windows installs it'll be used going forward)
Changed imported playlists from the main playlist editor to now have a timestamp included as part of the name instead of just creating more 'imported playlist' entries
Changed how things are done to try to better ensure that the input plug-in associated with the file the user is trying to remove will release any locks it might have on the file which can prevent deletion
Changed how the command-line & playlist handling works which should now allow for native paths to be accepted when running WACUP via WINE & trying to pass files via the command-line instead of it closing immediately due to treating them as unhandled command-line actions
Changed to use some of the more secure path related methods where there is support by the OS

Fixed a long standing issue of HTTPS streams (mostly those handled via in_mp3) not always working especially if trying to get the HTTP version & an enforced HTTPS redirect comes back (aka not-fun things with openssl)
Fixed importing some files into the replacement local library database causing a crash due to an issue with processing some of the associated artwork information for the file
Fixed the probable cause of the Waveform Wrapper plug-in sometimes causing a crash when attempting to process the redirected 'isourfile' check by in_mp3
Fixed the probable cause of the WINE detection check in the crash reporter causing the crash reporter to crash (this change based on a recent crash report seen showing this weirdness)
Fixed the GetLanguageIdentifier(..) localisation stub to return a hard-coded 'en-US' response to resolve a modern skin compatibility issue
Fixed some font handling related issues with the Big Clock plug-in such as when it's already in double-size mode or if the font selection dialog is cancelled which would reset the font back to generic one until restarting WACUP
Fixed a random issue that could affect some setups causing them to hard-crash early on during loading
Fixed the main notification area icon tooltip text not updating as expected if it's been set to show the currently playing position
Fixed the main context menu on the classic skin video window frame not being correctly initialised (e.g. skins sub-menus not being populated)
Fixed a GDI object leak when triggering a classic skin refresh
Fixed some crashes related to loading of the Alt+3 File Info dialog & the mis-handling of the raw metadata dumping tab (e.g. doing so when a background ml_local library scan is active or if no information can be provided which could cause a cyclic querying & eventual crash)
Fixed the classic skin main window song ticker jumping oddly / showing a blank space at times (this was something I'd patched out but had managed to mess up some of the calculations due to using the wrong font which skewed things - was worse the longer the song title to be shown got)
Fixed the main window playback position not showing for the first second or so when playback is started under a classic skin (this was an issue caused by some of the live patching I'd been doing previously)
Fixed some of the Winamp core configuration options not being correctly read in & applied from a WACUP handling (e.g. the option to disable window snapping)
Fixed video playback output 'stopping' (it still happens but can't be seen) when moving the video window from the initial monitor that playback was started on to another one (was due to mis-understanding of an api parameter whilst trying to resolve a different issue)
Fixed (completely I hope) a flickering that can be seen when resizing the classic skin video window whilst a video is playing (was an odd directx vs normal window weirdness)
Fixed Not So Yasapi not allowing in_mp3 (Winamp's main stream handling plug-in) to play most streams given to it with it showing an error about not being able to save streams
Fixed the saving of M3U8 / M3U / PLS playlists to correctly handle titles with line breaks in to not break the subsequent reading of the playlist (this was found from an internet radio station which had line breaks as part of it's station name)
Fixed the equaliser window tooltip appearing being behind the equaliser window at times
Fixed the equaliser auto loading mode not working for some time due to the Winamp core method not being called (no longer an issue as it's all done natively by WACUP now)
Fixed the IPC_REGISTER_LOWORD_COMMAND handling so it will return the pre-incremented number which helps fix a conflict found with the batch allocation (e.g. toggle an option & something else also reacts)
Fixed the podcast downloads window sometimes not updating the status of the currently downloading items due to a timing issue with the view initialisation
Fixed the handling of some of the core windows when using a classic skin not being saved / restored in an expected manner when the monitor those windows were on are deemed to be to the left of the main monitor position (aka not handling negative window positions correctly)
Fixed the scrollbar handling when using the replacement media library core not reacting correctly if the window showing the scrollbar was to the left of the main monitor position (see above)
Fixed the library history plug-in not always updating the playback state if the option to wait is unchecked or the internal timer manages to fire before the reported playback position is valid
Fixed the current playback time position in the classic skin playlist editor window (bottom right) not using the xx:xx style of time formatting when not using the skinned font for improved consistency
Fixed clicking the current playback time position in the classic skin playlist editor window (bottom right) not toggling the time elapsed / remaining mode as Winamp does
Fixed the classic skin window docking not working correctly when video support is disabled (either by de-selecting video support during installation or by later disabling the appropriate input plug-ins)
Fixed the video menu items incorrectly showing in the main right-click & modern skin windows menu when there's no applicable video support enabled in the current WACUP instance
Fixed the classic skin main window songticker & all other parts of the playlist editor window to use the appropriate defined font from the skin or via the the custom font selection on the Playlist preferences page (this may not be ideal for some of the fonts that can be specified vs the available area to be drawn into but it should make things a bit more consistent with the look of the classic skin where it's used - this also marks a deviation away from Winamp which only used Arial for the selection / playback state in the bottom right-corner of the playlist editor window)
Fixed the vertical divider on the library playlists root view not always being positioned correctly on the first loading of the view
Fixed selecting no playlist in the library playlists root view not being remembered the next time the library playlists view is loaded
Fixed changing the long time formatting option on the General preferences page not live updating the classic skin playlist editor window selection area immediately to match
Fixed a memory leak in the settings cache related to the reading of already cached strings (oops)
Fixed a crash seen with some visualisation plug-ins when trying to access it's config when the plug-in is already running
Fixed the playlist manager service not always loading the existing playlists prior to attempting to add a new playlist to it (found during the command-line handling changes)
Fixed removing a library playlist tiggering the library to switch to the current root library view instead of just updating the library playlists list
Fixed some inconsistencies with the installer & how it is setting the version in some of the files along with the build year (there were some 2020 references still which shouldn't happen now its auto-filling at the time of building)
Fixed the video handling not supporting updating the 'VID_Info' text feed element when using modern skins (this was 'broken' as I didn't have a way until now to be able to provide the information in a manner that the modern skin required)
Fixed trying to inspect added playlist urls with /;listen.pls on them as a playlist which would cause WACUP to download the stream (not sure why these sorts of urls are being provided to some as they should be either /listen.pls or /; but that's the mess of internet streaming at times!)
Fixed the plug-in description for the dsp_compwide plug-in to suggest using the newer dsp_1by1enh plug-in which works better compared to the older one (it might be a different filename but it's the continuation of the older plug-in)
Fixed the library playlist view not showing the stars on the rating submenu with the nice unicode stars
Fixed the playlists submenu on the modern skin playlist editor file menu not working as expected (this was also causing some issues with the new skinned menu handling)
Fixed the double-size & manual playlist advance options in the main right-click menu not being checked on the menu if enabled but the setting hasn't been changed during that instance
Fixed vgmstream based playback not updating the visualisations as expected due to too many samples being provided by the plug-in to the core (not helped that the decode thread code wasn't sync'd correctly with the upstream repository)
Fixed an issue with the skin preview in the setup skin selection dialog where it could cause the skin previews to fail to load despite the files it's trying to show being there
Fixed the jump forward / back by 10 items not scrolling the new current playlist item into view as expected for those actions
Fixed drag + dropping items into the main playlist either on or before the current playlist item incorrectly updating the new position of the current item
Fixed trying to convert OGG files via the format converter often reporting not being able to find an encoder or producing an empty / no audio file due to a decoder initialisation issue (a pebkac moment)
Fixed the Ctrl+Alt+End global hotkey (or any global hotkey which specified the Alt key for the stop action) to no longer incorrectly toggle the next on stop action
Fixed issues with multi-queued files in the main playlist editor showing the final position of the queued item instead of the first queued item (this brings things into line with the JTF dialog & was due to some of the integration changes which meant it kept iterating over the queued items instead of just reporting the first occurance within the queue)
Fixed another Win7shell related crash (this is a side effect from changing it to do it's processing off thread to resolve other issues seen e.g. triggering the OS timeout when gdiplus is enumerating a lot of fonts)
Fixed the updater incorrectly being shown if a new beta build is available but it's not marked as ready to be auto-downloaded (this means build 8100 is going to have the same problem)
Fixed the api for getting the current list of supported file extensions not always generating a valid response which would then cause things like local library importing or folder drag & drop to miss files
Fixed a crash due to a runtime method throwing an error when reading in some of the configuration settings & the string attempting to be read in from the configuration file is too large for the output buffer
Fixed the add / open url dialog not dealing with invalid data on the stored history which could eventually cause the issue above or due to a weirdness with the Windows ini writing methods not clearing it out
Fixed left or right clicking on the classic skin playlist editor buttons & then clicking on any window other than the playlist editor to cancel the menu shown triggering the associated double-click action for the button
Fixed the probable cause of some crashes seen with the bundled in_xsf based plug-ins due to not checking some of the state values
Fixed the cause of some crashes seen with the bundled in_xsf based plug-ins when trying to set empty metadata values
Fixed the Winamp Modern skin always being the first modern skin menu item despite the settings on the skin manager settings preference page (this also ensures the Winamp Classic Modern skins is an option)
Fixed a crash with the MP4 processing not handling an unexpected change of state
Fixed clicking on the dead area of the playlist not notifying the change to the respective plug-ins monitoring the IPC_PLITEM_SELECTED_CHANGED notification message (this now allows plug-ins to swap back to showing information for the currently playing item instead of staying on the last selected item despite there now no longer being a selected item)
Fixed loading some modern skins incorrectly reporting a lack of modern skin support due to them having everything within a sub-folder within the skin archive (WACUP is able to load such skins by making things happier for the Modern skin engine but this check hadn't been updated from earlier skin handling tests to support this behaviour)
Fixed un-checking the surround option on the Playback preferences page not being saved due to an internal logic issue when trying to avoid saving the default value into the main configuration file
Fixed the tooltip for the classic skin main & equaliser windows not showing on initally loading if nothing has been done to trigger a related window position change
Fixed the modern skin song ticker text showing the Winamp compatible version string instead of the current WACUP version string (as classic skins show) when there's no playlist item / unable to generate a song ticker title string
Fixed the ATF preview on the 'Titles | ATF' preferences page not updating when reset back to the default ATF string
Fixed the last character of the lyrics data not always being shown when looking in the WACUP provided lyrics window
Fixed the video window contents not drawing correctly or showing as a white block if video playback is paused followed by minimising & then restoring WACUP into view
Fixed some configuration settings being re-saved on loading or on closing when there's not been a tangible change to them (e.g. just starting & closing a WACUP instance)
Fixed a CPU spike seen when clicking & holding the mouse down on the classic skin main window without moving the window
Fixed the classic skin equaliser or playlist editor windows not snapping into place as expected when trying to place them in-between the main window & a generic skinned window with the left window edges aligned (hopefully this hasn't broken anything else with the window snapping)
Fixed the generic skinned window handling under a classic skin not always applying minimum dimensions on window creation if loading in scaled modes
Fixed the big clock windows context menu handling to not appear outside of the window if using the context menu button
Fixed the dividers in the replacement local library plug-in views not always being set as visible (this would prevent being able to change the size of the areas within the view)
Fixed the update dialog showing after a crash when there's an internal versioning mis-match going on (this should resolve the last of the issues of the update dialog showing when there's nothing to get)
Fixed some of the extended ATF values not being resolved consistently due to variations in per vs shared ATF related calls (e.g. %playlist_position% on the Taskbar Text preferences tab)
Fixed some opus files not loading despite being valid due to an undesirable utf-16 -> utf-8 -> utf-16 conversion going on within the plug-in for filepaths which would then error on the file conversion stage
Fixed a possible cause of a crash when the undo plug-in is purging old backups
Fixed ml_ll sometimes running a double query of the local library database on loading which could affect loading times
Fixed ml_ll not always tracking the complete time taken for multi-part queries to run (especially if restoring the view selection)
Fixed a regression preventing the WACUP agent mode from being closed when doing an update which would then block it & require user intervention
Fixed some additional processing overhead with some of the drag + drop handling actions due to not caching the currently supported extension list
Fixed the probable cause of some of the random crashes experienced with ml_ll after making changes to the database whilst a view is currently active
Fixed double-clicking in an empty playlist where the first playlist item would be incorrectly triggering the add file dialog
Fixed big clock not always triggering the time of display / .beat time to update if selected via the window / config menu
Fixed ml_ll sometimes not re-mapping the configured view columns relative to their position to their internal values causing some to be drawn empty or with the incorrect value (e.g. date added could be empty or show the podcast published date)
Fixed the history plug-in not correctly purging incomplete entries from the 'hidden' entries present due to older issues with the plug-in (this is subject to the option to remove items after a time being enabled)
Fixed the exporter plug-in sometimes generating just a .csv file when selecting the 'all smart views' option
Fixed ml_ll reporting the grouped results in the first filter as one less than what is actually shown (had missed removing a workaround for a different issue which has long since been resolved)
Fixed the handling of line breaks in long strings (e.g. comment fields) being escaped for CSV file output not always being correct & causing incorrect line wrapping in the viewed CSV file or it reporting not enough lines
Fixed the history plug-in not dealing with some scenarios nicely which could prevent it from showing all of the valid entries or could cause it to end up in a loop which then locks up the player
Fixed the ml_ll lower pane not always getting the expected results based on the upper pane selection when the option to ignore the 'the' is enabled due to the internal query not checking for the non 'the' version of the string that's being looked for (either from via an upper pane selection or from a custom search e.g. The #1's & #1's with the option enabled should group together & show any item matches)
Fixed the default position of the classic skin artwork & lyrics windows being a few pixels over to the left which prevented them from being seen as docked & thus not moving when the main window is moved
Fixed the installer check for the existing WACUP instances running not always filtering out instances not related to the install location trying to be used (most will never experience this with a single install)
Fixed an extra separator appearing on the no-item playlist editor right-click menu
Fixed the undo actions submenu (if enabled) on the main right-click menu being duplicated when viewing the menu multiple times (this didn't occur on all of the windows which is why I'd missed it previously)
Fixed the 'local library' export sub-menu item (& some of the others) being shown when the plug-in / feature is not currently enabled
Fixed the probable cause of history plug-in not updating incomplete records due to issues with earlier builds / db failures (would appear as the history just not recognising the currently playling item)
Fixed the probable cause the library history view sometimes crashing when the list is being updated just after a search / view refresh has happened
Fixed the library history view not always reporting the correct total number of plays in the status message (this was affected by where the currently playing item was vs the sorting of the history results)
Fixed clipping of the text on the edit playcount dialog from the library history view
Fixed xspf playlist entries (e.g. from VLC playlists) not being correctly converted into the unencoded non-file:/// form for their actual on-disk path (issue found from a complaint about WACUP on twitter)
Fixed a default eq presets file (winamp.q1) not being present on new installs
Fixed the probable cause of a deadlock occasionally being seen with the Not So Direct output plug-in (hopefully this doesn't break things)
Fixed the probable cause of a crash within the main window vis handling due to not correctly bounds checking the visualisation data being provided by the input plug-ins
Fixed a slowness with the painting of the classic skin main window when going between normal & windowshaded modes & vice versa (its still not 100% but you really need to look for it now compared to before)
Fixed a regression that was sometimes causing the internal shuffle table to not be correctly re-initialsed nor for it to be cleared as expected due to some internal calls sending the wrong flag value
Fixed the installer not always creating the settings folder at the appropriate time which could cause some aspects of installation to fail / not complete as expected
Fixed a crash related to how the mimetype information for artwork is generated from the file metadata
Fixed the main window visualisation & related plug-in interactions with it not working when the playback buffers were set higher than an internal limit put in place a few years back in relation to a crash issue
Fixed the podcast downloads view not always ensuring when changing the column sorting that the new order of the sorted items would been seen
Fixed the podcast downloads view not remembering the sorting correctly as well as it double-sorting the items on initial loading of the view
Fixed a lyrics metadata parsing issue that could if there were double-brackets within the tect cause an infinite loop to be triggered (oops)
Fixed the WASAPI output plug-in crashing when accessing it's preferences page if there's no active devices reported (e.g. doing things whilst updating audio drivers)
Fixed the autoplay on start-up action causing a volume changed message to appear (depending on the skin being used this could be more annoying than with other skins)
Fixed the 'open playlist from library' submenu on the main playlist editor's manage playlist button (what a mouthful) getting duplicated on repeat use of the menu
Fixed the probable cause of some of the reported issues with the history playcount being doubled (this seems to have been mostly related to the playback offset handling)
Fixed the DSP & visualisation plug-in preference pages not always reporting plug-ins that are present but could not be loaded due to a dll loading error within the lists
Fixed a compatibility issue related to libflac.dll & the old edcast (dsp_edcast.dll) plug-in for streaming where it needed more features than my libflac compile offered
Fixed a crash manifesting as WACUP just instantly terminating instead of triggering the crash report that could occur if mulitple NDE database files were trying to be updated at the same time
Fixed the probable cause for some of the hangs seen when the crash reporter starts (the changes at least seem to allow my Windows 7 test install to always complete when previously it's gotten stuck in a loop)
Fixed the classic skin main window & some of the internal api handling not updating it's state fast enough when the playback is paused (e.g. starting with autoplay & paused resume wouldn't show the seekbar in the correct position until playback was enabled)
Fixed some of the initialisation messages not being correctly sent when expected if starting WACUP in a minimised state
Fixed a memory leak with the library view window handling if a view was zero sized
Fixed the sizing of part of the podcast view so it doesn't look weird with too much background gap when using a larger font size of the ui
Fixed the skinned window edge being drawn on windows that are essentially not visible (no width or height) which in some cases could appear as random lines (noticed whilst fixing the podcast view issue above)
Fixed the output plug-ins not being selected to be installed when using the 'lite' install made along with some other changes to what is counted as it (feedback is welcome on how far to push lite mode)
Fixed the Ctrl+F4 handling on the main window so it'll only hide the window & not act like a toggle (which is what the Alt+W shortcut is for)
Fixed the main right-click menu not showing when right-clicking on the generic skinned window frames for windows not running on the main UI thread (e.g. Milkdrop)
Fixed the right-click menu in the Milkdrop window not appearing in the correct position when using the context menu button / Shift+F10
Fixed the right-click menus in the skinned windows that support them which are created not on the main ui thread (e.g. classic spectrum analyzer) not being able to use the skinned menus (this is something that Winamp was never able to do so it's nice to finally figure out & get this working for WACUP)
Fixed the probable cause of the format converter / transcoding action failing if trying to use it more than once during an instance
Fixed the /UPDATE & internal usage of that mode mis-reporting that there's a newer build to get when already running on a newer build & the 'ok' to update flag on the WACUP update reponse hasn't been set
Fixed the Shift+Click handling with the agent icon handling to be more reliable as sometimes it could still cause WACUP to be started / brought to the foreground instead of closing the agent child process
Fixed the time restore & autoplay plug-in saving out a state change on closing if there's not actually been one (e.g. starting then stopping WACUP without playback & no change in the main playlist)
Fixed the settings cache in rare circumstances causing a dead-lock to occur when WACUP is closing due to it trying to re-prime the cache when a configuration change is being saved out
Fixed more of the plug-ins to do a better job in avoiding saving non-changed configuration values
Fixed the replacement local library plug-in view handling to avoid some odd lock-ups & crashes on loading related to the status bar updating which wasn't as thread safe as would have been liked (aka multi-threading can be hard to get right at times especially with the ui)
Fixed the handling of the IPC_GETOUTPUTTIME api when WPARAM=1 so it'll better ensure a valid length for the current item in seconds is reported instead of having a tendency to fail & report no length
Fixed the probable cause of the history view sometimes not setting a valid title string for an entry along with it incorrectly skipping really short plays of files & some other tweaks to the update process
Fixed a roughly 2 year old bug with WACUP's build of Milkdrop where it wouldn't use the user configured font size even if it had been correctly configured due to it always using the default font size
Fixed some issues with the handling of the video window which could occassionally cause the last frame of the video to remain being shown until an action caused the video window to have to be resized
Fixed the sorting of the offset & filename/url columns in the library history view being switched around causing unexpected sorting results when sorting by those columns
Fixed dragging items downwards in the main playlist editor bouncing back upwards when the drag action gets to the bottom due to the wrong display offset for the playlist window being set on the bounds check
Fixed a possible issue when drag + dropping files onto the main playlist editor where it was possible for the current playlist to get corrupted at the items on & after the current drop point
Fixed the probable cause of a memory handling weirdness when trying to resize an existing memory buffer related to an internal look-up cache within the replacement local media library plug-in but could also happen with other requests via the memory manager service
Fixed a crash due to invalid parameter validation on some of the playlist related apis which could trigger a crash on loading for some setups
Fixed the playing / selection status area at the bottom of the classic skin playlist editor being incorrectly clipped to 60px scaled instead of 90px scaled
Fixed a number of visual issues related to the handling of the tabbed preferences from them not repainting correctly on switching within the same preference page to a large white flash seen when skinned (there might still be some little oddities on the timing of the painting of things but it should be much better compared to how it's been at various times across various builds)
Fixed the cause of a deadlock that could occur in some cases when a playlist backup was being made with the undo plug-in
Fixed the probable cause of drag+drop onto the main playlist editor sometimes inserting the item(s) at the wrong position due to a mis-calculation on the drop position whilst not accounting for font size
Fixed the big clock window not updating at the correct speed if using the time of day/.beat time & having paused & then resumed the playback (it would often drop down to a 1 second update interval which wasn't intended if the in-window visualisation mode was enabled)
Fixed an occassional crash experienced when accessing the main right-click menu & a large number of bookmarks need to be processed
Fixed issues with the docking of the skinned windows to either the current edges of the screen the window is on or to other skinned windows when there is no equaliser &/or video windows (e.g. moving the main window would not move the 'docked' playlist editor window with it as is expected unless the shift key is being held down at the time)
Fixed the FLAC & Ogg Vorbis input plug-ins not correctly reporting that it's handling ReplayGain which depending on what was found within the file & the related configuration options could cause it to not apply the correct gain level
Fixed the wavpack input plug-in (in_wv.dll) not saving multiple metadata edits at the same time due to a caching related issue
Fixed the probable cause of the SID player (in_sidious.dll) causing a crash on loading when trying to restore playback & the length information cannot be found for the file within the SID song length database
Fixed the probable cause of some issues when seeking within MP4 files & it being able to crash in some less common scenarios
Fixed releasing of strings from the database engine not ensuring the memory is deinitialised as it could in some scenarios trigger a crash
Fixed some modern skin engine related failures by using a different way to patch some of the runtime methods that have appeared in crash reports to hopefully make modern skins a bit more stable overall
Fixed the probable cause of an access issue when attempting to find an item in an NDE database in a resource constrained instance
Fixed a timing issue with the initialisation of the Playlist Separator plug-in which could cause WACUP to crashing during loading
Fixed an issue with the resizing of some of the portable preference pages
Fixed the possible cause of some crashing when using the old 'Text Speech Winamp' plug-in (in_txt.dll) though this plug-in is not the most stable even under a plain Winamp install but some will try it
Fixed the use custom songticker atf option not always being saved as enabled due to a compiler related weirdness
Fixed the classic skin main window songticker not showing the playlist position (if configured to be shown) when playing anything without a length (e.g. internet radio streams)
Fixed the waveform seeker plug-in being able to keep trying to decode some file types when the decoder is not reporting completion at the appropriate time (e.g. mod & vgm files that might be looping) which for some file formats & machines could if too many of the processing threads are triggered cause the machine to become unresponsive which wouldn't go away until the WACUP process was closed
Fixed the classic skin main window songticker not updating correctly on loading or on changing the current playlist item when auto-scrolling of the songticker has been disabled (not the default behaviour)
Fixed some of the settings on the classic skin visualisation options not being saved / read in correctly (I tye gud)
Fixed a massive performance issues with the True Audio (TTA) input plug-in where it's spamming changes to the decoded output when there hasn't been any which would in-turn force the playback core to update the ui when it wasn't needed
Fixed a crash when trying to uninstall one of the newer style WACUP plug-ins due to incorrectly handling the internal message pump not recognising the plug-in was no longer present
Fixed some ui weirdness when playing some video files which if the video window was also open (as would be expected) it could cause aspects of the ui to stop responding & potentially make WACUP crash unless the window was closed along with the inner part of the window sometimes not being drawn in an expected manner on resizing if there were no video frames yet provided to be drawn
Fixed the Nullsoft input plug-ins not showing an icon on their about dialogs irrespective of the mode WACUP is running in due to the core not having the same icon resource (a simple enough re-mapping to keep things happy)
Fixed the sorting of the output plug-in preferences list sometimes not keeping the null output at the top of the list (it's a special case & so needs to be at the top of the list)
Fixed a number of issues with the rating menus either not showing an appropriate value (mostly from not re-mapping some values into the 0-5 range or not reverting to the actual file if it's not in the local media library) as well as a number of performance related issues with how determining the value to show vs the number of selected items (still some more to do with this in other areas but its a start)
Fixed the probable cause of some random crashes seen when accessing some MP4 based files
Fixed the probable cause of some crashes related to the WASAPI output plug-in
Fixed the probable cause of some crashes seen that seem to be related to the modern skin engine blocking the ui whilst waiting for the current item's artwork to be retrieved (this isn't the best of fixes as there's things that the modern skin engine is doing that will cause such issues but not allowing it to sit & wait indefinitely is not a good idea)
Fixed some issues with the history playback tracking when the playback offset handling is enabled which could in some scenarios cause the history to be incorrectly increased when moving to another playlist item along with it not always clearing the playback offset that's stored if the playlist item had been deemed to have fully played
Fixed the skinned listview dead area not painting correctly when running under WINE
Fixed columns in some of the library views (e.g. local library & history) showing the value of the prior column if there was nothing set when running on WINE
Fixed the listview headers of the multi-pane local library views not being skinned as expected when running on WINE (is a weird one in that the header child wasn't reported as being created yet vs it being fine for ever other instance of a listview with a header aka WINE can be odd at times)
Fixed the skinned treeview (mostly for the internet radio view for now) not updating it's background correctly especially when expanding child nodes when running under WINE
Fixed some of the skinned scrollbars (typically the horizontal ones) turning back to their native form when moving the mouse over them when running under WINE
Fixed the genre treeview in the internet radio view causing the view to become unresponsive due to entering a painting refresh loop when running under WINE (Windows doesn't do this in response to the updating of the skinned scrollbars but WINE does though it doesn't need the updating that is needed when working under Windows so this adjusts as needed without breaking either situation hopefully)
Fixed selecting a genre in the internet radio view not reacting as expected when running under WINE (case of using a notification that Windows sends but WINE doesn't though there's a notification that is received by both scenarios which this is now using)
Fixed a few typos in some of the preferences
Fixed double-clicking on the bottom item if it's a partially seen item of the main playlist editor not starting playback on that item but instead the one below it along with it causing a full scrolling into view of the playlist contents
Fixed the IPC_PE_GETIDXFROMPOINT handling not working correctly when using a classic skin in double/triple-size mode
Fixed toggling the classic skin main window visualisation sometimes not rendering in an expected manner when playback is also paused
Fixed a titlebar alignment issue & the placement of the blinking lights on the Winamp Modern Holiday skin when the menu is set to be disabled (thank you to Eris Lund (0x5066) for this)
Fixed Audio CD playback not always starting at the expected start of a track due to a mis-calculation in the track offset which wasn't accouting for the expected lead-in of 2 seconds (reported by k6stor)
Fixed the Audio CD plug-in sometimes triggering a full update of the main playlist editor's titles when it's only meant to be triggering an update of any existing cda:// based entries (whoops)
Fixed a number of visual issues with the plug-in lists from the selection not going to the edge of the listview when there's no scrollbar needed to it just looking a complete mess when running under WINE
Fixed a timing conflict between the installer triggering a supporting tools update check & the initial setup mode being run which could explain some of the weird crashes on loading after installation & yt-dl corruption issues
Fixed new items being incorrectly added into the history view if a custom search has been applied & what's being played shouldn't appear within those search results
Fixed the handling of streams with the history so it now shouldn't incorrectly update the last title for the stream to be the title of the new item about to be played
Fixed some FLAC files appearing to play but nothing can be heard due to the ReplayGain / scaling factor being incorrectly determined under resource heavy scenarios or if the output buffer is set too low
Fixed a hnadling issue with the saving of the Not So Direct output plug-in configuration with the buffer sizes as well as better ensuring only actual changes are saved into the main configuration file
Fixed a number of issues with the main playlist editor scrollbar handling when using a modern skin or when using double/triple-size mode where it wouldn't allow the bottom part of the playlist to be clicked into view when clicking on the scrollbar (more still needs to be done on the scrollbar handling in general to try to make it act more like a native OS scrollbar in behaviour but this is an initial change)
Fixed a conflict between the FLAC input plug-in, Not So YASAPI output plug-in & trying to restore playback on loading due to the pause/seek/unpause stage being done before the FLAC has completed loading (this may also resolve some other minor quirks with the seek handling of FLAC files)
Fixed a number of crashes with the Not So YASAPI output plug-in due to how it was passing internal variables around & other issues seen which have been annoying me about the plug-in despite my dislike of it
Fixed moving a playlist item to the top of the main playlist editor when using a modern skin never see it get to the first position & instead see it start to move back down the playlist (the pain of trying to have things auto scroll depending on the direction to be more like native OS listview controls)
Fixed the inner fill for the video & generic windows on the classic skin preview showing the wrong colour vs what WACUP uses (there have been some changes vs the code which was built around Winamp's behaviour) as well as the logo in the video window showing an incorrect image (WACUP doesn't bother with that image file)
Fixed the classic skin preview not being scaled to match the preferences sizing which is dependent upon the OS dpi settings (this is not great but it'll suffice for the basic needs of a basic preview)
Fixed the option to auto-hide the classic skin albumart window under a modern skin not being correctly saved though this fix does require the option to be toggled to off if that's what is required to get it to be re-applied correctly
Fixed using the 'select all' keyboard shortcut not working as expected in the local library, internet radio & history views where it wasn't being applied to the search field & was incorrectly applied to the list
Fixed the Settings & Plugins sub-folders for the configured WACUP settings folder not being ensured it exists on loading (this makes WACUP cope a bit better with a user / external tool nuking the settings folder or part of the settings folder without having to re-run the installer)
Fixed a number of build & initial run issues when compiling the WACUP code for 64-bit builds along with other changes to make it easier (when it happens) to provide a native Windows 64-bit build of WACUP
Fixed Milkdrop's desktop mode not working due to the things it needs not being created as expected when the high contrast theme is being used
Fixed a crash related to cleaning up after video playback on closing
Fixed the move actions in the JTFE window sometimes getting stuck in a loop
Fixed the installer incorrectly creating it's self backup in the WACUP settings folder if the install is cancelled before it's been completed
Fixed the duration from XSPF playlist not being used on loading these playlists if it's available
Fixed an intermittent issue that would cause playback of some Ogg Vorbis based HTTP streams to either fail (partial or immediate stop of playback) or for it to cause a crash
Fixed some of the playback logging actions not outputting linebreaks (e.g. when using the $crlf() atf method) as well as not being used in some of the preference page previews
Fixed some mod files not playing due to incorrectly handling the response of a check for warnings from the file (e.g. when there's missing external sample files which can still have the file play in a basic mode)
Fixed the sorting of the plug-ins not always placing the currently enabled ones at the top of the list due to a string casing related issue with some of the plug-in names
Fixed the probable cause of the WACUP loader process staying around &/or running at 100% of a cpu core due to a problem with the clean-up of the legacy mode command-line (this seems to have been mostly affecting Windows 7 based installs but could be manifesting on any valid OS install because of variations in C runtime & platform memory handling)
Fixed clicking in the plug-in preference page listviews incorrectly reporting the state of a plug-in has been changed when closing the preferences / change to another preference page when running under WINE
Fixed the compact time mode formatter not showing the expected time if there are no hours but the time is more then a day as it'd ignore the number of days
Fixed a crash with the CD playback plug-in due to incorrectly trying to handle a device changed status message before the plug-in is completely initialised
Fixed skinned edit controls not being correctly updated when another control is being interacted with (e.g. moving the volume slider on the VGM preferences page when skinned preferences is enabled)
Fixed disabled static controls not drawing the control text in the expected manner
Fixed a compatibility issues when handling library plug-ins of different version specifications which could cause a crash on load
Fixed files extracted from lzma based archives not having their attributes & modified dates correctly re-applied during extraction
Fixed the SPC/ID666 metadata reading issue that's been mostly affecting extended ID666 metadata
Fixed the classic spectrum analyzer visualisation window jumping back to the primary monitor if it was set to be run on a different monitor (aka just remove code to fix things)
Fixed the probable cause of the WASAPI output plug-in crashing if the playback device it was trying to use suddenly disappears whilst the plug-in is being used for playback
Fixed an excessive number of IPC_CB_MISC_TITLE notifications being sent especially when the activated state of WACUP is changing which reduces regenerating ATF titles & a few other things
Fixed the in_mod plug-in hanging on starting to play a file if the configured output plug-in fails to initialise
Fixed the probable cause of the WASAPI output plug-in skipping over files due to incorrectly destroying some internal information about the playback device to be used when there's no reason to do that
Fixed the probable cause of the Win7Shell plug-in failing on some setups when it's trying to register it's jumplist to the OS
Fixed the rewind multimedia key not working as expected (e.g. when using a Corsair keyboard with the control knob that can be used to trigger fast-foward / rewind actions)
Fixed the simple artwork view mode in the classic album art window incorrectly blending the actual artwork slightly with the background when it's not meant to be blended
Fixed the lyrics & album art windows seeming to flicker or show the not found artwork before the expected artwork is loaded or only show the not found artwork even if there's known to be artwork to display
Fixed a visual issue with the plug-in item nearest to the item that was just removed when uninstalling a plug-in via the preferences due to an incorrect handling of the focused state vs the custom drawing
Fixed NSF/NSFE playlist entries that relate to sub-songs not being correctly reported as valid items (e.g. via the missing files features in the main playlist) due to not correctly detecting the file extension
Fixed the podcast view showing the wrong colour on initial loading for where the information area is going to go before the browser control has been loaded
Fixed a handling issue that could cause an attempt to incorrectly access an input plug-in if the check to find a valid input plug-in for playback / metadata look-up fail in weird ways or use the wrong one
Fixed the probable cause for the WACUP installation folder being opened instead of the WACUP instance being run after installation due to an odd timing quirk related to the de-evelation handling being used
Fixed some crash issues due to invalid string values (from other issues that have since been resolved) causing a crash to be triggered
Fixed the streaming source plug-in not using an appropriate internal buffer size vs the output plug-in & it's configured buffering which could cause audio loss in the stream due to it discarding what has been passed to it before it's been able to encode it (e.g. this was most noticeable with NotSoDirect & short files where the audio starts immediately & around half a second of audio wouldn't be heard)
Fixed the line for the WACUP site on the about dialog page not being sized correctly when running under WINE due to an incorrect call of LM_GETIDEALSIZE
Fixed the about splash panel not working for all WINE setups due to weirdness with the handling of dpi settings with it
Fixed an approx. 6 year old bug from my initial work to make a WACUP build of the nde database implementation which didn't work well with multi-threaded database saves that could cause WACUP to either lock-up on saving or potentially corrupt the database being saved out (this was found when trying to determine the cause of saving history & local library playback updates to both of the database files around the same time)
Fixed the backup of the nde database files after a successful save has occurred not being correctly handled
Fixed the history playback position not always being stored if WACUP is playing when it's closed due to a number of factors screwing around with the timing & handling of the history db updates (async is hard!)
Fixed the TTA encoder selection not always being maintained & appearing to select the wrong encoder when performing the conversion because the desired encoder isn't what was saved to be used
Fixed the file conversion process not correctly copying the metadata over to the new file due to a logic issue as well as expanding how much of the metadata is attempted to be copied by this
Fixed some issues with the about window which could cause it to crash in some instances
Fixed a temp file related to internal bitmap resource extraction not always being removed if there was an issue with the extraction process
Fixed the missing album information vs overall album total in the local media library album filter not being correct (this should hopefully resolve this on/off issue with this replacement plug-in)
Fixed some quirks with the safe mode where some of the native WACUP plug-ins were not being correctly enabled as I'd not migrated everything over to the newer style of handling I'm now using for it
Fixed the intro play fade timeout preferences option not being correctly restored between state changes
Fixed some handling issues with the IPC_UPDATEDIALOGBOXPARENT & IPC_SETDIALOGBOXPARENT api calls related to gen_ff (modern skin engine) & how the WACUP core attempts to isolate it from doing things on the main ui thread to try & avoid unresponsive hangs that can lead to crashes
Fixed the lines oscilloscope option not being correctly restored when re-opening the preferences page
Fixed the sorting of the items in the current podcast feed going awry when a channel refresh is in progress
Fixed in_mod not send audio to the active DSP if it's enabled (seems I inadvertently disabled this whilst debugging an issue & only recently noticed it, oops!)
Fixed the main playlist editor scrollbar area handling when using some modern skins not reacting as expected due to the reported information for the image elements not matching to what is used for the drawing handling (e.g. it'd only react to clicking on roughly the right side of things instead of the whole area which works when using the thumb dimensions that all modern style skins should be providing)
Fixed the handling of a number of plug-in configuration menus when the skinned preferences option is enabled which was causing them to be incorrectly drawn due to mis-handling negative/very large menu ids
Fixed loading an url/file via the autoplay plug-in not working as due to a fat fingered typo it was overwriting the value on loading when it was meant to have been reading it
Fixed a regression preventing the currently selected preference tree item being in view when the preferences window is first opened
Fixed some quirks with the configuration of the listview header sorting due to a parameter mis-match in an api call (oops) & some states not being correctly setup
Fixed the probable cause for some setups (first reported on WINE but also seen on Windows 7) to either crash or not complete the creation of the selected media library view when changing it due to an issue with the clean-up of the accelerators (i.e. keyboard shortcuts) related to the preview local library view
Fixed the probable cause of the random failures seen when trying to switch quickly between media library views when the internet radio view has also been accessed which due to the large size of it's view cache was sometimes trying to do too much at the same time & causing itself to hang &/or crash
Fixed a regression with the podcast download view handling when loading the list of downloads & trying to fill in the length information if not already stored causing the duration column to not appear to be sorted correctly (this was due to the information not being correctly updated so that the sorting action was treating the files correctly as having no size despite the visual inconsistency observed)
Fixed the Alt+3 dialog sometimes making a double request for metadata from the input plug-in(s) when it should only be doing it the once
Fixed an issue when using WINE & the classic skin playlist editor window would not be redrawn as expected when resizing it (fixed by setting a flag on the OS method used to not have it reuse the prior OS cached image of the window's contents)
Fixed the ml_pmp plug-in title string on the media library plug-ins list wrapping onto the second line of the plug-in description
Fixed a number of on closing related crashes & also an up to 1 second delay to complete closing down found during splitting out the external file modification watching from the settings cache implementation (this might explain some of the long running reports of WACUP not correctly closing along with some of the weirder crashes seen during closing)
Fixed a performance issue with inverting the current selection within a library playlist view so it should now be much quicker with much larger playlists
Fixed the embedded browser (if enabled) on the podcasts view not being destroyed in all instances which could keep it using resources beyond it's wanted use
Fixed the current main playlist item not having the songticker text for it updated if a metadata change happens (this would update on changing the playback state but not for all possible ways of change)
Fixed the playback &/or reading of metadata from SPC based files not always working if other actions were also trying to access those files which could cause a file sharing violation that the SNESamp plug-in doesn't handle nicely (either playing but there's no audio or just aborting playback without any indication of the issue)
Fixed the colour theme editor component allowing the user to enter characters that it doesn't then correctly escape them when it's saving out the colour theme edits via it's custom xml writer (this might be something for that component which has always been the case & could be a Winamp3 era related bug & is something that WACUP is luckily able to live patch to correct what is trying to saved out otherwise loading WACUP with the saved file will either crash or throw an error on loading from the modern skin engine)
Fixed some issues seen with the live loading of disabled plug-ins that are part of the known install which could either trigger a crash or prevent some of the functionality working until WACUP was restarted
Fixed an issue seen when modern skin support is enabled & for whatever reason a skin.xml has been placed in the root of the WACUP program folder with the base classic skin set as the current skin to be used which would incorrectly cause it to attempt to load the massively incomplete modern skin (this is a modern skin engine handling bug which should have been checked against but at least it's able to be worked around with WACUP)
Fixed the positioning of the send-to menu in the playlists root view, child playlist views & local library views so it doesn't overlap the button & instead is aligned to the top of the button (this is an annoying issue with skinned menus vs how things correct to dynamically inserted menu items when set to have the menu bottom be aligned to the top of the associated window element)
Fixed the version in the loader manifest not always being correct (have now changed to a fully automated solution so I don't need to remember to update files)
Fixed a slew of crashing & multi-threading related issues with the ReplayGain processing plug-in which should make this a lot more reliable to work with
Fixed a number of issues related to the closing handling especially when WACUP is running & the OS is trying to shutdown which could cause settings / playback states to not be correctly saved
Fixed the bigclock plug-in crashing if the spectrum visualisation mode is enabled & the core is not able to provide any data for it to process (e.g. when waiting for a youtube video to be prepared to play)
Fixed a small memory leak when attempting to play urls via the MP4 input plug-in (this is what led to finding the above crash)
Fixed some handling inconsistencies which could make closing take than it should to process through the quit(..) plug-in calls
Fixed the probable cause of the podcast plug-in causing a hang on loading for some setups due to the OS api used for getting some of the default folder locations just not returning in a quick enough time
Fixed the probable cause of some of the self restarts (e.g. when toggling from legacy to non-legacy mode) not always working as due to the timings of things running it was possible for the new instance to still see the instance that spawned it & would then try to maintain the multi-instance limitations (if enabled) even though that instance is going away
Fixed some issues with the artwork cache handling that could either cause an item to be cached twice or for it to not correctly handle corrupted filepaths in the cache index file preventing new items to be added into the cache
Fixed the skinned button text flickering by moving away from using WADlg_handleDialogMsgs(..) as well as by double-buffering the button drawing (this still needs to be done for static controls but it's been far less obvious afaict)
Fixed a metadata handling quirk related to playlist separator entries that could cause a performance issue
Fixed some of the library view buttons not showing a pressed state if there's a menu open in relation to them
Fixed some performance issues with the handling of the skinned listview & treeview controls & drawing messages
Fixed the podcast downloads & library playlist views triggering more view paint updates on loading than needed
Fixed the web information area on the podcast view sometimes flashing as a white block when it's initially loading (aka having to hook things that shouldn't have to be hooked to get them to behave nicely)
Fixed some right-click / button menu items throughout various parts of the media library not being correctly disabled as expected
Fixed some buttons in the media library views not being hidden as expected despite being flagged to be hidden (e.g. on the library playlists root view & the 'save as' button depending on the vertical sizer position)
Fixed the skinned static text controls sometimes flickering on update &/or being resized by taking full control of the painting & using double-buffering
Fixed the podcast plug-in not always waiting for it's main background thread to close if it's running & WACUP is closing which could cause some hangs on closing
Fixed a playlist loading issue when there's incomplete / non-relative but looks like relative path items causing the path handling to fail but end up trying to enumerate all files on the drive (hopefully this won't break any of the existing wanted instances of relative path handling that some rely on)
Fixed some quirks with the podcast view handling on WINE where the episode list may not be sized correctly & images might be shown on the sub-items when its only intended on the main item
Fixed the playlist separator drawing popping in a while after WACUP has been loaded instead of it being styled as expected when the main playlist editor window appears during loading as well as reducing some of the forced window refreshes that could happen during loading
Fixed a large proportion of the flickering issues that exist when resizing the preferences window however this is not a 100% fix due to how some of the controls work (mainly static controls & group headers)
Fixed a handle leak related to the handling of the taskbar preview jump list which depending on how many items were played during a WACUP session may or may not become an issue
Fixed the tracking of small files (i.e. around 1 second or lower) with the history plug-in either not being tracked (subject to configuration) or would inconsistently be tracked
Fixed playback of long MP3s failing &/or aspects of the UI not working as expected due to Winamp's in_mp3 plug-in mis-reporting the track length so a different approach is now used that should be more reliable irrespective of the input plug-in being used & allows for in this case a 2 GiB MP3 to play correctly
Fixed an intermittent crash when trying to process the available file extensions which could manifest as an unexpected failure across multiple actions but was more likely to occur when a local library scan was triggered
Fixed the move after current action in the jump to file window not always working due to a lifetime issue with the playlist item filepath string it was trying to use not always being valid by the time the reinsert is attempted to be processed
Fixed an issue with the modern skin engine browser where it'll flash with a white background when it's loading by hooking some of the window creation handling to get it to paint the background with a more appropriate colour that matches with the skin being loaded (less jarring but not ideal but that's the 'fun' of skinning at times)
Fixed the installer not always replacing the files it should do for which if you've mis-matched WACUP & Winamp installs can cause the patching to fail &/or WACUP not be able to load correctly
Fixed an issue related to an optimisation with the loading of the output plug-ins to avoid them being left loaded if playback hasn't happened but the preferences window has been opened which in some scenarios could cause them to not be correctly loaded when they were later needed
Fixed the column sorting not being correctly restored in the internet radio view causing it to use the default sorting order
Fixed the in_mp4 plug-in not correctly handling "streamtype" metadata requests which could for some scenarios (mostly affecting modern skins) cause a long hang whilst it tried to parse the whole file for a metadata value that it couldn't really process
Fixed an unexpected crash in the ATF parser likely the result of other issues but caused an invalid parameter related crash which could have been safely handled (as this change introduces)
Fixed items added via the 'add folder' showing massively wrong durations if the "read metadata on file(s) are loaded into WACUP" option is enabled due to an incorrect api re-implementation
Fixed the handling of the bookmarks menu items in the main right-click & agent menus not always working correctly due to incorrectly handling the life-time of the internal objects being used (some of this goes back to around April 2021 but probably further back to the original plug-in that was used to help implement WACUP's bookmarks support)
Fixed the playlist time elapsed / remaining mode in the Big Clock plug-in window not working correctly due to an issue in the plug-in as well as the API it was trying to access for the playlist information
Fixed some other inconsistencies with the handling of going backwards in a playlist especially when invalid / virtual items were within that part of the playlist
Fixed a corrupted gen.bmp for classic skins causing an infinite loop which will then cause the WACUP process to go unresponsive & eventually trigger a crash
Fixed the 'on end of queue' menu in the JTF window not always being added correctly (still not sure because it's using the same as the rest of the dynamically built menu so have instead delayed when it's added which does what's needed so there should be no more incomplete sub-menu / just a bunch of separators showing for it depending on the skinned menu setting)
Fixed a potential issue with the installer if it's not able to retrieve the current installs configuration details so it now does some additional checks to better ensure a valid path is attempted to be used
Fixed the playlist handling to read all of the titles immediately when an item is being added to avoid it either not updating things despite being read or being applied on the wrong item or not being reset if there's no metadata actually read (e.g. for streams / remote server hosted files for the moment - an area that needs to be improved)
Fixed a crash on loading when certain anti-cheat solutions are enabled (still not sure what they're doing but this improves the resiliance to OS apis not responding in a previously expected manner when working on some bitmap files)
Fixed an issue that could cause the artwork to not be displayed on the background of the taskbar preview (if configured to be shown) for some setups
Fixed a crash when trying to change the font used for the taskbar preview
Fixed opening directly to the ReplayGain preferences page not being remembered correctly if not changing the selected tab & then going back to the Playback preferences page later
Fixed some of the Win7Shell thumbnail options not live updating as expected when changed making it harder to know if the configuration changes are being correctly applied or not
Fixed the length of newly added items into the main playlist not being used even if read if the read titles on loading option is enabled (might help with some network stuff too)
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 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)
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 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 waveform seeker rendering issues with module files if the force mono playback setting has been enabled
Fixed slow / incomplete refreshing of the classic skin playlist editor playing status area when changing the options related to the font that'll be used so the change should now be reflected immediately instead of waiting for the next timer update as well as avoiding the background not being reset as needed when switching to show the skinned font mode
Fixed an occassional crash on closing when using a modern skin with the artwork &/or lyrics plugin windows open
Fixed a load time conflict between the library bookmarks & playlist plug-ins due to how some internal strings were being loaded
Fixed an issue if trying to send a zip:// style entry from the bookmarks view to elsewhere due to it being incorrectly treated as an url instead of as a playlist for some code paths
Fixed a multi-threaded access issue with flac files which could cause a crash or unexpected information returned for the file
Fixed a border on the skinned JTF window not being drawn with the expected style
Fixed switching to the manage mode in the JTF window not always causing the manage list to show as there due to a painting overlap issue
Fixed the actual video window used for rendering to sometimes being incorrectly reshown if video playback has stopped
Fixed seeking forward via the keyboard shortcuts when playing youtube urls via in_mp4 not seeking as expected (it's still not great but it shouldn't now stick to somewhere just before the seek was attempted)
Fixed the classic skin video window sometimes being seen or there being a lot of flickering in non-WACUP windows during closing when using a modern style skin with video support enabled
Fixed the podcast download view causing an indefinite hang if opened & then trying to switch away from it / closing WACUP when opening the local library database isn't responding correctly
Fixed some custom metadata values being incorrectly sent via the local library metadata handling when generating ATF based titles
Fixed a drawing issue with the dividers for some of the views if the navigation tree is set to be on the right of the current view
Fixed song titles with ampersand in them not being correctly shown in the notification area (despite doing the processing, the wrong text buffer was then being used so that work wasn't used, doh!)
Fixed OGG Vorbis streams failing to connect &/or stay connected including some issues with HTTPS urls along with some other related issues
Fixed Opus files using the OGG file extension not having their metadata read as expected (e.g. when viewing the Alt+3 / File Info dialog)
Fixed an incorrect handling of the DirectSound device id becoming invalid & not correctly triggering the fallback code to use the default
Fixed a regression (beta build specific) along with some inconsistencies in the escaping of some of the ATF metadata when doing HTTP POST
Fixed the probable cause of an occassional crash seen when closing the format converter window
Fixed a number of issues with the installer related to the use of the WACUP core that could cause unexpected failures on actions that should be working
Fixed the classic skin video window close button not showing a pressed state as expected if using the option to have it use the generic embedded window
Fixed an inconsistency with the handling of bitrate being reported during Ogg Vorbis playback which made it look like the bitrate had suddenly dropped
Fixed all streams via the streaming source plug-in going disconnected incorrectly being treated as though a process close / dsp unloading is happening (this likely explains some of the weird failures that have been reported in trying to either get a stream to connect or it just randomly stopping completely at times)
Fixed some instances of the history & local library plug-ins incorrectly reporting an nde loading failure even if the nde dll has been correctly loaded
Fixed the actual cause of the classic skin main window sometimes showing the text font image as part of the background (mostly related to the song ticker handling & incorrectly re-using an internal HDC)
Fixed the preference option to download the AVS plug-ins to do a better set of checks to deal with blocked / invalid download of the plug-in package
Fixed a display issue with lyrics where intentional empty lines set via a specific timestamp were not being maintained
Fixed the lyrics window not resetting the view position back to the top of the window when what's shown needs to change
Fixed a playback stopping issue with the in_mp4 input plug-in when running under WINE (super weird bug not seen on Windows but the ordering of some clean-up during stopping was the trigger for this)
Fixed the cause of a crash seen when in_mp3 is trying to open an mp2 file to get metadata from it but not correctly validating a parameter to a runtime call (aka hooking the runtime to fix missing checks)
Fixed the audio cd library view not always loading it's contents if there is already an audio cd present in the drive for the selected drive view due to a weird timing quirk with loading vs querying the drive
Fixed the installer sometimes not re-creating the folders it needs which can then cause installation failures
Fixed a number of crashes experienced when trying to play an incomplete MP4 file (more of an issue due to there being video data within the file)
Fixed a number of inconsistencies with the painting of the video window either after minimising when using a modern skin or if using the generic window frame under a classic skin which could prevent the correct inner window colour being used or nothing being painted at all
Fixed the Yule Log plug-in processing thread sometimes being created when there's no need for it compared to how the plug-in has currently been configured
Fixed the podcast downloads view not showing the column sorting direction immediately on loading as expected
Fixed the archive support plug-in (in_zip) not using the thread safe api to get the supported extension list
Fixed the paramater validation of some of the local library apis so they'll now better avoid triggering the database to be loaded when it's not needed against the incomplete / invalid request
Fixed disabling the classic skin main visualisation mode incorrectly not reporting the intended main visualisation mode to the input plug-ins that are checking for it when using a modern skin (years old bug)
Fixed a deadlock that could occur with the Not So Wavey output plug-in during some of the playback trigger events
Fixed an issue with MP4 playback where starting it & trying to seek immmediately to a specific position may not then begin playback as expected (more of an issue if doing playback resume on loading)
Fixed a number of concurrency issues when metadata for the main playlist items are being refreshed to avoid most instances of the title reverting to the filepath or a basic "artist - title" string instead of the expected ATF result
Fixed some problems with the delayed loading of multiple services from the component (w5s) plug-ins which have had a wbm created for them
Fixed a crash on closing if playback is set to repeat the current playlist & none of the items are valid with the album art &/or lyrics windows enabled due to an issue with asynchronous artwork handling
Fixed the installer not correctly setting the folder attribute needed for the customised folder icon to be shown as expected
Fixed a crash on closing if the replaygain processing window is still open
Fixed the resource dlls having gained some unwanted padding over time so they've now been re-saved to get them to the expected size (nothing bad, just how some resource editors work)
Fixed the internet radio view search field on skin change not updating as expected
Fixed some inconsistency with the handling of %length% & %length_seconds% when ATF based titles for items are transfered from the local library into the other areas of the player (e.g. main playlist editor)
Fixed a number of flickering / drawing related issues with the JTF window mostly related to the mess that was skinning of the header groupbox (the item list may still flicker at times which still needs to be fully resolved)
Fixed the classic skin song ticker (& probably more) not reverting to the default string if the main playlist has been cleared whilst playback is active & then playback is stopped (this would otherwise leave what was playing as the current title which seems odd when you look at it vs a now empty playlist)
Fixed the classic skin currently playing timer not working correctly if something is playing & the main playlist has been cleared (often showing as 0:00 instead of the expected playing / remaining time)
Fixed the classic skin song ticker not always being drawn immediately or at all at times (if the autoscroll option was turned off) which was most noticeable when going from a modern skin to a classic skin
Fixed a drawing issue with the skinned tabcontrol after it's been loaded & then changing the selection due to an alignment / overlap issue
Fixed a crash on closing if the edit playcount dialog from the history view was left open
Fixed the open folder option on the edit playlist entry dialog within library playlist views not working as expected
Fixed the flickering of some preference page elements when resizing the preferences window (most obvious on the modern skin preference tabs)
Fixed the end of the help message on the Taskbar -> Thumbnail preference tab being clipped / showing garbage due to a missing null character
Fixed the help message on the Archives preference page not showing as expected as well as not being clipped / showing garbage due to a missing null character when that was initially resolved
Fixed the vis_classic configuration dialogs not using the expected font for the OS to draw causing a pixelated font to incorrectly be used
Fixed the uninstaller incorrectly reporting that there's a folder to look into when it's been completely removed
Fixed the handling of the classic skin spectrum analyser so it should now be able to show the upper thick band for media that contains data in the upper 18kHz+ range (most doesn't)
Fixed the config handling of the repeater plug-in to avoid an issue with the custom rewind / fast forward seek times being incorrectly set to zero along with only saving out non-default values
Fixed a resource leak when saving the history & local library databases which over time could cause crashes, failed database saves & other issues due to resource exhaustion on the system if left running for days (assuming it got that far) which was more pronounced when running on a machine with many cores (more cores, more leaking)
Fixed an instance where multiple attempts to update the main playlist could cause the internal list to end up being corrupted
Fixed an m3u8/m3u playlist loading error that could cause a recursive loop if the file isn't what it's actually been named (e.g. an mp3 with the m3u file extension)
Fixed a handling issue with the database handling that in some instances due to bad input data for a record could trigger a crash (a lot of other things have to have gone wrong for this to actually occur)
Fixed a slew of concurrency issues with the replaygain processing as well as attempting to save out the new values into tags (this is still less than ideal due to some of the input plug-ins involved) which should resolve a number of hangs &/or unexpected text being shown within the processing window
Fixed some missed code path calls that could allow some of the input plug-ins to be sent metadata that they're known to not support which depending on how / when the call occurs could cause a hang / crash
Fixed a performance issue with the painting of the main playlist editor items when really fast scrolling through it which could cause other ui aspects to become sluggish &/or stop updating (it's still possible if the playlist window is sized really large but for normally expected playlist sizes this should no longer be an issue)
Fixed a handling issue with corruption of the winamp.ini file due to unexpected control characters being stored in the file preventing loading of the previously set skin not happening between instances
Fixed the taskbar preview if set to show text not scrolling at an attempted equivalent rate when the low frame rate mode has been enabled
Fixed the taskbar preview if set to show text incorrectly clipping the length of scrolling lines to the bitmap being drawn into instead of using the actual string length (the larger the font the more obvious this became)
Fixed the taskbar preview if set to show text not scrolling the lines as expected if set to use an image for the background instead of the in-lined icon mode
Fixed the implementation of the classic skin generic window title bar handling so it'll no longer show junk data where you'd expect to see the title of the window if the skin doesn't provide the expected bitmap or it's not possible to parse the gen.bmp bitmap to find the skinned text characters
Fixed the overall implementation of the classic skin main window visualisation so there should no longer be any flickering on moving the main window around as well as ensuring the no vis background shows as expected instead of it either not being show (more of an issue on initial loading) or it showing using an incorrect palette (which made some classic skins actually look better but wrong vs skin spec)
Fixed some of the output plug-ins crashing when an invalid buffer is passed to them to use for the output data
Fixed the in_sidious plug-in not coping well with some multi-threaded calls made to it before it's completely initialised which could also cause processing & on close crashes
Fixed the length for the currently playing SID file not always being read correctly causing stopping issues or more importantly not stopping when that's what is expected for it
Fixed the UI locking up / not showing the expected remaining time to play when coming to the end of playing a SID file due to not correctly checking the remaining status of the output plug-in
Fixed the streaming source plug-in not always releasing the connection it had been attempting to make which if left running unchecked for long enough would cause a massive memory leak (api re-implementation fun)
Fixed a number of compatibility issues with the interaction between the media library window & the modern skin engine (e.g. the close button on the window not updating other parts of the ui when using the SimpleX skin or the media library window not being shown if changing from a classic skin to Winamp Modern, closing WACUP & then starting WACUP)
Fixed an issue with the CSV export of the library database if invalid filename entries are present &/or other values are not able to be correctly mapped to the expected format (e.g. time values) which could cause the rest of the results to be skewed or information from the prior column being duplicated (the fun of dealing with some of my older plug-ins)
Fixed an issue where loading a db file fails which could for some instances prevent other actions completing causing the ui, etc to lock-up
Fixed a number of issues related to db compaction handling along with an additional implementation to make it easier to report the progress
Fixed an excessive memory use when running a db compaction which depending on the size & other aspects could trigger a crash whilst processing (e.g for ~294K of records memory could peak at ~1.3GB whereas it's now peaks at ~440MB)
Fixed a number of handling issues with the internet radio view which could cause it to crash when fast switching &/or the during database updates
Fixed some issues with handling the sizing of some integrated preference pages with multiple tabs on them (e.g. bottom being incorrectly clipped or not having the sizing applied as expected)
Fixed a hang / crash on closing due to the selection preservation handling in the local library views due to the listview it was running on sometimes having been deleted mid-loop
Fixed a hang / crash on closing if using the Not So Direct output plug-in & fade out on closing was enabled & a few things went on to prevent it from completing closing as expected
Fixed a crash on closing (often seen by the crash reporter running when WACUP is next started) due to a timing issue with the clean-up of the podcast downloads view if starting & closing things very quickly
Fixed a buffer handling issue that could cause replaygain processing to fail when the source files have large sample sizes
Fixed a small ui hang when first attempting to update all of the current podcast feeds if the podcast root view is not already loaded
Fixed some clipping issues with the drawing of different parts of the albumart window contents depending on the size & the font being used along with the orientation of the details mode which could be off
Fixed a crash on closing if the podcast downloads view was actively trying to update it's cached information for the existing downloaded files (the timing to cause this was tight but was possible to replicate)
Fixed a crash on closing if the JTF window is open & an action had triggered an internal recalculation whilst closing of the whole program is happening
Fixed the podcast preference page handling not re-enabling some of the controls when the show info pane option is re-enabled
Fixed the podcast root view double-processing some messages on initial loading which could make the view slower to load & preventing the selected feed not being correctly scrolled into view (if applicable)
Fixed a concurrency handling issue that could cause multiple access of the local library database (more of an issue if it involved a read & write) causing a crash &/or corruption of the database files
Fixed the artwork plug-in when in details mode trying to draw items that will not be seen
Fixed the probable cause of a crash seen with some potentially corrupted MP4 audio files
Fixed a concurrency issue with the load of artwork in the albumart & lyrics windows
Fixed an issue with the classic skin main window painting under limited OS memory / resources
Fixed the artwork handling to ensure any asynchronous calls will have their provided callback called in an asynchronous manner instead of doing it immediately which could cause issues if done on the main ui thread
Fixed deadlocks experienced with the artwork & a lesser extent the lyrics windows (related to the above changelog line though was able to happen for non-cached artwork when the call was already asynchronous)
Fixed the probable cause of a lock-up that can occur when updating the podcast feeds where it could stop part way through the feeds & not be able to continue processing the remaining feeds without restarting
Fixed an issue with resolving shortcuts when processing folders not always working as expected due to a multi-threaded initialisation not being correctly applied
Fixed a number of issues including it crashing with the handling of shortcuts to another folder when scanning folders especially when there's the potential for a looping back to the folder(s) already checked
Fixed the update dialog not always being shown when running in legacy mode due to the loader process not staying running for long enough once the child process has been spawned (not an issue for non-legacy)
Fixed aborting closing incorrectly causing the main vis & related aspects pulling from that data not running due to the worker thread responsible for processing having incorrectly been destroyed
Fixed keyboard shortcuts either not working or if not correctly handled triggering the OS generic MessageBeep(..) (likely an accessibility thing to indicate invalid / unhandled input) due to how some of the child windows were attempting to pass those actions onto the main window so they act more like process wide actions (e.g. R to toggle repeat or Alt+3 to view the current file information)
Fixed a building regression with libsndfile which could prevent files played that have non-integer samples outside of the -1/1 range not being correctly handled causing clicks & pops (this will bring back a slower loading of some wav files)
Fixed some of the addition tool update checks (e.g. IT / BT) to better deal with the response from the site not being as expected
Fixed the probable cause of a crash seen by some installs due to a buffer used by the equaliser not being initialised as expected during playback (possibly cross-fading related)
Fixed a hang on closing that could occur if the CD plug-in was enabled & the close action occurred whilst a device poll was in progress to figure out if a CD was present or when getting the title information
Fixed a number of handling issues with the processing of data from the input plug-ins for the visualisation plug-ins that could cause some of them to not behave as expected (e.g. AVS superscope)
Fixed the probable cause of a crash seen during loading related to an issue in the settings cache handling when dealing with the reading of a struct style of ini entry
Fixed an issue for some of the old 3rd party plug-ins where trying to override the settings file(s) used could trigger a crash on loading
Fixed a compatibility issue preventing the gen_cover.dll plug-in from finding the video window when despite it being there for it to find
Fixed a performance issue related to the exporter plug-in during process closing
Fixed a crash when accessing the Not So Wavey config page due to an api call not being correctly initialised
Fixed in_zip crashing when trying to process some xSF based formats
Fixed in_zip not correctly extracting all xsflib files for playback
Fixed in_url not correctly initialising COM in it's playback thread which could prevent in_dshow from initialising correctly causing it to crash
Fixed a painting issue on the channel list with the podcast view during view loading
Fixed a corrupted file extension string from the in_dshow plug-in causing any file with an extension beginning with M being handled by it (e.g. this could break miniXsf handling)
Fixed some odd crashes if starting & closing the WACUP process really quickly (not normal behaviour to be doing but something caught during recent stress testing)
Fixed a timing issue which could prevent podcast related downloads (e.g. feed updates) from being seen due to the download thread missing they'd been added & instead it exiting too early (would appear as the podcast navigation node just spinning & no further attempts to add anything else succeeding)
Fixed some of the checks that some of modern skins are using to determine if running under WACUP to not rely on physical files existing which in some instances broke features depending on the install setup
Fixed the Big Clock plug-in not rendering its visualisations if starting WACUP with autoplay on start-up enabled when trying to restore playback on an audio cd (due to it taking too long to report it's playing & isn't temporarily paused)
Fixed audio cd playback not always working as expected with autoplay on start-up enabled
Fixed issues with audio cd metadata look-up not working consistently if running without the media library core enabled
Fixed a fundamental implementation issue with the audio cd metadata cache database which was causing a number of issues including crashes (this will however involve a complete reset of the database as there's no viable way to recover any of the custom metadata &/or previously obtained Musicbrainz responses which hopefully won't be too much of an issue for those that rely on this functionality - some pain now to resolve issues going ahead)
Fixed a dead-lock when there's a failure to add a podcast download to the background processing
Fixed an issue where the colouriser api wasn't correctly keeping all instances added to it causing some to then not be called as expected (e.g. missing files or the show playlist flash)
Fixed the milkdrop plug-in being too slow to close if it's still processing the preset list when WACUP is trying to close
Fixed turning off the missing files highlighting in the main playlist editor not working until restarting WACUP
Fixed video only MP4 files not playing more than a second or so of the file as well as not reporting a length
Fixed the probable cause of audio going really slow when playing some MP4 files with a video part due to the prior video decoder not being able to keep up which then broke the audio synchronisation handling
Fixed a crash on closing if the podcast downloads view is set to be automatically removed when there's no downloads remaining to be shown in it
Fixed a number of issues with the service manager in relation to repeat calls to register callbacks that have already been added which was the likely cause of some of the modern skin failures (this allows un-doing a prior change that intentionally broke some aspects of live colour theme changing where it'd cause a crash after a few changes)
Fixed a number of memory leaks with the podcast handling (something that's sadly been on-going for far too long) which should improve the experience for long running instances so they don't run out of memory
Fixed a database handling issue which prevented the purging of old internet radio streams during the generation of the database file
Fixed some of the flickering that might appear on the classic skin preview in the preferences but it's still going to occur for now
Fixed more instances of dialog titlebars appearing to show gibberish but was due to incorrectly mapping ansi dialog calls to unicode as well visualisation plug-ins not being hooked as expected at times
Fixed an issue sometimes preventing the currently selected skin from being remembered between instances
Fixed the podcast plug-in doing more file existance checks than it really needs to be doing to lessen the impact on slower drives & reduce some of the overhead in processing the feeds on update
Fixed a number of performance related issues with the tataki replacement (is more to be done on this later) & a specific fix for the BBM based skins which gets most of the modern skins tested down to 'very low' with the odd 'low' power usage value from the OS task manager when WACUP is left in an idle state (i.e. not playing anything) when some modern style skins were easily sitting in the 'moderate' to 'high' power usage states!
Fixed clearing the main playlist not always having the expected song ticker string appear when using a modern style skin once the title is updated on end of file
Fixed an issue with the artwork image cache which could prevent it from always returning the highest quality image & cause some ui aspects to then work with lower quality already re-sized images (e.g. mis-reporting the size of the artwork on the file info / alt+3 dialog)
Fixed a crash on the skin management preference page
Fixed a crash due to an incorrect validation on EOF
Fixed a number of small memory leaks which depending on the action & changing active focus of WACUP could cause problems over long running instances
Fixed incomplete update attempts of the internet radio database (e.g. due to a crash) to now re-trigger the download to avoid later update failures
Fixed the waveform seeker plug-in trying to create new processing threads when WACUP is attempting to close which could in some cases cause a crash during closing
Fixed a resource leak when in_mod is requested to process a file which is not something it is able to handle due to file extension re-use of unrelated files
Fixed a resource leak when using the Alt+3 / File Info dialog due to the lyrics tab not correctly cleaning up it's background thread whether lyrics exist or not
Fixed a painting issue of the classic skin playlist scrollbar when in double-size mode not updating the full scrollbar area when more playlists items area added causing the scrollbar position to change
Fixed a timing issue that could cause the podcast view to incorrectly indicate there were no feeds (hiding buttons & showing a related status message) when there were known feeds loaded
Fixed a display issue on the lyrics tab of the alt+3/file info dialog where it was not always correcting the linebreaks to ensure they appear correctly within the edit box
Fixed the priming of the artwork cache not correctly handling things causing the memory needed to maintain copies of the artwork to be doubled & not released until the process completes (e.g. 8MB of cached artwork would leave 8MB of data allocated when it'll never be used nor released when the cache updates during the running instance)
Fixed the main window visualisation not entering the expected stopped playback state when a SID file ends & no other file is attempting to be played afterwards (manually stopping did not show this issue)
Fixed an issue with priming the artwork cache where it could incorrectly ignore what was known to the cache just after it's been primed if the request for artwork will always be a smaller resolution image than the request being made (e.g. asking for a 600x600 image when the source is always going to be 574x574)
Fixed a crash when using the format converter whilst having the preference page for the plug-in still open
Fixed a slew of performance issues related to the bookmark handling especially during initial loading if it's a selected library view with a large bookmarks file (e.g. 7.5K of entries which goes from approx. 6 seconds down to a fraction of a second on my dev machine)
Fixed the Win7Shell plug-in always reading the bookmarks file on loading even if set to not show them in the jumplist
Fixed the tooltips on the embedded classic skin windows not always having their positions updated when the window size has changed
Fixed the installer not always ensuring that the local VS2019 runtime folder is installed if some of the runtime files are missing
Fixed a message handling issue which could cause changing the modern skin colour theme via the menu actions to be double processed
Fixed an issue with the colour theme handling of the skinned scrollbars ending up as black if a number of theme changes are applied (possible by
Fixed an OS call made by the Win7shell plug-in incorrectly being hooked by the WACUP core which was causing higher cpu load than intended with the checks the plug-in is doing related to the taskbar preview
Fixed loading of the bookmark menus especially the agent menu or if the settings cache was disabled being really slow when having a reasonably large bookmark & related category files to process
Fixed the Discord & last.fm related preference pages having a tab on them when there's no need to be like this (lazyness on my part when creating the preference pages for them ages back)
Fixed a number of ui hangs when first opening any of the preference pages related to the Yule Log plug-in due to possible slowness in the loading of the local library database whilst making the previews
Fixed the FLAC encoder not correctly handling 24-bit audio data causing invalid files to be generated
Fixed a slew of AAC decoding related issues & inconsistencies compared to the re-used aacdec.w5s from 5.666 as part of it's replacement (e.g. missing mono output, incomplete waveform seeker rendering)
Fixed the classic skin windowshaded mode scrolling by 2 lines instead of the expected 1 line due to the mouse scrolling option being incorrectly applied to that mode
Fixed MP4 files incorrectly playing despite aspects of the UI indicating that the player is meant to be paused when WACUP is set to use the paused on load autoplay option
Fixed setting a rating outside of the local library views not working as expected as well as rating changes not being correctly reflected in the right-click menus in the playlist & main window menus
Fixed the classic skin song ticker not showing as expected when switching from a modern skin if autoscrolling is disabled
Fixed a performance issue with initial loading of the classic skin songticker right-click menu due to the rating sub-menu
Fixed duplication of the out_sqr preference page when opening the preferences & the dynamic loading is being used due to no playback having yet happened (the first one would show an unable to load message)
Fixed some regression issues with non-unicode output plug-ins being shown on the output plug-in preferences page
Fixed some inconsistencies with the shift+space to force the current main playlist item into view if done via the classic skin equaliser window as well as the action not flashing (if configured to do so)
Fixed a sorting issue on the output plug-in prefs page when dealing with non-unicode output plug-ins
Fixed Ctrl+Shift+4 (sort the current playlist by duration) not working in the main playlist editor window
Fixed an NDE handling issue which could cause a crash during closing with some of the maintenance tasks
Fixed a drawing & handling issue related to the rating element of the gen_classicart window
Fixed a handling issue when multiple input plug-ins are trying to handle the same extension & it was possible to keep retrying the already attempted input plug-in
Fixed a number of memory leaks related to poor handling of some broken files preventing the intended clean-up not always being run
Fixed a crash that could occur in the Not So Yasapi playback device setup handling
Fixed pressing F5 when the media library navigation tree is focused not triggering a skin refresh
Fixed some quirks with the win7shell plug-in & how it tracks the need to provide active previews under Alt+Tab & Win+Tab along with minimising polling checks
Fixed a crash which could occur after the skin selection setup dialog is shown & WACUP is then allowed to continue to be loaded post-setup (not sure how this wasn't causing a failure for all setups)
Fixed a random crash at the end of the main installer process which could prevent some of the setup clean-up being correctly done
Fixed a main playlist updating issue if using advance on next & a playback stop event then happens causing the wrong playlist item to update
Fixed a conflict on loading with MP4 based files when trying to autoplay & the library history plug-in is also trying to restore the last playback position which could cause the current playback position to jump to the start of the track although playback was working from the expected position (this now has the autoplay action take precedence & can also avoid the history database being loaded too soon to help reduce loading times)
Fixed some of the plug-ins incorrectly triggering a load of the local library database when not expected which could depending on the size of the database cause a noticeable ui related lag (still can occur but it's less likely)
Fixed the modern skin playlist window file menu getting corrupted due to an issue with the live editing of the library view results which are added to the menu
Fixed the probable cause of a conflict on closing which could cause a hang / crash between the Win7shell & Win10shell plug-ins
Fixed the probable cause when playing MP4 based files & fast switching what's playing to another MP4 based file crashing for some (still not 100% certain of this being resolved but it's better now than before)
Fixed the probable cause of a failure in the notsoyasapi ring buffer when getting called in an unexpected manner
Fixed a deadlock in notsowavey related to starting to open playback when an existing playback attempt had occurred
Fixed the link on the error reporting preferences page not opening the crash reports folder if it's found that the folder is not empty but no valid crash report files were found within it to avoid confusion
Fixed a timing quirk with the priming of the artwork cache on loading (more so an issue under a debugger) which could cause the cache to not be correctly initialised with the known image data
Fixed the waveform seeker plug-in incorrectly trying to refresh it's window on loading when it's not yet been created (this showed up recently due to other improvements reducing the delay for things to happen which ironically was then causing WACUP to be much slower to load)
Fixed the waveform seeker plug-in trying to draw empty lines & a few other things that caused it to be painting more than needed
Fixed processing of MP4 based files via the file conversion apis (e.g. for waveform seeker previews) being slow (still not great but it shaves at least a few seconds from longer files being processed)
Fixed a number of crash types not always being detected by the crash handling (e.g. heap corruption) so it's possible the builds might throw more errors due to this (a good thing but bad as more needs fixing)
Fixed a crash with in_mp4 on attempts to restart a file very quickly (caught by the crash reporter changes above)
Fixed the internet radio plug-in sometimes causing a crash whilst it's doing clean-up of the view results (was more obvious under Windows 7 but could occur on other OS)
Fixed failures to start a stream with the streaming url plug-in causing it to remain in a sort of playing but it's not playing state (now it correctly reports an EOF event which should also better ensure the failure message for the playlist item will be shown)
Fixed some updater related issues due to not correctly handling COM setup & due to issues with some recent interim builds
Fixed a number of issues with the handling of artwork being changed which could prevent it being seen as changed in the local library along with not updating in other windows
Fixed updating artwork not generating a valid image file if the source & destination format were the same (per the artwork writing preferences) which could cause other failures
Fixed the artwork cache not correctly removing all images related to a file when it's artwork has been changed which could cause inconsistent behaviour for the other plug-ins
Fixed editing the metadata of some MP4 based files causing them to become corrupted
Fixed the probable cause of a hang / crash when trying to access an invalid MP4 based file due to shared file access not being correctly applied across all internal read calls
Fixed a crash in the streaming source plug-in when stopping the streaming server & there was an active output stream
Fixed a hang on closing if the internet radio plug-in is unable to complete downloading it's updates in time when signalled to abort as part of process closing
Fixed the key name being clipped on the FLAC metadata tag viewer on the alt+3/file info dialog
Fixed a hang crash when trying to parse an invalid lrc (lyrics) file due to a missing closing bracket along with not displaying multi-bracketed lines correctly
Fixed some issues with the undo playlist plug-in if the machine being used is suffering from low memory availabilty
Fixed some error handling related issues with the NotSoDirect output plug-in to better deal with device failure / unexpected changes
Fixed some quirks with the the internal look-up of the supported file extensions on file / folder processing
Fixed a deadlock that could occur in the Not So Direct output plug-in on device failure as well as improving the overall handling related to failures to avoid us crashing
Fixed the crash reporter incorrectly starting another instance if the auto-restart handling is enabled but due to memory related issues the new instance couldn't be run which then triggers the crash reporter to do a silent handling on initial loading but that would incorrectly then follow the auto-restart option when it's not needed
Fixed the possible cause of a few on closing related crash issues seen from the crash reports due to code being run when it's no longer appropriate
Fixed a crash when trying to play corrupted FLAC files due to incorrectly validating some of the reported information when attempting file playback
Fixed the notfound image handling not correctly looking within the root of the settings folder after it's first checked the current skin folder
Fixed the possible cause of an issue seen with the podcast plug-in due to some non thread-safe string conversions being used which may have corrupted the process stack &/or other in-process memory blocks
Fixed a hang on closing if the history plug-in has gotten into an invalid state in not being able to process the pending updates which would cause it to get stuck in a loop & not be able to complete close
Fixed an issue with FLAC playback causing pops for some files if replaygain was enabled but no information was found for the file when using 24-bit output mode & a positive replaygain preamp value was set
Fixed an issue due to mismatched COM initialise & destruction calls which could in some instances cause a crash to occur (more likely during quick start & close of WACUP)
Fixed the main window visualisation going into a bouncing mode if the buffer & fading configuration with Not So Direct were out of sync with each other (e.g. fading larger than the playback buffer size)
Fixed the visualisation preference page to better handle double-clicking on the start/stop/configure buttons to better handle some of the visualisation plug-ins that don't behave well with quick load/unload
Fixed a hang on closing if the prompt about replaygain processing isn't seen or responded to in a timely manner
Fixed the waveform seeker not always rendering the current file on loading when embedded in the Big Bento Modern skins (timing quirk between loading & window creation could prevent it from working always)
Fixed a number of issues related to trying to play high samplerate files (e.g. main window vis not working as expected)
Fixed resuming playback on WAV based files not working as expected especially if pausing is involved during that action
Fixed a conflict related to different implementations handling Winsock which could then cause connections to fail (e.g. going from playing a YouTube video, then playing an MP3 stream & then trying to play another YouTube video)
Fixed seeking in MP4 files with video tracks being slow when the overall video support in WACUP has been intentionally disabled
Fixed the installer not always restoring the prior running agent mode instance especially if the option to run WACUP after install is unchecked
Fixed the check format option with the Not So Yasapi plug-in incorrectly preventing playback due to incorrectly handling the WASAPI api response
Fixed a number of issues related to 24-bit FLAC playback via in_flac & in_wave (now used as a fallback if in_flac isn't present / enabled) & other issues depending on the master playback mode setting
Fixed a number of files being left around if making a WACUP install is aborted before it has fully been attempted (it is possible that some files due to how things currently work in the installer will require a restart of the system for them to be automatically removed though the installer will prompt if any can be manually removed earlier)
Fixed the uninstaller not always removing the entry from the add/remove/uninstall programs list
Fixed the main playlist scrollbar not always being refreshed correctly when changes occur (e.g. deleting the last playlist item that requires the scrollbar to be shown)
Fixed the main playlist scrollbar being incorrectly drawn too short when using a modern skin & if previously under a classic skin that had been configured to use double or triple scaling prior to using the modern skin
Fixed a possible crash if switching between modern & classic skins related to mishandling the internal drawing state of scrollbars
Fixed the credits dialog not showing any text if the OS doesn't report any fonts that GDI+ can use or it showing incorrectly formatted text (mostly an issue under WINE)
Fixed inconsistent handling of the play/enqueue/enqueue & play/double-click/drag & drop from the podcast view so those actions should now always generate the results from oldest to newest which seems to make more sense when it comes to consuming podcasts compared to all other library views
Fixed the F8 action to enter a path in milkdrop to change the active preset directory not working & reporting all input as "invalid path"
Fixed in_cdda not always aborting as soon as it should during closing which could cause a crash
Fixed some of the modern skins not showing what's playing from some streams as expected when in_mp3 is being used due to it not stripping linebreaks
Fixed seeking in MP4 based files being slow & sometimes causing the main ui to hang whilst seeking
Fixed going to the portables preference page & then to the agent tab on the notifcation area preference page incorrectly showing that WACUP is running in portable mode
Fixed the classic skin main visualisation in vu meter mode getting stuck on what was last shown if changing to a video only file
Fixed the playback control notifcation area icons not being removed if the main notification area icon isn't enabled
Fixed jumping to another track then expected when double-clicking in the main playlist if the advance to next on stop option was enabled & playback was currently paused
Fixed the skip update messagebox on the update dialog not being correctly parented causing it to appear behind the dialog & allowing multiple messageboxes to be created
Fixed the updater not getting the correct version to compare which could cause mis-reporting of there being or not being an update depending on how the mismatch happens
Fixed the installer not giving the expected visual indication of what's going on during installation after updating to the recent NSIS 3.09
Fixed the podcast add / edit dialog not remembering it's last position when moved
Fixed a crash when exporting some of the database files to csv if there was an issue in the conversion process (e.g. due to prior corrupted data within the db files)
Fixed some of the open / save filename dialog filter strings not being correctly double null terminated which could cause random junk or the filter to not work right
Fixed some invalid podcast feeds not being correctly reported & the podcast view not always live updating as expected for such issues
Fixed a number of object lifetime related issues which could cause some issues mostly during loading & closing (aka odd crashes & possible preference corruption)
Fixed the installer incorrectly trying to run some clean-up actions on closing if it's been cancelled before setup has run through normally
Fixed the settings cache incorrectly handling ini keys with trailing whitespace characters which could cause some plug-in configuration changes to not be read &/or saved as expected (seen with NotSoFatSo)
Fixed the tooltip.maki causing some modern skins to trigger a guru meditation error when a tooltip needs to be shown due to incorrectly checking for the layout to use
Fixed the probable cause of a crash during loading when the splash screen was enabled (this was more likely to occur if classic skins hadn't been set to be scaled)
Fixed the wrong skin being selected via the skins sub-menus if the menu has already been viewed & the contents of the skins folder is modified
Fixed a visualisation plug-in handling issue which could cause a process hang / crash if the plug-in was taking too long to respond whilst playback is happening & calls are made to give it format details
Fixed some metadata field mappings not matching to expectations seen in the preview build or when using other input plug-ins (a local library rescan will be required to get these changes to appear)
Fixed the root bookmarks node in the library not correctly reacting to attempts to drag & drop it onto the main playlist / other library nodes
Fixed some further inconsistencies with the handling of vorbis comment tags across the different input plug-ins which currently handle them
Fixed a slowness in trying to obtain metadata from APE files which aren't valid media files & are the AVS helper dlls having been or attempting to be added into the local library database (aka too many things re-using file extensions)
Fixed some quirks with the processing of embedded artwork mimetypes for some files where it's filled with junk data
Fixed a notsoyasapi crash on WINE if there's no enumerable output devices which might also apply to some Windows installs too
Fixed a number of issues with restoring the last selected child playlist node (when enabled) if the names of the playlists contained duplicates
Fixed a number of issues with trying to set the icon for the running process in the taskar especially if it's set to group them without text labels (this may still not work as the OS requires an appropriate shortcut e.g. in the start menu for the OS shell to store / read the appropriate icon from)
Fixed some issues mostly with the main visualisation with lower samplerate playback when using the notsodirect output (still not 100% ideal but it now shouldn't be causing a lot of ui related lag)
Fixed the reproducible memory & handle leaks in the notsodirect & notsoyasapi output plug-ins which depending on how many items are played could become an issue causing WACUP to crash / act weird
Fixed triggering a main playlist undo event causing many playlist modified notifications when only one is needed which for larger playlists should make doing an undo be much quicker to complete
Fixed some inconsistencies with the not found image handling with the bundled skins (is still not ideal but it's the best to do for now)
Fixed the local library & few other aspects not seeing some of the playable formats if there's not a directly reported input plug-in but it is possible to indirectly handle the format with other plug-ins present in the install
Fixed the probable cause of some issues for those using the SHOUTcast DSP plug-in v2.3.5
Fixed a memory leak if the SHOUTcast DSP plug-in v2.3.5 is trying to display an artwork preview via it's configuration dialog (that was a tricky one to patch around within the WACUP core)
Fixed some inconsistencies with how in_url & in_mp4 respond to %type% & %streamtype% ATF values so it should now be correct including if the in_mp4 preference option to only play audio is enabled
Fixed an odd crash in the bookmarks plug-in due to a memory allocation failure
Fixed the classic skin song ticker & taskbar text depending on how they've been configured not reverting to the current WACUP build string when the main playlist has been cleared along with some quirks with them also not updating when doing a playlist undo action to restore things back to the pre-modified playlist (this is a partial regression & covers some cases that hadn't been coded for previously)
Fixed the portables library navigation node just showing 'P' when it's trying to indicate things are happening (needed to hex edit the dll to use the correct buffer size)
Fixed the waveform seeker plug-in not correctly handling files played from archives causing it to reprocess those files & generate numerous cache files that are not used again
Fixed resizing the right-hand attached generic skinned window not snapping as expected to the bottom edge of the left-hand window if the top edge of both windows were already aligned (classic skin issue)
Fixed the playlist loaders treating native paths under WINE incorrectly causing them to have the fake Windows path prepended to them causing them to not play when loaded on the next instance
Fixed some other actions not working as expected when native paths under WINE are involved (e.g. the waveform seeker plug-in wasn't able to process files)

Other misc small changes as part of trying to resolve some of the likely skinned scrollbar related crashes that have been experienced (it's better than it was but there's still a possible crash that'll occur)
Other related changes being applied from one plug-in into another (especially with the library plug-ins) where the fix may help but isn't something that's been seen within those plug-in(s)

Removed the use of the Winamp 5.666 media library core plug-in (gen_ml.dll) to now be an all WACUP provided implementation as part of the WACUP core (there's an easy option on the Media Library preferences page to enable or disable the whole media library feature) though there will be some issues / missing features with this for the interim (mostly due to a lack of skinned menus) but now is the time to use it :)
Removed the tweeting support from the Yule Log plug-in (almost halves the file size of the plug-in)
Removed the 'auto-hide' option from the album art plug-in since it hasn't worked for a while & enabling it causes other issues (a lazy 'fix' but sometimes less is more)
Removed the use of the Winamp 5.666 local library plug-in (ml_local.dll) by WACUP even if there's still some comparative features missing with the ml_ll.dll replacement
Removed some more of the code used to share memory variables between the Winamp & WACUP core as well as removing some of the compatibility code from the WACUP core to appease the remaining bits of the Winamp core that are being run
Removed the option to revert back to gen_ff's font handling since the WACUP provided handling to fix slow loading issues has long since been confirmed as working well
Removed installing the libexpat based xml.w5s with the 64-bit installs as there's nothing that uses it (it's still needed with the 32-bit version as the likes of gen_ff, in_mp3 & portables support need it)
Removed installation of the demo.mp3 when making a new WACUP install in light of recent events with Winamp that no longer make it feel appropriate to install it (this would have happened anyway once WACUP is completely free of using the Winamp core as is already the case with the x64 test builds)
Removed sending the IPC_PLAYING_FILE notification if running under safe mode as only IPC_PLAYING_FILEW is needed in that situation by the plug-ins able to run (this relates to disabling it completely with the x64 build where the unicode version is all that is used)
Removed the option from the album art plug-in to auto-hide itself if a modern skin is being used as this is no longer required (if the plug-in is not liked & the modern skin engine's basic album art window is preferred (for those skins offering a dedicated album art window of their own) then the plug-in can be easily disabled via the General Purpose plug-in preferences)
Removed h264.w5s as its no longer being actively used & some more of the w5s that were being installed which on further investigation never get used &/or the plug-ins they related to aren't used with WACUP

Updated the Bento / Big Bento skins to v1.2.5 (9 Sep 2023) to improve the handling of information shown in the main player area (e.g. current bitrate) along with missing characters for the playlist editor information area where the current playlist length / selection size is shown, removing the show artist / info buttons & fixing an issue when toggling windowshaded mode if the browser is not set to be used
Updated the Big Bento Modern skins to v1.2.2 (9 Sep 2023) - remember to say thank you to victhor for this as it's been a long time coming & is worth it
Updated the Winamp Modern & Winamp Modern Holiday skins to v1.4.2 (6 May 2023) - remember to say thank you to Eris Lund (0x5066) for this quality of life update for this skin

Updated ASAP (in_later.dll) to 6.0.0 (21 Sep 2023)
Updated brotli (libcurl.dll) to 1.1.0 (31 Aug 2023)
Updated cacert.pem to latest (22 Aug 2023)
Updated libcurl (libcurl.dll) to 8.3.0 (13 Sep 2023)
Updated libdiscid (discid.dll) to 0.6.4 (2 Mar 2023)
Updated libexpat (xml.w5s) to 2.5.0 (25 Oct 2022)
Updated libflac to 1.4.3 (23 Jun 2023)
Updated libjpeg-turbo (image.w5s) to 3.0.0 (3 Jul 2023) which adds a range of changes including lossless support with a much larger dll
Updated installer to be built with NSIS 3.08 (25 Sep 2021) which marks passing over 21 years of NSIS!
Updated in_xsf to the latest Git commit from 21 Mar 2021
Updated libnghttp2 (libcurl.dll) to 1.56.0 (4 Sep 2023)
Updated libogg (libvorbis.dll) to 1.3.5 (3 Jun 2021)
Updated libopenmpt (in_mod.dll) to 0.7.3.19618 (9 Sep 2023)
Updated libopus (libopus.dll) to 1.4.0 (20 Apr 2023)
Updated libpng (image.w5s) to 1.6.40 (21 Jun 2023)
Updated libsidplayfp (in_sidious.dll) to 2.5.0 (2 Jun 2023)
Updated libsndfile (libsndfile.dll) to 1.2.2 (13 Aug 2023)
Updated lzma (lzma.dll) to 23.01 (20 Jun 2023)
Updated minizip-ng (zlib.dll) to 4.0.1 (4 Aug 2023)
Updated mpg123 (mpg123.dll) to 1.31.3 (19 Mar 2023)
Updated Monkey's Audio (in_ape.dll) to 10.22 (14 Sep 2023)
Updated OpenSSL (libcurl.dll) to 3.1.3 (20 Sep 2023) which bumps up the dll size more than a bit
Updated Patreon list (10 July 2022)
Updated pugixml to 1.13 (2 Nov 2022)
Updated rapidjson to the current github commit (25 Mar 2021)
Updated Spout2 (vis_milk2) to 2.007.012 (29 Aug 2023)
Updated taglib (tag.dll) to 1.13.1 (1 Jul 2023)
Updated the copyrights to 2022
Updated universal runtime files (Microsoft.VC140.CRT folder) (newer is 350KB smaller)
Updated unrar (unrar.dll) to 6.2.11 (17 Sep 2023)
Updated vorbis-tools (in_vorbis.dll) to 1.4.7 (21 Jan 2021)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 16 Sep 2023 as well as updating to use the more recent ffmpeg files
Updated WavPack (in_wv.dll) to 5.6.4 (19 May 2023)
Updated zlib-ng (zlib.dll) to 2.1.3 (29 Jun 2023)


Preview Version: 1.0.21.7236

Released: 11 March 2021

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)


Preview Version: 1.0.20.7170
Released: 22 February 2021

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)


Preview Version: 1.0.18.6840
Released: 31 December 2020

Everything that was done as part of build 6800 since this is the first preview build since build 5864 that will be reported via the auto-updater (there's almost 300 changes in the 6800 changelog so I'll keep this one smaller for those who already updated to it :) )

Added an approximation of the Nullsoft DirectSound output plug-in hybrid volume control mode to Not So Direct (this provides a lesser form of the logarithmic mode so the differential between off & full volume is less whilst still providing more control at lower volume levels as the logarithmic mode does)
Added an option to the Waveform Seeker plug-in to allow for clearing the waveform cache on successful close (this might be useful for some who don't like a lot of small cache files in their settings folder)
Added a temporary solution when using the new media library core with the album art filters in the views from the 5.666 provided local library & portables plug-ins to not show a blank space where the contents should be but instead a helpful little message not to worry that what's expected isn't showing (the replacement local library plug-in will be getting support in the new year so the old plug-in can be dropped sooner rather than later)

Changed to no longer install the Nullsoft DirectSound (out_ds.dll) & WaveOut (out_wave.dll) output plug-ins with the WACUP provided versions instead the preferred options to use with Not So Direct now the default output plug-in unless that has been changed to a different output plug-in by the user (this change will also remove those Nullsoft plug-ins if they weren't explicitly set to be used before updating)
Changed how the IPC_HOOK_TITLESW api is handled when using the legacy media library plug-in (gen_ml.dll) to directly go to the respective media library library plug-in (ml_local.dll or ml_ll.dll) to save having to go through the main window proceedure & related subclassing (this mirrors what the replacement media library core does & is done to help resolve some of the odder recursive related metadata issues)
Changed some more of the apis to offer a direct non-SendMessage(..) based version to help reduce some of the main window activity which is showing as being an issue within some of the crash report issues

Fixed a crash seen when using the add/open folder action due to a main window related deadlock
Fixed the probable cause of an initial loading failure related to the main window creation hooking
Fixed crashes seen when libflac.dll cannot be loaded when attempting to play FLAC files
Fixed some crashes seen within the NDE handling due to incomplete parameter handling
Fixed MP4 based files being incorrectly opened for metadata when 'streammetadata' is being queried
Fixed an issue with the SNESAmp wrapper causing a self recursion within the IsOurFile(..) override
Fixed the probable cause of the Audio Capture plug-in causing a deadlock on playback stop for some
Fixed the handling with some input plug-ins when destroying the object used by the transcoding api
Fixed the probable cause of a crash seen when enqueuing some files within a local library view
Fixed the IPC_HOOK_TITLESW optimisation when using the replacement media library core not always sending the message to the correct library plug-in (sometimes it's possible for non media library plug-ins to be seen before the actual media library plug-ins are then loaded)
Fixed some of the media library plug-in messages not being correctly dispatched to them when using the replacement media library core
Fixed the probable causes of some of the less obvious issues in the crash reports received against the prior build
Fixed the probable cause of changing focus away from WACUP & then coming back to it when using a classic skin only having one window show unless you then manually minimise & restore the running WACUP instance
Fixed the classic main window windowshade toggling workaround fix (needed for preventing an instant crash in the Winamp core) not always allowing the action buttons to respond to the first mouse click if the window expands downwards (the workaround is mainly there to help with the window expanding upwards & the toggle incorrectly triggering the action buttons)
Fixed the titlebar of the generic classic skinned windows not always updating when the window is being resized (side effect of removing some duplicate processing which was masking this in the remaining code)
Fixed the skinned about & preference windows when smooth resizing is turned off under a classic skin not maintaining the expected fixed width for these specific windows
Fixed the probable cause of the replacement local library plug-in sometimes crashing when it's providing the current library view & is requested to do a self update
Fixed the import button on the library playlists view not showing the menu due to it not having been updated to find the correct part of the parent menu to be shown
Fixed using the cancel button after starting an import on the add / open folder dialog (related to the main playlist editor) not actually doing that & the found file(s) still being added (sometimes much later)
Fixed a crash related to trying to find the plug-in to handle GBS playlist items (this has been an on-going issue over a number of builds which I'm hoping to finally have resolved with this change)
Fixed the skinned groupbox header text not clearing the prior text if what's set is smaller than what was previously being drawn (skinning windows controls is frustrating to do at times I tell thee!)
Fixed the probable cause of a random deadlock experienced when trying to stop playback with Ogg Vorbis files
Fixed the alt+3 dialog reporting a failure to save metadata for any file type where the input plug-in handling the format doesn't have custom tabs added to the dialog (e.g. mp4)

Updated Monkey's Audio (in_ape.dll) to 5.70 (26 Dec 2020)
Updated Patreon list (27 Dec 2020)



Preview Version: 1.0.18.6800
Released: 23 December 2020

Added the first testable implementation of the replacement Media Library Core (aka gen_ml2) which can be enabled via the Media Library preferences page for easier toggling between it & the legacy Media Library plug-in (gen_ml) to aid in testing (this is now integrated into the WACUP core & when enabled offers a simple disable the Media Library mode for those who don't want this feature without having to mess around & find the appropriate plug-in to disable)
Added the first testable implementation of a replacement shared skinning api which is used via the Skinned Prefererences option & also with the new Media Library Core (this resolves one massive issue I've had with Winamp since generically skinned windows were added in that you had to have the media library plug-in present to be able to use it which often people don't want & that meant either un-skinned dialogs or manually doing the skinning)
Added an initial Intro Play mode to the Playback preferences page to allow for only playing a specified duration of a playlist entry before automatically going to the next as well as how much fadeout will be applied (aka WACUP's gen_intro implementation)
Added some extra error handling related to mp4 video playback decoding failures seen in some of the recent crash reports (rather than crashing it'll hopefully abort playback now)
Added some extra checks to some of the input plug-ins which delay loading their supporting library dll to avoid some of the recent crash reports where the library dlls cannot be found for some reason (still not sure what is going on with these setups as the installer should have correctly installed things but better to be more cautious & self-disable plug-ins if there's an issue than allowing them to crash!)
Added additional options for the Now Playing current artwork saving support to give more control over the saved artwork (e.g. unmodified, kept to the specified size limit or always sized to the size limit whether it's larger or smaller than the set limit)
Added a /RESETCLASSICSKINPOS command-line option (also used by the /REPAIR mode) which will attempt to reset all of the known classic skin window positions back to their defaults (e.g. if going from modern skin to classic skin has messed up / lost windows offscreen & you need a quicker way to get them back than for example using the likes of winspy++ to force them back into view)
Added options in the Library Playlists plug-in to make it easier to import library playlists from another Winamp / WACUP install & have it maintain the displayed filename (which doesn't happen if you just add the folder via the more generic folder / file import option)
Added support to import direct Google Podcast Feed urls (this covers urls using podcasts.google.com/feed/ - if you find others then please let me know so I can look into what's needed to support them)
Added a psuedo debug mode to the Playback -> Equaliser preferences tab for inspecting what is currently set (this is mostly to help with starting to replace the Winamp equaliser handling code for WACUP's)
Added a 'Silence Detection' preferences tab on the root Playback preferences node which is an integrated version of my Silence Detector DSP plug-in (dsp_silence_detect.dll) & allows for doing certain actions based on a configurable amount of digital silence being detected (e.g. restarting the current playlist item if you're listening to a stream & the internet connection drops)
Added some new hookable notification messages for the repeat & shuffle modes being changed to help simplify detecting such changes (for plug-ins updated to detect these messages)
Added transcoding api support to the OpenMPT Module Decoder plug-in which opens up mod files being rendered by the Waveform Seeker plug-in as well as now being a supported format in the Format Converter
Added preference options on the Playback preferences page to specify the fadeout duration for the Intro Play & normal 'Stop with fadeout' option (no more being fixed at around 4 to 5 seconds like Winamp)
Added a preference option on the Advanced preferences page to allow for only showing the genres from the genres.txt file in the native file editing dialogs without it showing the predefined list of genres
Added support to the Streaming Source & Server plug-ins for sending / receiving the next expected title
Added support for showing the now & next playing on the basic Streaming Server status page
Added an option to the OpenMPT Module Decoder plug-in to control how modules with sub-songs are handled (this defaults to treating modules with sub-songs as one big file with disabling the option going back to the older behaviour in only playing the first sub-song - better support for sub-songs will follow!)
Added the currently available visualisation plug-ins onto the visualisation submenus so it's easier to quickly switch or disable using a visualisation without having to go into the preferences
Added the ability to set an older Winamp logo via the Discord now playing support as well as making it easier to enter a custom app_id if you want to use your own thing (within the limitations in the WACUP forum thread)
Added the ability for the visualisation plug-ins to now be handled by Crystal Classic skins (classic skin window transparency) via some additions to the WACUP core making it possible to detect generic skinned windows not created on the main UI thread (blah blah blah this makes things more consistently handled :) )
Added a /NOPATHSINI option to the installer for those really wanting to get a pre-5.1x style handling of the WACUP settings with new installs (don't do this on an existing install as you will regret it) so it's not within a sub-folder within the main program file (weird legacy request ;) )
Added a compatibility mode for the MAD input plug-in (in_mad.dll) so it can be used in a portable manner without needing to run as an administrator due to it trying to read / save it's settings from the OS registry (it'll now redirect them to be read from an in_mad.ini from the WACUP settings folder)
Added an initial test release of the Not So Wavey replacement WaveOut | MME output plug-in which unlike Winamp's WaveOut (out_wave) plug-in it will by default alter the output volume / pan directly on the audio without a discernable lag (unlike out_wave's alternate volume mode which was only ever as responsive to such changes as the length of the output buffer) instead of altering the WACUP process volume
Added IPC_ENQUEUE/IPC_ENQUEUEW APIs to make it a bit simpler to just add an entry to the main playlist when none of the other information is known / needed (this is an in-process API to complement the existing WM_COPYDATA's IPC_ENQUEUEFILE/IPC_ENQUEUEFILEW handling)
Added play/enqueue/enqueue & play/sendto support on the podcast view channel list to complement the episode list options
Added a 'remove duplicates' action onto the root playlists view right-click menu so it's easier to run the action on multiple playlists
Added a generic solution for dealing with the api that the modern skin engine attempted to use only with the Nullsoft DirectSound output plug-in for offering in-skin cross-fading support (this now opens up subject to plug-in support more output plug-ins being able to be used with this modern skin feature as well as removing the messagebox that is shown when using other plug-ins that don't support this)
Added support for using the transparency within splash.png images to allow for non-rectangular loading splash screen images to be used
Added a helper mode on the placeholder 'Last.fm Scrobbler' preferences page for installing the Legacy Last.fm Desktop App & associated Winamp plug-in (too many have reported trying to do this & don't notice that it's put the plug-in into the default Winamp install location & not WACUP's plug-in folder which this additional handling should help resolve if the mode on the preference page is used!)
Added skinning of the tooltips associated with the native windows including the generically skinned window frames for a more consistent skinned experience
Added the ability to make WACUP use a user specified copy of the youtube-dl instead of relying upon WACUP to manage things (for those using shared file handling)
Added reporting of the main thread stack size on the misc diagnostics preferences (this is to help with debugging some of the crash issues being experienced)
Added the ability to 'shift + click' on the visualisation sub-menu to open the plug-in's configuration (if provided as well as not having to set it as active)
Added experimental support for running multiple visualisation plug-ins at the same time (see the notes when enabling the mode via the visualisation sub-menu on more about this - the visualisation plug-in preferences page intentionally doesn't allow for mananging this new mode for this iteration of the feature whilst it's being tested)
Added support for double-clicking on the classic skin playlist editor action buttons to replicate what Winamp does whilst WACUP keeps using standard OS menus
Added the SNESAmp plug-in (for SPC playback support) as an option during installation to hopefully resolve some of the installation issues that have been recently reported with the plug-in
Added reporting of the main stack usage in the crash reports to try to better help diagnose some issues
Added support within the skinned edit controls when using the replacement media library core for Control + Backspace to act as a clear edit control shortcut (instead of it not doing anything useful in adding a random square control character)

Changed the Milkdrop desktop mode handling to use a method that will work on Windows 8 & newer without it requiring additional dlls nor it having the flickering issue that's plagued this feature for years due to Windows changes (note: this change kills the mode on Windows 7 installs - I'm still looking for a nicer solution that's not affected by 32-bit vs 64-bit Windows versions as the prior solution was)
Changed the WACUP core dll to now be a VS2017 compile which was the last thing being built as part of the WACUP provided files with the older VS2008 compiler (hopefully I've caught any issues that exist from mis-matched compiler quirks that can occur)
Changed the installer to download the default modern skins if selected instead of always shipping them within the installer &/or patching copies from the 5.666 installer (this gives an ~20% saving on the main WACUP installer whilst reducing the overall download requirement for subsequent updates as the modern skins provided aren't going to be updated every build so I'll save everyone & myself some bandwidth)
Changed how the 'Stop with fadeout' option works compared to Winamp's behaviour to try not to cause the UI lock-up whilst the fadeout is in-progress
Changed how the Podcast feed updates are handled to reduce the idle resources used for a small memory reduction (it also makes crash reports a bit cleaner for me so win-win)
Changed the Playback Tracking -> Now Playing preference tab to now have the artwork logging related options (as introduced in build 5864) to now be on their own Current Artwork to better accomodate the additional feature options related to it
Changed how the DirectX 9.0c requirement by Milkdrop is handled to now be done when Milkdrop is started instead of relying on the installer to generically do this (i.e. it now won't install a minimal version of the older DirectX 9.0c runtime unless it's actually needed as some would prefer based on feedback received which should improve the initial installation time & resolve a number of false positive issues related to running the DirectX runtime during install)
Changed how the Streaming Source DSP plug-in determines the LAME encoder dll it uses to avoid older versions being used which can & will cause crashes
Changed how some of the metadata requests are being handled to hopefully minimise some of the potential locking issue seen in the crash reports & user feedback
Changed (temporarily) how background titles for main playlist entries are read for UNC based paths to lessen the likely of a title being generated for unavailable shares (more will be done to improve this so it doesn't cause the UI to lock-up for a while if the UNC location cannot be resolved)
Changed the Streaming Source plug-in to use less resources when there are no active streams
Changed how the library playlists view works when there are no playlists to make it more obvious what can be done to create or import playlists to be shown within it
Changed (again) the name of the SNESAmp wrapper plug-in as the SNESAmp plug-in installer generically removes any in_snes* filenames which can remove the WACUP wrapper
Changed more of the standard Winamp APIs to now be handled via WACUP code (this also includes deprecating ones that show no obvious sign of being actively used)
Changed the Next On Stop plug-in to now be directly part of the WACUP core which should also resolve some of the quirks with it & reduces the overhead (e.g. 2 few subclasses & a 12KB size reduction from not being a separate plug-in)
Changed how the clasic skin main window is 'hidden' vs how Winamp handles it to try & avoid it overlapping onto other monitors depending on their orientation (e.g. one above another was more likely to have parts of the window showing on the monitor below it which wasn't the expected behaviour)
Changed how the current playback position is obtained & also provided via the APIs to try to reduce any duplicate processing (this change will hopefully also resolve some of the deadlocks that have been happening from the crash reports)
Changed the video window & support to not be created if there are no compatible input plug-ins present reporting video playback support on start-up
Changed the icon provided by the original Winamp process to now be the WACUP icon as per a user request to make things more consistent in the task manager & volume mixer for WACUP
Changed where the original Winamp notification area icons are stored / accessed from to be part of the shared resources dll & related changes to support this (e.g. with the agent mode)
Changed how the notification area icons are loaded to work better on higher resolution setups (this means that the higher resolution version of the icon can be used instead of it picking the smallest & the OS upscaling which makes the icon look blurrier than it should be)
Changed the skins menu (all 3 instances of it) to now be completely managed via WACUP code instead of relying on the Winamp core & then having the partially integrated Skin Mananger plug-in re-processing the menu items from Winamp (this should make the skins menu a bit quicker to load as well as removing some of the hooking that was needed which provides a small reduction in overall message processing)
Changed some more of the menu actions to be handled via WACUP code along with fixing some missing / incomplete handling found during testing
Changed some of the menu handling to de-duplicate things between the 'main' & the 'modern' menu resources where the same sub-menus were duplicated to instead be done in a shared manner (slightly less resources & all of that)
Changed some of the integration of the Three Mode Repeat plug-in in preparation for it being merged into the WACUP core (which will be completed when the main window drawing is taken over!)
Changed some more of the discord related handling to try to fix a locking related issue seen with some setups where either an update is blocking &/or something has gone wonky with the connection to the client
Changed pressing space in the main playlist editor when configured to scroll the current playlist item into view to now also flash the playlist item if the corresponding Playlist preferences option is enabled
Changed the installer for new installs to set MDS as a supported file type against the MIDI (in_midi.dll) input plug-in
Changed how some aspects of installation are handled with leveraging the WACUP core to now better behave when updating an existing install
Changed the visualisation menu items for start/stop & configure to only be enabled if there's a valid visualisation plug-in to use
Changed how the bookmark menus are handled to better handle the library bookmarks plug-in not being installed (this is so something will be possible even if the full experience & some of the menu items are disabled due to the plug-in not being installed / enabled)
Changed to use less of the main window procedure handling from the Winamp core to better help with some of the locking issues with the recent builds as well as leaving (hopefully) just the main window drawing & the actual skin change handling under the Winamp core with everything else routing directly through the WACUP core now (aka another step closer to dropping the need for the Winamp core, yipee)
Changed how classic skins handled starting minimised (prior state or when forced via the loading shortcut properties) to do a better job in not having the windows show up until WACUP is restored to see it (there's still going to be cases where this isn't 100% such as from 3rd party plug-ins & also the legacy library window for the moment but it's still better compared to letting the Winamp core handle things)
Changed how adding or editing a podcast feed is done to better deal with slow web responses when trying to access the feed information so it now shouldn't be causing WACUP to lock-up / trigger the OS hung process handling
Changed how a number of the shared dlls are built to remove more unused code within them for almost 200KB of file size saving (not a lot in the grand scheme of things but every little helps)
Changed some of the API message handling to improve compatibility with some plug-ins along with trying to resolve some of the weirder crash reports seen over the past few months
Changed the Yule Log Twitter support to now use a non-deprecated libcurl api (which also helps to reduce the compiled libcurl size by a few KB)
Changed to use just the modern detours library instead of the previous hybrid compile with both the modern & a legacy version required for the skinned preferences scrollbar handling (this change may help with some of the conflicting weirdness experienced with the library scrollbar skinning though more needs to be done when it comes to skinned scrollbars)
Changed how some of the extraction works with the installer to better fit in with the compiler related changes & the sharing of the common runtime files
Changed to not load the specific old version of the AudioScrobbler plug-in that comes with the ml_ipod plug-in since it'll fail on all supported Windows releases due to a framework bug in the old plug-in
Changed to use a different way of handling the option for disabling always on top when a fullscreen application is detected instead of using the appbar based method from the Winamp core (this option with Winamp has been a source of odd bug reports for years so by using a Vista+ era api instead of a Win9x era api will work better along with not having a monitoring window running all of the time when not required)
Changed how the classic artwork window deals with the rating control (if visible) to reduce the rate of metadata re-querying that's done (e.g. when moving the mouse over the window)
Changed a lot of the internal WACUP core handling to now use more of the internal methods instead of the SendMessage(..) based ones that were needed before taking over the API handling (this provides a small performance boost by reducing how many messages have to be processed via the main window & in-turn any of the subclass procedures hooked on to the main window's)
Changed the WACUP general purpose plug-in API to now support a limited 'messageproc' callback solution (similar to the media library plug-ins) which helps remove a 3rd of the main window subclassing done by the WACUP provided plug-ins along with reducing the overhead involved with main window subclassing (this may make things feel a bit snappier depending on the setup as there's less things touching all of the messages going through the main window)
Changed how the generic skinned windows are created to effectively halve the time taken to create the raw window with my testing (for me this is a reduction from ~6ms to ~3ms which applied across all of the default WACUP windows is an ~20ms saving - this may not seem like a lot but any reduction is welcome though mileage will vary)
Changed it so if a plug-in has been disabled & a close is initiated that the restart message from the preferences will not be shown
Changed a number of things in preparation for replacing the Media Library core plug-in (gen_ml.dll) with an integrated WACUP replacement (this has been a long time coming but it should be worth it!)
Changed how the OpenMPT Decoder plug-in (in_mod.dll) is built to workaround a weird extreme slowness seen when initially loading the plug-in compared to all other plug-ins & supporting dlls due to a cache that's initialised when libopenmpt is being initialised
Changed the scrollbar in the main playlist editor to match the OS related scaling seen with the media library scrollbars for a more consistent visual look
Changed the handling of the 'Media Library uses same font as Playlist Editor' & 'Use freeform scrollbars when available' from the Media Library 'Appearances' preference tab to always be done without the need for these options (this just makes things simpler going forward though if you're using the legacy Media Library core plug-in then they may still be present but hopefully shouldn't be having an effect)
Changed how the 'dead' Radionomy stream urls from SHOUTcast tunein urls are handled to better ensure they'll not be added into the main playlist editor (based on a request from Discord)
Changed how the settings cache & Milkdrop plug-in work to reduce the number of cache misses when trying to process reads related to milk2_msg.ini (this makes Milkdrop a bit quicker to load)
Changed the output plug-in preference page to now manage the active output plug-in based on a dropdown listing the enabled output plug-ins instead of basing it on the selection in the output plug-in list (this is based on repeated issues with users changing the selection & not realising that will change the active output plug-in despite the note at the top of the preference page)
Changed the plug-in preference page lists to better sort the listed plug-ins to favour the active plug-ins at the top which should be less confusing compared to the mis-matched active vs disabled vs failed to load
Changed how the internet radio view is drawn so that the genre tree now has it's expand/collapse elements automatically upscaled based on the font size being used in the view (this was much needed as the clickable area in the original non-scaled mode was hard to see at times depending on screen resolution & your eye sight & the skin being used)
Changed the Skinned Prefererences handling to use the new shared skinning api which was helpful in resolve a lot of the visual issues that existed with both the new code & in comparison to the prior implementation (note: there are still a number of visual issues remaining which will be resolved in later builds)
Changed the Playlist File Remover plug-in to better ensure it's only hooking the main & playlist editor windows if it's preference option has been enabled (this is a small change to resolve some quirks)
Changed the Internet Radio view to exclusively use the new shared skinning code to resolve skinning menus not working when run under the legacy Media Library plug-in (this is only a temporary change)
Changed the installer to support using customised skins & visualisation plug-in folders (if set by the user) when updating a prior Winamp/WACUP install
Changed the installer to make downloading the curated Milkdrop2 presets to now be skipped by unchecking the item via the install customisation page
Changed the Windows Taskbar preview handling to be exclusively handled by WACUP's version of Win7Shell instead of a hybrid with the Winamp core depending on which taskbar handling mode was enabled in the preferences
Changed how Win7Shell works to now make Windows do the drawing when using a classic skin for a better experience (using a modern skin uses the existing method which sucks due to the modern skin engine)
Changed how the classic skin video window is handled when being resized & a video is playing which previously would flicker much more &/or not show the window frame until resizing completes (this needs more work as it's far from ideal but it should be better for now compared to how it was before this change)
Changed the un-skinned preferences window to also report the current WACUP version as part of the title as another way to quickly determine the WACUP version used
Changed the quality dropdown text on the MP3 encoder configuration dialog to remove the '--alt preset ' prefix so it's easier to read through the quality settings
Changed the handling of recently played items in the taskbar jumplist when the Win7Shell based implementation is enabled to try to workaround a random crash affecting some
Changed the crash reporter to better report Delphi runtime crashes (e.g. vis_mux)
Changed a number of small things try to minimise the likely causes of the stack overflow crashing issues being seen by some users
Changed how the Win7Shell plug-in works to hopefully detect when it doesn't need to be rendering the preview (this is will likely need some adjustment as Windows doesn't provide an easy way to know when it should stop which for modern skins can cause performance of the program to degrade once the preview or alt+tab or win+tab has triggered the preview rendering)
Changed a number of internal plug-in calls to avoid hitting the main window proceedure where it makes sense
Changed the Streaming Url Processor to try & better deal with weirdness seen when processing some JSON responses
Changed how the Patreon list on the About WACUP credits tab is handled so it can obtain a newer version without a specific WACUP update (which better matches with the 'About | Updates -> Patrons' preferences tab)
Changed how shuffle is handled to better ensure the first played item after a cleared playlist (e.g. using 'play' in the local library views) will be set as the first item in the shuffle table so it makes more sense when moving forward / backwards
Changed the menus within the skinned preferences window (treeview right-click & close button menus) to intentionally be un-skinned temporarily until the replacement skin support gets menu support
Changed how the updater & new build reporting works so that newer builds will be shown but they won't be automatically downloaded (if enabled to do so) unless the build is marked as suitable (this should resolve false issues reported with new beta builds not showing up via the preferences whilst allowing them to be held back until known to be generally ok for more to install)

Fixed a compatibility issue related to the local library (ml_local) plug-in & how some IPC_HOOK_TITLESW messages are sent which could cause a crash to occur for some
Fixed the probable cause of a library history view updating related crash
Fixed a modern skin loading crash due to a conflict with a patched method
Fixed an issue seen with trying to determine a file types extension that could cause a crash to occur
Fixed a crash seen due to recursively loading a folder returned from a shortcut lnk file
Fixed the prebuffer value for Not So Direct not being correctly read in on loading if it's been changed
Fixed a crash on closing when one of the WACUP output plug-ins with an integrated preference page is the current page when the preferences window is open
Fixed the library history plug-in sometimes trying to handle playback stopping events even if it's set to off via the preferences (a missing logic check)
Fixed some internal path based checks within some of the plug-ins not being as robust as needed
Fixed an issue with the Podcast preferences page that could sometimes prevent the update interval from being changed
Fixed an issue with the artwork resizing api where it might not generate the image at the specified limit & instead always output as a 600x600 image
Fixed the duration of playlist items added into the main playlist editor when dragging a folder onto it being read when not required to be read due to the current playlist title reading settings (e.g. when set to only read them on playback) which should improve the loading time for large folders compared to the prior build & removes some duplicate processing that was going in on the default title reading mode
Fixed the Not So Direct output plug-in sometimes causing a crash on closing if there's been a playback related issue earlier on during the running instance
Fixed the Not So Direct output plug-in not correctly handling higher audio channel counts (e.g. 7.1) & also some weirder arrangements as expected (e.g. when using the Matrix Mixer output plug-in which will likely be added to WACUP in the not too distant future)
Fixed a number of issues reported & seen with the classic skin smooth resizing mode where the window being resized / moved would not snap or snap in an expected manner to the other windows
Fixed Discord Rich Text Presence updates failing if the main title line is generated as a single character string (changes made will not ensure this is at least 2 characters long to work)
Fixed a main playlist editor painting issue where the background for the dead space wouldn't be correctly drawn at specific sizes due to how the area vs number of playlist items is calculated
Fixed issues with processing UTF-8 encoded lyrics data that could cause a crash / hang or gibberish to be displayed
Fixed the internal lyrics api not reporting the correct generated length of the lyrics string to display which could appear as an ellipse / random characters in the lyrics window
Fixed the possible cause of the Streaming Source plug-in causing a deadlock on early starting of the stream whilst the preferences page is currently being viewed
Fixed a number of causes of invalid parameter related crashes from the submitted crash reports
Fixed some of the slowness with scrolling actions with the Lyrics window by resolving a caching issue (more needs to be done as certain artwork & lyrics combinations are still far too slow / use too much CPU on updating the window contents)
Fixed a crash when loading the Streaming Source DSP plug-in if the LAME encoder dll cannot be found (this also adjusts some of the handling so it'll not cause a deadlock when then trying to start the stream)
Fixed the inner contents of the skinned about window not always showing due to not being set to always be visible
Fixed the probable cause of a compatibility issue between some of the visualisation plug-ins & modern skins on loading where the visible / active state of the visualisation plug-in is changed by the skin (still not 100% sure that the changes for this won't break anything else)
Fixed the probable cause of an issue seen with some crash reports where plug-in loading tries to load an invalid instance from the internal plug-in list (still not 100% sure about this as I've not been able to replicate this very occassional issue seen within the crash reports)
Fixed the probable cause of toggling the time remaining & mini-vis modes in the classic skin main window not being correctly preserved across instances
Fixed where possible the random filename generation methods sometimes incorrectly creating an empty .tmp file (e.g. would more likely occur with library playlists)
Fixed the probable cause of the podcasts view sometimes locking up on loading despite earlier attempts to avoid this
Fixed long tooltips in the Podcasts & Download views not being correctly clipped to avoid junk characters after the added ellipse
Fixed some higher bitrate files not starting to be played as expected when using NotSoASIO due to a lower than needed internal buffer
Fixed some more of the reproducible issues when trying to use NotSoASIO which would cause playback failure or crashes (it's still unstable but that seems to be more audio driver related from what I can test)
Fixed the possible cause of a hang on closing seen (likely related to the HTTP POST support & connection issues)
Fixed the close button tooltip on the generic classic skinned windows not being correctly positioned in double-size mode
Fixed the close button tooltip on the classic skinnned video window not being shown when using the non-dedicated window
Fixed a window sizing issue with Milkdrop & some modern skins where the outer window can be resized to be too small which would cause Milkdrop to self-close making it hard to resize the window to show
Fixed DSP & Visualisation plug-ins which have been hard-blocked in the WACUP core still showing as loadable via the respective preferences page
Fixed an occassional issue where M4A / MP4 based files will not always play despite the input plug-in being available & the file does exist
Fixed the 'formatinformation' metadata not being queried correctly with it often showing the generic value instead of the per plug-in details
Fixed a skin loading / changing related crash issue (seen with the rescinded beta build 5984 but might have been going on with older builds)
Fixed trying to set the taskbar text causing a crash when running in a super reduced install where a minimum number of plug-ins are enabled
Fixed some more quirks with the classic skin window snapping for windows snapped on the left & top edges which weren't snapping on the bottom & right edges with other windows
Fixed changing the pinned taskbar icon to use the Winamp icon not showing the correct icon when WACUP is not running (toggling the icon preference option is needed to apply this or re-pin WACUP as needed)
Fixed the library smart view export menu items conflicting with the menu ids of other actions & either causing an attempted smart view export &/or blocking the intended action (a better fix will come when the media library core is replaced with the WACUP provided version)
Fixed the IPC_OPEN_URL handling not working in all scenarios
Fixed an issue seen with some of the ML_IPC_GETTREE calls when the downloads node was set as a child of the podcast node in the library window where the results would stop after the podcast node (not sure how long its been doing this but correctly setting the podcast node to indicate it has children fixes this API response)
Fixed a lock-up that can occur when toggling classic skin double-size mode & WACUP trying to apply the new window position to a generic skinned window that was not created on the main UI thread (e.g. with Milkdrop)
Fixed the reproducible issues with toggling classic skin double-size mode so that all supported skinned windows should now maintain their relative positioning
Fixed the reproducible issues with classic skin window placement going wrong when doing classic -> modern -> close wacup -> modern -> classic (there is likely to be more that need fixing but it generally requires the plug-in to be fixed to avoid saving / restoring invalid window positions)
Fixed the library history view sometimes appearing to show corrupted text due to an issue with the persistence of the strings as part of the internal cache
Fixed issues with %length_seconds% within ATF string not being populated as expected (was a number of issues between the different ways of getting metadata)
Fixed some compatibility issues related to metadata reading not trying to query the input plug-ins if the shared metadata reading service returned no result
Fixed some of the crash on close issues experienced when certain DSP &/or visualisation plug-ins are active (this relates to accessing memory after unload)
Fixed the Streaming Source plug-in crashing on close due to its activity checking thread not being checked for having been correctly stopped before exiting
Fixed the Winamp version number showing on the taskbar button & in Task Manager when initially loaded which makes things look cleaner & more consistent :)
Fixed the Big Clock window not updating as expected to the current playback position or user interactions with the window when playback is currently paused
Fixed the Three Mode Repeat plug-in not correctly loading the PNG version of the repeatone.bmp image file if it exists for showing a more appropriate repeat button when manual advance is also enabled
Fixed Streaming Source title updates sometimes getting incorrectly clipped in a way that can cause DNAS servers to reject the title update
Fixed Streaming Source not setting the currently playing information if WACUP is already playing prior to this plug-in makes a connection
Fixed Intro Play not stopping playback for the last playlist entry if repeat is disabled when there's nothing else expected to be played
Fixed a crash seen when starting playback or querying the %playcount% ATF value with a corrupted library history database
Fixed (by replacing Winamp's handling) using the Numpad+1 / Numpad+3 to go back/forward by 10 playlist entries being slow
Fixed a conflict with TortoiseGit where it would prevent some of the VS2017 runtime files within the WACUP program folder from being removed on uninstall
Fixed a potential crash that could occur during install due to a combination of dll loading order related weirdness
Fixed the classic Nullsoft easter egg not working due to some of the recent changes to handle more of the actions from the Winamp core
Fixed the OpenMPT Decoder preferences not showing the actual gain & stereo separation values (missed when doing a code merge some time back it seems :( )
Fixed the 'Generate HTML playlist' option not trying to automatically open the generated HTML file in the default browser (my IPC_OPEN_URL was incomplete)
Fixed WMA metadata sometimes having the last character incorrectly clipped off due to a prior taglib related change & how the BOM in some strings are used
Fixed the classic skin video window not showing the deactivated state when switching to a generic skinned window that was not created on the main ui thread (e.g. skinned visualisation windows)
Fixed enabling visualisation or DSP plug-ins & then allowing WACUP to restart to enable the plug-ins not then having it as the expected active plug-in (assuming the input selection wasn't then changed)
Fixed a crash related to loading corrupted NDE databases (note: there still be issues & depending on the corruption a large amount of the database may no longer be accessible but this is better than a full process crash & further potential data corruption)
Fixed the probable cause of the remaining message processing stack overflow crashes seen over the 1.0.14 beta builds (which hopefully the fix applied won't break anything else)
Fixed the Discord now playing not always showing the correct status if playback is restored in a paused state
Fixed the Discord now playing mode causing the odd hangs / crashes that have been seen when the feature is enabled due to multiple threads being generated which would then cause a block on the stopping mode (thanks to Dr Flay for trying out things which finally generated crash reports that actually helped to figure out what was going on at last since this has been an issue for some for many months)
Fixed a number of internal issues when attempting to build the WACUP core using the VS2017 compiler including some weirdness with some of the preference entries showing garbled text
Fixed a metadata handling issue with the PSF player plug-in
Fixed the possible cause of some of the weirder modern skin engine related start/stopping deadlock issues seen from the crash reports
Fixed the probable cause of trying to restart a visualisation plug-in too fast causing an error to be thrown or a running visualisation plug-in preventing closing with a modern skin from completing correctly
Fixed a number of cases where I was not cleaning up locally set accelerator tables which could cause a slow memory leak in some specific scenarios if the window related to it wasn't correctly created / destroyed (the fun things you find when trying to replace API interfaces from the inside-out!)
Fixed stopping the current visualisation plug-in sometimes being a lot slower than would be liked (which could appear as modern skins acting a bit oddly for a few seconds) as well as it causing an unnecessary delay on the overall WACUP closing time
Fixed some of the Milkdrop stats output re-querying strings that won't change for a small boost in overall fps
Fixed the probable cause of some hang crashes experienced when playing YouTube videos over an unstable connection & a track change is then attempted but cannot complete
Fixed some more instances of configuration settings being saved when there's been no actual change in the settings (this may help with some Milkdrop window position quirks)
Fixed the probable cause of a deadlock experienced with a ml_ll library import when handling a file using the legacy metadata handling mode whilst also attempting to start playback with a modern skin
Fixed a number of drawing issues with the skinned up/down control (mostly due to weirdness with how the hover state was being handled)
Fixed the classic ml_ipod plug-in not able to load due to a supporting dll failure as a result of a security related feature of WACUP
Fixed an issue with the installer where one of the NSIS plug-ins might not be removed prior to the installer cleaning up after itself (the temp folder would be removed after a restart but this helps to better ensure it'll be removed completely there & then)
Fixed the Milkdrop window when going into fullscreen mode (not when using the fake fullscreen mode) often shows the edge of the window to be used before the rendering has begun
Fixed the current installer not removing older copies of the WACUP installer from it's updates folder (if any exist) from the self-update support (depending on how the installer is run the current installer may still be left in the updates folder)
Fixed the Waveform Wrapper plug-in not correctly handing off some WAV files with MP3 data in them which could cause brief blips in the audio output
Fixed Milkdrop sometimes hanging / going slower a few seconds after WACUP is loaded & the information about the current song is being displayed via the F3 toggle (most probably don't even know that option exists but it helped to more consistently replicate a loading bottle-neck on loading along with the option to show the current frame rate - I now get an almost instant 50-60FPS compared to low 20FPS before)
Fixed the Alt+3 stream info dialog for HTTPS streams handled via the in_mp3 plug-in not showing the current stream information due to a force HTTPS -> HTTP remapping to allow the in_mp3 to even work
Fixed the replacement local library plug-in not correctly handling importing some files where some of the basic expected metadata is missing which would incorrectly cause the basic guessing to be used
Fixed some of the initial slowness on loading when the classic artwork window is enabled (there's still a lot more to do related to this in general as the Winamp core drawing the main window is now hindering things but this change helps a bit at least to my eyes with a fully loaded classic skin)
Fixed the preference options on the library nodes not always working or opening to the wrong item
Fixed a compatibility issue with some older plug-ins that use the IPC_FORMAT_TITLE api (e.g. ml_dlna)
Fixed a crash with the Streaming Source plug-in when trying to process a really long playlist file path
Fixed some slowness with the initial loading of the library playlists view as well as it not auto-scrolling the selected playlist into view
Fixed the internet radio view list flickering when any form of resizing is being done to the view (a side effect of how the tree was drawn)
Fixed the second information line on the discord status sometimes showing gibberish
Fixed 'bitrate' not being correctly returned via ATF / local library imports due to a typo causing the fallback mode to be used (i.e. guesses based on the file size)
Fixed some cases of newly added items into the replacement media library not always triggering an appropriate local library view update to allow those items to be seen without manually refreshing the view
Fixed some PSF sets failing to load with the WACUP provided decoder plug-in due to some issues when the plug-in was being re-compiled & ported to build under a newer compiler to the original plug-in
Fixed converting a high bitrate / samplerate file from FLAC to OGG Vorbis generating an incomplete / broken output file (silly issue from not having a large enough temporary working buffer to use)
Fixed the format converter not always handling some encoding errors as expected causing it to remain in the processing loop
Fixed WAV files other than 16-bit not always being reported correctly via the transcoding api (is likely there's more issues with the likes of 24-bit & higher that needs to be resolved in later builds)
Fixed a number of issues with the Opus encoder so it'll now better deal with different input bit depths vs what it wants to use natively which reduces the chances of a file conversion to Opus failing
Fixed the probable cause of the Milkdrop plug-in sometimes not seeming to re-use it's prior settings on loading due to a contention access issue with the settings cache (hopefully this won't break anything else)
Fixed some quirks with the taskbar / process title text not being set as expected when the main playlist editor is empty or when scrolling is not enabled with the ' *** ' part being incorrectly added
Fixed some visual issues with the podcasts library view depending on the skinning engine & other aspects
Fixed the restoring of the shuffle table between sessions not working due to lessening the requirements on using the Winamp core & some of the hook methods that were being used now no longer get run
Fixed saving the shuffle table between sessions not correctly truncating the file (this didn't affect the behaviour but could cause the file to potentially keep growing in size depending on the maximume main playlist editor size reached)
Fixed some sizing / display issues with the about dialog when first opened (some of these issues may still occur when the skinned version is being used)
Fixed some of the modern skin information being incorrectly clipped in the 'Skins' information panel
Fixed a slow closing of WACUP if the Internet Radio view is the current library view as well as making switching to other library views not take so long
Fixed the select search (F6) & forced view refresh (F8) actions not working in the Internet Radio view
Fixed a number of causes for random crashes when loading & unloading the podcast library view when the info pane was enabled (numerous things going on including optimisations that are no longer required)
Fixed a layout issue with the channel list when the info pane is disabled for the podcast library view
Fixed the unresponsive prompt sometimes appearing when it should not have been shown
Fixed the installer not ensuring a 'Skins' folder is always created even if none of the modern skins WACUP offers were selected to be installed (this could cause issues elsewhere or when the user wants to install their own skins later on)
Fixed the second stage of setup on a first install of WACUP incorrectly showing the skin selection dialog if none of the modern skins were selected to be installed
Fixed the history plug-in not handling pausing & then resuming playback which could then cause an item to be counted as a new play depending on the mode settings
Fixed the replacement local library plug-in sometimes double incrementing the playcount provided from the history plug-in
Fixed a visual glitch when drawing the dead area of the playlist editor under a modern skin when holding down the scrollbar thumb bar & continuing to trigger a scrolling action (also changed to cache the brush used for drawing for a small performance optimisation)
Fixed a number of visual & performance issues with the initial loading of the Podcast view in particular with a larger number of feeds to load & when using a modern skin (e.g. text fonts randomly changing)
Fixed the shuffle restore mode not appearing to work due to a conflict with the Time Restore & Autoplay plug-in by default triggering a shuffle table re-init on loading (the option has now been removed from the plug-in to avoid this issue & the reason for the option being added to the plug-in no longer exists so bye bye it goes)
Fixed the taskbar preview showing a loading icon when not using the Win7Shell implementation (if Win7Shell is disabled then there's no action buttons & under a modern skin it's luck of the draw as to which window that Windows will automatically pick to use for the preview)
Fixed the podcast library view info pane going missing when restoring into view a minimised WACUP instance (this is a temporary fix as this shouldn't need a workaround to ensure it'll be seen)
Fixed the first Audio CD drive found being used to provide the library view for all other reported Audio CD drives (oops)
Fixed a locking issue that could hinder the Audio CD library view being loaded whilst trying to view / start playing a track in the main playlist
Fixed a number of random crashes related to the Artwork & Lyrics plug-ins not liking some of the weirdness seen when working on Audio CD support
Fixed the probable cause of the video window renderer not always appearing on screen & causing a blank / see-through region to appear in the window
Fixed a crash due to the Nullsoft MIDI input plug-in incorrectly being called for HTTP streams at times & it trying to download the 'file' & that never completing
Fixed the probable cause of a crash (unless it doesn't due to the Modern skin engine breaking other things) seen when switching from modern skins back to classics
Fixed the Crystal Classic Skins plug-in not always catching the native nor some of the generically skinned window due to some aspects running faster than expected
Fixed a crash due to a mismatch in the version of the memory manager service being used between plug-ins & the WACUP core & remaining parts of Winamp still in use
Fixed the probable cause of when changing between modern & classic skins the media library window ends up somewhere offscreen & becomes a hassle to get it back :(
Fixed the Twitter preference page not starting the authentication process correctly when first displayed due to an internal validation issue with port 80 proxying
Fixed some aspects related to the taskbar jumplist when the Win7Shell based implementation is enabled being run when the option to populate recently played is disabled
Fixed more cases of the Media Library window position being set as offscreen as well as adding in some additional handling to better ensure it'll be set back on screen when restarting WACUP (hopefully)
Fixed the probable cause of some podcast downloads being incorrectly marked as incomplete when they do match with what was meant to have been downloaded (the joys of multi-threading & file access locks)
Fixed the installer not always detecting customised settings folder paths
Fixed a deadlock caused by the Nullsoft MPEG Audio Decoder when starting streaming
Fixed a clipping issue on the Discord preferences page due to controls overlapping
Fixed visualisation plug-ins directly started not following the plug-in loading controls
Fixed the probable handling issues that could cause the built-in crash reporter to fail to complete depending on the severity & type of crash issue experienced
Fixed (with confirmation this time) the Discord Rich Presence updates not working correctly (this could explain some of the weirdness in update failures that's been reported but not previously able to be replicated since the feature was added for some users)
Fixed a crash view the Shuffle diagnostics preference tab at times
Fixed the updates folder not always being correctly created which could then cause preference based update actions to fail (manually running this installer or newer will resolve this issue)
Fixed the probable cause of some crashes related to using the legacy IPC_GET_BASIC_FILE_INFO api from older non-unicode compliant plug-ins
Fixed the installer not correctly dealing with trying to install over an existing Winamp install & causing a failure when the default folder is then attempted within that installation attempt
Fixed a number of crashes seen on load & on close when running under an older debugger due to how it's initialising the memory
Fixed a debug message left enabled related to skin / language pack handling testing
Fixed the add/open folder feature in the main parts of WACUP not restoring the last selected folder between use which should help improve usability (this was reported in relation to improving things for blind users)
Fixed the generically skinned windows under a classic skin not being able to be resized as expected or having their window frame drawn incorrectly after having moved the window partially off screen
Fixed the waveform seeker window tooltip not being skinned
Fixed changing the install type to portable during an in-WACUP triggered update (e.g. via the preferences page) ignoring the current install folder & instead using the default portable install folder
Fixed the probable cause of some portables related actions crashing when the input data from the calling plug-in (likely ml_pmp) is incomplete / invalid

Other small changes whilst trying to take over more of the Winamp APIs to be handled by WACUP as well as adjustments to the WACUP build process to save me some time when doing releases as well as code clean-up & reducing code duplication as things become a bit more refined :)

Updated brotli (libcurl.dll) to 1.0.9 (27 Aug 2020)
Updated cacert.pem to latest (8 Dec 2020)
Updated discord-rpc (gen_yule.dll) to latest community updates to try to resolve some hang issues occuring with it
Updated installer to be built with NSIS 3.06.1 (31 Jul 2020) which marks the 20th anniversary of NSIS!
Updated LAME (lame_enc.dll) to 3.100.2.4 (25 Aug 2020) for a 51KB size reduction due to it now using mpg123 for certain features
Updated libcurl (libcurl.dll) to 7.74.0 (9 Dec 2020)
Updated libexpat (xml.w5s) to 2.2.10 (3 Oct 2020)
Updated libjpeg-turbo (image.w5s) to 2.0.6 (16 Nov 2020)
Updated libnghttp2 (libcurl.dll) to 1.42.0 (23 Nov 2020)
Updated libopenmpt (in_mod.dll) to 0.5.4.13932 (29 Nov 2020)
Updated libsidplayfp (in_sidious.dll) to 2.0.4 (1 Oct 2020)
Updated libsndfile (libsndfile.dll) to 1.0.30 (19 Sep 2020)
Updated minizip (zlib.dll) to 2.10.5 (14 Dec 2020)
Updated mpg123 (mpg123.dll) to 1.26.3 (17 Jul 2020)
Updated Monkey's Audio (in_ape.dll) to 5.69 (9 Dec 2020)
Updated OpenSSL (libcurl.dll) to 1.1.1i (8 Dec 2020)
Updated Patreon list (23 Dec 2020)
Updated plug-in descriptions list (also helps inform about running the vis_mux.dll
Updated pugixml to 1.11.2 (15 Dec 2020)
Updated the bundled VS2017 UCRT for older Windows releases
Updated the relevant copyright dates for 2021
Updated unrar (unrar.dll) to 6.0.1 (22 Oct 2020)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 20 Dec 2020
Updated zlib-ng (zlib.dll) to latest re-based update (23 Nov 2020)


Preview Version: 1.0.13.5864
Released: 23 July 2020

Added a new initial view for the replacement Local Library plug-in (ml_ll.dll) to make it easier to get media added into it from a legacy local libary database or the main playlist or a folder along with making it easier to disable the plug-in (or the whole media library) if required if you really don't want / need it & just kept clicking next when installing WACUP :)
Added a Lyrics window (via the gen_lyric.dll plug-in so you can easily disable this!) which initially will show lyrics from embedded, LRC or TXT files from the current file but will hopefully be able to do online lookup for lyrics later on (this plug-in & internal changes will need more work as well as I need more example lyric files to ensure I'm supporting all of the types out there correctly)
Added a basic 'Lyrics' tab on the Alt+3 File Info dialog to display (if found) the raw lyrics (embedded / LRC / txt) though more will be done as the features are expanded
Added an initial updated build of the official Musepack plug-in based on the r495 revision (SV7 & SV8 support along with basic transcoding support)
Added an initial updated build of the Highly Experimental PSF Player plug-in (in_psf.dll) based on the v2.0.8 source code from Neill Corlett for Playstation Sound Format (PSF / PSF2) playback support which improves integration with WACUP (e.g. transcoding support & using the common alt+3 dialog instead of it's own)
Added reading of embedded artwork from Musepack files to the shared metadata service (as the compatible input plug-ins don't support this anyway)
Added additional checks when WACUP is started to try to better deal with broken / incomplete installs (e.g. 5.666 installed over WACUP or 3rd party plug-ins replacing required dlls)
Added a new option on the Podcast preferences page to allow for updating the basic metadata tags with the podcast feed information always instead of only if it's found to be missing (too many podcasts don't actually tag their files correctly which is why this option has been added as a means to help with the metadata quality before the newly downloaded podcast files are added into the local library database)
Added the time taken to load the main config file & main playlist editor file into the profiling options when enabled (this might be interesting to some but was mainly to help determine a slow config / playlist loading issue seen)
Added some additional responses for IPC_GET_HMENU API related to the bookmarks submenus to help reduce the code needed by the Library Bookmarks plug-in
Added the ability to open the preferences window when clicking on the main window logo (e.g. lightning bolt) in addition to the prior behaviour
Added initial support for retrieving & displaying artwork for Audio CDs subject to getting a match from the Cover Art Archive (other options will be looked into along with support for local files)
Added a temporary workaround for allowing basic playback of incorrectly named Opus files with an OGG file extension when a 3rd party Opus input plug-in already exists (this will mean some playlist entries don't display the appropriate title information but that's more a limitation with trying to force an input plug-in to do something it wasn't coded to cope with)
Added a 'Add' button to the replacement local library (ml_ll) views so it's more obvious some of the means to get additional media added into the local library from feedback
Added a 'Save as' button to the replacement local library (ml_ll) views so it's possible to save the current viewed smart view results to (for the moment) a playlist file
Added a 'Send to' button to the replacement local library (ml_ll) views to complement the style of the library playlists view & to make accessing the send to action easier
Added an 'auto' mode to Milkdrop for the Fullscreen & Windowed/Embedded handling so the window when put into fullscreen &/or created will work against the current monitor the Milkdrop window is found on (e.g. running in windowed mode on a second monitor & double-clicking it to go into Fullscreen mode will run it on the second monitor instead of the default of going to the primary monitor unless you've manually told the plug-in via the plug-in preferences to use the second monitor)
Added a new option to the 'Now Playing' logging so the currently found artwork (if available) can be saved to a specified file for external tools to make use off in addition to the existing metadata to file logging
Added a new option on the Classic Skin preferences page to allow for always using a skinned font in the playlist editor status area if the option to use a skinned font is enabled (this effectively emulates the 5.666 & earlier behaviour which may be better for some classic skins vs how it might look with the non-skinned font handling that WACUP implements)
Added a %playlist_length% to the additional ATF values recognised by the custom Taskbar Text ATF handling

Changed a lot of the internal workings of the library History plug-in to better deal with the stability issues some have been experiencing with it
Changed how generic archives (ZIP, RAR & 7Z) are handled by the playlist manager core to be ignored from expanasion if the Archive Playback input plug-in is disabled (this should make it easier to prevent such files from being added to the local library or the main playlist editor when not wanted by simply disabling the input plug-in if it's been installed)
Changed how the Library History plug-in deals with tracking of playback in relation to seeking changes which should improve the playback tracking reliability when using the percentage / end of file modes
Changed the way forced titles updates in the main playlist editor are done to try to minise the risk of the OS deciding the process has stopped responding on long running updates (e.g. ATF formatting string changes or refreshing selected items)
Changed the NDE (Nullsoft Database Engine) dll provided to now be a VS2017 compile which based on testing provides a reduction in query times (how much & whether its noticeable depends on the size of the database & the complexity of the query being run)
Changed how updating the playcount information from the Library History plug-in when using the replacement Local Library plug-in (ml_ll.dll) to be done asynchronously to avoid some ui hangs (subject to the skin & the size of the local library database to be updated)
Changed how newly downloaded (or recently found) podcasts are added when using the replacement Local Library plug-in (ml_ll.dll) to be done asynchronously to avoid some ui hangs (similar to the aim of the above change)
Changed how newly downloaded podcasts are processed for metadata updating (if configured to do so) to be done asynchronously to avoid some ui hangs (similar to the aim of the above change)
Changed some of the loading handling to remove some of the existing hooking to instead do more directly (this is part of the general transition work from using the Winamp core over to just the WACUP core)
Changed how the main playlist editor file (winamp.m3u8/m3u) is processed on start-up to deal with an odd issue of it trying to parse a streaming url playlist that's the actual stream url to be played (attention to detail is not a thing a lot of stream broadcasts sadly have) that was causing up to a 6 second delay for the rest of WACUP to continue to load (the fix drops it down to ~2ms for my test setup)
Changed the majority of the Audio CD playback handling to only be done by the input plug-in instead of a mis-match between the Winamp & WACUP cores (this makes things cleaner in that not installing / disabling the Audio CD input plug-in does entirely remove any related code from being run)
Changed the MP3 encoder plug-in to now show the LAME patch revision (e.g. 3.100.2 instead of the main version as just 3.100)
Changed the option for clicking on the main window logo to toggle the media library window to now be on the General preferences page instead of being on the Media Library preferences page (this is related to the addition of that action now allowing for the preferences window to be opened)
Changed the internet related options on the General preferences page to now be provided on their own Internet preferences page
Changed the wording on the Discord preferences page header to better reflect what is now needed instead of the older information
Changed 'Read extended info on selection' to now be 'Rebuild titles on selection' in the main playlist editor which matches the Library Playlists & better conveys what is actually being done
Changed a number of ways that the Library Podcasts plug-in works to better minimise the potential for it to cause ui hangs & to reduce the amount of disk related access it might do (helpful with media stored on slower / remote drives)
Changed how the main playlist is restored between sessions to reduce the impact of some internal processing overhead (e.g. a test 58K entry playlist of various formats went from 1.5s down to 170ms to be fully loaded)
Changed the SID (Commodore 64) file handled when sub-songs are present to now be done as though the SID file is a playlist instead of waiting for the plug-in to manually add them when viewed / played (this might irk some but it makes the loading experience much cleaner & the sub-songs will actually be created in the correct position within the playlist instead of often appearing at the start of the playlist which isn't correct)
Changed the information area in the classic skin playlist editor window to not clip the text shown as much when using a normal font compared to the fixed size when using the skinned font
Changed some aspects of how the Podcast plug-in works to reduce when the background timers it uses for updating the naviagation tree icons related to it to only be done when actually needed
Changed some of the dll delay load handling to be done via a shared method to make sure things are more consistently done & it also saves a few KB off the total install size (it helps, heh)
Changed the SNESAmp Wrapper plug-in filename to avoid some of the SNESAmp plug-in installers removing it & making it look like a failed SNESAmp install
Changed how metadata is handled with the Classic Album Art window to reduce duplication of metadata calls to make it update a bit quicker vs beforehand
Changed the Alt+3 File Info dialog initial focus to be the filepath field instead of random parts of the dialog (it also pre-selects all of the text to make it easier to quickly copy it)
Changed some of the handling related to the media library core in preparation for the replacement plug-in
Changed the Milkdrop window handling when focused to now follow the global spacebar handling when set to toggle play / pause instead of it picking a different preset (using any keyboard modifier with the spacebar when the Milkdrop window is focused will still allow for the old behaviour)
Changed Milkdrop to only save out values that are different from the default values to keep milk2.ini cleaner
Changed how custom / dynamically added preference pages are handled so that the majority of the known WACUP ones are now given a pre-defined id which resolves some issues seen with the wrong page being re-selected between sessions (this shouldn't cause any issues for 3rd party plug-ins as the allocation of the id was always subject to what the core decided it was going to do)

Fixed the placement of some of the buttons on the add / edit smart view dialog of the replacement local library plug-in
Fixed the create / save button on the add / edit smart view dialog of the replacement local library plug-in not being disabled if a preset name hasn't been specified
Fixed the currently playing item not always being shown in the appropriate state within the library history view after changing the view when playback is not running
Fixed the Classic Spectrum Analyzer visualisation crashing when using the random preset action if no preset files could be located
Fixed toggling sections in the installer (especially with multiple changes) causing the reported install size to drop to zero & wrap around to being negative (i.e. showing as ~4GB)
Fixed the cause of the playback offset of some files not being tracked correctly with the Library History plug-in
Fixed the cause of leaving the Libary History view open when either corrupting some of the displayed data (the stored history was correct) &/or it causing the program to crash
Fixed reading / saving custom ATF strings for the main playlist editor not being correctly handled in all scenarios
Fixed (finally) the incompatibility between WACUP's NDE implementation & what the local library plug-in (ml_local.dll) expects that could cause some views / queries to crash (needed to allow the creation of null strings to keep it happy despite the plug-in not handling such things correctly to start with!)
Fixed some ID3v2.x tag reading issues related to less common string encoding
Fixed a crash seen when trying to load WACUP as part of a messed up install (e.g. 5.666 installed over WACUP) in some checking used to avoid issues relate to the skinned preferences handling
Fixed setting the year on newly downloaded podcasts (if configured to do so) not always handling the case of the feed not providing a published date (it now sets it to the current year if not provided)
Fixed a crash on start-up when older versions of the AdPlug (in_adlib.dll) plug-in is present (this is due to a conflict with the Winamp core trying to determine CD playback support that older versions of the plug-in doesn't correctly handle - newer versions of AdPlug don't fail & this is another plug-in that might be added to WACUP)
Fixed the agent right-click menu showing 'no playlists found' in some cases despite library playlists having been found & added into the menu
Fixed a crash when trying to play an Audio CD via the main right-click play submenu (was due to an incomplete replacement of the handling from the Winamp core which is now done all by the Audio CD plug-in)
Fixed Audio CD titles not always refreshing along with some other 'virtual' playlist entries by changing how they are treated to better ensure metadata will be queried if it possibly exists
Fixed the 'rebuild titles on selection' option in the main playlist editor not always only working on the current selection
Fixed a potential failure / crash when retrieving metadata from Audio CDs
Fixed the Library Podcasts plug-in causing other parts of WACUP to occassionally hang when it's processing a podcast feed & the Library navigation tree icon for the view is being updated (oops)
Fixed skins with extended characters in their name not being handled correctly which could cause them to fail to load after restarting the WACUP process
Fixed some other potential issues when using extended characters with some of the configuration settings
Fixed some actions causing the main playlist editor window to be redrawn when there's no obvious change which could cause flickering
Fixed some issues seen when trying to load a playlist that is invalid (i.e. no entries) but it triggers some of the actions (e.g. trying to play the first file) when it shouldn't
Fixed the settings for the SID Player (in_sidious.dll) input plug-in not being correct read / saved (which is definitely needed if you're trying to use the songlengths.txt from HVSC)
Fixed some podcasts being downloaded but having the wrong file extension applied to them which could cause them to fail to be played
Fixed the focus not being set on the edit box when opening the add/edit podcast feed dialog
Fixed the library podcast view not completing the drag+drop handling from its lists to other parts of WACUP (e.g. main playlist / local library)
Fixed some quirks with how the menu items from some of the plug-ins are added onto the Library button menu due to load time variations
Fixed how titles of files added from a parsed folder into the main playlist editor are handled when the option to only read titles on playback is enabled (not a default behaviour) to just be the filename (this doesn't run the ATF processing on the added entries & is done to better replicate the behaviour seen under Winamp 5.666 & earlier when using this title reading mode)
Fixed some issues related to DPI scaling changes & moving windows between monitors with different scaling settings (this might cause some minor regressions but it should prevent some of the main WACUP windows going all wonky until more is done with the core handling of the windows & being able to at least for classic skins scale to more than just normal or double-sized)
Fixed the Exclude Playback window not always sizing the status bar area of it's window correctly based on the currently used skin font
Fixed some of the weirdness seen when changing the size of the playlist editor font if its also set to be used by other plug-ins including the media library (the replacement media library core plug-in will further resolve this issue along with some plug-in specific changes to better handle often fast skinning updates that can with the older media library core cause it to provide an invalid font to use)
Fixed the folder to save podcast downloads into not always being created at the expected time which could cause seemingly odd download failures
Fixed the 'Window Settings' submenu not being correctly provided via the IPC_GET_HMENU API
Fixed the probable cause of some general plug-in loading related crash issues
Fixed the installer not always removing plug-ins that have been un-checked during install
Fixed the first supported file within a folder sometimes not being provided to a provided callback method when using the playlist manager directory loader (e.g. missing the first file from a folder added to ml_ll)
Fixed some library search strings with incomplete quotes causing a crash due to incorrect string length validation within the NDE parser
Fixed some slowness found with the loading of NDE databases to provide a small redecution in loading times (is around 5% on my dev install)
Fixed the async albumart api sometimes failing valid requests (this showed up during the development of the Lyrics plug-in so shouldn't have been seen with prior WACUP builds)
Fixed the albumart cache not returning expected results for size limited requests if width & height of the cached image is not matching
Fixed the probable cause of a crash during initial loading of the podcasts view when a podcast feeds update is already in progress (still not 100% on this change but it's better than doing nothing)
Fixed a drawing issue with the selected/total area on classic skins where it wasn't completely filling in the area with background element which for some skins looked wrong due to using a different colour
Fixed genre strings like "(33)Instrumental" of "(12") not being correctly parsed to the actual genre string (one of those ID3 tagging quirks I definitely wasn't aware off)
Fixed the grouped enqueue & play button sometimes not being shown in the correct state (with it instead defaulting to the play state) due to some inconsistency with the media library api being used
Fixed the podcast feed items not always being shown for the podcast feed in the list when the podcasts view is loaded (this would most often affect the first podcast feed in the list of feeds)
Fixed the probable cause of random display corruption in some of the library lists (e.g. history or replacement local library) related to some of the strings to be shown
Fixed youtu.be urls not being handled as expected
Fixed the custom Taskbar Text ATF string being saved with quotes around it which could keep re-adding the quotes on each time a change is made (this may require manually removing the unwanted quotes added to get it to use the string wanted if the issue was experienced)
Fixed the probable cause of no playback with media formats handled via in_vgmstream & using the Not So YASAPI output plug-in
Fixed some drawing issues with the playlist editor scrollbar when using a modern skin (parts not being drawn or overlapping incorrectly such as when using wider than normally seen scrollbar elements)

Updated giflib (image.w5s) to 5.2.1 (24 Jun 2019)
Updated LAME (lame_enc.dll) to 3.100.2.2 (8 May 2020) for a minor speed improvement
Updated libcurl (libcurl.dll) to 7.71.1 (1 Jul 2020)
Updated libnghttp2 (libcurl.dll) to 1.41.0 (2 Jun 2020)
Updated libopenmpt (in_mod.dll) to 0.5.0.12905 (24 May 2020)
Updated libvorbis (libvorbis.dll) to 1.3.7 (4 Jul 2020)
Updated minizip (zlib.dll) to 2.10.0 (25 Jun 2020)
Updated Monkey's Audio (in_ape.dll) to 5.47 (30 Jun 2020)
Updated mpg123 (mpg123.dll) to 1.26.2 (5 Jul 2020)
Updated Patreon list
Updated rapidjson to latest re-based update (23 Jun 2020)
Updated unrar (unrar.dll) to 5.91.1 (4 Jun 2020)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 21 Jul 2020
Updated WavPack (in_wv.dll) to 5.3.2 (20 Jun 2020)
Updated zlib-ng (zlib.dll) to latest re-based update (14 Jul 2020)


Preview Version: 1.0.12.5586
Released: 21 May 2020

Everything that was done as part of build 5572 which this build is effectively a hot patch build to resolve some immediate issues

Changed the wording related to the classic skin skinned font preferences option & the alternate font option below it to make things hopefully clearer based on feedback received

Fixed ATF (Advanced Title Formatting) not working correctly on main playlist items (this was most noticeable if using a custom ATF string)
Fixed the easymove main menu item not showing the correct state if disabled
Fixed crashes related to in_cue.dll by preventing it from being loaded as it's not compatible with a number of input plug-in API changes (sorry to the user that's trying to use it)
Fixed a crash seen with some setups when loading with the Crystal Classic Skins (gen_classic.dll) plug-in enabled
Fixed the classic skin albumart window not showing the expected artwork or anything at all if its been closed (either on loading or during the running instance) & is then restored
Fixed a crash when viewing the File Information (Alt+3) dialog on urls handled by the Streaming Url Processor (in_url.dll) plug-in
Fixed the artwork handling for URLs not correctly allowing embedded requests to be actioned before then correctly failing / using the fallback artwork image
Fixed MP4 video playback being jittery due to the input plug-in used causing the video window to be force refreshed when not required
Fixed editing separator:// entries in the main playlist editor not always updating the playlist item due to a WACUP incompatibility
Fixed the probable cause of the NotSoDirect output plug-in sometimes hanging on unloading
Fixed some of the causes of NotSoASIO crashing however the main offender (the resampler) has been temporarily disabled to avoid it being used & causing more crash reports (sorry)


Preview Version: 1.0.12.5572
Released: 19 May 2020

Changed the loading of the main playlist editor to better handle obviously invalid playlist items to minimise loading time impacts they might cause elsewhere
Changed the missing files highlighter (if the option is enabled) to use some quicker checks for the more obvious invalid playist items that might be found
Changed the video window when in it's using the generic skinning option under classic skins to allow it to be re-sized like the other generic skinned window
Changed the Milkdrop plug-in handling for some of it's errors to minimise it causing a UI lock-up until responding to it
Changed how loading of the specific WACUP output plug-ins responsible for the integrated preference pages is done to not keep them loaded if not viewing the root output plug-in preferences page or starting playback
Changed the explore item folder / find file on disk modes using the ExplorerFindFile API to work with applicable separator:// items & SID sub-songs where a filename is part of the playlist entry
Changed the View File Info dialog to not provide the 'Raw Metadata' tab when the playlist item doesn't relate to a real file item that metadata can be attempted to read from
Changed the crash reporter to attempt to report how long the WACUP instance has been running for (this is to help better determine crashes early on during loading or from long running instances)
Changed the /CONFIG, /INIDIR & /M3UDIR command-line options to be fully handled by WACUP & not the Winamp core which makes it now possible to correctly use relative file paths along with evironment variables
Changed the Shift / Ctrl + Home / End handling in the main playlist editor to better match how the Windows listview controls work in selecting all from the existing selection point in the appropriate direction (when using Shift) or just scrolling the top / bottom of the playlist into view (when using Ctrl)
Changed how artwork is read from WavPack & Monkey's Audio files to now be done via the shared metadata service instead of the input plug-ins which wasn't working well with the general push to handle artwork asynchronously to minimise blocking

Fixed the generic classic skinned window frames not always maintaining their minimum widths & heights (Windows messaging fun)
Fixed the probable cause of a crash with the JTFE plug-in when running in the Homeseer related live queue saving mode
Fixed a crash when trying to load the Win10Shell plug-in if the required .NET version cannot be determined (the installer was also doing checks for this but without this check it could break portable installs being moved around different machines)
Fixed the crash reporter incorrectly detecting some Windows 8.1 setups (compatibility mode appears to have been enabled in a few instances which breaks the Windows version reporting in the crash reporter)
Fixed the modern skin provided options menus not working in all cases due to internal menu id range conflicts with the library views & library playlist menus
Fixed an issue with old modern skins (I know it sounds odd) using interlaced PNG not being correctly displayed (this related to a change in build 5484 that didn't quite work as expected but this now fixes both issues)
Fixed some issues with longer than MAX_PATH (260 character) filepaths due to incomplete paths being passed to the input plug-ins or the plug-in incorrectly clipping it (there's a lot more needing to be done on these sorts of issues)
Fixed some long / invalid / missing filepaths getting replaced with just a backslash instead of being kept as the original filepath value (was due to not checking OS return values)
Fixed the library playlist view sometimes locking up due to some internal processing issues when trying to determine if the displayed file exists or not
Fixed the probable cause of some crashes seen due to accessing the artwork cache
Fixed some odder crashes seen when the IPC_GET_EXTENDED_FILE_INFOW_HOOKABLE API is invoked
Fixed some odder crashes seen when the IPC_GET_BASIC_FILE_INFO API is incorrectly invoked
Fixed a saving issue with the Add/Open Url dialog with some extended character sets
Fixed a small memory leak with the library playlists missing file checking with zip:// entries
Fixed a corruption of missing playlist item(s) added into the main playlist editor when the missing file highlighter is enabled & the playlist item has additional data / parameters after the file extension (e.g. with extended GBS playlist items)
Fixed some compatibility issues with the handling of extended GBS playlist items which could either cause a crash or the matching to find the appropriate input plug-in would fail
Fixed some compatibility issues with the return value of methods providing strings to help reduce a number of potential crash issues & the trigger for some actually seen crashes
Fixed a crash with the Waveform Seeker plug-in trying incorrectly to use in_vorbis.dll in the legacy processing mode when trying to use it had already failed
Fixed ReplayGain not being able to be calculated on files which don't already have it (bug introduced in build 5484 due to an unwanted copy + paste change for a different set of issues)
Fixed a crash seen by some & other related issues when adding items into the main playlist editor inbetween existing playlist items or at the end of the playlist list (coding is fun, eh?)
Fixed a crash when trying to load the deprecated ml_enqplay.dll plug-in as most of WACUP library plug-ins support this feature natively so the old plug-in is not needed (there's really no need for people to be trying to install the old Winamp Essentials Packs as the majority of the plug-ins from it are present with WACUP but in newer / fixed / directly integrated forms)
Fixed an issue with how triggering the previous button multiple times (user action or via the internal APIs) followed by the next button could cause incorrect titles to show on playback or not advancing as expected
Fixed the NotSoDirect output device selection not being correctly saved due to an internal code issue along with a conflict related to the settings cache when saving out struct based values
Fixed some typos in the preferences & text alignment issue in the /? command-line help
Fixed a crash when trying to load old versions of the gen_ml library plug-in (e.g. one user somehow managed to make a setup that was trying to load a version of the plug-in from 2004 - it obviously crashed!)
Fixed some of the more obvious issues with playlist items not being updated in an expected manner when reading in / needing to update their titles (is still more to do on this but it's a start)
Fixed (hopefully) an issue with PSF/PSF2 & title reading from older non-ATF compatible plug-ins not working correctly with some of the recent WACUP builds whilst trying to take over from the Winamp core on such matters
Fixed an issue where PSF files would be incorrectly handled by th vgmstream plug-in when the dedicated Highly Experimental (PSF Player) plug-in is also present (more will be done later to remove the need for a specific fix for this issue)
Fixed using shift + up in the main playlist editor not always selecting the first item in the playlist when it's the item reached
Fixed the Win10Shell plug-in not getting the paused playing state changes correctly which could cause play / pause actions to not work as expected
Fixed the titles of playing zip:// entries not being correctly updated to that of the extracted file being played due to not updating an internal API handling change
Fixed the View File Info dialog not showing anything in the 'Raw Metadata' tab for a currently playing zip:// (where retrieving that information is supported for the real file)
Fixed on the classic skin prefs page toggling the option to use the skin or normal font not enabling / disabling the alternate font option
Fixed a crash seen when trying to play a vgmstream related file which adds numerous new playlist entries into the main playlist on playback which was causing the missing files highlighter to throw a wobbly
Fixed the portable device plug-in & the related devices plug-ins not having custom descriptions shown for them in the plug-in preference lists
Fixed a number of issues related to the in_sidious / in_sidplay2 sub-song playlist entry format which was causing valid files to be marked as missing (more needs to be done to improve how this is done)
Fixed the probable cause of some crashes seen when using the NotSoDirect output plug-in & trying to play mainly FLAC files
Fixed the clasic skin album art window flickering when changing the selection or when a new item is being played & under a few other scenarios
Fixed the classic skin main window not showing when starting WACUP using the Visual Studio 2017 debugger due to it setting the initial window state to be hidden which WACUP (& the Winamp core) were obeying
Fixed the option in the replacement local library plug-in to ignore the 'The' within the view filters not being applied correctly in all of the view filters
Fixed the specical handling of the 'T' artist index in the replacement local library plug-in not correctly handling artists with the second word starting with a T (e.g. 'The The') causing the results in view filters & filter results to be lower than was correctly being reported for the 'T' artist index item
Fixed (hopefully) the intermittent crashes seen by some related to trying to get artwork from the currently playing WavPack file (this is relatd to changing how artwork is retrieved from these files in this build)
Fixed (hopefully) a number of issues when trying to use the NotSoASIO output plug-in from it not reacting to driver failures which were causing WACUP to lock-up & then crash to not working with the Realtek ASIO device (e.g. it might play a track & then stop & not play a file until the second attempt) as well as disabling the gapless playback mode since that is broken & was causing a number of the stability issues seen
Other small changes whilst trying to resolve the potential causes of some of the crash issues seen which are not fully confirmed to be noted above

Updated Patreon list
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 17 May 2020


Preview Version: 1.0.12.5500
Released: 6 May 2020

Added an option on the Taskbar preferences page to control whether WACUP is hidden from the taskbar or not when minimised (this has been defaulted to on to replicate the Winamp behaviour for this action)
Added a workaround to deal with crashes seen by the WaveOut Output plug-in (out_wave.dll)
Added a specific sort by duration action to the main playlist editor & library playlist views
Added a specific mode on the Visualisation preferences page to disable visualisation loading (this is like the equivalent mode on the DSP/Effect preferences page)
Added an option for the Discord support to automatically disable it when playback has stopped (this can allow other programs to update your Discord Rich Text without also having to close WACUP)
Added %wacup_version% as an always available ATF variable (e.g. this might be useful for the HTTP posting actions or any other related logging that might be done via Yule Log, etc)
Added an option on the Advanced preferences page to show the plug-in lists in the classic single line style instead of the default multi-line description style (this is for those that don't like or need the newer default plug-in list style)
Added IPC_HAS_METADATA_READ_SUPPORT & IPC_HAS_METADATA_WRITE_SUPPORT helper messages to quickly determine if the input plug-in responsible for a file type has the extended metadata api support for read / write
Added the 'Artist Index' filter option (which groups the filter results by the first letter of the artist) to the replacement local library plug-in (ml_ll.dll) based on forum feedback (if this works ok from testing then other variants of this index may be added e.g. album artist, genre, etc)
Added some additional resource usage information to the crash reports to help better detemine resource leak based crashes
Added resizing methods to api_albumart to complement the existing synchronous & asynchronous (WACUP addition) GetAlbumArt methods to simplify with getting artwork without each plug-in needing to do resizing if needed (this can also help reduce the overall memory usage if the artwork cache is enabled as the resized image is cached instead of the original "full fat" image that was loaded)
Added IPC_SHOWWND & IPC_HIDEWND api commands to explicitly be able to show / hide the specified windows (as determined by the IPC_GETWND parameter defines) along with some main window & library window additions for the older 2.9x era IPC_GETWND & IPC_ISWNDVISIBLE APIs)
Added compatibility support for the 3rd party "What's Playing?" plug-in so it will now make use of the settings folder instead of trying to save into the program folder (this is a shame it wasn't natively done when the plug-in was being updated until 2005 & the APIs needed were already a few years old by that time)
Added 'Manual Playlist Advance' menu items to complement the existing Repeat & Shuffle menu items (subject to the skin & menus it offers)
Added loading checks to prevent files related to the unrelated & reviled 5.8 beta from being used under WACUP (either from people manually trying to use the files from it or due to some weird installation weirdness based on a batch of crash reports received)
Added an alternative mode to the Global Hotkeys plug-in if the multimedia keys don't work (thanks to Sprite via Discord for reporting & help test this works)
Added some supporting features needed to ease the interaction of Homeseer with WACUP & the JTFE queue implementation (w.i.p. so no real details for now on this)

Changed a massive amount of the main playlist editor & playlist & related API support to now be handled via WACUP code instead of using the original Winamp code (there might be some issues / differences in behaviour that I've missed so please do tell me so I can get the compatibility / expected behaviour re-implemented)
Changed how the Windows 10 Integration plug-in (gen_win10shell.dll) is allowed to be loaded to hopefully prevent it crashing for some
Changed the installer to better handle not having an internet connection or if not allowed through the firewall by giving a useful message on what needs to be done or what can be done to workaround the issue
Changed the Portables plug-in to not have the settings cache applied to it which may help fix some of the odder crash reports seen
Changed the Cover & Tag plug-in handling for finding the built-in windows to be applied more generically to fix some other plug-ins including cases when changing the main window class & plug-ins have a hard-coded assumption of it being "Winamp v1.x"
Changed the installer to deal with most of the downloaded components & related validation in a simpler manner which should cause fewer issues going forward
Changed new installs to default to requiring the user if they later install the Sqrsoft Output plug-in (out_sqr.dll) to require it to be manually enabled before it can be used (the plug-in is causing a load of crash reports)
Changed the handling of failed HTTP stream playback to attempt to use the MP3 Decoder (in_mp3.dll) if that wasn't the plug-in already attempting to be used (e.g. builds of the 3rd party in_opus.dll plug-in will incorrectly try to handle any HTTP stream url even if it's not related to what the plug-in supports)
Changed how some of the required file paths are generated to use less code & to be correct irrespective of the owner process that is calling WACUP core methods
Changed the settings cache to pre-prime itself earlier which helps alleiviate some oddities noticed
Changed the way the font size in the information pane of the podcasts view is calculated to try to better match with the rest of WACUP irrespective of OS scaling
Changed some of the Playlist Undo plug-in handling to be done directly within the WACUP core (more will be done to move the plug-in completely into the WACUP core)
Changed how the NotSoDirect output plug-in saves it's settings to reduce unnecessary configuration saves when nothing has been changed
Changed the installer to not attempt to re-install some of the supporting files that WACUP relies upon if they're already present (this may help with some setups where updating can fail due to files not being able to be updated primarily to anti-virus &/or 3rd party software messing with things)
Changed the plug-in loaded to block a few more plug-ins that are known to cause crashes &/or conflict with the native WACUP implementation (e.g. in_wm, gen_nopro & gen_skinmanager)
Changed the podcast view initial loading to show a message until everything is ready (this is related to helping resolve the deadlock on loading crash below)
Changed to use a shared genre list between the plug-ins / libraries for a 14KB size reduction
Changed the icons in the library window navigation tree, internet radio & podcast feeds list to adjust to the size of the list text so they better match & looks better with larger font sizes (note they will be blurry until higher resolution base images are created)
Changed the input, general, library, dsp, visualisation & portable plug-in preference pages to use the newer style list layout like the output plug-in list for consistency
Changed as many of the preference pages provided via the Winamp core to now be WACUP implementations (this means most settings are now only altered when actually changed instead of being always saved when closing the preferences window which reduces the risk of data loss / settings file corruptions & so on)
Changed how background title reading is done to try to avoid hangs related to URL / UNC paths
Changed the error reporter handling to avoid attempting to also send the crash report as an email if there's no obviously configured default email client
Changed the main config reading method to now be WACUP handled (this removes reading some config values which can be done elsewhere or are not needed)
Changed the artwork handling of Opus files to be read via the WACUP shared metadata service instead of relying upon input plug-ins (this may help to resolve a stability issue seen when using in_bpopus & allows artwork to still work with the alternative in_opus plug-in that some users have been using)
Changed how the seek bar is handled under classic skins which now allows its information message to match the WACUP long times formatting option)
Changed the IPC_GET_PLAYING_TITLE & IPC_GET_PLAYING_FILENAME APIs to do the equivalent of a IPC_GETLISTPOS & IPC_GETPLAYLISTTITLEW / IPC_GETPLAYLISTFILEW when passing the param as 1 (this is a helper to remove one SendMessage call for cases where also knowing the result from IPC_GETLISTPOS is not needed)
Changed some more of the menu / API handling from Winamp code over to WACUP code based on issues seen with some of the crash reports to try to better diagnose what's going wrong
Changed in_cue.dll & gen_cue.dll to be part of the default list of 3rd party plug-ins not to automatically load to avoid issues if updating an existing Winamp install to a WACUP install with them present (they've been found to cause issues under both Winamp & WACUP so it's better to avoid them being loaded as it took a while to track them down as the cause of stability issues for one user)
Changed the version string shown if there's nothing playing &/or no title can be shown under modern skins to now be the current WACUP version instead of the Winamp core version (this is more like classic skins though there's some parts under a classic skin that will currently show the wrong string - more work needs to be done on replacing all of the main window handling to resolve that discrepency)
Changed how output plug-in loading is done when opening the preferences window to try to minimise a configuration saving conflict between NotSoDirect & Nullsoft DirectSound (out_ds) plug-ins (to maintain compatibility for when the default output plug-in is switched to NotSoDirect they save into the same configuration section & without out_ds always re-saving it's settings on closing even if there was no change this can cause problems if NotSoDirect is the active output plug-in - recommendation is to disable out_ds if using NotSoDirect to avoid the whole issue :) )
Changed the way the installer is built to simplify some aspects of the overall building & release process which should save me some time :)
Changed how things are handled when a crash is detected which should better prevent unnecessary code (e.g. generic skinning) from running which might be causing some crash report collections to fail
Changed how the artwork cache works to better suit the common use case whilst making it less likely to have issues when dealing with more extremely sized pieces of artwork (not a commmon case)
Changed a number of the plug-ins to use the new api_albumart changes for resizing images to remove a number of potential issues when dealing with large artwork (especially with 12500x12500px images)
Changed scrolling the mouse wheel up/down in the Milkdrop & Classic Artwork windows to change the WACUP volume (this improves consistency with other plug-in windows)
Changed how the Windows 10 Integration plug-in works to remove the need for subclassing to aid in removing it as a possible cause of some crashes
Changed how an aspect of closing is done to see if it will help resolve some of the odder crashes when WACUP is closing (normally due to plug-ins)
Changed a number of messageboxes shown (e.g. on visualisation error or when a crash has occurred) to timeout in a reasonable time instead of waiting around & causing other potential issues or leaving unwanted running processes due to not seeing / reacting to them until much later on (some issues may be missed due to this but it's probably better than what is happening for some setups when issues occur & attempts to inform are done)
Changed an internal method shared between the core & plug-ins for getting metadata to do a better job of dealing with lifetime quirks related to the passed in parameter values (relates to the playlist loading failure)
Changed how PNG images are processed to (hopefully) not break loading any that already work whilst allowing interlaced images to be correctly loaded (if it does break anything then we can blame Dr Flay for this one)
Changed what happens if the core playlist services cannot be created to now inform the user & abort continuing to load WACUP instead of allowing it to limp along in a broken state (a re-install hint is offered)
Changed how the crash reporter works to prevent it staying open in a few non critical scenarios
Changed how plug-in loading is done to better mitigate against older versions of plug-ins included with WACUP (e.g. from old Winamp Essential Packs or manually trying to re-use Winamp versions that have since been replaced with WACUP versions but are using the same filename) trying to be used & breaking / crashing WACUP
Changed a few places including the crash reporter to make it easier to distinguish between a beta & a public preview build being used
Changed how SPC titles are read with an interim solution until some issues are fixed with the SNESAmp Wrapper plug-in (this may still cause titles to show incorrectly based on the information in the local media library but it's more likely to show something nicer compared to the past few builds)

Fixed a workaround to deal with crashes seen by the DirectSound Output plug-in (out_ds.dll) not working as expected in all scenarios
Fixed a crash in the Vorbis Decoder plug-in (in_vorbis.dll) if the supporting libvorbis.dll cannot be loaded when trying to play an OGG Vorbis file
Fixed trying to use Milkdrop's (somewhat broken) desktop causing a crash due to the required vms_deskop.dll not being correctly installed for it to use
Fixed a crash when trying to generate the skin folder / filepath for the IPC_SKIN_CHANGED_NEW API message via the skins manager preference page
Fixed a crash related to column name retrieval within NDE in relation to a potential database corruption
Fixed the likely cause of a crash seen when trying to retrieve artwork for the SMTC (Windows 10) feature
Fixed the likely cause of a crash when accessing the config / about dialog of the FLAC input plug-in (based on a delay loading related issue from the crash reports)
Fixed a message handling issue in the History library plug-in preventing it correctly saving it's database on periodic save requests
Fixed the current playlist item not being drawn in the windowshaded playlist editor mode once focus has been lost along with resolving a flickering when resizing the window in that state
Fixed a potential lock-up on loading if the JTFE media library integration is enabled & the library window is slow to be created
Fixed reading of metadata from files not showing the expected data in some cases due to a replacement method not always providing the correct status result causing the valid metadata to be ignored
Fixed the likely cause of a crash seen when using the 'Open / Add file(s) to playlist' action & trying to process a playlist (or so it seemed from the crash report)
Fixed a number of crash issues related to a mis-match in the memory methods of the C run time libraries being used between the WACUP core & some of the plug-ins (especially the replacement local library plug-ins & the 'Edit Item Metadata' (Shift+E) dialog in the main playlist editor)
Fixed library playlists incorrectly showing some stream urls as missing when that check only relates to non-stream content
Fixed the title of items when being bookmarked sometimes showing as giibberish (have dropped trying to use the existing Winamp code for WACUP replacement which behaves as expected)
Fixed podcast feeds without the expected XML declaration at the start of their feed not being able to be added (this now does an alternative check which should work for both RSS & ATOM feeds showing this issue)
Fixed the podcast view sometimes failing to load correctly & eventually causing a loading deadlock crash
Fixed the vertical divider in the podcast view incorrectly showing when the information area is the only thing showing
Fixed some issues related to metadata retrieval not working as expected due to incorrect API responses
Fixed the Streaming Url Processing plug-in often reporting an incorrect title if it's not been used to play a stream it supports during the running WACUP session (this was causing issues with some of the re-worked checks to minimise re-saving the contents of the main playlist to reduce overall closing times)
Fixed the output plug-in preferences page list not looking correct depending on the OS text scaling mode being used (things should now gracefully adjust for the size of the list item)
Fixed an issue sometimes preventing a visualisation plug-in from being re-started if already used during that session
Fixed enabling/disabling plug-ins via the plug-in preference pages incorrectly selecting the plug-in when it should not have been (this would be an issue on the output, dsp & visualisation pages where the selected item determines the active plug-in)
Fixed the plug-in preference page lists not sizing correctly to the visible area including showing a horizontal scrollbar incorrectly at times
Fixed the selection not always being scrolled into view in the browse for folder dialogs (this was a regression related to build 4994 changes)
Fixed a number of the windows not restoring their position compared to how 5.666 worked (e.g. the Add/Open File/Url dialogs)
Fixed some of the bundled modern skins not correctly showing as the WACUP version due to a missing file used for install type checking
Fixed the crash reporter dialog not reacting to Escape / Alt+F4 actions as expected once the crash report collection has been completed
Fixed the undo playlist dialog not being correctly sized according to OS text scaling / high-dpi setups
Fixed the in_nsv plug-in crashing when trying to start play a stream (changed what dlls it tries to load to avoid a self-unloading issue seen)
Fixed a crash seen in the crash reports related to saving the main playlist editor
Fixed a memory leak related to embedded file artwork via the shared metadata handling
Fixed lame_enc.dll not always being installed when it should (this generally was causing the Streaming Source plug-in to fail to load in some setups)
Fixed the likely cause of a crash seen when deleting a library playlist which was the viewed playlist at the time of the deletion request
Fixed the likely cause of a hang seen when viewing a library playlist due to the missing files check being run on an UNC based server path
Fixed a crash seen when trying to query embedded artwork from Opus files with in_bpopus.dll installed as the Opus handling input plug-in (this change now completely ignores using the plug-in for embedded artwork)
Fixed the plug-in lists not displaying correctly when the Skinned Preferences option is enabled (missing icons or incorrectly sized or just showing a blank list)
Fixed the start streaming server button in the preferences not always starting the first stream source (if available) as the expected default configuration behaviour
Fixed the default playlist font size on new / reset installs being TOO LARGE (was a typo causing it to be 22px instead of 12px though should the default be a bit larger?)
Fixed enabling the Nullsoft NSV Decoder plug-in not also enabling some of the supporting component dlls needed
Fixed the cause of a lot of crashes seen due to a lifetime handling issue of some of the settings cache related objects
Fixed a crash when using the replacement local library plug-in (ml_ll.dll) to add items into the playlist via drag & drop along with some related issues due to how the internal values were being kept cached
Fixed the classic skin clutter bar view file info action not working as expected (weird winamp to wacup transition issue)
Fixed the crash reporter not always being run when some VS2017 specific C/C++ run time exceptions occurred (e.g. WACUP would crash without the crash reporter running - I hope this doesn't cause me more work...)
Fixed an occassional deadlock seen due to an issue within the locking used in one of the JTFE queue management methods
Fixed moving JTFE queued items around in the playlist sometimes flipping their actual position in the queue (the context of the queue item position was being lost which all of the other changes to the playlist handling now allows for better integration to remove a lot of the hacks that were needed)
Fixed a number of long standing JTFE queue handling issues where moving items in the playlist during that session would cause the wrong file (if there's duplicates to be selected) as well as sometimes items being incorrectly marked as being queued (especially after moving or drag+dropping items into the playlist)
Fixed the position of the sliders on the NotSoDirect preferences page not always being saved
Fixed a taglib MP3 file length reading issue related to a patch applied to avoid invalid access breaking the end of file offset detection which is needed when trying to work out the duration of a file without appropriate headers as part of the file (aka guessing the file duration from it's size & reported bitrate which doesn't work if you're not using the correct file size)
Fixed issues with item selection in the main playlist editor incorrectly persisting compared to the wanted listview style handling the WACUP implementation is aiming for (e.g. selecting an item when items were already selected was meant to select the new item & de-select the others but that wasn't happening until this build fixes things)
Fixed some menu integration issues compared to 5.666 for the replacement local library (ml_ll) & library playlists (ml_playlist) plug-ins along with removing the need for these plug-ins to subclass the playlist editor
Fixed the likely cause of a crash seen when a file is externally modified but is deemed to be related to WACUP (i.e. settings files not caught by the settings cache)
Fixed the bookmarks submenu on the 'File' menu under modern skins (that support that menu) not following the categorising options in all scenarios when the library plug-in is enabled
Fixed a crash when trying to play bookmarks via the 'File' menu under modern skins & not using the Library Bookmarks plug-in
Fixed parts of the classic skin playlist editor window flickering (this affected windowshaded mode the most & also the normal mode selected item duration which is in the bottom right corner of the window)
Fixed some of the threaded actions not always releasing the handle associated with them which over the life time of a long running WACUP session could cause a potential resource handling issue
Fixed the probable cause of some issues seen when stopping the Classic Spectrum Analyzer (vis_classic.dll) visualiation plug-in which then cause the rest of WACUP to hang & eventually crash
Fixed an issue with the artwork cache not always clearing out prior cached data when being updated (this was causing issues viewing artwork in the Local Library views as well as some long running installs)
Fixed a number of memory leaks related to the use of extreme sized artwork (e.g. 12500x12500px) causing problems across a number of the plug-ins making use of artwork
Fixed the delayed loading of dbghelp.dll failing causing a repeating set of errors about dbghelp.dll not being able to be loaded (e.g. when in low memory scenarios & WACUP has crashed)
Fixed a crash caused by NotSoDirect being called for it's current status when it's in the process of being unloaded
Fixed the main window visualisation when using a modern skin & playback is paused appearing to flicker / jump around
Fixed the main window visualisation when using a modern skin sometimes showing a solid line in the oscilloscope mode
Fixed using F3 in the Milkdrop window to show the currently playing item information not drawing it on the screen
Fixed a possible cause of some of the deadlocks seen from the crash reports when Milkdrop tries to get the currently playing title string
Fixed the Windows 10 Integration plug-in not always sending the update message for artwork changes to be correctly displayed &/or removed
Fixed a drag & drop onto a selected file in the main playlist editor incorrectly setting the new item as selected or queued if the existing item was already matching either of those conditions
Fixed a possible cause of a crash on unloading Milkdrop when trying to free its texture data
Fixed a crash when trying to get information about SID files when the in_sidious plug-in hasn't been fully initiliased
Fixed a possible cause of crash when updating the playback history in the library due to a buffer persistence issue
Fixed a crash when using the built-in taskbar preview actions to control playback (if already using the included advanced Win7Shell version then that would not crash)
Fixed some information needed for the crash reports not being correctly saved to the crash.log file in some instances
Fixed a possible cause of a crash when the requested visualisation plug-in fails & a notifying messagebox is shown but not responded to in a timely manner
Fixed a possible cause of an issue that could cause some titles when added into the main playlist editor sometimes appearing as corrupted (when force updated / played then they would show the correct title)
Fixed (hopefully completely this time!) an issue seen with the handling of the IPC_PLAYFILEW_NDE API message when adding items from the local library into the main playlist editor (ml_ll needs to replace ml_local!)
Fixed a crash in the artwork handling when attempting to resize the loaded image but not having fully ensured that there was image data loaded
Fixed an issue causing the width & height from a loaded png to be incorrectly reported as set if there were issues decoding the image (this isn't a user facing change but helps keep things cleaner internally)
Fixed an issue causing some playlist loading requests to fail due to an internal buffer handling issue when trying to determine the length of an entry prior to being loaded into the main playlist editor
Fixed a comparison issue with the Playlist Separator plug-in preventing some of the insertion actions working correctly
Fixed a hang due to some stream playlists from Tunein containing streaming urls which are named like playlist files but are the actual stream which caused WACUP to try do download the stream as a playlist (this now does some additional checking though more will need to be done but it resolves the issue seen in the handful of crash reports where this happening)
Fixed some possible metadata truncation related issues with displaying due to interim build changes & also existing issues found whilst reviewing other changes
Fixed the main playlist editor not always reading titles in the background if the window was hidden or unexpected closed (e.g. depending on how a modern skin is configured)
Fixed some additional causes of the main playlist editor under a classic skin flickering especially when in windowshaded mode & playback is active (there's still some other cases but they're being driven by the main window trying to update information on the playlist editor window which will have to be resolved once the main window drawing it taken over by WACUP code)
Fixed a possible issue related to incomplete youtube-dl related stream downloads preventing playback
Fixed a number of crashes related to mis-matched / incomplete updates (e.g. running WACUP before the update has completed) or when certain key services cannot be loaded (e.g. albumart vs gen_ff assuming it's there)
Fixed the crash reporter option for attempting to send an email incorrectly appearing as enabled even if it's been intentionally disabled (oops)
Fixed a crash related to the VGM (in_vgm_w.dll) input plug-in when it's still playing on closing with a modern skin loaded which would incorrectly keep trying to access sample data for the skin visualisation modes
Fixed a possible cause of somes crashes related to weird API accesses (these are masking some other issue from what I can tell but the crash reports aren't conclusive on what's going on)
Fixed a crash due to an older version of the Time Restore & Autoplay plug-in being installed (additional checks are now made to prevent the older plug-in being loaded when a newer updated one is already part of WACUP)
Fixed the playlist editor context menu showing twice if when using the Windows context menu action (button or Shift+F10) & you use escape to cancel the action
Fixed trying to select a newly added playlist item requiring 2 clicks for it to register the item selection after using the Add File/Folder/Url actions
Fixed the option to enable/disable using the classic skin style mouse cursors not being correctly applied across all of the skin (core mis-match issues)
Fixed some other options on the classic skin preferences page not being correctly applied until a restart of WACUP
Fixed the current WACUP version not being shown on start-up when using a classic skin with double-size enabled

Removed the option for not having the classic skin equaliser follow the global double size setting (this might have made sense on 640x480 setups but it seems superfluous nowadays - if you use it then let me know!)

Other small changes to attempt to fix some of the issues based on information from the received crash reports (e.g. library playlists & ASIO output)

Updated brotli (libcurl.dll) to latest Git commit from 19 Mar 2020
Updated libcurl (libcurl.dll) to 7.70.0 (29 Apr 2020)
Updated libopenmpt (in_mod.dll) to 0.4.12.12633 (13 Apr 2020)
Updated OpenSSL (libcurl.dll) to 1.1.1g (21 Apr 2020)
Updated Patreon list
Updated Monkey's Audio (in_ape.dll) to 5.38 (26 Apr 2020)
Updated unrar (unrar.dll) to 5.90.2 (26 Mar 2020)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 1 May 2020
Updated WavPack (in_wv.dll) to 5.3.0 (14 Apr 2020)
Updated zlib-ng (zlib.dll) to latest re-based update (27 Mar 2020)


Preview Version: 1.0.11.5456
Released: 30 April 2020

Added an option on the Taskbar preferences page to control whether WACUP is hidden from the taskbar or not when minimised (this has been defaulted to on to replicate the Winamp behaviour for this action)
Added a workaround to deal with crashes seen by the WaveOut Output plug-in (out_wave.dll)
Added a specific sort by duration action to the main playlist editor & library playlist views
Added a specific mode on the Visualisation preferences page to disable visualisation loading (this is like the equivalent mode on the DSP/Effect preferences page)
Added an option for the Discord support to automatically disable it when playback has stopped (this can allow other programs to update your Discord Rich Text without also having to close WACUP)
Added %wacup_version% as an always available ATF variable (e.g. this might be useful for the HTTP posting actions or any other related logging that might be done via Yule Log, etc)
Added an option on the Advanced preferences page to show the plug-in lists in the classic single line style instead of the default multi-line description style (this is for those that don't like or need the newer default plug-in list style)
Added IPC_HAS_METADATA_READ_SUPPORT & IPC_HAS_METADATA_WRITE_SUPPORT helper messages to quickly determine if the input plug-in responsible for a file type has the extended metadata api support for read / write
Added the 'Artist Index' filter option (which groups the filter results by the first letter of the artist) to the replacement local library plug-in (ml_ll.dll) based on forum feedback (if this works ok from testing then other variants of this index may be added e.g. album artist, genre, etc)
Added some additional resource usage information to the crash reports to help better detemine resource leak based crashes
Added resizing methods to api_albumart to complement the existing synchronous & asynchronous (WACUP addition) GetAlbumArt methods to simplify with getting artwork without each plug-in needing to do resizing if needed (this can also help reduce the overall memory usage if the artwork cache is enabled as the resized image is cached instead of the original "full fat" image that was loaded)
Added IPC_SHOWWND & IPC_HIDEWND api commands to explicitly be able to show / hide the specified windows (as determined by the IPC_GETWND parameter defines) along with some main window & library window additions for the older 2.9x era IPC_GETWND & IPC_ISWNDVISIBLE APIs)
Added compatibility support for the 3rd party "What's Playing?" plug-in so it will now make use of the settings folder instead of trying to save into the program folder (this is a shame it wasn't natively done when the plug-in was being updated until 2005 & the APIs needed were already a few years old by that time)

Changed a massive amount of the main playlist editor & playlist & related API support to now be handled via WACUP code instead of using the original Winamp code (there might be some issues / differences in behaviour that I've missed so please do tell me so I can get the compatibility / expected behaviour re-implemented)
Changed how the Windows 10 Integration plug-in (gen_win10shell.dll) is allowed to be loaded to hopefully prevent it crashing for some
Changed the installer to better handle not having an internet connection or if not allowed through the firewall by giving a useful message on what needs to be done or what can be done to workaround the issue
Changed the Portables plug-in to not have the settings cache applied to it which may help fix some of the odder crash reports seen
Changed the Cover & Tag plug-in handling for finding the built-in windows to be applied more generically to fix some other plug-ins including cases when changing the main window class & plug-ins have a hard-coded assumption of it being "Winamp v1.x"
Changed the installer to deal with most of the downloaded components & related validation in a simpler manner which should cause fewer issues going forward
Changed new installs to default to requiring the user if they later install the Sqrsoft Output plug-in (out_sqr.dll) to require it to be manually enabled before it can be used (the plug-in is causing a load of crash reports)
Changed the handling of failed HTTP stream playback to attempt to use the MP3 Decoder (in_mp3.dll) if that wasn't the plug-in already attempting to be used (e.g. builds of the 3rd party in_opus.dll plug-in will incorrectly try to handle any HTTP stream url even if it's not related to what the plug-in supports)
Changed how some of the required file paths are generated to use less code & to be correct irrespective of the owner process that is calling WACUP core methods
Changed the settings cache to pre-prime itself earlier which helps alleiviate some oddities noticed
Changed the way the font size in the information pane of the podcasts view is calculated to try to better match with the rest of WACUP irrespective of OS scaling
Changed some of the Playlist Undo plug-in handling to be done directly within the WACUP core (more will be done to move the plug-in completely into the WACUP core)
Changed how the NotSoDirect output plug-in saves it's settings to reduce unnecessary configuration saves when nothing has been changed
Changed the installer to not attempt to re-install some of the supporting files that WACUP relies upon if they're already present (this may help with some setups where updating can fail due to files not being able to be updated primarily to anti-virus &/or 3rd party software messing with things)
Changed the plug-in loaded to block a few more plug-ins that are known to cause crashes &/or conflict with the native WACUP implementation (e.g. in_wm, gen_nopro & gen_skinmanager)
Changed the podcast view initial loading to show a message until everything is ready (this is related to helping resolve the deadlock on loading crash below)
Changed to use a shared genre list between the plug-ins / libraries for a 14KB size reduction
Changed the icons in the library window navigation tree, internet radio & podcast feeds list to adjust to the size of the list text so they better match & looks better with larger font sizes (note they will be blurry until higher resolution base images are created)
Changed the input, general, library, dsp, visualisation & portable plug-in preference pages to use the newer style list layout like the output plug-in list for consistency
Changed as many of the preference pages provided via the Winamp core to now be WACUP implementations (this means most settings are now only altered when actually changed instead of being always saved when closing the preferences window which reduces the risk of data loss / settings file corruptions & so on)
Changed how background title reading is done to try to avoid hangs related to URL / UNC paths
Changed the error reporter handling to avoid attempting to also send the crash report as an email if there's no obviously configured default email client
Changed the main config reading method to now be WACUP handled (this removes reading some config values which can be done elsewhere or are not needed)
Changed the artwork handling of Opus files to be read via the WACUP shared metadata service instead of relying upon input plug-ins (this may help to resolve a stability issue seen when using in_bpopus & allows artwork to still work with the alternative in_opus plug-in that some users have been using)
Changed how the seek bar is handled under classic skins which now allows its information message to match the WACUP long times formatting option)
Changed the IPC_GET_PLAYING_TITLE & IPC_GET_PLAYING_FILENAME APIs to do the equivalent of a IPC_GETLISTPOS & IPC_GETPLAYLISTTITLEW / IPC_GETPLAYLISTFILEW when passing the param as 1 (this is a helper to remove one SendMessage call for cases where also knowing the result from IPC_GETLISTPOS is not needed)
Changed some more of the menu / API handling from Winamp code over to WACUP code based on issues seen with some of the crash reports to try to better diagnose what's going wrong
Changed in_cue.dll & gen_cue.dll to be part of the default list of 3rd party plug-ins not to automatically load to avoid issues if updating an existing Winamp install to a WACUP install with them present (they've been found to cause issues under both Winamp & WACUP so it's better to avoid them being loaded as it took a while to track them down as the cause of stability issues for one user)
Changed the version string shown if there's nothing playing &/or no title can be shown under modern skins to now be the current WACUP version instead of the Winamp core version (this is more like classic skins though there's some parts under a classic skin that will currently show the wrong string - more work needs to be done on replacing all of the main window handling to resolve that discrepency)
Changed how output plug-in loading is done when opening the preferences window to try to minimise a configuration saving conflict between NotSoDirect & Nullsoft DirectSound (out_ds) plug-ins (to maintain compatibility for when the default output plug-in is switched to NotSoDirect they save into the same configuration section & without out_ds always re-saving it's settings on closing even if there was no change this can cause problems if NotSoDirect is the active output plug-in - recommendation is to disable out_ds if using NotSoDirect to avoid the whole issue :) )
Changed the way the installer is built to simplify some aspects of the overall building & release process which should save me some time :)
Changed how things are handled when a crash is detected which should better prevent unnecessary code (e.g. generic skinning) from running which might be causing some crash report collections to fail
Changed how the artwork cache works to better suit the common use case whilst making it less likely to have issues when dealing with more extremely sized pieces of artwork (not a commmon case)
Changed a number of the plug-ins to use the new api_albumart changes for resizing images to remove a number of potential issues when dealing with large artwork (especially with 12500x12500px images)

Fixed a workaround to deal with crashes seen by the DirectSound Output plug-in (out_ds.dll) not working as expected in all scenarios
Fixed a crash in the Vorbis Decoder plug-in (in_vorbis.dll) if the supporting libvorbis.dll cannot be loaded when trying to play an OGG Vorbis file
Fixed trying to use Milkdrop's (somewhat broken) desktop causing a crash due to the required vms_deskop.dll not being correctly installed for it to use
Fixed a crash when trying to generate the skin folder / filepath for the IPC_SKIN_CHANGED_NEW API message via the skins manager preference page
Fixed a crash related to column name retrieval within NDE in relation to a potential database corruption
Fixed the likely cause of a crash seen when trying to retrieve artwork for the SMTC (Windows 10) feature
Fixed the likely cause of a crash when accessing the config / about dialog of the FLAC input plug-in (based on a delay loading related issue from the crash reports)
Fixed a message handling issue in the History library plug-in preventing it correctly saving it's database on periodic save requests
Fixed the current playlist item not being drawn in the windowshaded playlist editor mode once focus has been lost along with resolving a flickering when resizing the window in that state
Fixed a potential lock-up on loading if the JTFE media library integration is enabled & the library window is slow to be created
Fixed reading of metadata from files not showing the expected data in some cases due to a replacement method not always providing the correct status result causing the valid metadata to be ignored
Fixed the likely cause of a crash seen when using the 'Open / Add file(s) to playlist' action & trying to process a playlist (or so it seemed from the crash report)
Fixed a number of crash issues related to a mis-match in the memory methods of the C run time libraries being used between the WACUP core & some of the plug-ins (especially the replacement local library plug-ins & the 'Edit Item Metadata' (Shift+E) dialog in the main playlist editor)
Fixed library playlists incorrectly showing some stream urls as missing when that check only relates to non-stream content
Fixed the title of items when being bookmarked sometimes showing as giibberish (have dropped trying to use the existing Winamp code for WACUP replacement which behaves as expected)
Fixed podcast feeds without the expected XML declaration at the start of their feed not being able to be added (this now does an alternative check which should work for both RSS & ATOM feeds showing this issue)
Fixed the podcast view sometimes failing to load correctly & eventually causing a loading deadlock crash
Fixed the vertical divider in the podcast view incorrectly showing when the information area is the only thing showing
Fixed some issues related to metadata retrieval not working as expected due to incorrect API responses
Fixed the Streaming Url Processing plug-in often reporting an incorrect title if it's not been used to play a stream it supports during the running WACUP session (this was causing issues with some of the re-worked checks to minimise re-saving the contents of the main playlist to reduce overall closing times)
Fixed the output plug-in preferences page list not looking correct depending on the OS text scaling mode being used (things should now gracefully adjust for the size of the list item)
Fixed an issue sometimes preventing a visualisation plug-in from being re-started if already used during that session
Fixed enabling/disabling plug-ins via the plug-in preference pages incorrectly selecting the plug-in when it should not have been (this would be an issue on the output, dsp & visualisation pages where the selected item determines the active plug-in)
Fixed the plug-in preference page lists not sizing correctly to the visible area including showing a horizontal scrollbar incorrectly at times
Fixed the selection not always being scrolled into view in the browse for folder dialogs (this was a regression related to build 4994 changes)
Fixed a number of the windows not restoring their position compared to how 5.666 worked (e.g. the Add/Open File/Url dialogs)
Fixed some of the bundled modern skins not correctly showing as the WACUP version due to a missing file used for install type checking
Fixed the crash reporter dialog not reacting to Escape / Alt+F4 actions as expected once the crash report collection has been completed
Fixed the undo playlist dialog not being correctly sized according to OS text scaling / high-dpi setups
Fixed the in_nsv plug-in crashing when trying to start play a stream (changed what dlls it tries to load to avoid a self-unloading issue seen)
Fixed a crash seen in the crash reports related to saving the main playlist editor
Fixed a memory leak related to embedded file artwork via the shared metadata handling
Fixed lame_enc.dll not always being installed when it should (this generally was causing the Streaming Source plug-in to fail to load in some setups)
Fixed the likely cause of a crash seen when deleting a library playlist which was the viewed playlist at the time of the deletion request
Fixed the likely cause of a hang seen when viewing a library playlist due to the missing files check being run on an UNC based server path
Fixed a crash seen when trying to query embedded artwork from Opus files with in_bpopus.dll installed as the Opus handling input plug-in (this change now completely ignores using the plug-in for embedded artwork)
Fixed the plug-in lists not displaying correctly when the Skinned Preferences option is enabled (missing icons or incorrectly sized or just showing a blank list)
Fixed the start streaming server button in the preferences not always starting the first stream source (if available) as the expected default configuration behaviour
Fixed the default playlist font size on new / reset installs being TOO LARGE (was a typo causing it to be 22px instead of 12px though should the default be a bit larger?)
Fixed enabling the Nullsoft NSV Decoder plug-in not also enabling some of the supporting component dlls needed
Fixed the cause of a lot of crashes seen due to a lifetime handling issue of some of the settings cache related objects
Fixed a crash when using the replacement local library plug-in (ml_ll.dll) to add items into the playlist via drag & drop along with some related issues due to how the internal values were being kept cached
Fixed the classic skin clutter bar view file info action not working as expected (weird winamp to wacup transition issue)
Fixed the crash reporter not always being run when some VS2017 specific C/C++ run time exceptions occurred (e.g. WACUP would crash without the crash reporter running - I hope this doesn't cause me more work...)
Fixed an occassional deadlock seen due to an issue within the locking used in one of the JTFE queue management methods
Fixed moving JTFE queued items around in the playlist sometimes flipping their actual position in the queue (the context of the queue item position was being lost which all of the other changes to the playlist handling now allows for better integration to remove a lot of the hacks that were needed)
Fixed a number of long standing JTFE queue handling issues where moving items in the playlist during that session would cause the wrong file (if there's duplicates to be selected) as well as sometimes items being incorrectly marked as being queued (especially after moving or drag+dropping items into the playlist)
Fixed the position of the sliders on the NotSoDirect preferences page not always being saved
Fixed a taglib MP3 file length reading issue related to a patch applied to avoid invalid access breaking the end of file offset detection which is needed when trying to work out the duration of a file without appropriate headers as part of the file (aka guessing the file duration from it's size & reported bitrate which doesn't work if you're not using the correct file size)
Fixed issues with item selection in the main playlist editor incorrectly persisting compared to the wanted listview style handling the WACUP implementation is aiming for (e.g. selecting an item when items were already selected was meant to select the new item & de-select the others but that wasn't happening until this build fixes things)
Fixed some menu integration issues compared to 5.666 for the replacement local library (ml_ll) & library playlists (ml_playlist) plug-ins along with removing the need for these plug-ins to subclass the playlist editor
Fixed the likely cause of a crash seen when a file is externally modified but is deemed to be related to WACUP (i.e. settings files not caught by the settings cache)
Fixed the bookmarks submenu on the 'File' menu under modern skins (that support that menu) not following the categorising options in all scenarios when the library plug-in is enabled
Fixed a crash when trying to play bookmarks via the 'File' menu under modern skins & not using the Library Bookmarks plug-in
Fixed parts of the classic skin playlist editor window flickering (this affected windowshaded mode the most & also the normal mode selected item duration which is in the bottom right corner of the window)
Fixed some of the threaded actions not always releasing the handle associated with them which over the life time of a long running WACUP session could cause a potential resource handling issue
Fixed the probable cause of some issues seen when stopping the Classic Spectrum Analyzer (vis_classic.dll) visualiation plug-in which then cause the rest of WACUP to hang & eventually crash
Fixed an issue with the artwork cache not always clearing out prior cached data when being updated (this was causing issues viewing artwork in the Local Library views as well as some long running installs)
Fixed a number of memory leaks related to the use of extreme sized artwork (e.g. 12500x12500px) causing problems across a number of the plug-ins making use of artwork
Fixed the delayed loading of dbghelp.dll failing causing a repeating set of errors about dbghelp.dll not being able to be loaded (e.g. when in low memory scenarios & WACUP has crashed)

Other small changes to attempt to fix some of the issues based on information from the received crash reports (e.g. library playlists & ASIO output)

Updated brotli (libcurl.dll) to latest Git commit from 19 Mar 2020
Updated libcurl (libcurl.dll) to 7.70.0 (29 Apr 2020)
Updated libopenmpt (in_mod.dll) to 0.4.12.12633 (13 Apr 2020)
Updated OpenSSL (libcurl.dll) to 1.1.1g (21 Apr 2020)
Updated Patreon list
Updated Monkey's Audio (in_ape.dll) to 5.38 (26 Apr 2020)
Updated unrar (unrar.dll) to 5.90.2 (26 Mar 2020)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 14 Apr 2020
Updated WavPack (in_wv.dll) to 5.3.0 (14 Apr 2020)
Updated zlib-ng (zlib.dll) to latest re-based update (27 Mar 2020)


Preview Version: 1.0.9.5144
Released: 5 March 2020

Added a VU meter visualisation for classic skins to appear within the main window where the long existing spectrum analyser & oscilloscope visualisations appear
Added a replacement implementation for the classic skin video window so it will now support double-size mode (this was the last of the native windows to not support double-size mode) & all of the related handling that needed to be done to patch out & swap over to WACUP provided code for the window handling (might be a bit buggy so do report any issues with it!)
Added an option on the video preferences page that allows you under a classic skin to use a generically skinned window frame instead of the dedicated video window with its control area (this is provided if the skin is incomplete but the generic window has been skinned differently or if you just prefer having a simpler looking video window)
Added an initial build of Not So Direct (out_notsodirect.dll) which is a DirectSound output plug-in that is intended to replace the Winamp provided plug-in (out_ds.dll) (there are some features like gapless playback support which are missing though it's ultimately planned to do that handling not at the output plug-in stage but checking the stability of this new plug-in is the reason for including it now despite not being a 1:1 replacement)
Added $leftbracket() & $rightbracket() ATF methods to allow for ( and ) to be directly used in the ATF output (based on feedback received via the Discord server)
Added $padout() & $lpadout() ATF methods which act like the non-out methods but apply the padding to the string without accounting for the length of the string passed into them
Added native remove duplicate file(s) support to the main playlist editor & the library playlists (previously this was done via the JTFE plug-in but it wasn't stable so it's been re-written directly)
Added a copy of the modern skin colour editor (coloreditor.wac) to the installer & bumped it to v2.3.1 due to some minor size optimisations & resource additions (as is done to anything added to WACUP)
Added some additional reset buttons on the Discord & Twitter to make it easier to get back to the default formatting string if you've maybe gone a bit too far & messed up the string (it happens to all of us)
Added an option to the replacement local library plug-in to ignore the 'The' within the view filters (this replicates how the local library plug-in from Winamp 5.666 works at the expense of slower view loading times but you can now decide which behaviour you prefer to use - this is off by default as most haven't noticed it in a year or so of testing)
Add support to install 3 versions of the AVS visualisation plug-in (2.81d, 2.82 & Cockos Happy AVS) via the visualisation preference page for those needing AVS support (please remember that AVS likes to crash which is why it is not able to be installed by default)
Added additional options for configuring how the provided streaming server can be automatically started to also include starting the stream(s) (subject to them being correctly configured and using the provided streaming source plug-in - if using anything else then you'll need to configure that manually)
Added an updated version of the SNESAmp Wrapper plug-in which allows the 3rd party SNESAmp plug-in to work with WACUP without crashing & some general integration improvements that the wrapper brings (this will be generically installed but it will only be loaded & used if a valid SNESAmp installation is detected i.e. it should just work without you needing to do anything if you use SNESAmp)

Changed how WACUP reports it's DPI related support to Windows 10 (and earlier Windows with lesser levels of support) to start on the long road to improving High-DPI & mismatched monitor support (it's still not ideal but better than weird sub-scaling which was happening which is much worse imho)
Changed the WACUP loader to now by default be named wacup.exe whilst keeping the existing winamp.exe for required compatibility (this change minimises code duplication as much as possible between both loader instances with each exe using an appropriate icon - note: you may need to change the pinned taskbar instance based on your wanted icon preference)
Changed some more of the Winamp APIs to be handled with WACUP implementations to resolve some of the more quirkier issues seen within the auto-submitted crash reports
Changed how the WACUP loader works in combination with the original Winamp process it creates so that stdin/stdout should now be correctly passed through as required
Changed the classic skin visualisation preferences page to support the VU meter addition & some other related adjustments
Changed the configuration dialogs for the Not So Asio, Not So Direct & Not So Yasapi to now be done via native preference pages as a child of the Output plug-in preferences node (this is useful for allowing changing the configuration of the output plug-in without risking selecting a different output plug-in & filling your hard drive with a load of output as happens with inadvertently selecting out_disk)
Changed the classic skin visualisation preferences page update just the visualisation selection mode when clicking in the main window to toggle the mode instead of doing as Winamp's code which would force the whole preference page to be reloaded (aka would make it flicker which is not nice)
Changed the right-click menu handling within the video window to not have the main right-click menu as a sub-menu on it (this is more for classic skins where getting the main right-lick menu is the frame menu & the menu that was shown within the video window is now just for the active video area)
Changed how the IPC_GET_IVIDEOOUTPUT API is handled (compared to Winamp) to only create the underlying video output interface when its actually needed (for those not using video playback under WACUP but still have video support enabled then this will remove most of the overhead that video support brings vs it not being used)
Changed the default background fill colour for generic classic skinned windows to be WADLG_ITEMBG_BRUSH instead of WADLG_WNDBG_BRUSH (this is helpful for the video window changes)
Changed the video window creation handling so it will now not be created at all if video support has been intentionally disabled
Changed the default look of the video window to use the generically skinned window frame instead of the dedicated video window (see the video preferences page to change this as needed)
Changed the plug-in loading profiling option to now include the time the plug-in took to be loaded by the OS & renamed the existing option to relate to initialisation (this better reflects what was going on as well as helping me to better understand a large chunk of the time difference reported between plug-in initialisation & overall loading of plug-ins)
Changed the history, podcast, bookmarks, replaygain, internet radio & replacement local library plug-ins to now be compiled using VS2017 instead of VS2008 (this is a general change that more of the WACUP plug-ins will see over the coming builds where it makes sense to do so)
Changed the encoder (enc_*.dll) plug-ins to not use the delay load handling to resolve some odd crashes seen
Changed the WACUP provided input, output, encoder & general purpose plug-ins (in_*.dll, out_*.dll, enc_*.dll & gen_*.dll) plug-ins to now be compiled using VS2017 instead of VS2008 (this on average increases most of of the plug-ins by 5.0KB in size which isn't ideal but the better compiler & tooling support is worth the size increase for my needs for WACUP)
Changed the Ignorant Output plug-in (out_ignorant.dll) to now be built into the WACUP core (this is primarily for convenience with the core so that there's always a valid output plug-in available & it saves 4.5KB over the standalone plug-in)
Changed the WACUP provided DSP (dsp_*.dll) plug-in to now be compiled using VS2017 instead of VS2008
Changed a number of Winamp references within core & plug-in resources to instead use WACUP (more needs to be done as much less Winamp files are being used as part of a WACUP install)
Changed the win7shell & win10shell plug-ins to not be loaded even if installed when running under WINE to avoid crashes & providing options that are not appropriate to that use case
Changed the option to skin the preferences windows & other related windows to not be provided when running under WINE to avoid crashes & other issues that arise from generic subclassing
Changed how the skinned Jump to File dialog initially loads to deal with a visual glitch seen when running under WINE
Changed the handling when minimising WACUP so that it'll stay on the taskbar when the notification area icon has also been enabled unlike with 5.666 & earlier where it would disappear until the player was restored (note: if you prefer the older handling then let me know & I'll add in a compatibility option to get the prior behaviour back)
Changed the handling of HTTPS urls when passed to the legacy in_mp3 input plug-in to now be forced to attempt to play the HTTP version of the url as the plug-in is not able to correctly deal with HTTPS urls (this is not ideal but it's a means to better ensure that playing urls from podcast feeds for example will be playable instead of showing an "error syncing to stream" type error message)
Changed how PLS playlist files are written so where possible the "Version" & "NumberOfEntries" lines will be written at the start of the file when the number of entries is known (this is a small change but it can help improve the time it takes to parse a larger PLS playlist file if those values are located at the end of the playlist file)
Changed more of the WA_WA_IPC api methods to be handled via WACUP implementations instead of Winamp implementations (this also brings the addition of a IPC_WACUP_VERSION to mirror IPC_GETVERSION)
Changed the tooltip handling in the relevant classic skin windows to remove the need for the IPC_CB_GETTOOLTIPW / IPC_CB_GETTOOLTIP messages to be sent (this was only being used by the media library core plug-in option to have clicking on the bolt to show a more appropriate tooltip so it's now done directly & saves a load of windows messages being sent)
Changed the default loading behaviour of a few 3rd party plug-ins that are known to cause stability issues based on the crash reports (they can still be used but the user needs to manually enable them to be loaded once they've been installed)
Changed the archive support plug-in to not directly report the file it supports (i.e. 7Z, RAR & ZIP) to help avoid a number of conflicts when dealing with file association handling
Changed albumart.w5s to be merged together with metadata.w5s as both are key to WACUP functionality & merging helps to remove a cross-dependency that exists between them
Changed the Skin Manager plug-in to now be directly integrated into the WACUP core (keeping it as a plug-in makes little sense now with the direction WACUP is taking )
Changed the Podcasts plug-in to create & use folder. for the feed artwork information pane & some other related aspects instead of always re-downloading the image to display it to help save on bandwidth used & for quicker display of that artwork within WACUP (note: depending on how many podcast feeds you already have there might be a short lock-up on first loading the podcasts view after this change whilst the feed artwork is pulled down + there's more work that needs to be done related to this & storing the artwork)
Changed the Internet Radio library plug-in to prefer getting a pre-generated cache instead of relying upon the local client to do it (due to overall slowness in doing this & stability issues that were being seen via the crash reporter its simpler to off-load the work elsewhere which should along with other changes alleviate the stability issues plaguing this new plug-in)
Changed the Internet Radio library plug-in to remove any easily identifiable Radionomy provided streams from the services queried since they were killed off at the end of 2019 (was ~5000 but it's possible that some of their urls may still be there which can't be known until trying to play the stream url e.g. due to how the SHOUTcast service works)
Changed the $pad() ATF method to also work without an input string to help generate a fixed padding (e.g. $pad(*5) for 5 spaces or $pad(*5,#) for #####)
Changed the playback excluder handling to be called directly by the WACUP core instead of using the Winamp API which should improve its reliability & removes some of the quirks it had
Changed the installer to report itself as WACUP instead of using a generic NSIS related user-agent when downloading to resolve a complaint seen from a file scanning service
Changed the Big Bento Modern skins to no longer rely upon the bbm_sendmessage_*.exe by doing some hooking of the underlying calls the Modern skin engine does for the action running them
Changed how multiple instance detection is done to better constrain it to instances related to the installed WACUP instance (this should better help handling when running multiple installs as well as avoiding other programs that pretend to be Winamp which could even break Winamp's own multi-instance detection)
Changed the dead-lock detection handling to now make it possible to attempt to kill the bad process before resorting to the task manager (this should never be seen but sometimes 3rd party plug-ins can misbehave badly)
Changed the error reporter to also include the WACUP version in the attempted email title
Changed the IPC_EXECPLUG / IPC_EXECPLUGW APIs to accept a NULL parameter to run the currently user configured visualisation plug-in
Changed some of the media library core's drawing code to use more of the WACUP core shared GDI objects (this won't mean much but it helps to reduce some of the duplication of GDI objects used for drawing)
Changed the default behaviour of the start/stop button on the Streaming preferences page so it'll default to starting the streaming server as well as the first configured stream source if applicable (this is based off feedback received & should make it easier to start / stop streaming especially if not wanting the stream source to run in the auto-connect mode when the stream server is intentionally turned off)
Changed the installer to set the WACUP install folder to show the WACUP logo & also the installed WACUP version in it's tooltip (done as per a user request)
Changed how file version information is internally obtained to make things simpler & more consistent
Changed the external tools update action to better reflect what is installed (this helps first runs)
Changed the installer to reduce the size of the extracted copy of the 5.666 installer to exclude more files for a 40% on disk reduction
Changed the installer to use ExecDos instead of nsExec as it does the same but without an intermediate child process which A/V don't like
Changed the theming of the built-in streaming server landing page to be more dark-mode like & so it more closely aligns with WACUP's site
Changed the formatting of the information in the crash reports to remove some information no longer useful & to improve my reading of them
Changed the podcast preferences page to disable some of it's options if a subscription update is in progress to avoid a few potential issues
Changed the podcast plug-in to automatically remove incomplete downloads in the downloads list when a successful download later occurs
Changed the podcast plug-in to save the downloaded list when downloads have finished instead of waiting until the plug-in is unloaded
Changed the way the reported IP address on the Streaming preferences is determined to try to better deal with multiple adaptors/devices
Changed the Output plug-in preferences page to show a brief description of the plug-in to avoid having to change selection (which changes the output plug-in used) along with more obvious information if a plug-in is disabled or failed to load (this style of plug-in preferences page will be applied to the other pages in later builds)
Changed the installer to use supporting files in a manner that the Anti-Virus / Malware solutions find more preferable (this should reduce some of the report install issues)
Changed the installer to remove any cached legacy input plug-ins within the wavecache folder (related to the Waveform Seeker plug-in) to avoid crashes seen in some setups
Changed to not allow the loading of older versions of the Waveform Seeker plug-in (it causes issues & is wasting time with duplicate crash reports plus it's not something that should be done since WACUP includes a much newer version which fixes the issues that are being experienced)
Changed the SNESAmp Wrapper plug-in to rely upon the playlist loader to treat RSN archives (RAR compressed files) as playlists instead of the wrapper plug-in having to do it itself (more work needs to be done on this but it's better than RSNs being ignored as the first updated SNESAmp Wrapper build was doing)

Fixed a performance regression when trying to read metadata from MP3 files (especially those on slow devices like flash drives) related to the internal changes in recent builds as to how metadata is read
Fixed a crash when loading the playlist undo list & the ordering of data within the file is not in the expected manner (not sure why this occurs for some setups)
Fixed a debug message when using the Playlist File Remover hotkey being left enabled in release builds (oops it's been like it for ages & was only just noticed)
Fixed a possible cause of some input plug-in related crashes when trying to determine the appropriate input plug-in to use for playback / metadata actions
Fixed a possible failure with proxied HTTPS connections due to not setting up the connection to know about cacert.pem for relevant SSL setup & verification
Fixed the classic skin main window visualisation not working (a less than simple fix which involved changing the drawing to be fully done with WACUP code)
Fixed the playlist editor window visualisation incorrectly appearing within the middle of the main playlist editor window (this mainly affected modern skins but some installs with classic skins)
Fixed the colouriser api not being consistently initialised (this would cause excluded files not being indicated as such or the separator colouring options being disabled)
Fixed the MP4 input plug-in crashing if video support has been incompletely disabled at the time of trying to play a video
Fixed the MP4 input plug-in not handling pausing as expected
Fixed the tooltips of the main playlist editor window not showing in the correct location for a number of scenarios
Fixed some scenarios where the generically skinned windows might not maintain the minimum dimensions that are allowed
Fixed some minor optimisation issues with the generically skinned window painting
Fixed some loading related crash issues when some of the plug-ins were unexpectedly being double-hooked
Fixed the internet radio plug-in crashing in some setups when attempting to update it's statusbar text (this is based off what has been seen within the automatic crash reports)
Fixed the history plug-in not always showing a valid statusbar text message
Fixed an occasional crash when a recently downloaded podcast is attempting to be added to the replacement local library plug-in's database
Fixed IPC_GETVUDATAFUNC (generally used for the beat vis in modern skins) not returning the expected format of data (was more luck this wasn't crashing than just showing a wonky beat vis)
Fixed entering a folder path into the Add/Open URL dialog not working correctly due to an incompatibility in some of the replaced code vs the 5.666 implementation
Fixed the taskbar text not correctly showing unicode characters when the win10shell plug-in is enabled (the fun of doing things with C# code & not correctly handling subclassing)
Fixed a crash when renaming a library playlist name
Fixed a crash when saving the main playlist as a PLS playlist (was easier to replace this last piece of Winamp specific playlist saving code for WACUP provided code sans crashing)
Fixed an API message conflict (subject to plug-in updates & patches to fully resolve this) between IPC_GETSKINCURSORS & IPC_CB_VISRANDOM (both were set as 628 for some bizarre reason which is why a IPC_GETSKINCURSORS_OK set as 1628 has been added along with some other handling to re-map values between calls where possible)
Fixed an issue with the handling of the Classic Spectrum Analyser vis plug-in & it's preset / profile files
Fixed an inconsistency seen when removing library playlist(s) due to timing issues in how the update notifications were being processed
Fixed the open folder action not working correctly with zip:// and some other custom entries within the Win7Shell plug-in
Fixed the probable cause of a crash when trying to save a metadata change to a FLAC file tag due to a conflict in internal buffers being passed on
Fixed the probable cause of the playlist manager crashing due to the language service not being fully initialised in one of the service's calls
Fixed the probable cause of a crash in the Three Mode Repeat plug-in
Fixed the probable cause of a crash seen when trying to import iTunes playlists
Fixed the probable cause of some random crashes seen when saving m3u/m3u8 playlists
Fixed a crash when uninstalling input or general purpose plug-ins due to a selection change handling issue when the plug-in is in process of removal
Fixed a crash when both the WACUP agent & main WACUP program are running & you mouse over the icon (due to an issue with the IPC_GET_TASKBAR_TEXT API)
Fixed the import options on the library playlists root view right-click menu not working consistently
Fixed zip:// entries in library playlists being incorrectly handled making it seem that the index within the archive on the playlist entry was removed (it hadn't been & was correctly maintained in the actual playlist file but the checks for missing files was incorrectly altering a buffer used)
Fixed keyboard navigation not working correctly within the Podcasts view after tabbing into the embedded browser control
Fixed toggling some options within a modern skin causing the library playlists view to be switched to (due to a menu id range conflict between the plug-ins)
Fixed the explore option within the Podcasts view not opening to the appropriate folder for the downloads if there are no items selected or no downloaded file
Fixed the option on the Podcasts preference page to determine how many episodes to download not being correctly remembered
Fixed a crash seen with some Milkdrop presets when they cannot be correctly compiled (this may still not be a 100% resolution of crashes but it seems to help the cases reported)
Fixed the usage of region.txt with classic skins for basic transparency effects not being applied causing a number of classic skins to look wrong
Fixed a deadlock experienced in some setups when going from a classic skin to a modern skin due to an incomplete replacement of some of the IPC_EMBED_* apis
Fixed the archive playback plug-in repeatedly trying to clean-up folders on exit that no longer exist (this can save a few milliseconds on closing)
Fixed the queue manager window when enabled sometimes re-appearing when it's meant to be closed
Fixed the generic skinned windows not showing the correct cursor over parts of the window when double-size mode is enabled
Fixed the playback excluder not working as expected if the only item in the playlist is set as excluded
Fixed alignment & sizing issue with the installer welcome & finish pages when using OS text scaling
Fixed the drawing of the brand images on the support buttons on the about preference page when using OS text scaling
Fixed the drawing of the help images on the podcasts preference page when using OS text scaling
Fixed the skin selection dialog during setup not always closing the setup process correctly if not choosing to run WACUP
Fixed a resource leak related to modern skin preview images when using the 'Skins' preferences page
Fixed Milkdrop not correctly scaling most of its text related output when using OS text scaling (depending on whether configuration changes have already been made, it may still be necessary to manually adjust the font sizes used by Milkdrop within its configuration options)
Fixed the podcasts view loading to fix an initial selection quirk that kept occurring
Fixed a crash when using the explore item folder due to the underlying api failing
Fixed the Winamp Modern & Bento/Big Bento skin oscilloscope menus acting incorrectly (thanks victhor for the patch!)
Fixed the Yule Log plug-in not always resetting things back to default values correctly
Fixed using the Twitter support causing stability issues (e.g. crashing after closing the preferences window or random other random crashes)
Fixed an issue preventing adding new artwork (using the change or paste options) on the File Info artwork editor (still subject to input plug-in support at this time)
Fixed a number of quirks experienced when WACUP is minimised & restarted (e.g. windows becoming incorrectly closed when the process is later restored to be visible)
Fixed the first main playlist item being incorrectly drawn (especially when starting WACUP minimised) due to a font height calculation mis-match when first drawing occurs
Fixed the supporting resource dlls incorrectly using 'pack' instead of 'project' in their version information
Fixed a crash when viewing the Winamp version history due to a weird text encoding related processing failure
Fixed a file access sharing issue when trying to retrieve artwork which could prevent some file types from playing
Fixed some of the delay loaded system components (w5s) being loaded multiple times due to an existence test failure
Fixed an issue preventing the available video decoders from being initialised
Fixed a compatibility issue related to the video window changes preventing the (now old) Cover & Tag plug-in from loading
Fixed the Cover & Tag plug-in to save its settings in the correct settings folder so running as an administrator is not needed
Fixed the ClockAmp plug-in to save its settings in the correct settings folder so running as an administrator is not needed & so it doesn't break is using multiple installs
Fixed the likely cause of a hang on start-up if auto execute visualisation plug-ins on start-up & playback are both enabled
Fixed the visualisation action buttons (mostly seen in modern skins) from being double processed & possibly causing a crash
Fixed the replaygain plug-in not correctly handling not being able to write the processed results to the file
Fixed the possible cause of some of the random crashes experienced related to the drawing of the native windows
Fixed a file access sharing issue related to MP3 files which could prevent tag updates within & external of WACUP
Fixed a large memory leak when playing MP4 based video
Fixed playback of corrupted FLAC files not correctly aborting playback when the decoding issue occurs
Fixed the library Queue Manager view not drawing correctly on first loading as the selected library view
Fixed some of the weirdness seen when changing / refreshing the current skin within the current library view (this is not a complete fix as there's something weird going on within the media library core)
Fixed the Three Mode Repeat plug-in not always showing the expected classic base skin image
Fixed a conflict between the Streaming Url Processor & vgmstream input plug-ins which could prevent YouTube & related streaming urls from playing
Fixed user created colour themes via the colour theme editor with a "{coloredit}" prefix not being handled correctly (it's now removed as needed from the menus & preferences to better match expected behaviour)
Fixed a long standing modern skin engine issue causing the text within edit boxes to not be correctly sized (e.g. colour theme editor when scaled above 100% & much more)
Fixed the edit box of the web reader clipping the displayed text (related to the above change)
Fixed a possible cause of the modern skin engine crashing on unloading for some setups (based on the automatic crash report submissions)
Fixed the possible cause of some non-portable WACUP installs not having the 'pin to taskbar' option showing when running (aka Windows + related shortcut fun)
Fixed the uninstaller not removing the start menu &/or desktop icon(s) if created & then the option to create them was unchecked later on
Fixed the installer not always remembering the start menu &/or desktop icon setting depending on the installer mode currently being used
Fixed the installer not removing the start menu &/or desktop icon if the setting to have them has been changed to off whilst updating
Fixed still being able to load the vulnerable in_flv.dll plug-in (the installer would remove this but you can't help what some users try to do still)
Fixed a possible cause of the crash reporter hanging when trying to collect the initial details before handing off to another process that submits it
Fixed a settings cache issue causing the Not So Yasapi device specific settings from being read in due to a buffer truncation when priming the cache (this may have affected some other aspects but this was the only one reported)
Fixed the playback status of the Winamp Modern skin being mis-aligned by 1px when playback is paused compared to the playing & stopped conditions
Fixed the inconsistent loading of the user provided winamp.ico for the notification area icon
Fixed the win7shell plug-in not correctly recognising if it's been running under wacup.exe or winamp.exe to ensure that the jump list will open the correct (especially if pinned to the taskbar) instance
Fixed some issues with the recent & frequent items on the jump list actions provided by the win7shell plug-in when those options are enabled
Fixed restoring the JTFE playback queue between sessions causing the prior queue to be incorrectly added to the end of the playlist instead of re-using the existing playlist items
Fixed a number of issues related to moving around main playlist items in the JTFE playback queue (note: there are still some quirks which will be resolved in a later build once more of the playlist handling from the Winamp core has been replaced with all WACUP provided handling)
Fixed some quirks with the Waveform Wrapper plug-in loading validation (found whilst doing the SNESAmp Wrapper plug-in updates & integration)
Fixed a crash on loading when the SNESAmp Wrapper plug-in tries to load an old version of the SNESAmp Wrapper plug-in
Fixed the SNESAmp configuration dialog being unusable when the skinned preferences option is enabled (delphi weirdness)
Fixed the Waveform Seeker plug-in to not attempt to use the SNESAmp Wrapper plug-in for the legacy processing mode (without this it can cause a range of various stability issues)
Fixed the Not So Direct configuration changes being re-read in between sessions depending on how & when the preferences are accessed vs using the plug-in (if at all) for playback
Fixed a crash related to adding a new bookmark
Fixed the likely cause of a crash / deadlock seen under modern skins when using the SqrSoft Advanced Crossfading Output plug-in (primarily seen from FLAC playback in crash reports)
Fixed an issue introduced by the changes to deal with the IPC_GETSKINCURSORS & IPC_CB_VISRANDOM API message conflict
Fixed the likely cause of a crash / deadlock seen when trying to get metadata for the currenty playing item whilst a local media library (ml_local.dll) file scan is in-progress
Fixed the likely cause of some on close related crashes seen primarily when a modern skin was active at the time of closing
Fixed a combined crash issue related to modern skin loading & how the vis_classic plug-in deals with inappropriate window sizes
Fixed a crash when trying to change the artwork file used on the Twitter & Artwork preference pages (simpler is often better)
Fixed the video window not displaying correctly if the input plug-in doesn't complete opening the video renderer (e.g. MP4 files with a single image video track)
Fixed a compatibility issue vs 5.666 which was preventing the old 3rd party Dynamic Library plug-in from loading its preferences (related to the WACUP settings cache)
Fixed the winshaded equaliser window not being re-drawn on video window volume updates
Fixed a compatibility issue with the Icon Pack Installers which look for a gen_tray.dll (this was merged into the WACUP core but a stub dll is now provided to allow the installer checks to work)
Fixed some visual issues with the classic about window especially when using the skinned version of the window (it now tries to re-size the inner parts to the outer frame & a few other tweaks)
Fixed some visual issues with the skinned preferences window especially it incorrectly clipping its size or not showing anything within it when on a high dpi &/or OS text scaling enabled setup (there is still more to do related to this)

Other small changes to attempt to fix some of the issues from the crash reports, preparatory work to remove the need for a winamp.original child process & other code changes
Updated the Big Bento Modern skins to v1.1.5.1 (22 Jan 2020)
Updated cacert.pem to latest (1 Jan 2020)
Updated libcurl (libcurl.dll) to 7.69.0 (4 Mar 2020)
Updated libjpeg-turbo (image.w5s) to 2.0.4 (31 Dec 2019)
Updated libopenmpt (in_mod.dll) to 0.4.11.12392 (22 Dec 2019)
Updated libvorbis (libvorbis.dll) to the latest Git commit from 18 Jan 2020
Updated minizip (zlib.dll) to 2.9.2 (12 Feb 2020)
Updated Monkey's Audio (in_ape.dll) to 5.20 (24 Feb 2020)
Updated mpg123 (mpg123.dll) to 1.25.13 (26 Oct 2019)
Updated installer to be built with NSIS 3.05 (15 Dec 2019)
Updated the Milkdrop2 presets by Fumbling_Foo for your visual enjoyment
Updated unrar (unrar.dll) to 5.90.1 (29 Jan 2019)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 27 Feb 2020
Updated WavPack (in_wv.dll) to 5.2.1 (31 Jan 2020)


Preview Version: 1.0.9.5118
Released: 28 February 2020

Added a VU meter visualisation for classic skins to appear within the main window where the long existing spectrum analyser & oscilloscope visualisations appear
Added a replacement implementation for the classic skin video window so it will now support double-size mode (this was the last of the native windows to not support double-size mode) & all of the related handling that needed to be done to patch out & swap over to WACUP provided code for the window handling (might be a bit buggy so do report any issues with it!)
Added an option on the video preferences page that allows you under a classic skin to use a generically skinned window frame instead of the dedicated video window with its control area (this is provided if the skin is incomplete but the generic window has been skinned differently or if you just prefer having a simpler looking video window)
Added an initial build of Not So Direct (out_notsodirect.dll) which is a DirectSound output plug-in that is intended to replace the Winamp provided plug-in (out_ds.dll) (there are some features like gapless playback support which are missing though it's ultimately planned to do that handling not at the output plug-in stage but checking the stability of this new plug-in is the reason for including it now despite not being a 1:1 replacement)
Added $leftbracket() & $rightbracket() ATF methods to allow for ( and ) to be directly used in the ATF output (based on feedback received via the Discord server)
Added $padout() & $lpadout() ATF methods which act like the non-out methods but apply the padding to the string without accounting for the length of the string passed into them
Added native remove duplicate file(s) support to the main playlist editor & the library playlists (previously this was done via the JTFE plug-in but it wasn't stable so it's been re-written directly)
Added a copy of the modern skin colour editor (coloreditor.wac) to the installer & bumped it to v2.3.1 due to some minor size optimisations & resource additions (as is done to anything added to WACUP)
Added some additional reset buttons on the Discord & Twitter to make it easier to get back to the default formatting string if you've maybe gone a bit too far & messed up the string (it happens to all of us)
Added an option to the replacement local library plug-in to ignore the 'The' within the view filters (this replicates how the local library plug-in from Winamp 5.666 works at the expense of slower view loading times but you can now decide which behaviour you prefer to use - this is off by default as most haven't noticed it in a year or so of testing)
Add support to install 3 versions of the AVS visualisation plug-in (2.81d, 2.82 & Cockos Happy AVS) via the visualisation preference page for those needing AVS support (please remember that AVS likes to crash which is why it is not able to be installed by default)
Added additional options for configuring how the provided streaming server can be automatically started to also include starting the stream(s) (subject to them being correctly configured and using the provided streaming source plug-in - if using anything else then you'll need to configure that manually)
Added an updated version of the SNESAmp Wrapper plug-in which allows the 3rd party SNESAmp plug-in to work with WACUP without crashing & some general integration improvements that the wrapper brings (this will be generically installed but it will only be loaded & used if a valid SNESAmp installation is detected i.e. it should just work without you needing to do anything if you use SNESAmp)

Changed how WACUP reports it's DPI related support to Windows 10 (and earlier Windows with lesser levels of support) to start on the long road to improving High-DPI & mismatched monitor support (it's still not ideal but better than weird sub-scaling which was happening which is much worse imho)
Changed the WACUP loader to now by default be named wacup.exe whilst keeping the existing winamp.exe for required compatibility (this change minimises code duplication as much as possible between both loader instances with each exe using an appropriate icon - note: you may need to change the pinned taskbar instance based on your wanted icon preference)
Changed some more of the Winamp APIs to be handled with WACUP implementations to resolve some of the more quirkier issues seen within the auto-submitted crash reports
Changed how the WACUP loader works in combination with the original Winamp process it creates so that stdin/stdout should now be correctly passed through as required
Changed the classic skin visualisation preferences page to support the VU meter addition & some other related adjustments
Changed the configuration dialogs for the Not So Asio, Not So Direct & Not So Yasapi to now be done via native preference pages as a child of the Output plug-in preferences node (this is useful for allowing changing the configuration of the output plug-in without risking selecting a different output plug-in & filling your hard drive with a load of output as happens with inadvertently selecting out_disk)
Changed the classic skin visualisation preferences page update just the visualisation selection mode when clicking in the main window to toggle the mode instead of doing as Winamp's code which would force the whole preference page to be reloaded (aka would make it flicker which is not nice)
Changed the right-click menu handling within the video window to not have the main right-click menu as a sub-menu on it (this is more for classic skins where getting the main right-lick menu is the frame menu & the menu that was shown within the video window is now just for the active video area)
Changed how the IPC_GET_IVIDEOOUTPUT API is handled (compared to Winamp) to only create the underlying video output interface when its actually needed (for those not using video playback under WACUP but still have video support enabled then this will remove most of the overhead that video support brings vs it not being used)
Changed the default background fill colour for generic classic skinned windows to be WADLG_ITEMBG_BRUSH instead of WADLG_WNDBG_BRUSH (this is helpful for the video window changes)
Changed the video window creation handling so it will now not be created at all if video support has been intentionally disabled
Changed the default look of the video window to use the generically skinned window frame instead of the dedicated video window (see the video preferences page to change this as needed)
Changed the plug-in loading profiling option to now include the time the plug-in took to be loaded by the OS & renamed the existing option to relate to initialisation (this better reflects what was going on as well as helping me to better understand a large chunk of the time difference reported between plug-in initialisation & overall loading of plug-ins)
Changed the history, podcast, bookmarks, replaygain, internet radio & replacement local library plug-ins to now be compiled using VS2017 instead of VS2008 (this is a general change that more of the WACUP plug-ins will see over the coming builds where it makes sense to do so)
Changed the encoder (enc_*.dll) plug-ins to not use the delay load handling to resolve some odd crashes seen
Changed the WACUP provided input, output, encoder & general purpose plug-ins (in_*.dll, out_*.dll, enc_*.dll & gen_*.dll) plug-ins to now be compiled using VS2017 instead of VS2008 (this on average increases most of of the plug-ins by 5.0KB in size which isn't ideal but the better compiler & tooling support is worth the size increase for my needs for WACUP)
Changed the Ignorant Output plug-in (out_ignorant.dll) to now be built into the WACUP core (this is primarily for convenience with the core so that there's always a valid output plug-in available & it saves 4.5KB over the standalone plug-in)
Changed the WACUP provided DSP (dsp_*.dll) plug-in to now be compiled using VS2017 instead of VS2008
Changed a number of Winamp references within core & plug-in resources to instead use WACUP (more needs to be done as much less Winamp files are being used as part of a WACUP install)
Changed the win7shell & win10shell plug-ins to not be loaded even if installed when running under WINE to avoid crashes & providing options that are not appropriate to that use case
Changed the option to skin the preferences windows & other related windows to not be provided when running under WINE to avoid crashes & other issues that arise from generic subclassing
Changed how the skinned Jump to File dialog initially loads to deal with a visual glitch seen when running under WINE
Changed the handling when minimising WACUP so that it'll stay on the taskbar when the notification area icon has also been enabled unlike with 5.666 & earlier where it would disappear until the player was restored (note: if you prefer the older handling then let me know & I'll add in a compatibility option to get the prior behaviour back)
Changed the handling of HTTPS urls when passed to the legacy in_mp3 input plug-in to now be forced to attempt to play the HTTP version of the url as the plug-in is not able to correctly deal with HTTPS urls (this is not ideal but it's a means to better ensure that playing urls from podcast feeds for example will be playable instead of showing an "error syncing to stream" type error message)
Changed how PLS playlist files are written so where possible the "Version" & "NumberOfEntries" lines will be written at the start of the file when the number of entries is known (this is a small change but it can help improve the time it takes to parse a larger PLS playlist file if those values are located at the end of the playlist file)
Changed more of the WA_WA_IPC api methods to be handled via WACUP implementations instead of Winamp implementations (this also brings the addition of a IPC_WACUP_VERSION to mirror IPC_GETVERSION)
Changed the tooltip handling in the relevant classic skin windows to remove the need for the IPC_CB_GETTOOLTIPW / IPC_CB_GETTOOLTIP messages to be sent (this was only being used by the media library core plug-in option to have clicking on the bolt to show a more appropriate tooltip so it's now done directly & saves a load of windows messages being sent)
Changed the default loading behaviour of a few 3rd party plug-ins that are known to cause stability issues based on the crash reports (they can still be used but the user needs to manually enable them to be loaded once they've been installed)
Changed the archive support plug-in to not directly report the file it supports (i.e. 7Z, RAR & ZIP) to help avoid a number of conflicts when dealing with file association handling
Changed albumart.w5s to be merged together with metadata.w5s as both are key to WACUP functionality & merging helps to remove a cross-dependency that exists between them
Changed the Skin Manager plug-in to now be directly integrated into the WACUP core (keeping it as a plug-in makes little sense now with the direction WACUP is taking )
Changed the Podcasts plug-in to create & use folder. for the feed artwork information pane & some other related aspects instead of always re-downloading the image to display it to help save on bandwidth used & for quicker display of that artwork within WACUP (note: depending on how many podcast feeds you already have there might be a short lock-up on first loading the podcasts view after this change whilst the feed artwork is pulled down + there's more work that needs to be done related to this & storing the artwork)
Changed the Internet Radio library plug-in to prefer getting a pre-generated cache instead of relying upon the local client to do it (due to overall slowness in doing this & stability issues that were being seen via the crash reporter its simpler to off-load the work elsewhere which should along with other changes alleviate the stability issues plaguing this new plug-in)
Changed the Internet Radio library plug-in to remove any easily identifiable Radionomy provided streams from the services queried since they were killed off at the end of 2019 (was ~5000 but it's possible that some of their urls may still be there which can't be known until trying to play the stream url e.g. due to how the SHOUTcast service works)
Changed the $pad() ATF method to also work without an input string to help generate a fixed padding (e.g. $pad(*5) for 5 spaces or $pad(*5,#) for #####)
Changed the playback excluder handling to be called directly by the WACUP core instead of using the Winamp API which should improve its reliability & removes some of the quirks it had
Changed the installer to report itself as WACUP instead of using a generic NSIS related user-agent when downloading to resolve a complaint seen from a file scanning service
Changed the Big Bento Modern skins to no longer rely upon the bbm_sendmessage_*.exe by doing some hooking of the underlying calls the Modern skin engine does for the action running them
Changed how multiple instance detection is done to better constrain it to instances related to the installed WACUP instance (this should better help handling when running multiple installs as well as avoiding other programs that pretend to be Winamp which could even break Winamp's own multi-instance detection)
Changed the dead-lock detection handling to now make it possible to attempt to kill the bad process before resorting to the task manager (this should never be seen but sometimes 3rd party plug-ins can misbehave badly)
Changed the error reporter to also include the WACUP version in the attempted email title
Changed the IPC_EXECPLUG / IPC_EXECPLUGW APIs to accept a NULL parameter to run the currently user configured visualisation plug-in
Changed some of the media library core's drawing code to use more of the WACUP core shared GDI objects (this won't mean much but it helps to reduce some of the duplication of GDI objects used for drawing)
Changed the default behaviour of the start/stop button on the Streaming preferences page so it'll default to starting the streaming server as well as the first configured stream source if applicable (this is based off feedback received & should make it easier to start / stop streaming especially if not wanting the stream source to run in the auto-connect mode when the stream server is intentionally turned off)
Changed the installer to set the WACUP install folder to show the WACUP logo & also the installed WACUP version in it's tooltip (done as per a user request)
Changed how file version information is internally obtained to make things simpler & more consistent
Changed the external tools update action to better reflect what is installed (this helps first runs)
Changed the installer to reduce the size of the extracted copy of the 5.666 installer to exclude more files for a 40% on disk reduction
Changed the installer to use ExecDos instead of nsExec as it does the same but without an intermediate child process which A/V don't like
Changed the theming of the built-in streaming server landing page to be more dark-mode like & so it more closely aligns with WACUP's site
Changed the formatting of the information in the crash reports to remove some information no longer useful & to improve my reading of them
Changed the podcast preferences page to disable some of it's options if a subscription update is in progress to avoid a few potential issues
Changed the podcast plug-in to automatically remove incomplete downloads in the downloads list when a successful download later occurs
Changed the podcast plug-in to save the downloaded list when downloads have finished instead of waiting until the plug-in is unloaded
Changed the way the reported IP address on the Streaming preferences is determined to try to better deal with multiple adaptors/devices

Fixed a performance regression when trying to read metadata from MP3 files (especially those on slow devices like flash drives) related to the internal changes in recent builds as to how metadata is read
Fixed a crash when loading the playlist undo list & the ordering of data within the file is not in the expected manner (not sure why this occurs for some setups)
Fixed a debug message when using the Playlist File Remover hotkey being left enabled in release builds (oops it's been like it for ages & was only just noticed)
Fixed a possible cause of some input plug-in related crashes when trying to determine the appropriate input plug-in to use for playback / metadata actions
Fixed a possible failure with proxied HTTPS connections due to not setting up the connection to know about cacert.pem for relevant SSL setup & verification
Fixed the classic skin main window visualisation not working (a less than simple fix which involved changing the drawing to be fully done with WACUP code)
Fixed the playlist editor window visualisation incorrectly appearing within the middle of the main playlist editor window (this mainly affected modern skins but some installs with classic skins)
Fixed the colouriser api not being consistently initialised (this would cause excluded files not being indicated as such or the separator colouring options being disabled)
Fixed the MP4 input plug-in crashing if video support has been incompletely disabled at the time of trying to play a video
Fixed the MP4 input plug-in not handling pausing as expected
Fixed the tooltips of the main playlist editor window not showing in the correct location for a number of scenarios
Fixed some scenarios where the generically skinned windows might not maintain the minimum dimensions that are allowed
Fixed some minor optimisation issues with the generically skinned window painting
Fixed some loading related crash issues when some of the plug-ins were unexpectedly being double-hooked
Fixed the internet radio plug-in crashing in some setups when attempting to update it's statusbar text (this is based off what has been seen within the automatic crash reports)
Fixed the history plug-in not always showing a valid statusbar text message
Fixed an occasional crash when a recently downloaded podcast is attempting to be added to the replacement local library plug-in's database
Fixed IPC_GETVUDATAFUNC (generally used for the beat vis in modern skins) not returning the expected format of data (was more luck this wasn't crashing than just showing a wonky beat vis)
Fixed entering a folder path into the Add/Open URL dialog not working correctly due to an incompatibility in some of the replaced code vs the 5.666 implementation
Fixed the taskbar text not correctly showing unicode characters when the win10shell plug-in is enabled (the fun of doing things with C# code & not correctly handling subclassing)
Fixed a crash when renaming a library playlist name
Fixed a crash when saving the main playlist as a PLS playlist (was easier to replace this last piece of Winamp specific playlist saving code for WACUP provided code sans crashing)
Fixed an API message conflict (subject to plug-in updates & patches to fully resolve this) between IPC_GETSKINCURSORS & IPC_CB_VISRANDOM (both were set as 628 for some bizarre reason which is why a IPC_GETSKINCURSORS_OK set as 1628 has been added along with some other handling to re-map values between calls where possible)
Fixed an issue with the handling of the Classic Spectrum Analyser vis plug-in & it's preset / profile files
Fixed an inconsistency seen when removing library playlist(s) due to timing issues in how the update notifications were being processed
Fixed the open folder action not working correctly with zip:// and some other custom entries within the Win7Shell plug-in
Fixed the probable cause of a crash when trying to save a metadata change to a FLAC file tag due to a conflict in internal buffers being passed on
Fixed the probable cause of the playlist manager crashing due to the language service not being fully initialised in one of the service's calls
Fixed the probable cause of a crash in the Three Mode Repeat plug-in
Fixed the probable cause of a crash seen when trying to import iTunes playlists
Fixed the probable cause of some random crashes seen when saving m3u/m3u8 playlists
Fixed a crash when uninstalling input or general purpose plug-ins due to a selection change handling issue when the plug-in is in process of removal
Fixed a crash when both the WACUP agent & main WACUP program are running & you mouse over the icon (due to an issue with the IPC_GET_TASKBAR_TEXT API)
Fixed the import options on the library playlists root view right-click menu not working consistently
Fixed zip:// entries in library playlists being incorrectly handled making it seem that the index within the archive on the playlist entry was removed (it hadn't been & was correctly maintained in the actual playlist file but the checks for missing files was incorrectly altering a buffer used)
Fixed keyboard navigation not working correctly within the Podcasts view after tabbing into the embedded browser control
Fixed toggling some options within a modern skin causing the library playlists view to be switched to (due to a menu id range conflict between the plug-ins)
Fixed the explore option within the Podcasts view not opening to the appropriate folder for the downloads if there are no items selected or no downloaded file
Fixed the option on the Podcasts preference page to determine how many episodes to download not being correctly remembered
Fixed a crash seen with some Milkdrop presets when they cannot be correctly compiled (this may still not be a 100% resolution of crashes but it seems to help the cases reported)
Fixed the usage of region.txt with classic skins for basic transparency effects not being applied causing a number of classic skins to look wrong
Fixed a deadlock experienced in some setups when going from a classic skin to a modern skin due to an incomplete replacement of some of the IPC_EMBED_* apis
Fixed the archive playback plug-in repeatedly trying to clean-up folders on exit that no longer exist (this can save a few milliseconds on closing)
Fixed the queue manager window when enabled sometimes re-appearing when it's meant to be closed
Fixed the generic skinned windows not showing the correct cursor over parts of the window when double-size mode is enabled
Fixed the playback excluder not working as expected if the only item in the playlist is set as excluded
Fixed alignment & sizing issue with the installer welcome & finish pages when using OS text scaling
Fixed the drawing of the brand images on the support buttons on the about preference page when using OS text scaling
Fixed the drawing of the help images on the podcasts preference page when using OS text scaling
Fixed the skin selection dialog during setup not always closing the setup process correctly if not choosing to run WACUP
Fixed a resource leak related to modern skin preview images when using the 'Skins' preferences page
Fixed Milkdrop not correctly scaling most of its text related output when using OS text scaling (depending on whether configuration changes have already been made, it may still be necessary to manually adjust the font sizes used by Milkdrop within its configuration options)
Fixed the podcasts view loading to fix an initial selection quirk that kept occurring
Fixed a crash when using the explore item folder due to the underlying api failing
Fixed the Winamp Modern & Bento/Big Bento skin oscilloscope menus acting incorrectly (thanks victhor for the patch!)
Fixed the Yule Log plug-in not always resetting things back to default values correctly
Fixed using the Twitter support causing stability issues (e.g. crashing after closing the preferences window or random other random crashes)
Fixed an issue preventing adding new artwork (using the change or paste options) on the File Info artwork editor (still subject to input plug-in support at this time)
Fixed a number of quirks experienced when WACUP is minimised & restarted (e.g. windows becoming incorrectly closed when the process is later restored to be visible)
Fixed the first main playlist item being incorrectly drawn (especially when starting WACUP minimised) due to a font height calculation mis-match when first drawing occurs
Fixed the supporting resource dlls incorrectly using 'pack' instead of 'project' in their version information
Fixed a crash when viewing the Winamp version history due to a weird text encoding related processing failure
Fixed a file access sharing issue when trying to retrieve artwork which could prevent some file types from playing
Fixed some of the delay loaded system components (w5s) being loaded multiple times due to an existence test failure
Fixed an issue preventing the available video decoders from being initialised
Fixed a compatibility issue related to the video window changes preventing the (now old) Cover & Tag plug-in from loading
Fixed the Cover & Tag plug-in to save its settings in the correct settings folder so running as an administrator is not needed
Fixed the ClockAmp plug-in to save its settings in the correct settings folder so running as an administrator is not needed & so it doesn't break is using multiple installs
Fixed the likely cause of a hang on start-up if auto execute visualisation plug-ins on start-up & playback are both enabled
Fixed the visualisation action buttons (mostly seen in modern skins) from being double processed & possibly causing a crash
Fixed the replaygain plug-in not correctly handling not being able to write the processed results to the file
Fixed the possible cause of some of the random crashes experienced related to the drawing of the native windows
Fixed a file access sharing issue related to MP3 files which could prevent tag updates within & external of WACUP
Fixed a large memory leak when playing MP4 based video
Fixed playback of corrupted FLAC files not correctly aborting playback when the decoding issue occurs
Fixed the library Queue Manager view not drawing correctly on first loading as the selected library view
Fixed some of the weirdness seen when changing / refreshing the current skin within the current library view (this is not a complete fix as there's something weird going on within the media library core)
Fixed the Three Mode Repeat plug-in not always showing the expected classic base skin image
Fixed a conflict between the Streaming Url Processor & vgmstream input plug-ins which could prevent YouTube & related streaming urls from playing
Fixed user created colour themes via the colour theme editor with a "{coloredit}" prefix not being handled correctly (it's now removed as needed from the menus & preferences to better match expected behaviour)
Fixed a long standing modern skin engine issue causing the text within edit boxes to not be correctly sized (e.g. colour theme editor when scaled above 100% & much more)
Fixed the edit box of the web reader clipping the displayed text (related to the above change)
Fixed a possible cause of the modern skin engine crashing on unloading for some setups (based on the automatic crash report submissions)
Fixed the possible cause of some non-portable WACUP installs not having the 'pin to taskbar' option showing when running (aka Windows + related shortcut fun)
Fixed the uninstaller not removing the start menu &/or desktop icon(s) if created & then the option to create them was unchecked later on
Fixed the installer not always remembering the start menu &/or desktop icon setting depending on the installer mode currently being used
Fixed the installer not removing the start menu &/or desktop icon if the setting to have them has been changed to off whilst updating
Fixed still being able to load the vulnerable in_flv.dll plug-in (the installer would remove this but you can't help what some users try to do still)
Fixed a possible cause of the crash reporter hanging when trying to collect the initial details before handing off to another process that submits it
Fixed a settings cache issue causing the Not So Yasapi device specific settings from being read in due to a buffer truncation when priming the cache (this may have affected some other aspects but this was the only one reported)
Fixed the playback status of the Winamp Modern skin being mis-aligned by 1px when playback is paused compared to the playing & stopped conditions
Fixed the inconsistent loading of the user provided winamp.ico for the notification area icon
Fixed the win7shell plug-in not correctly recognising if it's been running under wacup.exe or winamp.exe to ensure that the jump list will open the correct (especially if pinned to the taskbar) instance
Fixed some issues with the recent & frequent items on the jump list actions provided by the win7shell plug-in when those options are enabled
Fixed restoring the JTFE playback queue between sessions causing the prior queue to be incorrectly added to the end of the playlist instead of re-using the existing playlist items
Fixed a number of issues related to moving around main playlist items in the JTFE playback queue (note: there are still some quirks which will be resolved in a later build once more of the playlist handling from the Winamp core has been replaced with all WACUP provided handling)
Fixed some quirks with the Waveform Wrapper plug-in loading validation (found whilst doing the SNESAmp Wrapper plug-in updates & integration)

Other small changes to attempt to fix some of the issues from the crash reports, preparatory work to remove the need for a winamp.original child process & other code changes

Updated the Big Bento Modern skins to v1.1.5.1 (22 Jan 2020)
Updated cacert.pem to latest (1 Jan 2020)
Updated libcurl (libcurl.dll) to 7.68.0 (8 Jan 2020)
Updated libjpeg-turbo (image.w5s) to 2.0.4 (31 Dec 2019)
Updated libopenmpt (in_mod.dll) to 0.4.11.12392 (22 Dec 2019)
Updated libvorbis (libvorbis.dll) to the latest Git commit from 18 Jan 2020
Updated minizip (zlib.dll) to 2.9.2 (12 Feb 2020)
Updated Monkey's Audio (in_ape.dll) to 5.19 (9 Feb 2020)
Updated mpg123 (mpg123.dll) to 1.25.13 (26 Oct 2019)
Updated installer to be built with NSIS 3.05 (15 Dec 2019)
Updated the Milkdrop2 presets by Fumbling_Foo for your visual enjoyment
Updated unrar (unrar.dll) to 5.90.1 (29 Jan 2019)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 27 Feb 2020
Updated WavPack (in_wv.dll) to 5.2.1 (31 Jan 2020)


Preview Version: 1.0.8.4346
Released: 14 October 2019

Changed the version check to be run the next time WACUP is started after a crash occurred to make it more obvious if a newer version is available (this is based of the automatic crash report submissions where people are still using older builds despite a newer build with appropriate fixes having been out for more than a week which just causes more work than needed)

Fixed the cause of the Winamp Classic Modern (WCM) based modern skins throwing a divide by zero error for some installs (this was not easy to track down & fixes something that's been going on for months - but its fixed now!)
Fixed an occasional crash when trying to determine the input plug-in to be used for some actions (this also possible helps get the old mp3pro input plug-in working)
Fixed WMA & WMV files not having their metadata read when the DirectShow input plug-in is handling playback for them (more work needs to be done but this is a start)
Fixed a delay loading dll issue crash related to loading of the main playlist (still not sure why despite the appropriate handling in WACUP that these issues occur for some but not all)
Fixed a delay loading dll issue crash related to starting WAV file playback
Fixed the likely cause of MP4 based playback not completing the stop action
Fixed opening the preferences from the replacement local library plug-in crashing (not entirely sure how this happened but that's what the crash report showed)
Fixed a crash on loading when trying to load a playlist file & the playlist manager service has failed to be initialised at the time
Fixed category not being correctly read from ID3v2.x tags for MP3 files (changes in build #4334 introduced this change whilst fixing other crashing issues)
Fixed some metadata fields for WMA based tags not mapping to the expected Winamp/WACUP values
Fixed the likely cause of the podcasts library view sometimes locking up & causing a crash when the subscribed podcast feeds are being updated

Updated libopenmpt (in_mod.dll) to 0.4.9.12139 (2 Oct 2019)


Preview Version: 1.0.8.4334
Released: 8 October 2019

Fixed the likely reason behind the Winamp Classic Modern & Big Bento Modern skins randomly crashing when loading them (thanks Victhor)
Fixed the crash reporter hanging sometimes when attempting to run the Info Tool to create a report due to the OS refusing to run the tool
Fixed the Big Clock time remaining mode not always showing the expected time for some files
Fixed the colour theme sub-menu not always responding correctly to selecting a new colour theme
Fixed some crashes related to a corrupted playing file string that could break some plug-ins
Fixed a possible issue that can cause trying to load a wav file to fail when checking for it being an MP3 file in disguise
Fixed a potential cause of playing youtube videos via the MP4 demuxer plug-in (in_mp4.dll) not always handling stop correctly
Fixed a crash on the File Associations diagnostics preference page due to buffer handling mismatch
Fixed a crash when trying to enable / disable the agent notification area icon
Fixed a crash when loading MP4 based files that require the AAC decoder service to be loaded
Fixed a crash when clicking 'OK' on the MP4 Demuxer input plug-in (in_mp4.dll) configuration dialog
Fixed changing the location of the Play Tracking log folder not storing the correct folder path
Fixed a first run crash on some installs when the local library plug-in (ml_local.dll) is not able to successfully create its default smartviews (instead of relying on the plug-in to create the files needed there are now pre-generated files provided which is safer & also makes the first run load a bit quicker)
Fixed the incorrect handling of some dll delay loading failures where it was not attempted to manually load the requested dll (this seems to mainly have been happening with the loading of libcurl.dll & libsndfile.dll from requests via input plug-ins to the WACUP core)
Fixed possible causes of the settings cache crashing when handling settings files being externally modified and additional internal scenarios
Fixed a possible cause of some installs failing to run due to the OS api used to determine the settings folder WACUP should use failing (this now applies a specific check for the default configuration to attempt to avoid the OS api that is triggering the issue)
Fixed some of the metadata entries shown in the Raw Metadata tab of the File Info / Alt+3 dialog not using the expected Winamp/WACUP naming (e.g. label vs publisher)
Fixed the ID3v2.x rating not being shown in the Raw Metadata tab of the File Info / Alt+3 dialog if its present
Fixed the local MP3 file metadata reading related crashes by replacing the metadata related calls to the MP3 decoder plug-in (in_mp3.dll) to instead use the metadata based taglib service with WACUP (this is not the final fix but it should do enough to resolve the majority of the crashes related to the plug-in from 5.666 until it is replaced with a WACUP build)


Beta Version: 1.0.8.4312
Released: 3 October 2019

Added support to attempt to automatically upload crash reports instead of relying upon an installed email client along with some additional options on the Error Reporting preferences page (by default emailing will still be attempted as this is helpful to be able to respond to crash reports which is not possible with the automatically uploaded submissions)
Added a compatibility option on the modern skin font rendering peferences page to use the older font handling method which may help on some setups where skin provided fonts may not be used
Added support for a main playlist window no-selection specific menu (e.g. allowing access to the undo options menu items when clicking on the dead area in the playlist editor window)

Changed the Playlist Separator extras menu options to be moved up into the main separator menu instead of being a sub-menu to ease quick / repeated access to those separator menu options
Changed the Playlist Separator menus to hide the "Insert separator between folders" option if the auto-insert option is enabled via the preferences page (is redundant to leave an option present which is automatically be run under that scenario)
Changed the media library plug-ins preference page to not show the Portables (ml_pmp.dll) plug-in as a critical failure if there are no portable plug-ins (pmp_*.dll) loaded & instead as 'INACTIVE' to better reflect that plug-in doing just that
Changed the separator colouring options to allow for just setting the text colour without forcing the background colour to be the current selected playlist item colouring
Changed the Audio Capture plug-in to be fully portable mode compatible (if you've already been using this plug-in then I'm sorry but you'll need to re-enter your capture presets, etc - dr. flay made me do it)
Changed some of the wording of the playlist related menus to be more consistently phrased
Changed what happens if the default paths.ini file is not present to now act like it does as if the default paths.ini file was present with respect to the settings folder that will be attempted to be used (e.g. %appdata%WACUP) instead of trying to use the folder that WACUP is running from (this change is to better deal with loss / corruption of the paths.ini file whilst providing better compatibility with how & where settings can be saved on the versions of Windows as supported by WACUP)
Changed how the podcast plug-in determines some of the file information when downloading & updating it's cached information to attempt to resolve the lock-up that occurs for some (this is the start of moving more towards metadata retrieval that will work better in asynchronous situations as podcast handling generally involves)

Fixed freetype.wac not loading correctly on different installs due to some odd dependency issues (this may also improve the reliability of the color editor component loading)
Fixed some of the live patching not being correctly applied which led to some crash issues re-appearing (e.g. odd in_mp3.dll metadata reading issues should be fixed again)
Fixed some loading related issues that could affect some installs (caused by unexpected delay loading failures & recursive patching quirks due to A/V software screwing up things)
Fixed the Portable plug-ins preference page showing a could not be loaded error as a side-effect of some of the preference window handling changes in the prior build (most won't have noticed as the plug-in is turned off by default due to portable devices not being all that commonly used afaict)
Fixed drag + dropping file(s) onto the main playlist above the current playlist item causing the current item to change to be the last item in the playlist
Fixed some typos in the installer
Fixed some preference changes not being saved if closing the preferences window instead of moving to another preference page (this was sadly introduced in the last build when taking over more of the handling of the preferences window, oops)
Fixed saving issues with unicode based separator configuration / preset strings causing them to be corrupted when re-read on the next loading
Fixed excluded playlist items having a drawing issue on non-selected playlist items
Fixed the paths.ini file editor not showing the selected folder to load / save
Fixed where possible the reported settings cache related crash issues received
Fixed the Not So YASAPI output plug-in not always initialising everything it needs which could cause crashes when going to it's preferences or when trying to start playback with it as the active output plug-in
Fixed the Not So ASIO output plug-in not always initialising everything it needs which could cause crashes when going to it's preferences or when trying to start playback with it as the active output plug-in
Fixed the Not So ASIO output plug-in not behaving correctly when the gapless option was disabled (ASIO drivers are buggy as hell so hopefully this hasn't broken anything that was ok previously)

Updated unrar (unrar.dll) to 5.80.2 (26 Sep 2019)


Preview Version: 1.0.7.4264
Released: 24 September 2019

Changed how opening of the preferences window is handled to remove a lot of duplicate processing that was going on such as having it achieve the better sectioning of preference options (this was needed for the preference related fixes noted below & turned into an optimisation exercise)
Changed all of the visualisation preference page handling to now be WACUP managed (needed to be done related to the running visualisation related crash issue fixed below)
Changed the global hotkeys preference page to prompt if the user wants to reset the custom hotkeys back to their defaults (also tweaked the page layout to better split the two modes of hotkeys based on feedback received)
Changed how the loading of the BogProg LiveWire DSP is done to limit WACUP's hooking of the DSP (as it does to all loaded plug-ins) to resolve some stability issues with this DSP
Changed the FLAC input plug-in to be built with VS2017 (more plug-ins will be moved over to the newer compiler over the coming builds - will hold off on VS2019 for the time being before anyone asks, heh)
Changed the Milkdrop2 plug-in to ignore X3025 shader compiler errors as the shader is still compiling ok from tests & is causing user confusion
Changed the in_vgmstream input plug-in to not attempt to take the .vgm file extension as this breaks the in_vgm input plug-in which has a legitimate need to handle .vgm files
Changed the Discord & Twitter preference nodes to no longer break accessibility via the keyboard navigation as well as changing where the options tab are in relation to the modes

Fixed a conflict between the normal handling of multimedia hotkeys via the Global Hotkeys plug-in & the SMTC / Win10Shell integration (this should now resolve the main issues reported e.g. stop not working)
Fixed trying to run the config action of visualisation plug-ins either not working or crashing (a certain developer hadn't finished replacing all of the handling needed - silly dev)
Fixed a running visualisation or DSP plug-in possibly crashing when using the uninstall option if they're running at the time of the uninstall attempt (5.666 doesn't seem to do this)
Fixed the FLAC input plug-in potentially leaking a small amount of memory on each file played
Fixed a localisation crash when trying to add a password protected RAR archive into a playlist
Fixed some issues with trying to select the Windows Classic Modern (WCM) skin during new WACUP installs
Fixed some MP4 based files failing to end playback when reaching the end of the file either under normal playback (this was due to incorrect header information) or if doing fast seeking through the file
Fixed opening the preferences window sometimes causing WACUP to lock-up due to a processing issue
Fixed opening the preferences window not assigning items correctly to the parent nodes if the preferences window was opened whilst plug-ins were still being loaded
Fixed the active Streaming Source preferences window now always being set as fully visible due to some loading order quirks
Fixed the Stream Source Server config action not working as expected
Fixed some of the flickering seen when using the skinned preferences mode (on opening & changing to some of the preference pages)
Fixed the prompt to restart WACUP when disabling the skinned preferences option not being shown
Fixed playing a separator double-jumping over the playlist entry after it

Other related code changes to achieve more WACUP provided handling of the preferences window & associated code removal due to less handling being needed

Updated libflac to version from the latest github commit (15 Sep 2019)
Updated libopenmpt (in_mod.dll) to 0.4.7.12088 (23 Sep 2019)
Updated zlib-ng (zlib.dll) to latest re-based update (18 Sep 2019)


Beta Version: 4234
Released: 16 September 2019

Changed the default custom global hotkeys list to no longer include multimedia keys (the default handling options of the global hotkeys plug-in along with the addition of the win10shell plug-in can otherwise conflict e.g. stop or play/pause doesn't appear to do anything as the two plug-ins can counteract each other)
Changed the Library History plug-in to not try to update main playlist items as this is causing issues with the Yule Log plug-in (will provide a better solution to achieve the desired aim at a later time)
Changed the new to build 4220 failed memory allocation handler to allow a workaround for in_mp3 tag related issues to keep working instead of it triggering the crash reporter (in_mp3 is a plug-in that badly needs to be replaced but it's somewhat important to normal playback, etc)

Fixed syntax errors in some ATF formatting strings causing a crash due to a localisation error
Fixed trying to turn off custom hotkeys not working correctly (build 4220 specific issue)
Fixed HTTP POST actions via Yule Log not working due to a libcurl behavioural change (specifically it needed CURLOPT_POSTFIELDSIZE setting to zero for CURLOPT_POST actions ven though there was no body data being sent in our mrthod of usage along with a decision to make it work in HTTP/1.1 mode instead of also attempting to use a HTTP/2 mode)
Fixed the Undo plug-in crashing due to an annoyingly old bug (which pre-dates WACUP) when loading the prior undo list information as a request of an integrity check failing if square brackets were found elsewhere in the file (that'll teach past me to optimise loading an ini-style file)
Fixed titles not being correctly shown when starting playback of supported files from an archive
Fixed RAR playback not working correctly (there's still issues with this that will be resolved later)
Fixed a hang or crash on close (varies by setup) when having played supported files from an archive

Other small adjustments based on some of the quirks seen from the crash reports received & how those crashes could interact with other parts of the code

Updated cacert.pem to latest (28 Aug 2019)
Updated libexpat (xml.w5s) to 2.2.8 (13 Sep 2019)
Updated OpenSSL (libcurl.dll) to 1.1.1d (10 Sep 2019)
Updated pugixml to 1.10 (15 Sep 2019)


Beta Version: 1.0.6.4220
Released: 13 September 2019

Added the Winamp Classic Modern (WCM) v1.0.3 skin for your enjoyment - a massive thank you goes to Victhor for all of the work gone into making another skin (see also the Big Bento Modern (BBM) skins) with its focus on improved usability on higher resolution screens whilst keeping a feel of the 2.x classic skin aesthetic <3
Added a @WACUP@ custom variable for modern skins to be able to use to detect if running under a WACUP install or not to help make it easier to offer any visual customisation as required (this is converted to a 1 when passed into scripts as a parameter value under wacup & will be 0 or an empty string under a non-WACUP install)
Added a 'wacupscreenshot' entry for modern skins to be able to provide a WACUP specific screenshot when the skin is built to work with both WACUP or Winamp
Added an initial plug-in (gen_win10shell.dll) which for the moment just provides System Media Transport Control (SMTC) support on Windows 10 Release 1607 & newer so its now possible for WACUP to provide some information about what is playing for when the volume / playback state is changed & an OS provided window appears to show the status changing (note: the SMTC support is based upon code from a prior OSS C++/C# plug-in - see the about dialog for more information)
Added support when looking for artwork to now additionally use the filename + image extension as a means to try to increase the chance of finding available artwork
Added option on the Global Hotkey preferences page to ignore volume controls when the WM_APPCOMMAND (aka Windows Media Player / multimedia keys support) which is enabled by default (this is useful if wanting to control WACUP via the other multimedia keys but want to use the volume controls for the machine as a whole without also changing WACUP's volume level)

Changed the default loading behaviour of some of the supporting component dlls to better match the disabled input plug-ins which rely upon them
Changed the handling of plug-in loading to remove some unintentional duplicate processing which provides a small reduction in loading times (this applies more to the loading of the w5s component dlls to refine the overall handling of them under WACUP)
Changed the right-click menu in the Library Playlists root list to also have the import menu items on that menu in addition to the button at the bottom of the view (when the view is smaller that button isn't always visible so this can help to ensure imports are seen as possible to do)
Changed the handling of trying to delete a skin via the skin preferences page to better deal with deletion failures (this also involved taken on more of the handling of the preferences page from the Winamp core to resolve it not bothering to check the success / failure of the attempt)
Changed how crashes are dealt with to better leverage Windows Error Reporting (WER) to try to make sure some form of crash dump can be generated if the built-in WACUP crash reportor is unable to catch the error directly & instead is able to in-directly obtain it in combination with WER
Changed the installer wait time if a running WACUP instance is found & needs to be closed to account for the modern skin engine slow closing fixes (this had been increased to deal with files being reported as still in usage but this should hopefully not happen now due to everything taking less time to complete closing when using a modern skin)
Changed the settings cache to attempt to automatically deal with external modifications of ini based settings files which may have been cached (e.g. milk2_msg.ini)
Changed (again) how the Undo plug-in works to try to resolve some of the stability issues it has been causing (see the Explorer related fixes below)
Changed the Library History plug-in to indicate a title update of the playing item in the main playlist editor might be needed (e.g. if the playcount is set to be shown)

Fixed a key performance issue behind modern skins being much slower to load & close on Windows 10 compared to an equivalent setup on other versions of Windows (how much of a reduction in loading & closing times will vary depending on the selected modern skin, hardware & OS install used but a 2 second reduction has been seen on a number of test installs across recent hardware)
Fixed a number of plug-in related issues causing crashes to occur when trying to load files via Explorer (including potential fixes for the Play & Play All media actions that has been an issue for a while though it seems like this may still not be a complete fix until proper file association handling is implemented)
Fixed a slew of issues related to elevation (UAC) handling from correctly ensuring the WACUP implementation is used to better dealing with access failures
Fixed the Playlist Undo plug-in conflicting with some actions (e.g. the previous button on the basic OS taskbar preview)
Fixed the menu on the close button of the preferences window not showing the correct text due to a localistion issue
Fixed the Notification Area preferences page & possibly some other places showing the incorrect text on dynamically loaded content
Fixed the stop global hotkey not always working (e.g. when using the Ctrl+Alt+End hotkey) if the Next On Stop plug-in was present & enabled (the plug-in was incorrectly treating that as a request to toggle the on/off mode of the NOS plug-in instead of the intended stop playback action)
Fixed some random crashes seen when manipulating the Library Playlists due to a loading optimisation gone awry in the playlists core service
Fixed a crash (or hang) on close if the old in_mp3hd.dll plug-in is present in an install due to it being an evil plug-in which unloads the MP3 input plug-in (in_mp3.dll) itself instead of leaving it to the input plug-in handling (just please don't use this plug-in unless you really must)
Fixed a crash when using the 'explore item folder' right-click menu action on the skins preferences page list
Fixed some issues seen with zip based archives not being released in all cases (e.g. skins ending in a .zip extension could not be deleted if the Skin Manager plug-in was enabled)
Fixed the crash reporter failing to start for some installs (not that you should be seeing this appear that often nowadays anyway)
Fixed a number of compatibility related crashes with the sqrsoft output & general purpose controller plug-ins (would be nice to get them updated to support more recent wacup/winamp releases but that is probably a lost cause based on prior attempts)
Fixed the updater loading some of the supporting dlls when not needed
Fixed the crash reporter not always including the Info Tool report due to a conflict with the settings cache not seeing the Info Tool having updated its settings file on report completion
Fixed embedded artwork in MP4 based files not always being displayed (build issue & implementation problems were causing this)
Fixed resizing issues of irregular artwork in the Classic Artwork plug-in causing images to be incorrectly scaled as a square
Fixed resizing issues of irregular artwork in the Taskbar preview when its configured to show now playing information
Fixed image files placed into the main playlist editor not being displayed in the Classic Artwork plug-in window & other compatible parts of the skin being used
Fixed the artwork tab on the Alt+3 file information dialog not always showing the correct helper information (coding is messy at times you know)
Fixed a crash when unloading the LoudMax DSP plug-in either via the preferences or on closing (the fixed crash reporter caught this happening & have reached out to the plug-in author to see if a proper fix can be provided)
Fixed a FLAC playback issue causing static to be output for some or all of a file when the bitrate or samplerate for consecutive FLAC files changes
Fixed adding some iTunes podcast urls causing a crash due to incomplete data in the response provided
Fixed a crash when attempting to play video only MP4 files with the Waveform Seeker plug-in & its legacy handling mode also enabled (this should have been automatically skipped but was missed when moving from the 5.666 in_mp4.dll to the replacement provided by WACUP)
Fixed the decoder name string not being correctly shown under modern skins due to the recent plug-in implementation changes (at times I have to hate myself for changes I made officially years back that then need to be re-patched to then correct handle what's wanted for the future)
Fixed drag+drop of a folder onto the main window not working as it would just clear the playlist instead of processing the folder for files
Fixed some conflicts experienced by the WACUP loader when multiple instances are being started in quick succession (e.g. external request to play files) that could incorrectly prevent the instance from being started normally

Other misc updates with trying to reduce loading & closing times further as well as an updated milk2_msg.ini

Updated libcurl (libcurl.dll) to 7.66.0 (11 Sep 2019)
Updated libogg (libvorbis.dll) to 1.3.4 (30 Aug 2019)
Updated Monkey's Audio (in_ape.dll) to 4.92(26 Aug 2019)
Updated mpg123 (mpg123.dll) to 1.25.12 (24 Aug 2019)
Updated unrar (unrar.dll) to 5.80.1 (30 Aug 2019)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 8 Sep 2019


Preview Version: 1.0.5.4130
Released: 23 August 2019

Added a replacement MP4 demuxer plug-in (in_mp4.dll) which is the start of replacing the remaining core playback plug-ins along with it allowing us to access YouTube streams again (which changed over to HTTPS at the start of 2019 & the original plug-in from 5.666 couldn't cope with it) as well as allowing you to only play the audio even if a video track is found without having to disable video support completely
Added a replacement Waveform Decoder plug-in which is still based on libsndfile like the plug-in it replaces but resolves a slew of issues (including seeking in multi-GB 32-bit floating point WAV files) to improving metadata support (with more to hopefully follow on that) & Winamp integration (e.g. using the unified Alt+3 dialog instead of a generic messagebox)
Added Ko-fi (https://ko-fi.com/wacupdev) as another means to help financially support the development of WACUP during installation & within the WACUP preferences
Added double-size classic playlist editor support & all of the changes needed to fool the classic skin engine to cope with this (whoever thought it a good idea to not do this natively years back when the main window & equaliser windows got it needs a friendly slap)
Added Discord & Twitter preference shortcuts to make it easier to find & setup these now playing update modes (a dedicated quick access preference page is planned once we work out what should go on it & how it should be displayed - please let us know about settings you commonly want to change & struggle to remember where to find them)
Added ability (subject to skin support) via the Modern Skin general preferences tab to control whether the Web Browser features are enabled or not (this is mainly for those who don't like the feature or view it as a security issue as the browser element has negligable impact on loading times)
Added an updated Monkey's Audio input plug-in (in_ape.dll) based off Monkey's Audio v4.71 (unicode support, improved tagging support including using the unified alt+3 dialog & editing of tags!, initial albumart handling & some WACUP integration tweaks come with this over the Winamp 2.x target of original source code)
Added an updated WavPack input plug-in (in_ape.dll) based off WavPack v5.1.0 (not much changed as it was already in a good position from having been part of the Winamp Essentials Pack - a shame that died but WACUP is so much better :) )
Added an initial asynchronous implementation albumart service (albumart.w5s) to get album artwork from files so other plug-ins can then not lock-up the ui (at least as not much as it's been doing in some instances)
Added profiling options to the Advanced preferences page to aid in seeing how long it takes for the loading (via init) and closing (via quit) of the general purpose, input, output & dsp plug-ins as well as the w5s components (this is aimed as a debugging feature but may be useful for some with slow loading / closing when looking at the init & quit methods of the plug-ins)
Added a basic 'Components' plug-in preference page to see those that are installed & what Wasabi services they might be providing (this helped with debugging during taking over the w5s component handling from the native Winamp code)
Added an option to automatically load the current visualisation plug-in on loading instead of waiting for playback to be started (this is useful in some layouts to avoid it looking odd if not immediately starting playback as well as whilst debugging taking over the visualisation plug-in handling)
Added initial support to live load disabled input, general & library (if the replacement media library core plug-in is being used) plug-ins
Added better handling for incomplete & failed podcast downloads so it's a bit easier to see if something potentially went wrong & a retry is needed
Added an option to the Playback preferences page that keeps Windows in an on state so when for example using the speakers on an HDMI monitor it will not turn the display off or enter sleep mode & stop playback
Added initial right-click menu support on the replacement local library plug-in nodes in the navigation tree as well as starting to make the root local library node more like a normal customisable view (e.g. it now has play/enqueue/enqueue & play/send-to menu actions)
Added a /UPDATE command-line option to the WACUP loader which may be helpful for a few recent scenarios that have occurred
Added the expected LAN server address of the streaming server to the information shown on the Streaming Server preferences page
Added buttons on the modern skin colour theme preferences tab to go to the previous & next colour themes in the list (user request)
Added an initial add / edit smart view dialog to the replacement local library plug-in (needs more work but this is a good step forward!)
Added option to the replacement local library plug-in to allow for searching within the comment field for general view searches (this is an opt-in setting due to it potentially making things noticeably slower to generate the results)
Added expected icons for the default smart views of the replacement local library plug-in
Added a new revision of the input plug-in api (WACUP specific to provide a better native experience) which saves the plug-ins now built to use it from having to do some commonly used aspects on loading & closing along with a change to support providing the file types they support as unicode (this change might break plug-ins that do things directly against the In_Module structure but does not prevent compliant older plug-ins from still being loaded - this change is no different than the Winamp 5.64+ & 5.66x related changes)
Added a new revision of the general purpose plug-in api (WACUP specific to provide a better native experience) which saves the plug-ins now built to use it from having to do some commonly used aspects on loading & closing
Added option to the video preferences page to disable the ability to click to pause / resume playback

Changed how the general purpose, input, output, visualisation & dsp plug-ins as well as the w5s components are loaded/unloaded to now be done via WACUP code instead of Winamp's native code (this improves the ability of WACUP to prevent certain plug-ins from being loaded to help avoid dll dependency loading issues that can otherwise occur through to enabling a more complete profiling of the plug-ins during init & quit)
Changed the playlist editor when using a modern skin compatible with the v1.3 or newer skin specification to use a freeform styled scrollbar for improved usability and consistency within the look for the skin (using something that's a hacked up classic skin just doesn't cut it!)
Changed where the Milkdrop presets are stored and accessed by default to be in the settings folder instead of the main install folder (this is the easiest way to resolve ratings not being saved without having to run as an administrator & no one should need to run WACUP in that manner!)
Changed the 'Titles | ATF' preferences page to have a larger input field for the ATF string along with a working preview of the output
Changed the default action on the 'Titles | ATF' preferences page to prompt for confirmation before resetting the ATF string to default
Changed the Discord preferences page to have a link to the forum thread which details how to setup WACUP to work with Discord & other information
Changed how curated Milkdrop presets are handled during install to download them only if needed instead of being always included in the installer
Changed the MP3 encoder preset handling to simplify things vs the common usage vs trying to maintain compatibility with existing 5.666 installs
Changed the Skin Manager plug-in to show a folder icon next to pre-extracted folders to make it easier to differentiate them (e.g. if extracted to work on vs also having an original copy of the skin as a wsz/wal/zip)
Changed some of the skin image loading to reduce duplication of images to better ensure only a single image copy is loaded & used for classic skins
Changed the time elapsed indicator on the classic playlist editor window to try to show a h:mm:ss formatted time (if the main option is enabled) to better match other WACUP related changes for time display (for time remaining it will keep using the -mm:ss formatting style due to space restrictions)
Changed the windowshaded playlist editor window to show (if applicable) the queued item position (via the 'q' action) for better consistency
Changed the windowshaded playlist editor real font handling to better fit within the area used with a skinned font to break less skins when that option is enabled via the classic skins preferences page (e.g. removing odd colour matching and overwriting expected borders of the area)
Changed the Waveform Seeker plug-in to fill in the currently played area (if applicable) under the generic waveform for applicable playlist items that cannot be processed to generate a waveform (this should help with usability & interaction with the plug-in for most use cases)
Changed the extraction of skins to be done by WACUP instead of the native handling where possible to help resolve some loading issues with sub-folders within the skin archives & to experiment with a few other things for later WACUP development :)
Changed the in-skin browser handling for the Bento & cPro skins (possibly other modern skins as well) to remove broken urls & use valid landing pages (this should help remove recent issues due to expired domains, etc)
Changed the Big Bento & Bento skins to support the new @HAVE_BROWSER@ value along with -nobrowser versions of the skin xml files (e.g. player-normal-sui.xml vs player-normal-sui-nobrowser.xml) to be able to follow the Web Browser on/off feature control
Changed the Internet Radio plug-in to better ensure there is no duplicated genres shown for the station listing (this is an age old issue with the poor data that stations provide to listing directories - sadly they don't care about such attention to detail which means I have to instead)
Changed how the WACUP build of libcurl is built to resolve dependency loading issues under WINE
Changed how the plug-ins directly using libcurl will now cope without libcurl.dll being able to be loaded (this is related to the above change)
Changed the error handling related to dll loading issues (whether they're missing or having dependency related loading issues) to show more appropriate information as well as now trying to generate a crash report if the problem is non-continuable (i.e. the code will crash anyway)
Changed the ASIO output plug-in to not create its background thread until it is being used for output to save some resources on loading
Changed the saving of the main winamp playlist (winamp.m3u8 in the settings folder) to be WACUP handled which now provides a secondary backup of the file on closing & removes the automatic generation of the legacy winamp.m3u (some old plug-ins look for this which can be re-enabled via the Advanced preferences page if needed)
Changed the layout of the Advanced preferences page to better accommodate new options
Changed some of the internals of the WACUP core to reduce memory usage for shared data between the WACUP plug-ins
Changed some of the previously JTFE provided apis to now be provided via the WACUP core (makes things cleaner)
Changed the podcast plug-in to only load it's feed cache when needed (depending on setup & usage of this feature, this can delay lots of memory being allocated when it's not going to be made use of as well as providing a loading time reduction if updating on start-up is not enabled)
Changed the SID Player (in_sidious.dll) plug-in to delay when it initialises itself to give an approximate 10MB saving of memory if the plug-in is being loaded but never actively used (this also provides a small loading optimisation)
Changed clicking 'config' for the Modern Skin engine (gen_ff.dll) plug-in to go to the preferences node instead of showing a basic or fancy about message
Changed the Album Art (gen_classicart.dll) plug-in to make use of the newly added asynchronous mode for getting the image data to show
Changed the Album Art (gen_classicart.dll) plug-in to limit the image copy it works with to 600x600px which in combination with the asynchronous mode for getting the image data better prevents the plug-in locking up the UI whilst it's trying to render the artwork
Changed the artwork loading on the File Info (Alt+3) dialog to make use of the newly added asynchronous mode for getting the image data to show (there were also some other changes that in general reduce the loading time of the dialog compared to the prior implementation)
Changed the loading of the output plug-ins to (hopefully) only happen when playback is actually needed (this is testing out a loading optimisation so may be reverted if this is found to cause issues)
Changed the priority of output plug-ins attempting to be used if one is not specified or the prior one has been removed (this relates to taking over the handling of output plug-in management so we can be more flexible in how things work going forward)
Changed the Waveform Wrapper (in_wav.dll) to better prevent the original plug-in it wraps from re-saving unchanged values on closing (this was found with the new profiling where this was the worst offending plug-in from just loading & then closing the WACUP instance when nothing would have been done)
Changed some aspects of the loading & closing of the plug-ins to reduce the time taken based on the added profiling feature
Changed the settings cache to prime its copies of the winamp.ini & gen_ml.ini files with all sections instead of doing it on a per section basis as requested to help reduce loading times
Changed the tooltip handling on the plug-in preference pages to show the clipped text (if applicable) & then our information about the plug-in
Changed the IPC_GET_EMBEDIF handling to automatically register the created window into the classic skin's Ctrl+Tab window handling to save having to remember doing it on a per plug-in basis
Changed the IPC_GET_EXTLISTW & IPC_GET_EXTLIST apis to be handled by WACUP which allows known plug-ins with lots of extensions to be suppressed from being shown in the filter list (wparam == 1) response so that when using in the open/save file dialogs it is less likely to break (i.e. potential crash or showing all files despite a filter being selected)
Changed the right-click menu on the podcast 'Downloads' node to show the option to update all of the podcasts if its parented to the podcasts node (I keep clicking on the wrong item so this is to keep me happy : )
Changed the Big Clock plug-in visualisation modes to hopefully look better compared to the prior version due to using a poor upscaling method (as the plug-in has used for ~14 years) which makes it better fit in with the look of other aspects of Winamp/WACUP
Changed now the NDE database files are loaded to remove doing a large memory copy between buffers for a small reduction in loading times
Changed the NDE database loading to be smarter about when its trying to remove whitespace from strings which can make a noticeable reduction in the time to load the related view & query results
Changed the /RESETOUT command-line option to also reset the audio device of the known plug-ins (this is to make it easier to deal with some Windows 10 updates causing the output device id to change & making the DirectSound output plug-in freak out & block loading)
Changed the classic skin smooth window resizing option for the resizeable skinned windows to dock the edge of the window to the screen & other skinned windows so its easier to make a layout that better suits your needs (am debating enabling the smooth window resizing option by default now that we've got consistent snapping of the windows between the two available window sizing modes for classic skins)
Changed the main playlist editor drawing under modern skins to remove an undesirable 2 pixel border from the left edge & to ensure the scrollbar is correctly aligned to the right edge of the window which was wasting 8 pixels of screen space
Changed the handling of the IPC_GETHTTPGETTERW & IPC_GETHTTPGETTER API messages so HTTPS urls should now be correctly handled along with some othe related changes to improve the reliability of handling the download (still more HTTPS related work to go on in other parts of the player)
Changed how podcasts are handled to reduce the complexity in the checking down which could either cause occassional crashes or leave podcasts that had failed still being marked as successfully completed (this also led to the removal of the export -> podcast downloads option from the exporter plug-in as the handling is no longer trying to maintain compatibility with how the original podcasts plug-in worked)
Changed some of the plug-ins to use a new callback method that removes the need to subclass &/or handle some of the main playlist editor menu & WM_COMMAND handling to detect actions in the window (this reduces some of the overhead of the plug-ins & what goes on within the window)
Changed how existing podcasts are (re-)added into the local library database when using the replacement ml_ll to reduce the time taken (more needs to be done to deal with this process causing the ui to lock-up e.g. when re-adding existing podcast feeds to a new WACUP install)
Changed the main window song ticker area when using a non-skinned font under classic skins to better match how the playlist editor handling now works to remove the blurry text under double-size mode & making the non-skinned font better match the look of the skin overall
Changed the sizing increments used when resizing the playlist editor in double-size mode to match the generic skinned window sizing increments (this might make some classic skins look a bit odd for a small panel section but a skin update would be the only potential fix for this quirk)
Changed the default render processing priority of the Waveform Seeker plug-in back to high & added an option to use a lower priority if needed
Changed the handling of the modern skin menus options along with adding some options on the Modern Skins -> Current Skin preferences tab to enable or disable whether those options are displayed in some of the menus (this might help workaround some reports of stability issues)
Changed the artwork handling to start using our own handler for aquiring the image data from the required file to primarily work around some issues with the MP3 decoder (in_mp3) plug-in (this will gracefully fallback to the appropriate input plug-in if the request fails)
Changed the loading of the artwork tab of the File Info (Alt+3) dialog to do one less artwork related query on loading to improve loading times
Changed the replacement local library plug-in to allow for more of it's specific metadata to be ATF accessible (done based on an issue via reddit so that %lastplayed%, %lastupdated%, %filetime%, %filesize%, %dateadded%, %ispodcast%, %podcastchannel%, %podcastpubdate% & anything else I've forgotten of the local library specific metadata can be accessed if the plug-in is present - this may need some further tweaking fyi)
Changed how the image resources of the WACUP provided library plug-ins are handled as part of some internal re-working for possibilities later on
Changed how the installer detects SSE2 CPU support to improve successful detection
Changed the location of the MP4 Demuxer plug-in configuration on new / unmodified installs to provide a small reduction in loading time
Changed the Streaming Source plug-in to provide up to 2 stream outputs (this may require some minor reconfiguration of existing setups & only the first stream can be configured to automatically connect to the WACUP provided streaming server for the moment)
Changed how some of the supporting library dlls are loaded to reduce some of the bigger ones being loaded if not immediately needed
Changed when the win7shell plug-in initialises gdiplus to only happen when its needed which provides a relatively good closing time reduction (when compared to other plug-ins) if a taskbar preview was never drawn
Changed the crash reporter to now be fully implemented as part of the WACUP core instead of making use of a plug-in (see fixes) which resolves some stability & integration issues experienced when trying to keep it working as a plug-in compatible with how the Winamp core wants to work
Changed the default undo limit on new installs to be 10 instead of 50 which depending on the machine & settings configuration lessen some ui hangs / slowness seen when an action causing a new undo event to be stored is happening (later on the way this is all done will change to remove the need for the plug-in & hopefully remove most of the ui delay which can occur)
Changed the default loading state for some of the plug-ins with windows on new installs to lessen how many appear by default - too many is too much it seems :)
Changed the default loading state of the Audio CD playback, NSV Decoder & Portable Device Support plug-ins to be off on new installs if selected to be installed (this is done as an optimisation due to a lot of installs not needing them & requires enabling them manually via the appropriate plug-in management preferences page)
Changed to use Eridyne mode by default on new installs (this favours using the DirectShow input plug-in for video playback which is more reliable than the native input plug-ins which 5.666 provided)
Changed to use the Microsoft Detours library to massively improve the reliability of the WACUP core to be able to to do its hooking & live patching (this should now resolve the remaining quirks with patched functionality not working as well as some of the silent loading crashes)

Fixed a memory leak when checking if a file is supported by the current input plug-ins
Fixed the trim ATF method not correctly removing trailing space characters
Fixed the custom fallback artwork handling not live updating correctly due to invalid cache invalidation (needed a restart to be applied)
Fixed the classic albumart plug-in crashing when it gets some unexpected metadata
Fixed the classic albumart plug-in updating to show the wrong item when some of the options were changed & the current selection is meant to be showing rather than the currently playing item
Fixed the classic albumart plug-in not updating as expected when the custom fallback artwork handling is changed via the Artwork preferences page
Fixed the Discord updates being incorrectly limited on the number of characters allowed when using the multi-line support
Fixed the Discord & other ATF based aspects not dealing with emoji type characters correctly (thank you kobochat for reporting)
Fixed the line input plug-in crashing in some setups when attempting to start playback
Fixed some issues with the IPC_SET_PE_WIDTHHEIGHT handling not correctly validating input which could cause some odd sizing of the playlist editor when switching between modern skins back to classic skins (madness I tell thee, madness!)
Fixed some column text alignments in the Audio CD views to better match the rest of the library
Fixed a random crash on close if the Audio CD view was open and a metadata query was in progress
Fixed queued items (via the 'q' action in the main playlist editor, etc) not showing the queued item position if there was no length (this has been a limitation for far too many years & replacing all of the main playlist editor drawing routines for my own now allows this to work right!)
Fixed flickering of highlighted queued or missing file playlist items when doing fast scrolling downwards in the main playlist editor (finally due to the joys of double-buffered painting!)
Fixed beta build download links incorrectly being handled by the in-skin browser which was causing it to fail (and changed the other links on that preferences page to load in the default browser)
Fixed the expansion of @HAVE_LIBRARY@ in modern skins to work with additional parameters following (this helps to also get @HAVE_BROWSER@ working)
Fixed some podcast feeds incorrectly being handled when trying to make a HTTP/2 connection to the feed server so they will now gracefully revert back to a HTTP/1 connection automatically
Fixed all of the reproducible crashes related to the Internet Radio plug-in (e.g. when updating the cache & doing a search at the same time)
Fixed the Internet Radio view incorrectly running a double-search on loading
Fixed the Internet Radio plug-in not always animating the node icon when updating the stations cache
Fixed the Taskbar preview when set to show the current albumart using excessive CPU if the artwork image is high resolution (generally above 600x600px) due to not caching the artwork correctly & needing to re-process the image on every update of the Taskbar preview
Fixed the module plug-in not returning a valid 'family' metadata string
Fixed a shared file metadata failure between TagLib (and potentially other in-WACUP aspects) and reading of the metadata on Monkey's Audio files
Fixed tag.dll (TagLib) not having a version resource to match all other WACUP provided dlls
Fixed some of the plug-ins not updating correctly when artwork for the currently viewed file is deleted
Fixed files supported by the vgmstream input plug-in not generating a waveform via the Waveform Seeker plug-in
Fixed the the Waveform Seeker plug-in acting oddly with the background colour going white briefly when refreshing or changing to the base classic skin due to incorrectly handling the background colour brush used
Fixed the incorrect re-saving of the main winamp playlist (winamp.m3u8 in the settings folder) on closing when no changes had occurred
Fixed some of the media library plug-ins crashing when opened & there was nothing present in the main playlist editor (related to highlighting the currently playing item in the library views)
Fixed the podcast view updating the information pane more often than needed when changing the selection in the view
Fixed a number of crashes when abusing the loading order of the plug-ins from the normally expected loading order
Fixed some random crashes when plug-ins checking information relating to modern skins get incomplete due to the modern skin engine only having been partially loaded (classic skins ftw!)
Fixed the Album Art (gen_classicart.dll) plug-in corrupting the artwork cache (this was much more of an issue with massive artwork e.g. 12600x12600px where it crashes)
Fixed the Album Art (gen_classicart.dll) plug-in not drawing anything within the window or leaving a gap for the artwork in details view mode when no artwork is able to be obtained
Fixed loading issues if youtube-dl & supporting dlls are incomplete due to a crash on loading
Fixed removing a single selection from the excluded file list window not always ensuring the change was correctly saved for the next session
Fixed the embedded windows to correctly maintain minimum dimensions when invalid sizes are applied to the window on loading / programmatic setting
Fixed the occassional corruption of aspects of the skinned windows under classic skins (e.g. the window title)
Fixed the contents of skinned windows sometimes not updating skin change / refresh
Fixed some of the command-line options being massively slow to respond (especially if a ui needed to be displayed)
Fixed the crash reporter not always including the generated Info Tool report
Fixed a crash seen when trying to retrieve CD information when some of the expected information in the Musicbrainz response is not provided
Fixed the installer incorrectly removing the legacy font rendering engine within freetype.wac on subsequent updates (this relates to older modern skins not designed for the Winamp 5.5+ updates)
Fixed some installs not being able to load modern skins if freetype.wac was present the settings cache was enabled (as odd combination of issues working against each other that luckily was able to be patched out this time around)
Fixed some display issues when smooth resizing is enabled in relation to the way the main playlist editor scrollbar is drawn to prevent some odd scaling related artifacts
Fixed not being able to add Apple podcasts the podcasts subdomain instead of the (seemingly now deprecated) itunes subdomain url
Fixed registering global hotkeys not always working causing some to randomly fail or for the configuration to become corrupted
Fixed a sporadic crash on loading by the Winamp core related to the delayed loading of the nsutil.dll supporting library
Fixed the Winamp core not being able to handle the downloading of HTTPS based playlist urls & other associated files
Fixed a crash when allowing any currently downloading podcasts to be cancelled on exit
Fixed the podcast downloads view status column not sorting as expected for items not in the process of being downloaded
Fixed the archive playback plug-in trying to use other input plug-ins which have been intentionally disabled via the preferences
Fixed a crash when loading or viewing the metadata on some corrupted FLAC files
Fixed a crash on loading the global hotkeys plug-in (found whilst abusing plug-in loading)
Fixed incorrect usage of an OS api used to help make some internal strings case-consistent
Fixed some of the custom added tabs on the Unified Alt+3 dialog showing a generic string
Fixed a crash in the Yule Log plug-in related to a CRT mis-match between it & the WACUP core
Fixed some of the scaling differences seen with modern skin beat visualisation vs Winamp 5.666 (may not be 100% but it's closer now)
Fixed some setups not allowing modern skins to run their beat visualisation modes without forcing a settings toggle
Fixed the classic skin generic windows loading into window shaded mode when enabled & using the fixed resizing mode for such windows
Fixed the contents of the Waveform Seeker plug-in not being drawn correctly if some of the window client area is off-screen
Fixed the time display of the Big Clock plug-in not being drawn correctly if some of the window client area is off-screen
Fixed the main playlist editor items not being drawn correctly (e.g. partially drawn) when OS text scaling is enabled or with larger fonts where some of the characters would be clipped
Fixed plug-ins showing as not loaded when some 3rd party plug-ins force loading of them before the WACUP plug-in loader has completed loading
Fixed streams ending with .audio so it looks like a file extension being handled by the wrong input plug-in
Fixed the skin provided font not being used when the preferences option was enabled to make use of the font
Fixed Milkdrop not being able to locate some of the texture files after changing the default preset location
Fixed the autoplay plug-in incorrectly causing a volume change on loading when the autoplay setting is off
Fixed the loading of items into the main playlist not attempting to get the metadata when that option is set in the preferences (this isn't the default setting for handling items nowadays - reading in the background is - but some may still use it so it needed to be fixed)
Fixed the Edit Item Metadata in the main playlist editor not allowing the podcast attributes to be changed
Fixed downloaded podcasts not always being correctly added to the local library database due to a loading time quirk the caused the podcast plug-in to not always know that it had access to the local library database tagging service
Fixed an accessibility issue on the 'About | Updates' preferences page where tabbing through the window would not select the tab at the top
Fixed the Playback preferences dialog not correctly initialising things on loading (issue caused by a change in the previous build)
Fixing a regression with $abbr() ATF method related to an emoji handling fix
Fixed the playlist editor menus incorrectly appearing when using a classic skin & windowshaded mode is enabled
Fixed the updater not handling non-beta builds correctly (a server-side fix is also in-place now to help fix this for all existing builds)
Fixed changing the streaming server password not always being applied without a restart of the player to ensure its applied
Fixed the streaming server port & password configuration options being left enabled when the server is running
Fixed a compatibility issue with the streaming source plug-in when trying to connect to some servers
Fixed issues with the streaming source plug-in not always remembering the encoder settings correctly
Fixed some of the plug-ins (usually if loaded by another plug-in) not being handled via the settings cache as expected (also helps with above)
Fixed a delay loading failure causing a crash in some setups when trying to play MP4 based files
Fixed a crash when skinned preferences is loaded (related to a fix applied in the prior beta build)
Fixed the milkdrop visualisation window sometimes moving out of the expected position (more of an issue when double-size mode is enabled and the plug-in window is docked or close to the edge of the usable screen area)
Fixed non-embedded artwork not being displayed in the File Info / Alt+3 dialog (this has been broken in the last few beta builds)
Fixed a crash when scrolling through the playlist editor in classic skin windowshaded mode & accessing a wav file (other file formats were potentially affected so additional changes have been made to avoid the issue which caused this)
Fixed a crash seen when enabling the agent (but not directly related to it) as a side-effect of a change in the build 3996 for hooking more of the plug-ins
Fixed the wrong IP address being shown in some configurations on the Streaming Server preferences page when using a wireless connection (still needs some refinement)
Fixed the podcast view not always updating as expected on skin related changes
Fixed the menu on the Modern Skins -> Current Skin preferences tab being skinned when the preferences window is not set to be skinned
Fixed some files not being processed correctly with the ReplayGain plug-in due to an issue passing around data internally for the file
Fixed a crash when viewing some urls in the main playlist editor & artwork is set to be shown for the currently selected item in the artwork window
Fixed YouTube playback not working due to issues playing HTTPS based streams with the original MP4 demuxer plug-in from the 5.666 install
Fixed some MP4 based files not being processed via the Waveform Seeker plug-in
Fixed double-clicking in the main playlist editor not always working depending on the visible height of the window
Fixed the current modern skin colour theme preferences tab not using the expected colouring for the selection when skinned preferences is enabled
Fixed drag+dropping urls onto the main playlist editor not being added in the expected location especially under double-size mode
Fixed a crash with the new MP4 Demuxer (in_mp4.dll) plug-in when ReplayGain is enabled & appropriate information was found (related to a mis-match between different runtime libraries which saw some other plug-ins updated to avoid this issue when they're moved to be built with a different compiler)
Fixed the header information on the artwork tab of the File Info (Alt+3) dialog not updating correctly when no valid artwork can be found
Fixed some JPEG files (seem to be Abobe generated ones) not able to be loaded
Fixed a delay loading failure causing a crash in some setups when trying to play H264 encoded video files or ALAC encoded audio files
Fixed a crash issue with the undo plug-in being passed invalid data from a Winamp provided api
Fixed the corruption issue that caused the nde.dll to have to be reverted back to the one from build 3276
Fixed a crash when trying to update the metadata of MP4 based files
Fixed the installer not ensuring libmp4v2.dll is installed for all of the components that might try to load it
Fixed an issue causing the data sent to the visualisation plug-ins to miss the first few seconds of data subject to the output plug-in buffer size due to a patched method not working correctly in all scenarios
Fixed the skinned Components preferences page incorrectly being drawn with the checkbox it doesn't use
Fixed a crash when using the remove duplicate items option in the main playlist editor
Fixed an issue that could cause the visualisation plug-in to stop receiving data to render
Fixed a crash when inserting a separator due to some of the recent changes in how menus & playback is done
Fixed the sprite loading from milk2_img.ini not working correctly due to the move to the file in the user settings folder & it looking in he wrong sub-folder for the image files
Fixed in_zip not providing a "family" atf string
Fixed the replacement local library plug-in not always showing all of the required information in the view (this may cause the queries to run slower than before depending on how the view is configured due to it pulling down all of the information that is needed which will be slower)
Fixed a crash related to starting playback under a modern skin that has been plaguing some since build 3958
Fixed some of the rate of streaming issues with the Streaming Source plug-in when playback is paused / stopped (there is now a rough KB/s output provided to see if the output is racing ahead - more work will be done but this quick fix balances things out better than how they have been)
Fixed the albumart plug-in sometimes updating itself with the current artwork image multiple times on initial loading which could appear as flickering of the window contents
Fixed some of the generically skinned windows not being drawn as expected during initial loading & typically appearing as a white area (colour might vary depending on the Windows theming) before then appearing as expected
Fixed some issues with the profiling mode due to inconsistency in plug-in loading
Fixed some inconsistency seen in the loading of the w5s system component files
Fixed a random crash on loading related to how the Winamp core would load the crash reporter plug-in which could conflict at times (see changes)
Fixed the default location of some of the windows on first run with a classic skin (will look into modern skin default locations later on)
Fixed a number of issues causing Vorbis file tag editing to not work as expected or to crash in some scenarios (the fun of text conversions)
Fixed twitter authentication not working correctly due to a logic check breaking the persistence of the connection
Fixed the Streaming Url Processor plug-in preventing urls it supports from playing (especially if autoplay on start-up is enabled) if the url is already deemed valid to play and so does not require youtube-dl to be run beforehand to get an updated working url to play
Fixed the ability to click to pause / resume playback in the video window not working (really not sure when this broke but it now works again)

Other misc code clean-up, associated bug fixes during development & all the other developer fun that goes on

Removed the cPro skin update system due to the demise of the skinconsortium website (as WACUP is bundling a modified maintained copy of cPro there's no need to have it checking for updates along with removing the potential security issue with accessing an unmanaged domain)

Updated cacert.pem to latest (15 May 2019)
Updated the Big Bento Modern skins to 1.1.4 (14 Feb 2019)
Updated the cPro (ClassicPro) engine to 2.04 (16 Apr 2019)
Updated expat (xml.w5s) to 2.2.7 (19 Jun 2019)
Updated LAME (lame_enc.dll) to 3.100.2.1 (23 Jul 2019) for stability fixes
Updated libcurl (libcurl.dll) to 7.65.2 (17 July 2019)
Updated libebur128 (ml_rg.dll) to the latest github commit (17 May 2019)
Updated libFLAC (libFLAC.dll) to 1.3.3 (4 Aug 2019)
Updated libjpeg-turbo (image.w5s) to 2.0.2 (14 Feb 2019)
Updated libnghttp2 (libcurl.dll) to 1.39.2 (19 Aug 2019)
Updated libopenmpt (in_mod.dll) to 0.4.6.11911 (10 Aug 2019)
Updated libopus (libopus.dll) to 1.3.1 (12 Apr 2019)
Updated libpng (image.w5s) to 1.6.37 (14 Apr 2019)
Updated libsndfile to the latest github commit (2 Apr 2019)
Updated openssl (libcurl.dll) to 1.1.1c (28 May 2019)
Updated lzma (lzma.dll) to 19.00 (21 Feb 2019)
Updated minizip (zlib.dll) to 2.8.9 (4 Jul 2019)
Updated Monkey's Audio (in_ape.dll) to 4.84 (10 Aug 2019)
Updated taglib (tag.dll) to the latest Git commit from 24 Jul 2019
Updated unrar (unrar.dll) to 5.71.1 (2 Apr 2019)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 4 Aug 2019


Preview Version: 1.0.1.3276
Released: 28 January 2019

Added an initial Streaming Source plug-in (aka replacement Source DSP) to help validate it's usage for personal streaming in combination with the WACUP provided Streaming Server (if also installed)
Added some additional internal handling & hooks for the Streaming Source plug-in (aka replacement Source DSP) to simplify how it can get now playing information from the Winamp core without hooks & subclassing as DSP often require (not what we want to be doing to keep things cleaner)
Added initial support to allow the shuffle table to persist between sessions to help resolve one of the big complaints related to shuffle (this means it won't try to play files that have already been played as often - this is experimental so it may need some edge cases to be fixed)
Added a 'shuffle' diagnostics preference page (under the 'advanced' preferences group) to help visually inspect the in-memory shuffle table
Added initial support to deal with enter & double-click actions in the main playlist editor not updating the shuffle table to prevent playing the played file again (reported by a beta tester & confirmed with the shuffle table inspector above :) )
Added initial 'Raw Metadata' tab implemenatation to the File Info (Alt + 3) dialog to aid in testing the taglib integration (this is the start of potentially moving away from the input plug-ins handling most of the common tag formats to instead be done more consistently as a core service)
Added an ASIO output plug-in based on the source code by Otachan which makes it portable install compatible & adds an experimental volume control option (this works on the global master volume if enabled) & some other minor clean-up to work better within the needs of a WACUP install
Added the ability to single-click in the video window to pause/un-pause the currently playing item (this matches expected control methods for video playback though there is a bit of a lag due to having to determine if its a single or double-click from how Windows provides such events)
Added initial support to specify proxy connection modes (e.g. SOCKS4, SOCKS5) on the General preferences page (not all plug-ins & features use this which will be improved over time as more of the original Winamp plug-ins & features are replaced with WACUP versions)
Added logging now playing only to a specified file via the Yule Log plug-in (see the Play Tracking -> Now Playing preferences tab) which might be useful for streamers using the likes of OBS / SLOBS as it doesn't keep all of the playing history in the log file as the original handling does
Added new Mikdrop presets by En D from the 'MD Episode 1 - New Millenium' & 'MD Episode 2 - Out of Da Club into Da Head' packs (more visual goodness for you to enjoy)
Added new Milkdrop presets by Fumbling_Foo (more visual goodness for you to enjoy)

Changed the WACUP provided library plug-ins to hide the clear search button if there is no search & to use an 'X' instead of 'clear search' to give more space & a slightly less cluttered library view (more to come when other things related to skinning are finally replaced)
Changed mpg123 to now be a shared dll (mpg123.dll) instead of just used by the OpenMPT (in_mod.dll) based input plug-in (this relates to the vgmstream change where supporting dlls were not being installed)
Changed vgmstream (in_vgmstream.dll) to be built with VS2017 instead of VS2008 to resolve some playback handling issues with the older compiler
Changed the installer to default to a more appropriate folder when selecting the portable install mode (setting a custom path via the command-line should still be honoured for those doing such things)
Changed how the new default mode to use the spacebar to play/pause the currently playing item in the main playlist editor incorrectly blocking a number of actions that would otherwise scroll the currently playing item into view (a bit of a compromise but it should be less jarring in usage)
Changed the skin preferences page when using the Skin Manager plug-in to make the skin information area more prominent & show more at once
Changed the naming of the Yule Log preference tabs to better fit with the additional logging mode added into this build
Changed the installer to wait a bit longer if it needs to close an already running WACUP instance to better avoid an installer error
Changed the default setting for WM_APPCOMMAND hotkey handling (aka default multimedia key handling) for new / un-modified installs to now be enabled
Changed the Internet Radio plug-in & the new Streaming Source plug-in to make use of a shared genre list to reduce duplication
Changed some of the internals & build system for how beta vs preview/final builds are built to make the overall process quicker
Changed the installer to preserve AVS (vis_avs.dll) if present (e.g. when updating over an existing install - which still is not recommended)

Fixed most of the supporting dlls vgmstream requires not being correctly installed (this is now handled via a download during install if required)
Fixed loading of the FFmpeg supporting dlls from the vgmstream_dlls folder due to a quirk of delay loading and sub-dependency resolution
Fixed the installer incorrectly removing the Pluginsvgmstream_dlls folder when it didn't need to (found with the changes above causing downloads to occur when they should not have been happening)
Fixed the modern skin engine not correctly showing the time remaining for hh:mm:ss formatted time display strings (the minus sign would only show for times under an hour for some odd reason which broke the expected longer time remaining display so that check was thankfully able to be patched out)
Fixed the clear button not always working in the Internet Radio library view
Fixed opening the notification area preferences tab breaking using the keyboard to move up/down in the preferences tree
Fixed clipping of the skin name from modern skins on the skin preferences page information area
Fixed the send-to menus not working in the original local library plug-in (ml_local.dll) due to enforced enqueue & play menu items which do not work (prior changes removed the hackish work arounds to try to get that support working - this is why we have a replacement plug-in to do it cleanly!)
Fixed the splash screen window not being cancelled when clicking on it (as the native version would do)
Fixed the play & enqueue+play actions not working correctly in the podcast items list
Fixed the currently playing item not being correctly updated in the podcast download views when new podcasts are added with the list open
Fixed the failure to load of some WACUP & 3rd party plug-ins related to a change in how dll dependencies are loaded to fix other loading failures
Fixed slow column sorting issues with the filename related values in the replacement Local Library plug-in views (more so with decreasing sorts)
Fixed some multi-line comment tags not being correctly displayed on the File Info (Alt + 3) dialog
Fixed the preferences window being on top of all windows even when WACUP was not the active program
Fixed the preferences window now being re-sized to the skinned frame (if that mode is enabled) to deal with OS text scaling quirks
Fixed a crash when trying to use the 'Remove Duplicates' main playlist editor action (a JTFE bug)
Fixed restoring the shuffle table sometimes causing a crash on load
Fixed the shuffle table being incorrectly re-read on closing which could lead to potential corruption of the file (found whilst fixing above)
Fixed slow loading of the shuffle diagnostics preferences page
Fixed some possible causes of the crashes seen in the NDE database (this seems to affect more the Internet Radio view)
Fixed trying to drag & drop items on the naviagtion causing a crash if the replacement library bookmarks plug-in was enabled
Fixed dropping an item on a library bookmarks category node not having the newly added item assigned to that category
Fixed some stability issues found working on the replacement Media Library Core plug-in (gen_ml) with the existing library plug-ins if features are not present &/or working as expected (this shouldn't be needed when things are feature complete but it's better to prevent against crashes, etc)
Fixed some occassional text corruption issues on the 'basic info' tab of the File Info dialog

Updated cacert.pem to latest (23 Jan 2019)
Updated libnghttp2 (libcurl.dll) to 1.36.0 (18 Jan 2019)
Updated libopenmpt (in_mod.dll) to 0.4.2.11243 (22 Jan 2019)
Updated minizip to 2.8.3 (27 Jan 2019)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 28 Jan 2019 (first re-sync in over 5 months, oops)


Build #3174 Changes:

Added initial support to indicate missing files in library playlists to complement the option for the main playlist editor (this will just show a cross before the playlist item number / title depending on settings instead of changing the background colour at this time)
Added support for Discord now playing to use the state value to provide a second line of text if set in the preferences
Added a 'change origin playlist' option to the library playlist root menu for external playlists to make it easier to update the reference if it has been moved (e.g. to another drive) without having to remove the playlist reference first
Added an 'edit playcount' option to the library history view to act as a starting point to deal with moving files & needing to maintain playcounts
Added a confirmation prompt before allowing all of the preference pages to be hidden from the extended control menu
Added support to convert public Acast podcast pages into the RSS feed url so it can then be managed by WACUP
Added a small 'beta tester' section on the about preferences page for anyone interested in becoming a beta tester if they're only using a preview / final build

Changed from the long standing 0.9.9.xxxx version numbers to now start incrementing up from 1.0.0.xxxx with the shift to public preview builds
Changed the replacement Local Library plug-in to set 'last updated' to be the last modified time from file when adding new files to the database
Changed the playlist option to prevent pressing space scrolling the currently playing item into view to now support (by default if not already changed) using play / pause to toggle the playback state (see the options on the 'general' preferences page to control this when it's enabled)
Changed the installer to improve the handling of the 5.666 EN-US redux installer to better ensure a corrupted copy will not be used
Changed the 'Eridyne' mode on the Advanced preferences page to also handle WMA & WMV as we do not install the WMA playback plug-in & DirectShow can play most of those files
Changed the installer to better prompt if trying to install over an existing Winamp install as well as preventing installing over incompatible versions (i.e. anything that isn't 5.66/5.666)

Fixed the browse button not appearing on the edit playlist entry dialog in the library playlists view
Fixed the library playlist root view not appearing correctly with a missing playlist item selected
Fixed some quirks with the library playlist status message when information is missing
Fixed a text alignment issue of the playlist item time in the main playlist editor when the missing files highlighting mode is enabled
Fixed some SSL related issues with the jnetlib implementation but more needs to be done to allow for example working HTTPS based MP3 streams
Fixed the custom splash.bmp/splash.png support not correctly centering the image when it's shown on screen
Fixed the splash screen not showing on the same monitor as the classic main window (this fixes a Winamp bug)
Fixed the Playlist Undo plug-in crashing in rare cases (based on crash reports received from beta testers)
Fixed an occassional crash in the Waveform Seeker plug-in after completing file processing or when file processing is active when closing
Fixed the installer not correctly checking the Big Bento Modern skin versions when needing to updating existing installs
Fixed the podcast plug-in not correctly adding multiple selections to the main playlist editor
Fixed a double-border drawing issue on the podcast subscription node listviews
Fixed (hopefully) the playlist preferences node not maintaining its expanded state
Fixed moving items in the queue manager views not always keeping the selection on the moved items
Fixed header text being clipped on the Discord now playing preferences page

Other misc code clean-up & build process organisation in preparation for a public preview build (finally!)

Updated appropriate copyright dates to 2019
Updated libsndfile (libsndfile.dll) to latest code release (1 Jan 2019) to resolves a number of vulnerability issues
Updated lzma (lzma.dll) to 18.06 (30 Dec 2018)
Updated the Big Bento Modern skins to v1.1.3 (30 Dec 2018)
Updated the Milkdrop2 presets by Fumbling_Foo for your visual enjoyment




Visit our sponsors! Try DVDFab and backup Blu-rays!
Search   Contact us   Privacy Policy   About   Advertise   Forum   RSS Feeds   Statistics   Software   

Site layout: Default Classic Blue

Affiliates: free-codecs.com

©1999-2024 videohelp.com