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)