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 NotSoDirect (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)
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)
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 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)
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 navigiation 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 cleanup 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
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 minizip (zlib.dll) to 2.9.1 (15 Nov 2019)
Updated Monkey's Audio (in_ape.dll) to 5.16 (22 Jan 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 unrar (unrar.dll) to 5.80.5 (5 Dec 2019)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 27 Nov 2019
Updated WavPack (in_wv.dll) to 5.2.0 (15 Dec 2019)