0.9.19:

 (.1): Fixed hook address cache invalidation if Windows updates a system DLL

 + Replaced SteamAPI battery monitoring with actual Win32 API code, and now indicate
     when a laptop battery is charging or discharging and how much runtime is left in
       the framepacing widget.

 + Fixed various issues with SpecialK.DENY files and local / global injection
     co-existence (Ctrl + Shift compat. menu works much better).

 + Improved support for BC7 texture dumping and injection
 + Added mipmap generation for Ys VIII
 + Added shadowmap resolution boost for Ys VIII
 + Fixed Ni no Kuni 2 memory patterns for anti-stutter mod
 + Added x64 DebugRegister listing to crash handler
 + Added bypass for broken Win32MiniDumpInit in Steam's latest DRM wrapper;
     ( affects 32-bit games only. )
 + Added preliminary Ansel overlay activation detection / prevention


0.9.18:

 + More work on MinHook stability / performance -- planning a few pull requests!
   ----------------------------------------------------------------------------

 + Fixed D3D11 texture cache (missing descriptors) in Elex when trees become
    unbalanced; fullscreen mode transition in this and other games is safer now.
 + Fixed Steam achievement server->client callbacks in Star Ocean 4 and The Witcher 3
 + Turned D3D11 deferred isolation off by default since most games do not need it
 
 + Added real-time stack traces for all running threads to the thread debugger
 + Rewrote debug symbol loading code for better multi-threaded performance
 + Changed Thread-Local Storage to Fiber-Local Storage for UWP compliance

 + Added validation of NtLdr DLL paths
    >> Detects AppCompat shims that makes games behave unpredictably

 + Fixed NvAPI issues in some third-party (vidcap) software that could break
     hardware monitoring (fan RPM in particular).
 
 =====
  *** Fixed CBT Hook Teardown Broadcast -- it was not running in the 64-bit
        builds and caused many WER faults when upgrading Special K. ***
 =====


0.9.17:

 + Finished re-writing MinHook's injection core to use MUCH more efficient thread
     suspend / resume.

  >> Boot up in some applications is 2-3x faster now and that is 2-3x less time for
       third-party injection to poke its nose where it does not belong while Special K
         is rewriting application code :)
 

0.9.16:

 (.1): Eliminated unnecessary lock contention during texture uploads

 + Added workaround for systems that do not dispatch user32.dll system calls
     through win32u.dll
 + Added D3D11 Texture Cache residency management, to reduce cache pressure on
     textures that the driver isn't storing in VRAM.
 + Added D3D11 Deferred Context Isolation checkbox to D3D11 settings
 + Added SteamAPI callback count to thread monitoring info


0.9.15:

 (.1): Fix for Chrono Trigger + CEGUI
 (.1): Fix global injection profile creation for games with : in their name

 ** Substantial performance and stability gains by switching critical system call
     hooks from User32.dll to their NtUser* counterparts in win32u.dll **



0.9.14:

 (.1): Added option to fix red/green color banding if G-Sync is used with a
         10-bit framebuffer

 + Added D3DCompiler_43.dll, D3DX11_43.dll and D3DX9_43.dll as compressed .7z
     archives that will be unpacked to a game's directory if a user does not
       have the June 2010 DirectX Redistributables installed.

   >> In theory I could now start using D3DCompiler_47.dll, but I'll stick
        with _43 until I need the more advanced features for shader modding.


0.9.13:

 (.3): Added disk read/write info to thread tooltip
 (.2): Added memory info to thread tooltip
 (.1): Assigned names to unnamed threads using debug symbols

 + Added a new Threads widget, that lists performance per-thread (kernel/user)
     and can even allow you to suspend individual threads.

   >> Suspending threads is dangerous, I expect this feature will be used for
        mod develoers only. There is a high likelihood that you will have to
         restart a game to recover aver using that.

 + Moved SteamAPI support DLLs to PlugIns\ThirdParty\Steamworks\...
 + Added proper Unicode filesystem path translation to SKIM64 for Steam manifests

0.9.12:

 + Updated build of SKIM64 allows installation of standalone Ni No Stutter mod
  - Ni No Stutter is built-in to this release of the global injector
 + Reduced memory consumption for D3D11 shader state tracking
 + No longer write ReservePercent to ini files, it is being phased out
 + Remove Merge-Only Cache Policy from D3D11 Texture Cache


0.9.11:

 (.2): Possible shader cache memory leak fix for FFXV

  + Fixed injection-blacklisted games failing to start while global injection is active
  + Fixed DLL init. issues with Far Cry 5 (_after_ Easy Anti-Cheat is worked around)
  + Improved support for shader state tracking in multi-threaded D3D11 engines
  + Added audio gain control (+dB) to volume management for hardware that supports it


0.9.10:

  + Dynamically adjust NvAPI monitoring thread priority to prevent rare hitching
      when the render thread's priority is != NORMAL
  + Added various options to make Ni No Kuni 2 less annoying; refer to control panel
  + Rolled up all of the changes from the standalone FFXV version (0.9.9)


0.9.9:

 (.15): Add logging of unexpected ref. counts on texture data to locate FFXV leaks
 (.14): TargetFPS applied at startup again
 (.13): Add merge mode to texture cache -- only prevents duplicate resources
 (.12): Sleep(0) on render thread -> SwitchToThread(); useful for i5 users
 (.11): Workaround for threads that try to skip attach notifications and corrupt TLS
 (.10): Alternate compiler options for better support with Ansel -- again
 (.8): Add persistent storage of settings introduced in .6, and explain them
        [They are actually applied when the engine starts said thread now]

 (.6): Add options for thread scheduling; can lower render and VSYNC threads
         to help people with fewer CPU cores in FFXV

 (.5): Anti-Debug Workaround for FFXV

 (.3): Correctly packed 64-bit version of CEGUI into 64-bit builds :P

 (.2): Fixed floating ImGui widgets not saving position in osd.ini
 (.1): Fix issue preventing Special K from identifying and assigning its own
         threads their initial priority (all were running NORMAL but most are
           designed to run at lower priority).

 + Disabled compiler options known to cause problems with Ansel; forced to
     replace them with options known to cause issues with MSI Nahimic.

 + Prevent FFXV from running SteamAPI with TIME_CRITICAL scheduling and
     starving more important threads that actually use the CPU productively