Added basic & somewhat crude seeking support for raw .AAC files played via WACUP's in_mp4 input plug-in which otherwise don't natively support this (it's still better for them to be wrapped in an MP4 container so it can have a properly defined seek table instead of brute forcing / guessing where things might be due to the variable frame sizes that a raw AAC stream can contain)
Added Ctrl+Shift+Tab as a shortcut to reverse cycle through the classic skin windows to complement the existing (now fixed) Ctrl+Tab action to cycle through those windows
Added %timestamp% to the generic ATF handling to provide the current time (this should a unix time based value & might be better to use over the existing %date% & %time%)
Added an option to the lyrics plug-in (via its right-click menu) to customise the font used for text display so it's not hard-coded to following the main text font in use
Added an option to the scrobbling support to ignore processing anything determined to be a podcast (based on the genre metadata or from being tagged as one in the local library database)
Added to the Now Playing tab of the Play Tracking preference page a new text field which can be used (if not left empty) for output when playback stops instead of leaving it on the last playing output
Changed the output plug-in handling in an attempt to resolve the odd crashes on closing which have been happening from some possibly from the core still trying to unload them when not needed with the full process closing which will do that for us anyway
Changed the setup of the OS provided MediaFoundation based H.264 decoding for MP4 files to try to improve video playback (using the openh264 decoder option is an alternative to consider if still glitched)
Changed more of the library playlist handling to use background threads to try to avoid the potential of the main ui thread getting blocked (e.g. when making it try to process potentially large folders)
Changed the podcast view handling to do more to avoid any leading whitespace for the feed / item description in the browser panel (this isn't as ideal as would be liked) & in the tooltip after processing
Changed the Bento based skins provided with WACUP To show "x of y" for the disc file information if available to mimic the track metadata handling (related to the fix below for inconsistency with the handling of disc metadata)
Changed the installer to try to pick a more appropriate SSL backend to use based on the OS being used along with it now attempting to use the alternative configured backed to what is initially trying to be used if there's a failure which seems to resolve the reproduced instances of the archives not being obtained (i.e. not commonly changing supporting dlls or the modern skins) instead of showing an error about lacking an internet connection when that's not the case
Changed the geiss visualisation to match milkdrop & try to indicate what monitor a display device is so it's easier to configure this
Changed how the podcast plug-in handles marking new item downloads which resolves a performance issue with reported cpu time dropping from ~25% to ~1.5% for a large set of feeds over multiple runs (ymmv)
Changed the podcast plug-in to generate compressed forms of its xml based settings files which reduces the time to read / save the files to storage if relatively large (this is helpful for older HDD based setups & even with the compression step there's some other changes & fixes which help mostly negate the overall impact of using compression on the files)
Changed the NDE file loading to do some extra checks to avoid trying to complete the loading of obviously incomplete files so the backups can then be attempted
Changed the libcurl build to not use c-ares as that seems to help avoid some of the intermittent DNS related issues causing different actions in WACUP to fail (this shouldn't be needed but the libcurl native implementation seems to work on systems that were reporting issues so until I can debug this further I'm doing what's best for WACUP usage & what remains of my limited sanity to debug failures)
Changed the skinned menu handling to now be enabled when running under WINE as long as the option to use it is enabled via the Appearances preference page (which might be needed if it's not behaving)
Changed the skinned menu handling to now draw the sub-menu indicator element instead of leaving the OS handling to do it so it's better themed to the look of the menu along with avoiding it looking weird under WINE where it's drawing a monochrome element instead of something that better matches to the custom colouring of the menu
Changed how the preference window handles selection changes in an attempt to make it behave nicely under both Windows & WINE whilst also avoiding some prior hackish workarounds to avoid visual glitches
Changed how the skinned virtual listviews are handled to avoid them being slow to appear to load &/or update when running under WINE (e.g. taking up to 15 seconds for the All Stations item of the Internet Radio view to load) due to it updating all of the items even if they're not able to be seen unlike Windows which just updates what is visible afaict with the handling now trying to better ensure only the items needing to be updated within view are done (e.g. it now takes around 2 seconds or lower for my WINE test install for the All Stations item of the Internet Radio view)
Changed some of the plug-in preference initialisation to be avoided until its needed when opening the preferences which helps to avoid some resource allocation when it may never be needed along with some internal re-working more for the benefit of the 64-bit build to reduce its memory usage
Changed the $abbr() ATF method to handle the likes of $abbr(Mega Man X2) to output as MMX2 instead of MMX which is the preferred way
Changed the way the volume & panning bar position elements are drawn for classic skins to make use of transparency in the source image if available (similar handling was already in place for the seekbar)
Fixed the probable cause of a crash from the background thread to generate the list of available skins being cancelled mid-processing
Fixed an ironic crash with the crash collector mode which could prevent a valid crash report from being collected with that handling
Fixed the possible cause of a deadlock related crash for some setups when trying to use the local library batch metadata edit dialog
Fixed some inconsistency between the crash.log output between the build types & removed the WINE specific handling of the filenames
Fixed some inconsistency with the Internet | Online preference option to control internet access allowing some actions when disabled
Fixed an incorrect message being shown when the new installer cannot be obtained along with tweaking the wording of the message shown
Fixed a string processing issue which could cause some instances to randomly crash (e.g. missing publisher information from CD info)
Fixed a concurrency issue which could cause a crash when trying to generate the OS playing toast whilst the existing was cancelled
Fixed some inconsistency with the handling of disc metadata where the total number of discs is also included to try to provide what's expected from those metadata values (this was done previously for track metadata)
Fixed MPC playback causing the classic skin main visualisation to feel laggy along with it not providing the audio data for the visualisation plug-ins to be able to respond in an appropriate manner
Fixed the probable cause of a regression when moving the classic skin windows around with a visualisation plug-in running & docked which caused it to stutter when moving the connected windows around
Fixed the probable cause of a ui related deadlock with the media library history view vs some of the slower running handling introduced a few builds back to fill in any missing gaps in the metadata
Fixed the global hotkey handling to toggle the media library window not using the same handling as using the Alt+L shortcut when focused which could prevent the media library window from displaying the inner window contents correctly due to a de-sync in some of the handling used to avoid drawing when there's no need to do so (i.e. when the media library is not set to be visible)
Fixed a deadlock related crash which could occur when trying to access the Internet Radio database but a corruption had seemingly occurred with the files with it not correctly handling the clean-up of it
Fixed the probable cause of a ui related deadlock which could occur when trying to update the taskbar text whilst a prior attempt was active (e.g. background title update vs stopping / changing track event)
Fixed the library playlist view handling for refreshing or obtaining the title taking too long due to some items incorrectly being re-added to be processed when they've already been flagged to be updated
Fixed another small set of performance issues found when moving the docked classic skin around along with the main song ticker drawing which was doing more GDI calls that could be cached (as is now done)
Fixed a regression after build 22278 which broke anything trying to use jnetlib for making connections
Fixed a build issue preventing libopenmpt from being built with some of the expected playback effects
Fixed the Streaming Source plug-in not always sending title updates (e.g. from starting to play a stream) so it will now attempt to queue up the missing title updates instead of ignoring them (hopefully)
Fixed the Streaming Audio Server plug-in incorrectly clipping the title metadata from longer titles especially if the title of the next item to be played is provided
Fixed a number of instances of duplicating some internal strings more often than is needed (more to do)
Fixed an inconsistency with the internal accessing of titles for bookmark items which was seen when using the export bookmark action (all other calls were behaving ok) & did some more optimisation to the loading of the bookmark file to avoid titles when the caller doesn't need to have that information
Fixed the Ctrl+Tab handling not working correctly for classic skins as a side effect from a crash fix
Fixed some small performance issues with the visualisation plug-in handling as part of it's render thread which more so in the idle / non-playing state was doing a few things that weren't needed
Fixed in_url not working correctly if recent yt-dlp builds are called with deprecated parameters which would then cause youtube playlist expansion from working
Fixed in_url not always trying to expand out youtube playlists if they've already been loaded in wacup
Fixed editing a local library view from the right-click menu incorrectly causing the current media library view to refresh when it's not the one that's currently loaded
Fixed the podcast downloads saving when there's been a change sometimes being run in the timer instead of via a background thread which could cause the main ui to block for a while (most won't have noticed this being an issue & the changes also help to reduce the potential to re-save the main feeds file when there's still feeds being checked vs when downloads are in the process of completing)
Fixed a performance issue during initial loading when the library playlists are set to be shown as children of the root library playlists node as it's now possible to do most of it in an asychronous manner without breaking the reselection of the last media library view
Fixed a performance issue during initial loading when bookmark categories need to be shown (this is equivalent to the fix above but for bookmarks)
Fixed an internal string comparison issue to avoid known invalid filetypes whilst attempting to trigger the input plug-ins to release any file handles they might have which prevented some of them from being called causing the existing file(s) being reported as locked when they shouldn't have been (whether this resolves all of the prior complaints of this happening or not I don't know but it helps)
Fixed the refresh metadata actions on the local library view right-click menus not working if there's not already been an attempt to interact with one of the existing local library views
Fixed the probable cause of bad podcast feed updates not being cleared once the feed has been obtained in the running instance (also disabled re-reading in the last cached status between instances)
Fixed video in fullscreen not always going over the taskbar (if applicable to the monitor being used) along with the click to pause / resume playback not working consistently when the the OSD is shown
Fixed the possible cause of the classic skin main window's paused state for some setups flickering at an unintended rate (aka close to strobing)
Fixed some other issues with the CSA & Milkdrop plug-ins when they're running under a classic skin & attempting to move them around which should along with an earlier fix in this changelog feel much smoother compared to the laggy / stuttery mess that was present in the prior builds with either of these plug-ins enabled & snapped to the other classic skinned windows which are then being moved about
Fixed the profiling_load.txt file being incorrectly re-opened when configured to be created & left in an open state until process closing due to how the output plug-in loading is triggered when the information from that wouldn't then be output into the file
Fixed the $is_stream(filepath) atf method incorrectly reporting zip & audio cd playlist entries as being an url which could prevent the main playlist if used for its atf string from showing the length
Fixed a deadlock that could occur with some of the audio cd handling along with some changes to better handle multiple drives vs the asynchronous handling that's in place to avoid the main ui blocking
Fixed the CSA visualisation plug-in not always following the handling to deal with WACUP being started in a minimised state which could cause it to incorrectly show as well as fixing it saving out it's last classic skin window position when there's not been a change in the position since this visualisation plug-in was loaded
Fixed a regression which prevented the custom skinned menu font from not being correctly read back in during program startup
Fixed the first column of the local library filters not being displayed when not using the artwork view mode but it had previously been used & the option to hide the album titles below the album art was disabled
Fixed the local library albumart filter handling to do what it can to avoid triggering potentially very slow all item updates under WINE when the results have just been obtained vs the filter switching modes during the scanning stage (Windows doesn't appear to be affected as it's only trying to refresh what can be seen instead of all items that might potentially be present within the virtual listview)
Fixed some additional performance issues with the opening of the preferences along with some of the page specific setup which was causing some pages to take much longer to load than expected (more to do)
Fixed a potential crash (more likely to be seen under the debugger) related to the temporary loading of the output plug-ins for the preferences when there's not been any active playback attempted
Fixed some visual issues seen when under a classic skin the scaling is switching between the 1x/2x/3x scaling modes which could either not update the skinned window frames or the songticker not looking like its being drawn until doing a manual skin refresh was attempted
Fixed a small performance issue with the classic skin window frames due to some over-painting with the right-hand half of the window when set to 2x/3x scaling mode (visually it all was looking ok afaict)
Fixed the taskbar overlay icon not always being cleared when WACUP is closed which was mainly a problem if not set to be shown in the OS taskbar but there was a pinned icon which would still be updated
Fixed an initialisation issue with the metadata reset request which could cause the SID Player input plug-in (in_sidious) to create it's player object & related resource usage when there's no need for it
Fixed the Ctrl+Tab & newly added Ctrl+Shift+Tab shortcut to cycle through the classic skin windows not always appearing to move through the windows which mainly affected WINE installs (e.g. when landing on the CSA visualisation plug-in window due to it not being on the same thread as the rest of the windows which have typically been created the main ui thread)
Fixed a small performance issue along with an effective memory leak whilst reading in the playlist undo action file
Fixed the expired beta build handling failing when chosing the option to update it (have re-worked this to avoid using the default browser to get the installer & will instead have it act more like the normal update handling)
Fixed the crash report collector missing one of the recent new config files, dropped a file no longer needed & some internal clean-up to avoid some memory waste
Fixed a crash related to recent optimisation changes to the settings cache which mainly appeared from trying to load longer folder paths for the folder monitor
Fixed the probable cause of a crash seen by some setups where the loading of the ml_res.dll was being blocked which caused WACUP to enter a hung state & crash (aka move images into the core & remove a dll)
Fixed a crash when attempting to remove a local library view node
Other small changes & attempts at fixes for issues along with small memory & performance related changes
Updated libexpat (xml.w5s) to 2.7.3 (24 Sep 2025)
Updated libjpeg-turbo (image.w5s) to 3.1.2 (3 Sep 2025)
Updated libopenmpt (in_mod.dll) to 0.8.3.24141 (6 Sep 2025)
Updated libnghttp2 (libcurl.dll) to 1.67.1 (15 Sep 2025)
Updated libsidplayfp (in_sidious.dll) to 2.15.1 (19 Sep 2025)
Updated Monkey's Audio (in_ape.dll) to 11.65 (22 Oct 2025)
Updated mpg123 (mpg123.dll) to 1.33.3 (5 Oct 2025)
Updated OpenSSL (libcurl.dll) to 3.5.4 (30 Sep 2025)
Updated vgmstream (in_vgmstream.dll) to the latest Git commit from 14 Oct 2025