From 154b6c48c1236bc24eac1a8d991e974b1fd2f5a9 Mon Sep 17 00:00:00 2001 From: Travis Nickles Date: Thu, 21 Dec 2023 07:02:55 -0600 Subject: [PATCH] Updated Changelog files --- DS4Windows/Changelog.json | 24 +++++++++++++++++++++--- DS4Windows/Changelog.min.json | 2 +- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/DS4Windows/Changelog.json b/DS4Windows/Changelog.json index d6cd1bae8..3f2362be5 100644 --- a/DS4Windows/Changelog.json +++ b/DS4Windows/Changelog.json @@ -1,9 +1,27 @@ { - "latest_version": "3.3.0", - "latest_version_number_info": {"majorPart": 3, "minorPart": 3, "buildPart": 0}, - "updated_at": "2023-12-15T22:10:24+0000", + "latest_version": "3.3.1", + "latest_version_number_info": {"majorPart": 3, "minorPart": 3, "buildPart": 1}, + "updated_at": "2023-12-21T12:56:39+0000", "changelog": { "versions": [ + { + "version_str": "3.3.1", + "version_number_info": {"majorPart": 3, "minorPart": 3, "buildPart": 1}, + "base_header": "Version 3.3.1", + "release_date": "2023-12-21T12:56:39+0000", + "locales": [ + { + "code": "en", + "header": "Version 3.3.1", + "log_text": ["* Fixed use of SocketAsyncEventArgs for .NET 8. Allows clients to disconnect and reconnect as expected", + "* Use manualresetevent timeout as a precaution for HaltReportingRunAction method", + "* Fixed length of macroDone array. Added const to enforce array length. Fixes macro binding for Switch, JoyCon, DSE exclusive buttons"], + "editor": "ryochan7", + "editors_note": ["UDP regression fix"], + "updated_at": "2023-12-21T12:56:39+0000" + } + ] + }, { "version_str": "3.3.0", "version_number_info": {"majorPart": 3, "minorPart": 3, "buildPart": 0}, diff --git a/DS4Windows/Changelog.min.json b/DS4Windows/Changelog.min.json index a2215d2d3..85cdee389 100644 --- a/DS4Windows/Changelog.min.json +++ b/DS4Windows/Changelog.min.json @@ -1 +1 @@ -{"latest_version":"3.3.0","latest_version_number_info":{"majorPart":3,"minorPart":3,"buildPart":0},"updated_at":"2023-12-15T22:10:24+0000","changelog":{"versions":[{"version_str":"3.3.0","version_number_info":{"majorPart":3,"minorPart":3,"buildPart":0},"base_header":"Version 3.3.0","release_date":"2023-12-15T22:10:24+0000","locales":[{"code":"en","header":"Version 3.3.0","log_text":["* Update project to target .NET 8 Desktop Runtime","* Updated bundled libraries to target .NET 8","* Added initial unit test project to solution","* Updated use of ProfileMigration class","* Changed how migrated XML string is grabbed from ProfileMigration class","* Fixed issues with converting of older profiles from earlier DS4Windows versions including Jays2Kings builds","* Force waiting for mapper routine to be over before switching profiles. Fixes BT lightbar issues","* Unregister DataContext used to link VMs early. Purge memory early and reduce memory usage. Thanks to **kurtanr** for figuring out the problem","* Loosen analog to mouse wheel mapping","* Increased RWC for FlickStick in editor. Allow upper limit of 200","* Changed technique for stopping mapping routine from input thread. Allows some routines to still run while profile loading is in progress","* Make sure XmlReader instance is closed after using ProfileMigration class","* Quick UDP server startup tweaks","* Add missing button ids to the gyroTriggerItems. Contribution by **christranq**","* DualSense LED:Swap player 4 & player 6. Contribution by **RobbyCBennett**"],"editor":"ryochan7","editors_note":[".NET 8. Buffering the quit"],"updated_at":"2023-12-15T22:10:24+0000" } ] },{"version_str":"3.2.21","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":21},"base_header":"Version 3.2.21","release_date":"2023-12-05T05:23:00+0000","locales":[{"code":"en","header":"Version 3.2.21","log_text":["* Updated ViGEmClient to work around IOCTL_VIGEM_WAIT_DEVICE_READY timeout when resuming from sleep. The problem affected normal operation as well. Just not that often","* Clear some memory references early in ProfileEditor. Contribution by **kurtanr**","* Fixed new line in translation string. Contribution by **DraakjeYoblama**","* Dutch strings update. Contribution by **DraakjeYoblama**","* Updated zn-hans translation. Contribution by **CrazyHPi**","* Russian translation update. Contribution by **mentalsolin**","* Attempt to load DS4Windows config when loading WelcomeDialog for a separate process. Makes sure set translation choice is used","* Enable localization for LogMessageDisplay window","* Added check for last check task when starting app update","* Enable .NET 8 nag window"],"updated_at":"2023-12-05T05:23:00+0000" } ] },{"version_str":"3.2.20","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":20},"base_header":"Version 3.2.20","release_date":"2023-11-24T19:04:30+0000","locales":[{"code":"en","header":"Version 3.2.20","log_text":["* Bump DotNetProjects.Extended.Wpf.Toolkit from 5.0.103 to 5.0.106","* Fixed some Gyro trigger indexes. Make sure Touchpad relate triggers work again","* Added DSE buttons for use as shift trigger. Actually allow JoyCon side buttons to work for shift triggers","* Abstract resource paths more. Allows easier renaming of assembly. Minor consequences in the VS XAML editor though","* Consolidate gyro trigger context menu lists in Profile Editor","* Added Malay translation. Contribution by **shoen1x**","* Use FileVersion prop for grabbing assembly version instead. More helpful for .NET 8 usage than right now","* Updated FakerInputDLL files","* Hide some ViGEmBus messages in Profile Editor regarding passthru when using supported versions. Small tweak","* Use ViGEmBus version check for lightbar passthru message as well","* add Resources.zh-hans.resx for Chinese simplified translation. Contribution by **CrazyHPi**","* update Strings.zh-Hans.resx for Chinese simplified translation. Contribution by **CrazyHPi**","* Marked more strings in GUI for translation. It will not affect this version obviously","* Removed use of deprecated LocText extension. Now use BLoc extension instead. Only used to render one string in Profile Editor previously","* Skip trying to reset UDP server connection if requested the server to stop","* Fixed Load a Profile Special Action unload trigger list header in Dark theme","* Changed display text for Side L and Side R buttons in unload trigger list"],"updated_at":"2023-11-24T19:04:30+0000" } ] },{"version_str":"3.2.19","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":19},"base_header":"Version 3.2.19","release_date":"2023-11-05T21:29:22+0000","locales":[{"code":"en","header":"Version 3.2.19","log_text":["* Tweaked HidHide whitelist app check to work behind a junction directory. Scoop install","* Updated some installer URLs in the WelcomeDialog window. Updated linked ViGEmBus installer to version 1.22.0","* Changing source code license to GPL version 3. Added notices","* Added GPL version 3 text to About window","* Perform junction directory check at startup. Use real install path for exepath if found"],"updated_at":"2023-11-05T21:29:22+0000" } ] },{"version_str":"3.2.18","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":18},"base_header":"Version 3.2.18","release_date":"2023-10-29T17:24:35+0000","locales":[{"code":"en","header":"Version 3.2.18","log_text":["* Fixed HidHide registry check when key does not exist","* Fixed Gyro Mouse Joystick trigger indexes for some triggers. DualSense Edge triggers in particular","* Updated SharpOSC libraries","* Fixed default app setting for JoyCon LinkMode option","* Added Turkish translation. Contribution by **onuralpyilkin**","* Changed helpURL for SendInput warning message"],"updated_at":"2023-10-29T17:24:35+0000" } ] },{"version_str":"3.2.17","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":17},"base_header":"Version 3.2.17","release_date":"2023-09-30T19:58:19+0000","locales":[{"code":"en","header":"Version 3.2.17","log_text":["* Fix disconnect of DS4 connected to Sony WA when Stop button is used","* Revert back to having Launch Program special action run as current user","* Take CollectionView into account when removing a Special Action from list"],"updated_at":"2023-09-30T19:58:19+0000" } ] },{"version_str":"3.2.16","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":16},"base_header":"Version 3.2.16","release_date":"2023-09-27T20:14:36+0000","locales":[{"code":"en","header":"Version 3.2.16","log_text":["* Change SetupAPI calls used to grab device information. Needed for fake USB DS4 device"],"updated_at":"2023-09-27T20:14:36+0000" } ] },{"version_str":"3.2.15","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":15},"base_header":"Version 3.2.15","release_date":"2023-09-23T17:53:59+0000","locales":[{"code":"en","header":"Version 3.2.15","log_text":["* Show blank panel for DS3 in registration window","* Check for vendor-defined HID devices based on HID Capabilities instead of description. Contribution by **Kanuan**","* Changed props in HidDeviceCapabilities class to be full properties","* Changed HidDeviceAttributes class to use full properties","* Changed auto props in HidDevice to use full properties","* Have Launch Program Special Action try to de-elevate when launching a program","* Removed Nefarius.Utilities.DeviceManagement AnyCPU library dependency. Do virtual device check in program code instead"],"updated_at":"2023-09-23T17:53:59+0000" } ] },{"version_str":"3.2.14","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":14},"base_header":"Version 3.2.14","release_date":"2023-09-02T19:12:26+0000","locales":[{"code":"en","header":"Version 3.2.14","log_text":["* Removed social accounts from app","* Added style resource for first launch window","* Check for inverse application cloak HidHide setting. Skip checking HidHide whitelist if option is enabled","* Allow DS4 output to not report virtual trigger button state","* Added small exception handling for single app instance check","* Updated Nefarius.ViGEm.Client.dll files with fixed userdata args for adding notification callback","* Display Windows error code for unknown ViGEmFailure in the Log","* Added Greek translation. Contribution by **trlef19**","* Added Indonesia translation. Contribution by **Adamsw72**","* Added extra user documentation to repo. Edited README.md. Contribution by **Oliver-Noah**","* Expose secondary joined JoyCon SideL and SideR buttons in mapper. Use DS FnL and FnR codes","* Allow DS4 trigger button output only","* Allow virtual DS4 trigger behavior combobox strings to be translatable"],"updated_at":"2023-09-02T19:12:26+0000" } ] },{"version_str":"3.2.13","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":13},"base_header":"Version 3.2.13","release_date":"2023-07-24T15:42:16+0000","locales":[{"code":"en","header":"Version 3.2.13","log_text":["* Added Resource workaround in project file to remove then add files. Performance bump. .NET is a weird beast.","* Added missing JoyCon controls for Special Actions Unload Triggers","* Added remainder cutoff for Touchpad Mouse and Gyro Mouse","* Added FirstLaunchUtilWindow. Currently used to specify which devices the mapper should read","* Added extra attribution for DsHidMini project in first launch window","* Change single app instance check to use EventWaitHandleAcl.TryOpenExisting","* Added profile switch notifications for Auto Profile system","* Added implicit Default theme logic. Have default app theme change based on Windows app color setting","* Prevent lock recursion in OutputSlotManager if ViGEmFailure is encountered","* Added Vietnamese language. Contribution by **taolatao147**"],"updated_at":"2023-07-24T15:42:16+0000" } ] },{"version_str":"3.2.12","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":12},"base_header":"Version 3.2.12","release_date":"2023-06-25T21:26:29+0000","locales":[{"code":"en","header":"Version 3.2.12","log_text":["* Fixed DS3 support not being able to be enabled. Contribution by **sunnyqeen**","* Updated german translation. Contribution by **PaulWentzel**","* Added Finnish translation. Contribution by **eemijun**","* Attempt to adjust JoyCon stick axis ranges based on initial axis coordinates","* Decreased wait period after resume. Reduced to 5 seconds. Likely a mistake","* Dispose notify icon early before closing program. At least H.NotifyIcon errors will show up in the Log upon quitting","* Fixed RS stick calibration parsing for JoyCon and Switch Pro controllers","* Changed routine to find HidHideClient program. Use registry info to attempt to find HidHide location","* Added extra safeguard if profiles list is empty. Prevents crash"],"updated_at":"2023-06-25T21:26:29+0000" } ] },{"version_str":"3.2.11","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":11},"base_header":"Version 3.2.11","release_date":"2023-06-03T23:08:23+0000","locales":[{"code":"en","header":"Version 3.2.11","log_text":["* Added task logging to resume method","* Increase wait period in resume routine","* Updated HidHide installer link to version 1.2.128.0","* Changed boundary check for main window placement on startup","* Added jitter compensation to Gyro Mouse Joystick","* Make DS3 device support optional. Separate it from DS4 Controller Support","* Lowered JoyCon LS X- boundary when no user calibration is present","* Updated FakerInputDll.dll files with file write flag fix","* Fixed initial saving of default enable status for non-DS4 controllers. Mainly changes saving to AppData folder","* Updated French translation. Contribution by **EnzoChaussivert**","* Fixed restoring of Window position on multi-monitor systems. Contribution by **kurtanr**"],"updated_at":"2023-06-03T23:08:23+0000" } ] },{"version_str":"3.2.10","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":10},"base_header":"Version 3.2.10","release_date":"2023-04-30T19:46:54+0000","locales":[{"code":"en","header":"Version 3.2.10","log_text":["* Added jitter compensation routine for Gyro Mouse","* Move output handler init and disconnect calls to ControlService Start and Stop routines","* Changed suspend and resume routines","* Added extra exception handling for tray notification failure","* Use DetermineConnectionType in PostInit of DS3Device. Contribution by **SunnyQeen**","* Fixed a crash when open device options with null option. Contribution by **SunnyQeen**","* Add InterpretingOscMonitoring Option. Contribution by **xAdler**","* Added some OSC translation strings. Contribution by **xAdler**","* Added OSC monitoring message interpreting. Contribution by **xAdler**","* Added OSC trigger control. Contribution by **xAdler**","* Added additional mapping checks in ProfileDTO MapFrom routine","* Changed how macros are saved from binding window. Do not reset shift trigger","* Support Horipad 4 FPS. Contribution by **markguleno**","* Fixed custom led mode. Contribution by **MatrixDJ96**"],"updated_at":"2023-04-30T19:46:54+0000" } ] },{"version_str":"3.2.9","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":9},"base_header":"Version 3.2.9","release_date":"2023-03-07T16:16:55+0000","locales":[{"code":"en","header":"Version 3.2.9","log_text":["* Fixed changing of Trigger Effect while switching profiles with DualSense controller","* Allow LSVerticalScale and RSVerticalScale to save values > 1.0. Contribution by **Katalysta**","* Updated Italian translation. Contribution by **MarkThat**","* Increased LS and RS Vertical Scale max to 4.0","* Check for string length from HidD_GetSerialNumberString call from possible invalid response from hardware","* Added extra locking for LoggerHolder","* DualSense Edge input support (FnL FnR BLP BRP). Contribution by **steffalon**","* Added subtype property for DualSenseDevice class","* Added COMException catching when adding hook for power events","* Removed message regarding Middle Mouse closing app in tray menu. Windows 11 no longer supports this at least right now","* Added DualShock 3 support using DsHidMini driver (SXS) or Sony Sixaxis driver. Contribution by **SunnyQeen**","* Added logging when reading of Actions.xml fails","* Changed processing of Delay tags for Actions.xml. Fixes some cases where recent DS4Windows no longer reads Special Action files from older versions","* Fixed outer bounds when using smoothing for 360 Gyro Steering.","* Fixed anti-dead zone interpretation for 360 Gyro Steering stick output. Applies to Xbox 360 and DS4 output (not VJoy)","* Added Playmax PS4 controller. Contribution by **nzgamer41**"],"updated_at":"2023-03-07T16:16:55+0000" } ] },{"version_str":"3.2.8","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":8},"base_header":"Version 3.2.8","release_date":"2023-02-05T20:31:36+0000","locales":[{"code":"en","header":"Version 3.2.8","log_text":["* Corrected list display of Press Key special action regarding Toggle status","* No longer enforce en-US values for Custom Bezier curve string","* Fixed saving of options for Macro special action. Model problem","* Check tray icon has been created before trying to show notification","* Fixed DS4KeyType check for shift modifier when multiple flags are used","* Ignore None KeyType flag for shift modifier","* Simplify shift modifier key type saving","* Fixed loading of Gyro Mouse Joystick trigger eval condition","* Added extra precautions when disconnecting from FakerInput","* Adding initial DualSense Edge support. Contribution by **dezerving**","* Updated zh-cn translatation. Contribution by **jyc001**","* Grab firmware info for DualSense controller"],"updated_at":"2023-02-05T20:31:36+0000" } ] },{"version_str":"3.2.7","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":7},"base_header":"Version 3.2.7","release_date":"2023-01-19T05:18:21+0000","locales":[{"code":"en","header":"Version 3.2.7","log_text":["* Fixed loading of Unload Trigger for Load Profile special action","* Fixed model for Press Key special action regarding Toggle status","* Changed Press Key special action keyType to reflect Toggle status. Was broken before version 3.2"],"updated_at":"2023-01-19T05:18:21+0000" } ] },{"version_str":"3.2.6","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":6},"base_header":"Version 3.2.6","release_date":"2023-01-13T05:36:12+0000","locales":[{"code":"en","header":"Version 3.2.6","log_text":["* Fixed key type and trigger assignments for shift actions. Fixed bindings for shift button and macro actions"],"updated_at":"2023-01-13T05:36:12+0000" } ] },{"version_str":"3.2.5","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":5},"base_header":"Version 3.2.5","release_date":"2023-01-12T05:44:27+0000","locales":[{"code":"en","header":"Version 3.2.5","log_text":["* Fixed some default values for app settings","* Extra app settings checks. Re-establish some app settings defaults","* Set AbsRegionDisplay to empty string by default"],"updated_at":"2023-01-12T05:44:27+0000" } ] },{"version_str":"3.2.4","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":4},"base_header":"Version 3.2.4","release_date":"2023-01-11T05:31:31+0000","locales":[{"code":"en","header":"Version 3.2.4","log_text":["* Fixed loading of Launch Program Special Actions arguments"],"updated_at":"2023-01-11T05:31:31+0000" } ] },{"version_str":"3.2.3","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":3},"base_header":"Version 3.2.3","release_date":"2023-01-09T01:09:48+0000","locales":[{"code":"en","header":"Version 3.2.3","log_text":["* Fixed saving and loading of Shift Modifier trigger"],"updated_at":"2023-01-09T01:09:48+0000" } ] },{"version_str":"3.2.2","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":2},"base_header":"Version 3.2.2","release_date":"2023-01-08T00:02:51+0000","locales":[{"code":"en","header":"Version 3.2.2","log_text":["* Fixed saving of Launch Program special action","* Fixed Macro and Press Key Special Actions"],"updated_at":"2023-01-08T00:02:51+0000" } ] },{"version_str":"3.2.1","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":1},"base_header":"Version 3.2.1","release_date":"2023-01-07T05:53:15+0000","locales":[{"code":"en","header":"Version 3.2.1","log_text":["* Fixed wait period offset for automatic added wait times in macro editor","* Fixed serializing of Special Actions","* Fixed saving of Special Actions to Actions.xml","* Fixed delay time usage for some Special Action types"],"updated_at":"2023-01-07T05:53:15+0000" } ] },{"version_str":"3.2.0","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":0},"base_header":"Version 3.2.0","release_date":"2023-01-05T19:58:58+0000","locales":[{"code":"en","header":"Version 3.2.0","log_text":["* Migrate app settings and profile readers to use XmlSerializer DTO classes","* Small tweaks for JoyCon base init","* Tweaked Switch Pro init","* Fixed Gyro Mouse toggle profile setting","* Experimental support for JoyCon Charging Grip support","* Force cancel stalled IO operations when stopping input thread loop","* Reset DS4State while removing JoyCon device","* Added simple haptic dirty flag","* Tweaked hue changing for lightbar Rainbow mode","* Made SideL and SideR available as Gyro triggers","* Changed rainbow label. Value actually affects lightness level,not saturation","* Updated note regarding stick rotation setting","* Add extra macro wait periods if delays are not already in use. Tried to keep the old Jay2Kings behavior but it is time to change things","* Fixed device type set for JoyConControllerOptions instance","* Bump NLog from 5.1.0 to 5.1.1","* Updated references to Swedish locale assembly","* Bundle custom Nefarius.Utilities.DeviceManagement. Minimal build changes","* Fixed crash on updating tooltip if Windows Explorer is not running for some reason. Contribution by **V-Olk**","* Updated Russian translation. Contribution by **V-Olk**","* Fixed default value of UseLang in AppSettingsDTO"],"updated_at":"2023-01-05T19:58:58+0000" } ] },{"version_str":"3.1.12","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":12},"base_header":"Version 3.1.12","release_date":"2022-12-20T17:21:17+0000","locales":[{"code":"en","header":"Version 3.1.12","log_text":["* Updated NuGet packages. H.NotifyIcon.Wpf,MdXaml,NLog,System.Management","* Moved some DualSense rumble settings into Profiles. Contribution by **Kanuan**","* Ignore invalid OscPacket that might come through","* Changed counter use for Hotplug routine","* Removed old DS4 BT output counter workaround. Was only needed when using the Control endpoint","* Fixed RS outer binding","* Fixed bad copy pasta for SideR control value in special actions"],"updated_at":"2022-12-20T17:21:17+0000" } ] },{"version_str":"3.1.11","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":11},"base_header":"Version 3.1.11","release_date":"2022-11-27T05:34:04+0000","locales":[{"code":"en","header":"Version 3.1.11","log_text":["* Fixed loading of language assemblies from Lang folder","* Update Traditional Chinese assembly. Contribution by **syaoran**","* Fixed snap to center Y axis coordinate for control abs mouse","* Tweaks to DS4 BT output support. Revert back to using output report 0x11","* Take payload length into account besides just array length. Strip 0xA0 data magic byte from output packet","* Added workflows for issue moderation automation. Contribution by **nefarius**","* Check current virtual desktop display bounds when restoring window position on startup","* Added Poast social link in About window","* Tweaked Switch Pro init routine. Increased initial USB delay,tweaked modeswitch command","* Removed use of old ControlService busThread. Utilize Dispatcher","* Fixed rsync ignore rules for default translation assemblies"],"updated_at":"2022-11-27T05:34:04+0000" } ] },{"version_str":"3.1.10","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":10},"base_header":"Version 3.1.10","release_date":"2022-11-07T02:41:13+0000","locales":[{"code":"en","header":"Version 3.1.10","log_text":["* Added Mouse instance null check when performing PreLoadReset before profile loading","* Added absolute mouse output support for bindable controls","* Removed references to old BitTube channel","* Added WpfScreenHelper NuGet package to dependencies","* Use absolute mouse region display coordinate translation for Touchpad abs mouse","* Removed App references to MemoryMappedViewAccessor objects for cmd interface. Create as needed. Snappier app as a result"],"updated_at":"2022-11-07T02:41:13+0000" } ] },{"version_str":"3.1.9","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":9},"base_header":"Version 3.1.9","release_date":"2022-10-25T21:39:41+0000","locales":[{"code":"en","header":"Version 3.1.9","log_text":["* Updated ViGEm.NET libraries. Includes check for IOCTL_DS4_AWAIT_OUTPUT_AVAILABLE status. Contribution by **Nefarius**","* Added check that AwaitBufferThread has reached inner loop before attempting to Interrupt thread","* Fixed Gyro Mouse Joystick output for vertical axes"],"updated_at":"2022-10-25T21:39:41+0000" } ] },{"version_str":"3.1.8","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":8},"base_header":"Version 3.1.8","release_date":"2022-10-24T21:05:14+0000","locales":[{"code":"en","header":"Version 3.1.8","log_text":["* Added working directory info for startup lnk file","* Display input slot number in Output Slots tab","* Force update TooltipText in GUI thread","* Implementation of Touch Mouse Joystick","* Fixed log message generation when virtual pad plugin fails","* Abstract post action stick axis state changing for use with Mouse Joystick routines","* Display some input device information in Output Slots section","* Added some device number checks in ProfileSettingsVM. Avoids test index","* Fixed Keypad Decimal mapping for FakerInput","* Fixes for virtual DS4 output feedback support from ViGEm project. Contribution by **Nefarius**","* Updated ViGEmClient and ViGEm.NET libraries. Contribution by **Nefarius**","* Virtual DS4 output feedback support re-enabled. Contribution by **Nefarius**"],"updated_at":"2022-10-24T21:05:14+0000" } ] },{"version_str":"3.1.7","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":7},"base_header":"Version 3.1.7","release_date":"2022-10-12T15:14:40+0000","locales":[{"code":"en","header":"Version 3.1.7","log_text":["* Added stick delta acceleration options for LS and RS","* Added extra UAC Warning to Log when using SendInput event generator. Contribution by **Yohoki**","* Changed URL parser for link generation in LogMessageDisplay window","* Changed XInput output slot display routine. Contribution by **Ygor**","* Added Touchpad virtual button activation mode options. Adds ability for activation on Touchpad Touch and Touchpad Release","* Added newer possible HidHide locations to HidHide client search routine","* Updated some NuGet packages. H.NotifyIcon.Wpf,MdXaml,Nefarius.Utilities.DeviceManagement","* Updated linked ViGEmBus version to 1.21.442.0. Now listed as a stable release","* Lowered eventDispatcherThread priority to BelowNormal;Event loop primarily used for hotplug and output device plugin and removal","* Added PowerA FUSION Wired Fightpad for PS4 to known device list. Contribution by **Ygov**","* Added Thrustmaster eSwap Pro to known device list. Contribution by **SakifX9**","* Arabic language translation updated. Contribution by **Ahmed**","* Added reWASD and VirtualHere to new exclusion filter for virtual device check. Contribution by **Nefarius**","* Changed duration for multimedia timer in app. Not really used now but it would allow sleep times less than 16 ms in app","* Unfortunately had to disable virtual DS4 feedback support again. Routine only worked reliably with one controller"],"updated_at":"2022-10-12T15:14:40+0000" } ] },{"version_str":"3.1.6","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":6},"base_header":"Version 3.1.6","release_date":"2022-09-23T01:54:08+0000","locales":[{"code":"en","header":"Version 3.1.6","log_text":["* Updated DS4Windows.deps.json file","* Made sure to bundle latest Lang assembly folder"],"updated_at":"2022-09-23T01:54:08+0000" } ] },{"version_str":"3.1.5","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":5},"base_header":"Version 3.1.5","release_date":"2022-09-22T21:04:32+0000","locales":[{"code":"en","header":"Version 3.1.5","log_text":["* Updated German translation. Contribution by **h1nnak**","* Added Razer Raion Fightpad PS4 to known devices. Contribution by **Ygor Vaz**","* Updated NLog package to version 5.0.4","* Updated H.NotifyIcon.Wpf package to version 2.0.64","* Updated bundled ViGEm.NET libraries","* Fixed wrong UI binding used for RSAntiSnapback. Contribution by **Kanuan**","* Fixed Hip Fire Delay settings not saving. Contribution by **Kanuan**","* Fixed preset option using wrong preset. Contribution by **Kanuan**","* Fixed Flick Stick Min Angle settings not saving. Contribution by **Kanuan**","* Set DualSense's Lightbar to white when stopping DS4Windows. Contribution by **Kanuan**","* Added AutoProfile target EXE to Hidhide. Contribution by **Yohoki**","* Added Auto-Profile Target to HidHide's Whitelist. Contribution by **Yohoki**","* Fixed LF byte for rumble frequency with Switch Pro and JoyCon","* Added reference to Nefarius.Utilities.DeviceManagement package. Contribution by **nefarius**","* Hardened virtual device check using Nefarius.Utilities.DeviceManagement package. New check detects and skips reWASD created virtual DS4 controllers. Contribution by **nefarius**","* Updated Driver Installer window to link to HidHide 1.2.98","* Display XInput slot num in output slots panel","* Added Filename to LogDebug when adding/removing EXE entry for HIDHide's whitelist. Contribution by **Yohoki**","* Updated README file with updated instructions and pictures. Contribution by **dpearson2699**","* Activated Improved Rumble Emulation for DualSense controllers using newer firmware. Set DualSense's default rumble strength level to High. Contribution by **Ygor Vaz**","* Increased max amplitude for Switch Pro rumble. Increases max rumble output","* Added initial support for updated ViGEmBus DS4 full output payload (rumble + lightbar) support. Requires latest pre-release ViGEmBus driver (AwaitRawOutputReport calls) to work."],"updated_at":"2022-09-22T21:04:32+0000" } ] },{"version_str":"3.1.4","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":4},"base_header":"Version 3.1.4","release_date":"2022-09-01T23:36:52+0000","locales":[{"code":"en","header":"Version 3.1.4","log_text":["* Changed when CustomName is defined for TaskbarIcon. Fixes Custom Name Exe option with TaskbarIcon workaround"],"updated_at":"2022-09-01T23:36:52+0000" } ] },{"version_str":"3.1.3","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":3},"base_header":"Version 3.1.3","release_date":"2022-08-22T01:49:39+0000","locales":[{"code":"en","header":"Version 3.1.3","log_text":["* Changed startup device init and hotplug to unify code routines","* Changed minimum sensitivity for LS and RS","* Updated H.NotifyIcon package to version 2.0.60","* Implemented workaround for H.NotifyIcon disposing TaskbarIcon instance after display scaling and RDP sessions","* Updated NLog package to version 5.0.2","* Small change to display of Binding window panels when bringing up macro recorder","* Added credit notes for vJoyInterfaceCS","* Changed ViGEmPluginFailure string text. Removed reference to old PurgeOldXInput project"],"editor":"ryochan7","editors_note":["Pushing tray icon fixes early"],"updated_at":"2022-08-22T01:49:39+0000" } ] },{"version_str":"3.1.2","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":2},"base_header":"Version 3.1.2","release_date":"2022-08-08T02:21:08+0000","locales":[{"code":"en","header":"Version 3.1.2","log_text":["* Hide alpha slider from color picker window","* Changed some translation files locations based on .NET 6 locale changes","* Added OSC Server and Sender. Contribution by **GreySole**","* Updated H.NotifyIcon package","* Use new H.NotifyIcon property for handling tray icon identifier","* Removed Speaker volume feature flag from DS4 output report","* Minor tweak for ReadLocker wrapper class","* Added H.NotifyIcon to About Extras tab","* Removed DS4Audio class from project","* Disabled failed fake DS4 detection. Does not really work for its purpose based on reports","* Fixed Rename Profile window to use app theme colors","* Slightly alter how loading a temp profile is performed"],"editor":"ryochan7","editors_note":["Biking now taking up a lot of my time"],"updated_at":"2022-08-08T02:21:08+0000" } ] },{"version_str":"3.1.1","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":1},"base_header":"Version 3.1.1","release_date":"2022-07-21T10:36:14+0000","locales":[{"code":"en","header":"Version 3.1.1","log_text":["* Changed gyro output mode output behavior for joined JoyCon. Run output early for Gyro Mouse and Gyro Mouse-like Joystick","* Updated many project dependency NuGet packages and DLL files","* Migrated project to use H.NotifyIcon.Wpf package","* Added extra CONNRESET IOControl call for ReceiveCallback method in UDP server. Avoids potential memory leak within UDP server in .NET 6. The call should have probably existed beforehand","* Switched main UDP message rsp to convert payload from a struct. Faster and simpler","* Added dependabot to GitHub actions. Contribution by **sitiom**","* Slightly tweaked Suspend and Resume power routines","* Fixed DS4Updater download URL redirect when automatic download fails","* Fixed initial data bindings for Auto Profile section","* Have Full Pull Dual Stage triggers use raw input range rather than interpreted. Might have to change how Full Pull is handled later","* Changed WelcomeDialog to use Windows temp folder while downloading rather than program folder. Would mainly affect when DS4Windows is run in a read-only folder (shouldn't be the case on a proper setup)","* Removed Mastodon and Minds social media links from About window. No longer support Mastodon as a whole. DS4Windows actually got banned from Minds","* Added extra project links and notes to About window","* Allow joined JoyCons to transmit unique Gyro data to UDP server. Mimics behavior of BetterJoy for two JoyCon controllers linked together","* Changed HidHide download link to point to version 1.1.50.0. Approved release","* Enforce 6 normal key maximum for fake virtual keyboard in FakerInput handler. Pretty sure some reports were from people abusing said limit","* Removed old .NET 5 workaround for single process instance checking. Use EventWaitHandleAcl.OpenExisting included with .NET 6. Contribution by **sitiom**","* Fixed touchpad counter reading with DualSense. Needed for Touchpad passthru for virtual DS4 Extended output to work. Contribution by **Kanuan**"],"editor":"ryochan7","editors_note":["JoyCon changes finally make my old Wiimote config obsolete"],"updated_at":"2022-07-21T10:36:14+0000" } ] },{"version_str":"3.1.0","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":0},"base_header":"Version 3.1.0","release_date":"2022-07-10T02:13:52+0000","locales":[{"code":"en","header":"Version 3.1.0","log_text":["* Have project target .NET 6. Good performance jump. **Make sure to download the .NET 6 Runtime before updating.** [.NET 6 Runtime x64](https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-desktop-6.0.6-windows-x64-installer)","* Updated extra libs to target .NET 6","* Remove the use of the DS4Audio monitor class for select devices. Use appropriate feature flags instead","* Changed expanded output range for Gyro Mouse-like Joystick","* Added additional checks for HidHideClient path","* Change gyro mode subcommand calls for Switch Pro and JoyCon","* Added try catch for initial outputKBMHandler connect call","* Changed Backslash OEM key alias for FakerInput mapping","* Corrected current gyro toggle flags. Could have impacted profile changes","* Raise default warning intervals used for controller readings control and lightbar flashing","* Removed several DS4 BT Windows 7 workarounds. Seriously,Win 7 support is done. 8.1 is almost EOL","* Fixed use of WIN64 compilation symbol for serial reading routine. VS probably stripped it with the .NET 5 migration"],"editor":"ryochan7","editors_note":["Going my own way with this. Likey short lived support"],"updated_at":"2022-07-10T02:13:52+0000" } ] },{"version_str":"3.0.18","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":18},"base_header":"Version 3.0.18","release_date":"2021-08-17T18:46:29+0000","locales":[{"code":"en","header":"Version 3.0.18","log_text":["* Added output Stick and Axis options for Gyro Mouse Joystick","* Use TabControl to contain gyro output panels. Simplifies XAML","* Re-enabled DS4 emulation support"],"editor":"ryochan7","editors_note":["Can't have nice things like a functioning society"],"updated_at":"2021-08-17T18:46:29+0000" } ] },{"version_str":"3.0.17","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":17},"base_header":"Version 3.0.17","release_date":"2021-08-16T04:18:45+0000","locales":[{"code":"en","header":"Version 3.0.17","log_text":["* Added fake DS4 FrameCounter field for DualSense,Switch Pro and JoyCon devices","* Increased default Idle Disconnect time to 15 min","* Disabled DS4 controller emulation support. Can't have nice things","* Only perform output slot lookup in virtual device plugin routine when emulating a controller","* Check for device removal status before adding device to main view list. Fixes initial Switch Pro disconnect on hotplug when controller battery is dead"],"editor":"ryochan7","editors_note":["Tired of this crap"],"updated_at":"2021-08-16T04:18:45+0000" } ] },{"version_str":"3.0.16","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":16},"base_header":"Version 3.0.16","release_date":"2021-08-09T02:07:23+0000","locales":[{"code":"en","header":"Version 3.0.16","log_text":["* Changed mapper to copy timestamp data from original input state object. Used for DS4 Gyro Passthru"],"editor":"ryochan7","editors_note":["Tired of everything"],"updated_at":"2021-08-09T02:07:23+0000" } ] },{"version_str":"3.0.15","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":15},"base_header":"Version 3.0.15","release_date":"2021-08-07T17:34:17+0000","locales":[{"code":"en","header":"Version 3.0.15","log_text":["* Changed ControllerListViewModel locking strategy for non-Sony DS4s that might fail the initial handshake","* Removed OnlyInputData0x01 hack for fake DS4 controllers (fake DS4 using Sony VID+PID combo)","* No longer provide support for knockoff fake DS4 controllers","* Changed Lightbar TabItem in Profile Editor to use embedded TabControl","* Added warning text for Lightbar Passthru mode stating the old feature is currently disabled","* Fixed combo box cutoff in Dark theme. Contribution by **Sajidur78**","* Updated Brazilian Portuguese translation pack. Contribution by **nelitow**"],"editor":"ryochan7","editors_note":["Tired of problems"],"updated_at":"2021-08-07T17:34:17+0000" } ] },{"version_str":"3.0.14","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":14},"base_header":"Version 3.0.14","release_date":"2021-08-04T01:48:11+0000","locales":[{"code":"en","header":"Version 3.0.14","log_text":["* Updated FakerInputWrapper libraries for F13 - F24 key support","* Added F13 to F24 keys for FakerInput mapping","* Decreased button wheel delta. Increased button wheel sensitivity. Now uses 150 ms for time delta","* Updated FakerInputWrapper libraries. Fixes array bounds check for KeyboardReport","* Fixes for Stick Outer Btn bindings","* Added ManagementException catch for initial connection. Apparently it can be thrown in that call.","* Expanded max output limits for LS and RS","* Re-design dark theme and use theme colors in AutoProfiles. Contribution by **Sajidur78**","* Changed DualSense trigger Full Click resistance depending on profile settings","* Changes to better handle connection failure for Switch Pro and JoyCon devices"],"editor":"ryochan7","editors_note":["Need update"],"updated_at":"2021-08-04T01:48:11+0000" } ] },{"version_str":"3.0.13","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":13},"base_header":"Version 3.0.13","release_date":"2021-07-07T20:16:18+0000","locales":[{"code":"en","header":"Version 3.0.13","log_text":["* Another fix for EnhancedKey usage for FakerInput mapping"],"editor":"ryochan7","editors_note":["Fixes"],"updated_at":"2021-07-07T20:16:18+0000" } ] },{"version_str":"3.0.12","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":12},"base_header":"Version 3.0.12","release_date":"2021-07-06T21:04:03+0000","locales":[{"code":"en","header":"Version 3.0.12","log_text":["* Removed old Input Curve options","* Corrected coordinate system for Stick to Mouse Wheel","* Fixed saving of Max Output Force options","* Expand output for Gyro Mouse Joystick Max Output routine. Make sure maximum output can be achieved. Likely would not achieve a completely straight line when using Gyro.","* Expanded macrodone array. Fixes some macro bindings for later virtual buttons","* Added 'Hide DS4 Controller' option back in again","* Increased button mouse wheel delta. Decreases wheel sensitivity","* Unified late profile options checks","* Increased resistance range for DualSense trigger Full Click"],"editor":"ryochan7","editors_note":["Fixes"],"updated_at":"2021-07-06T21:04:03+0000" } ] },{"version_str":"3.0.11","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":11},"base_header":"Version 3.0.11","release_date":"2021-06-29T23:15:01+0000","locales":[{"code":"en","header":"Version 3.0.11","log_text":["* Group and move Virtual Controller options in Other tab. Contribution by **Kanuan**","* Fixed MODIFIER_ENHANCED value for FakerInput mapping","* Fixed Alt,Windows,and other modifier keys mapping for FakerInput","* Fixed Stick to Mouse Wheel routine for SendInput output","* Fixed tray menu profile selection for names with underscores","* Added many tooltip strings in Profile Editor","* Fixed RenameProfileWindow closing early due to early DialogResult assignment. Property calls Close on the Window","* Removed BitChute social link","* Fixed display of CheckEveryUnit combobox in Settings tab. Not sure when VS changed that portion of the XAML","* Removed obsolete 'Hide DS4 Controller' option again. Can't have options","* Added ScrollViewer to Other tab in Profile Editor. Enough controls in tab to justify it","* Added force option for LS and RS MaxOutput. Allow 100% forced circular max output for sticks","* Made Capture,SL,and SR buttons mappable","* Created Outer Button bindings for LS and RS. Allows extra distance action for the sticks like Walk or Sprint","* Display Touchpad X and Y in Controller Readings tab","* Increased HID report input buffer to 3 rather than 2. Not sure it will really matter","* Disabled broken DS4 feedback support **again**. Can't have semi-nice things. **Don't bring it up again until at least the next ViGEmBus driver update**","* Added change to not send Profile loaded message for secondary JoyCon in Joined mode"],"editor":"ryochan7","editors_note":["Done dealing with the average gamer (DSP)"],"updated_at":"2021-06-29T23:15:01+0000" } ] },{"version_str":"3.0.10","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":10},"base_header":"Version 3.0.10","release_date":"2021-06-22T16:13:13+0000","locales":[{"code":"en","header":"Version 3.0.10","log_text":["* Removed virtual device plug/unplug delay","* Removed Dispatcher and thread from OutputSlotManager","* Another fix to hopefully sort out Special Action items properly","* Allow profiles to be renamed from within app using Profiles tab","* 'Hold for X secs' special actions now support decimal values. Contribution by **mika-n**","* DeviceOptions has a new 'Verbose log messages' option. Contribution by **mika-n**","* Fixed coordinate system for Stick to Mouse Wheel calculations","* Reset mouse position for FakerInput on Sync method. Fixes some mouse related actions conflicting with FakerInput output handler","* Updated Touchpad scroll support to use new coordinate system","* Updated Strings.ru.resx. Contribution by **shikulja**"],"editor":"ryochan7","editors_note":[""],"updated_at":"2021-06-22T16:13:13+0000" } ] },{"version_str":"3.0.9","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":9},"base_header":"Version 3.0.9","release_date":"2021-06-12T04:47:57+0000","locales":[{"code":"en","header":"Version 3.0.9","log_text":["* Fixed obtaining source index item for Special Action list","* Allow Touchpad Click as an output for Macros","* Delay log message for virtual device association","* Updated ViGEmPluginFailure message to make reference to PurgeOldXInput utility","* Added PurgeOldXInput utility to Tools folder. Might be useful for deleting invalid virtual Xbox 360 controllers","* Updated Japanese translation. Contribution by **toshixm**","* Updated Czech translation. Contribution by **MikeCZ23**"],"editor":"ryochan7","editors_note":["Burnout"],"updated_at":"2021-06-12T04:47:57+0000" } ] },{"version_str":"3.0.8","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":8},"base_header":"Version 3.0.8","release_date":"2021-06-06T03:50:47+0000","locales":[{"code":"en","header":"Version 3.0.8","log_text":["* Fixed Special Action sorting to sort by user defined Action name","* Removed support for HidGuardian completely. **HidHide is the only supported HID device blocking driver now**"],"editor":"ryochan7","editors_note":["Done"],"updated_at":"2021-06-06T03:50:47+0000" } ] },{"version_str":"3.0.7","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":7},"base_header":"Version 3.0.7","release_date":"2021-06-04T20:24:42+0000","locales":[{"code":"en","header":"Version 3.0.7","log_text":["* Added slot# log messages to a gamepad connect/disconnect handler and 'permanent' slot debug msg. Contribution by **mika-n**","* Small special action fix when action trigger is somehow flagged as None","* Added support for virtual KB+M driver FakerInput v. 0.1. Needed to play Valorant and other apps that block SendInput events.","* Sort Special Action list by action name","* Fixed event order issue that caused output slots to not get disconnected","* Reduced mouse remainder cutoff to the hundredths place","* Fixed OutSlotDevice check to make sure Permanent slots are detached on service stop"],"editor":"ryochan7","editors_note":["Driver hell"],"updated_at":"2021-06-04T20:24:42+0000" } ] },{"version_str":"3.0.6","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":6},"base_header":"Version 3.0.6","release_date":"2021-05-27T05:02:47+0000","locales":[{"code":"en","header":"Version 3.0.6","log_text":["* Re-compiled program and tools"],"editor":"ryochan7","editors_note":["Nothin"],"updated_at":"2021-05-10T06:11:48+0000" } ] },{"version_str":"3.0.5","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":5},"base_header":"Version 3.0.5","release_date":"2021-05-10T06:11:48+0000","locales":[{"code":"en","header":"Version 3.0.5","log_text":["* Fixed copying of app config file for fake named exe","* Now copy deps file for fake named exe","* Fixed initial Config folder selection dialog when multiple configs (Program Folder and AppData) are found. Make sure to display option to delete one of the configs","* Updated DotNetProjects.Extended.Wpf.Toolkit to version 4.6.97","* Updated MdXaml to version 1.10.0","* Updated NLog to version 4.7.9","* Check if DS4Windows program folder is actually AppData subfolder when locating program config. Treat case as Program Folder option","* Added All Files option for Launch Program special action File Dialog. Use Explorer to launch associated program for an arbitrary file"],"editor":"ryochan7","editors_note":["I'm on break"],"updated_at":"2021-05-10T06:11:48+0000" } ] },{"version_str":"3.0.4","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":4},"base_header":"Version 3.0.4","release_date":"2021-05-05T14:47:29+0000","locales":[{"code":"en","header":"Version 3.0.4","log_text":["* Support for DS3 gamepad as vendor defined device over DsHidMini driver. Contribution by **mika-n**","* Now issue immediate virtual device unplug upon Windows suspend","* Changed ViGEmBus lookup routine to perform a list based lookup for potential drivers. Attempt to discover newest version from version info","* Changed ViGEmClient library to attempt to connect to newest available version of ViGEmBus on a system rather than the first version found","* Set all controller slots to use the Default profile initially when making a new config","* Immediately issue unplug of all virtual controllers when pressing main Stop button","* Initial implementation of HidHide integration. Display key icon for HidHide hidden device. Insert DS4Windows.exe into whitelist at startup if necessary","* Changed method of obtaining current executable file location. Needed due to assembly changes in .NET 5 breaking support for custom exe filenames","* Added HidHide installer link to Welcome dialog window","* Added HidHide Configuration Client app link in Settings tab","* Hide HidNinja link in Settings tab if HidGuardian is not installed","* Show the text value of 'Max Saturation' lightbar setting. Contribution by **sabihoshi**","* Changed Launch Program special action to use UseShellExecute"],"editor":"ryochan7","editors_note":["Major ViGEmBus changes. HidHide support"],"updated_at":"2021-05-05T14:47:29+0000" } ] },{"version_str":"3.0.3","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":3},"base_header":"Version 3.0.3","release_date":"2021-04-15T16:32:18+0000","locales":[{"code":"en","header":"Version 3.0.3","log_text":["* Fixed Open Program Folder link in tray menu","* Lessen ViGEmBus restriction for now. Allow connecting to ViGEmBus 1.16.112.0. **PLEASE DON'T MAKE ME REGRET THIS**."],"editor":"ryochan7","editors_note":["Can't move forward"],"updated_at":"2021-04-15T16:32:18+0000" } ] },{"version_str":"3.0.2","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":2},"base_header":"Version 3.0.2","release_date":"2021-04-12T00:45:20+0000","locales":[{"code":"en","header":"Version 3.0.2","log_text":["* Use UseShellExecute for ProcessStartInfo in more places for .NET 5 changes","* DS4Windows updater message update. Contribution **RedDevilus**","* German translation update. Contribution by **jmg2k**","* Added Portuguese (Portugal) translation. Contribution by **joaopedrogome**","* Add cmd line command for 'Change led color'. Contribution by **bernspedras**","* Muted blues used in Dark theme. Contribution by **AnessZurba**","* Added some exception handling for XML in ProfileMigration","* Added output controller option to Preset Window for certain Presets. Change profile values based on output controller type.","* Added some precautions for possible empty devicePath string","* Changed GroupBox template for Dark theme","* Now enforcing ViGEmBus minimum supported version. Targetting ViGEmBus 1.17.333.0","* Fixed ProcessStartInfo for ViGEmBus installer launching with .NET 5","* Refresh internal data about ViGEmBus on service startup"],"editor":"ryochan7","editors_note":["Why"],"updated_at":"2021-04-12T00:45:20+0000" } ] },{"version_str":"3.0.1","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":1},"base_header":"Version 3.0.1","release_date":"2021-04-02T17:46:02+0000","locales":[{"code":"en","header":"Version 3.0.1","log_text":["* Fixed launching of HidGuardHelper for .NET 5 usage","* Fixed URL string generation for updater version redirect on download failure","* Fixed a few typos in the English strings. Contribution by **instilledbee**","* Bundled HidGuardHelper 0.2.0"],"editor":"ryochan7","editors_note":["nothing"],"updated_at":"2021-04-02T17:46:02+0000" } ] },{"version_str":"3.0.0","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":0},"base_header":"Version 3.0.0","release_date":"2021-04-01T20:29:11+0000","locales":[{"code":"en","header":"Version 3.0.0","log_text":["* DS4Windows now targets .NET 5","* Changed ViGEm libraries to target .NET Core 3.1","* Now use MdXaml rather than Markdown.Xaml for Changelog text rendering","* Removed Newtonsoft.Json library dependency","* Removed use of .NET 5 Runtime check nag window","* Fixed UDP Server locking device input in .NET 5. Caused by API change for SocketAsyncEventArgs","* Moved app config loading to occur after logger is created","* Change extras flag to take current DS4Control into account","* Added additionalProbingPaths to runtimeconfig.json","* Use UseShellExecute for ProcessStartInfo. Due to Process.Start change in .NET 5","* Added newer bat self deletion routine. Make sure to return 0 status code in process when performing bat self-delete"],"editor":"ryochan7","editors_note":[".NET 5 updates"],"updated_at":"2021-04-01T20:29:11+0000" } ] },{"version_str":"2.2.15","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":15},"base_header":"Version 2.2.15","release_date":"2021-03-25T16:22:38+0000","locales":[{"code":"en","header":"Version 2.2.15","log_text":["* Ignore duplicate device when in Shared mode","* Added extra processing to Version string for .NET 5 and later. Expecting Microsoft to use their own standard was a mistake","* Changed URL used for .NET 5 Runtime download"],"editor":"ryochan7","editors_note":["None"],"updated_at":"2021-03-25T16:22:38+0000" } ] },{"version_str":"2.2.14","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":14},"base_header":"Version 2.2.14","release_date":"2021-03-24T18:19:59+0000","locales":[{"code":"en","header":"Version 2.2.14","log_text":["* Implemented stick vertical scale","* Include nag window telling people to install .NET 5 Runtime. Window will open at program startup if needed."],"editor":"ryochan7","editors_note":["None"],"updated_at":"2021-03-24T18:19:59+0000" } ] },{"version_str":"2.2.13","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":13},"base_header":"Version 2.2.13","release_date":"2021-03-20T02:48:37+0000","locales":[{"code":"en","header":"Version 2.2.13","log_text":["* Have device hotplug routine enforce profile settings when using a temp auto profile","* Bundled DS4Updater 1.4.7"],"editor":"ryochan7","editors_note":["None"],"updated_at":"2021-03-20T02:48:37+0000" } ] },{"version_str":"2.2.12","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":12},"base_header":"Version 2.2.12","release_date":"2021-03-19T14:01:18+0000","locales":[{"code":"en","header":"Version 2.2.12","log_text":["* Fixed CRC32 error counter for DualSense","* Fixed bad copy pasta regarding device setting wheel calibration saving","* Added error checking with device wheel calibration loading"],"editor":"ryochan7","editors_note":["None"],"updated_at":"2021-03-19T14:01:18+0000" } ] },{"version_str":"2.2.11","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":11},"base_header":"Version 2.2.11","release_date":"2021-03-17T20:05:46+0000","locales":[{"code":"en","header":"Version 2.2.11","log_text":["* Implemented newer feedback handler routine for virtual DS4 devices. Added virtual DS4 rumble back in","* Now sure to use continuous calibration routine for non-DS4 devices","* Changed severity of ViGEmPluginFailure message. Now indicates that a user should probably reboot Windows if it happens","* Fixed JoyCon R Gyro Roll. Old value was inverted","* Copy modified JoyCon current state for use in UDP server","* Only display device in UDP server if it is a primary device. Mainly needed due to JoyCon R in Joined JoyCon mode","* Added exception catching when saving Actions xml file. File corruption will now cause the file to be written from scratch","* Use Task error log helper for some background service tasks. Allows some extra possible error messages to show up in the Log","* Simplify UDP motion event creation. Allow motion event to be created when enabling UDP server","* Make Flash at High Latency default to 50 ms","* Dark Theme color changes. Color contrast has been reduced. Contribution by **AnessZurba**","* Skip writing device wheel calibraton nodes if empty","* Now use estimated wheel center values if controller config has an empty entry. Problem caused some app instability and memory bloating due to excessive log messages in Log tab (over 1GB RAM usage)","* Implemented axial dead zone and related settings","* Fixed ColorByBattery panel visibility for first open. Contribution by **MakiseKurisu**","* Changes for continuous calibration routine for Sony Wireless Adapter connections. Contribution by **MakiseKurisu**","* Tweaked profile loading for some older fallback options"],"editor":"ryochan7","editors_note":["None"],"updated_at":"2021-03-17T20:05:46+0000" } ] },{"version_str":"2.2.10","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":10},"base_header":"Version 2.2.10","release_date":"2021-03-09T20:14:08+0000","locales":[{"code":"en","header":"Version 2.2.10","log_text":["* Change Disconnect command syntax to allow all wireless controllers to get disconnected","* Increased GUI enforced max Trackball Friction value to 20.0","* Slightly edited colors used in Dark theme","* Disabled virtual DS4 feedback routine again","* Allow Joined JoyCon support. Joined link mode is now the default","* Changed L1 binding for KB+M and Gyro preset profile. Make Unbound","* Fixed macroRecorder bug where MUTE control threw an exception because it is not in macroDS4Values array. Contribution by **mika-n**","* Fixed wrong on-screen button indexes while remapping using 'readout' feature. Contribution by **mika-n**","* Added artificial VID/PID for DualShock 3 running under DsHidMini drivers. Contribution by **nefarius**"],"editor":"ryochan7","editors_note":["None"],"updated_at":"2021-03-09T20:14:08+0000" } ] },{"version_str":"2.2.9","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":9},"base_header":"Version 2.2.9","release_date":"2021-03-05T02:36:16+0000","locales":[{"code":"en","header":"Version 2.2.9","log_text":["* Profile settings fuzz option hang fix. Contribution by **RokasKil**","* Anti-snapback stick settings added. Contribution by **RokasKil**","* .NET 5 progress complete. Will keep net5 branch updated regularly until used in public build. Contribution by **sitiom**","* Fixed index out of bounds error when loading profiles in virtual output device check","* Fixed current item selection for right click Disconnect BT","* Removed references to Frog site. No longer posting updates there","* Changed initial trackball velocity calculations to attempt to make numbers more uniform across devices","* Added Disconnect command line option","* Disable macro mode combobox when opening Macro used in a Multi-Action Button special action","* Take out nag disclaimer window regarding Hide DS4 Controller option"],"editor":"ryochan7","editors_note":["Burnout"],"updated_at":"2021-03-05T02:36:16+0000" } ] },{"version_str":"2.2.8","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":8},"base_header":"Version 2.2.8","release_date":"2021-02-26T18:33:49+0000","locales":[{"code":"en","header":"Version 2.2.8","log_text":["* Fixed resetting of trigger values for Two Stage modes","* Removed references to old Discord server","* Pull gyro calibration sampling routine out to its own method","* Fixed normal button binding to Touchpad Click output","* Attempt to go to DS4Updater Release page if automatic download of updater failed","* Added GitHub link to Social row in About window","* Fixed x86 ViGEm installer URL"],"editor":"ryochan7","editors_note":["Take a break"],"updated_at":"2021-02-26T18:33:49+0000" } ] },{"version_str":"2.2.7","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":7},"base_header":"Version 2.2.7","release_date":"2021-02-18T21:49:24+0000","locales":[{"code":"en","header":"Version 2.2.7","log_text":["* Added delay time to Gyro Directional Swipe action","* Fixed populate of Gyro Directional Swipe and Gyro Controls triggers buttons","* Lowered touchpad slide distance for Controls mode","* Fixed Steering Wheel calibration Special Action saving","* Allow resetting of extras for Trigger soft pull and full pull","* Allow resetting Extras bound to Gyro Swipe actions","* Now officially only support Windows 10 and later. THANKS MICROSOFT","* Added BatteryPercentage mode for DualSense Player LED Bar","* Fixed Switch Pro and JoyCon AccelY coordinate used by UDP Server","* Fixed profile cancelling for the test index","* Tweaked disable device time for Exclusive mode routine","* Removed DynamicResource lookups for Special Action Editor","* .NET 5 port in progress","* Added App instance check to work around Design mode in .NET 5.0.","* Changed Browse Programs fallback value in Profile Editor for .NET 5.0","* Changed method to strip null terminated strings","* Added Gyro Calibration button to Gyro Mouse StackPanel","* Updated ViGEmClient library to use notification queue","* Fixed critical notification callback bug in ViGEm.NET library","* Fixed infinite rumble problem stemming from ViGEm library issues"],"editor":"ryochan7","editors_note":["ViGEm updates are the most relevant"],"updated_at":"2021-02-19T17:57:22+0000" } ] },{"version_str":"2.2.6","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":6},"base_header":"Version 2.2.6","release_date":"2021-02-11T03:50:45+0000","locales":[{"code":"en","header":"Version 2.2.6","log_text":["* Fixed Gyro Mouse Joystick trigger selection","* Corrected Gyro Mouse and Gyro Mouse Joystick toggle flags","* Put Gyro Calibration button in other Gyro mode panels","* Added Mute LED mode for DualSense device options","* Fixed default virtual Touchpad button bindings","* Corrected Special Action regression"],"editor":"ryochan7","editors_note":["None"],"updated_at":"2021-02-11T03:50:45+0000" } ] },{"version_str":"2.2.5","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":5},"base_header":"Version 2.2.5","release_date":"2021-02-10T03:07:55+0000","locales":[{"code":"en","header":"Version 2.2.5","log_text":["* Fixed sync between button mouse sens and active mouse sens in Profile Editor","* Changed DualSense blanking flags used for initial connection and detach","* Now use defined ControlActionData for mapped actions rather than unboxing object references. Speeds up the mapping routine a good amount.","* Hebrew translation added to project file. Translation was never added in","* Allow Gyro triggers for Gyro Controls mode","* Reset Gyro Controls output accel values to 0 for each poll","* Driver installer window now takes arch into account when downloading the latest ViGEm installer. It uses a different setup file for each arch","* Disable Xbox 360 installer button in Welcome Dialog if running on Win8 or greater","* Added toggle mode to Gyro Controls","* Added ScrollViewer for Gyro tab","* Increased Full Click trigger effect resistance a bit","* Use fake HW serial to index SonyWA connections. Should allow multiple Sony dongles to work","* Allow audio volume searching for Nacon Rev Pro v.2 controller.","* Added DS4 setting to attempt to change output report features for copycat controllers"],"editor":"ryochan7","editors_note":["None"],"updated_at":"2021-02-10T03:07:55+0000" } ] },{"version_str":"2.2.4","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":4},"base_header":"Version 2.2.4","release_date":"2021-02-02T22:25:55+0000","locales":[{"code":"en","header":"Version 2.2.4","log_text":["* Fixed SelectedValue display in Dark theme for some dynamic ComboBox controls","* Added Gyro Directional Swipe output mode"],"editor":"ryochan7","editors_note":["None"],"updated_at":"2021-02-02T22:25:55+0000" } ] },{"version_str":"2.2.3","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":3},"base_header":"Version 2.2.3","release_date":"2021-02-01T21:09:33+0000","locales":[{"code":"en","header":"Version 2.2.3","log_text":["* Added an extra precaution to unplug any permanent output devices upon service stop. ViGEmBus should handle this already but just want to make sure.","* Updated Polish translation. Contribution by **gregory678**","* Changed locking strategy for ControllerSlotManager collection","* Fixed right click disconnect slot index for new sorted list","* Implemented a variant of Two Stage Triggers","* Added Trigger effects presets. Currently only useful for the DualSense controller","* Added averaging gyro calibration upon device connection. Contribution by **firodj**","* Skip unknown DS4Controls names while loading a profile","* Fixed issue with missingSettings being set for fallback value lookup on Profile load. Constantly re-saved profiles","* Only reset outDevTypeTemp on full profile save. Ensured proper controller image is used in Binding window after clicking Apply in Profile Editor","* Change arrangement of lit LED lights for DualSense controller","* Allow Touchpad Click button passthru with Mouse and Controls mode","* Changed device type settings. Now use device specific (serial) settings. Now saved to ControllerConfigs.xml","* Added check for valid output report types upon DS4 BT device connection. Can revert to using output report 0x11 if needed. Not sure if it will matter","* Ignore output plugin routine and other calls if requested profile file does not exist"],"editor":"ryochan7","editors_note":["None"],"updated_at":"2021-02-01T21:09:33+0000" } ] },{"version_str":"2.2.2","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":2},"base_header":"Version 2.2.2","release_date":"2021-01-19T17:17:09+0000","locales":[{"code":"en","header":"Version 2.2.2","log_text":["* Have app ignore embedded color profile for rainbowCCrop image. Fixes Profile Editor crashing app on some systems","* Supports .BAT/.CMD batch scripts in specAction LaunchProgram. Contribution by **mika-n**","* Added Hebrew translation. Contribution by **avsha114**","* Corrected Touchpad Resolution Y Max for DS4 and DualSense","* Fixed crash when right click disconnect is done twice and GUI has not changed yet. More of a pre-caution than anything","* Gioteck VX4 gamepad support. Contribution by **mika-n**","* Fixed passthru panels showing up properly for Touchpad and Gyro","* Pushing half-baked controller options window","* Change DupBox placeholder text behavior","* Removed Parler link from About window for now. RIP Parler","* Now use device specific Gyro Mouse sensitivity values","* Decreased sensitivity of DualSense Gyro Mouse slightly","* Added placeholder help text for window title auto profile field","* Fixed window style for Updater window","* Allow Home LED to be disabled for Switch Pro and JoyCon","* Fixed app config loading. Stopped extra config saves on program launch from missingSetting being set unintentionally","* Added more white variation of images for use in Dark theme","* Make custom Bezier curve perform circular interpolation rather than per axis","* Use ControlService event dispatcher for synchronization on device unplug","* Fixed Gyro Mouse and Mouse Joystick Smoothing panels visibility in Profile Editor under certain scenarios","* Fixed a bug in autoProfile set Path handler. Contribution by **mika-n**","* Lowered default rumble emulation strength of DualSense controller","* Allow configurable rumble strength setting for DualSense controllers. Will likely change later","* Now use player LEDs on Switch Pro,JoyCon,and DualSense controllers. Used to display input device slot number","* Display input slot number in controller list","* Now sort main controller list by device index","* Changed output device pluging routine. Stop DS4Windows service if ViGEm device connect call fails","* Changed default dead zone for KBM profile templates","* Only output DS4 touchpad button click when in Passthru mode","* Make sure to refresh gyro mouse smoothing combobox indexes after loading from a preset","* Bundled DS4Updater 1.4.5"],"editor":"ryochan7","editors_note":["Burnout"],"updated_at":"2021-01-19T17:17:09+0000" } ] },{"version_str":"2.2.1","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":1},"base_header":"Version 2.2.1","release_date":"2020-12-31T05:22:47+0000","locales":[{"code":"en","header":"Version 2.2.1","log_text":["* Put lock block in for DS4 USB output routine"],"editor":"ryochan7","editors_note":["Too many cases to test and my dying PC"],"updated_at":"2020-12-31T05:22:47+0000" } ] },{"version_str":"2.2.0","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":0},"base_header":"Version 2.2.0","release_date":"2020-12-31T03:22:07+0000","locales":[{"code":"en","header":"Version 2.2.0","log_text":["* Import newer ViGEm.NET libraries for ViGEmBus 1.17.333.0 extended support","* Allow passthru of Touchpad and Gyro to output virtual DS4. Requires ViGEmBus 1.17.333.0 and Windows 10","* Put note about DS4Windows assembly architecture in Log. Needed to diagnose Exclusive mode problems.","* No longer reset X360 report data each gamepad poll","* Fixed Touchpad Swipe and Gyro Tilt controls index values for Profile Editor controls","* Fixed some 8 controller bugs. Make sure to save set profile and load setting","* Don't reset auto profile flags on device removal","* Sort auto profile list by app file name","* Allow binding to Mute button in Special Action editor","* Added DualSense Mute button to Gyro and Touchpad triggers","* Allow Mute button as a Shift Trigger","* Use a WrapPanel for Utils section","* Fixed crash on Windows 7 when attempting to download ViGEm installer. Side effect of targeting .NET Framework 4.8","* Remove Aero2 assembly reference","* Changed output method used for Windows 7 BT DS4 devices. Forced to use Control endpoint on Windows 7","* Have driver installer window choose different ViGEmBus installer depending on detected Windows OS install"],"editor":"ryochan7","editors_note":["Windows 7 EOL seriously this time"],"updated_at":"2020-12-31T03:22:07+0000" } ] },{"version_str":"2.1.23","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":23},"base_header":"Version 2.1.23","release_date":"2020-12-25T15:51:12+0000","locales":[{"code":"en","header":"Version 2.1.23","log_text":["* Updated App.config file with proper .NET Framework version","* Added support for mapping DualSense Mute button","* Fixed Dark theme crashing app in Windows 7. Removed Aero2 elements from Dark theme.","* Disable apply button when creating a new profile. Further enforce current flow","* Added feature set check before generating CRC-32 output data","* Fixed theme style for SaveWhere window","* Corrected KeyDown and KeyUp images in Macro editor","* Split DS4HapticState to two structs. Separate force feedback data from lightbar color","* Added -command cycle cmd flag. Allows for an easy on/off shortcut without having to set any conditions. Contribution by **wingfixer**","* Changed AutoProfile EXE file extension check to be case-sensitive. Contribution by **mika-n**","* Added MinWidth back in Dark theme for combobox. Was removed with Aero2 tags.","* Updated Russian translation file. Contribution by **shikulja**","* Don't display data write failure if device is known to be disconnecting. Hopefully eliminates excessive gamepad write failure log messages when Idle Disconnect is executed.","* Tweaked axis scaling to output Xbox 360 axis. Low end now can scale to 0 properly."],"editor":"ryochan7","editors_note":["Not much"],"updated_at":"2020-12-25T15:51:12+0000" } ] },{"version_str":"2.1.22","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":22},"base_header":"Version 2.1.22","release_date":"2020-12-13T15:42:18+0000","locales":[{"code":"en","header":"Version 2.1.22","log_text":["* Make sure profile name textbox is enabled by default again"],"editor":"ryochan7","editors_note":["Fail"],"updated_at":"2020-12-13T15:42:18+0000" } ] },{"version_str":"2.1.21","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":21},"base_header":"Version 2.1.21","release_date":"2020-12-13T01:11:04+0000","locales":[{"code":"en","header":"Version 2.1.21","log_text":["* Grab proper image for Exclusive access display"],"editor":"ryochan7","editors_note":["Oops"],"updated_at":"2020-12-13T01:11:04+0000" } ] },{"version_str":"2.1.20","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":20},"base_header":"Version 2.1.20","release_date":"2020-12-12T21:26:53+0000","locales":[{"code":"en","header":"Version 2.1.20","log_text":["* Changed project file to allow building app with msbuild","* Use custom window for displaying Log messages. Can highlight text and click URLs","* Send empty output report before closing a DualSense device. Resets rumble emulation flag to allow haptics to work again.","* Fixed -command Shutdown cmdline option. Contribution by **mika-n**","* Updated Russian translation. Contribution by **shikulja**","* Allow longer periods of rumble with DualSense","* Changed battery max value for DualSense","* Increased delay before hotplug device check","* Added button mouse vertical scale","* Changed Subcommand routine for Switch Pro and JoyCon classes","* Updated Polish translation. Contribution by **gregory678**","* Added Brook Mars controller support. Contribution by **Кладовая**","* Implemented a Dark theme for the GUI","* Fixed Change Light extras setting loading in Binding window. Keep setting in tact","* Changed buffer size for DS4 FileStream instance","* Now use Interrupt endpoint for DS4 BT output reports","* Fixed out-of-bounds access when enabling square stick. Contribution by **hpesoj**","* Added Arabic translation. Contribution by **xLive**"],"editor":"ryochan7","editors_note":["Nothing"],"updated_at":"2020-12-12T21:26:53+0000" } ] },{"version_str":"2.1.19","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":19},"base_header":"Version 2.1.19","release_date":"2020-11-29T15:47:50+0000","locales":[{"code":"en","header":"Version 2.1.19","log_text":["* Fixed translation loading"],"editor":"ryochan7","editors_note":["Fixed App.config"],"updated_at":"2020-11-29T15:47:50+0000" } ] },{"version_str":"2.1.18","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":18},"base_header":"Version 2.1.18","release_date":"2020-11-28T16:51:16+0000","locales":[{"code":"en","header":"Version 2.1.18","log_text":["* Lowered intensity of rumble effect for DualSense","* Rumble and lightbar support for DualSense now work over BT","* Added Rotate options to the Preset Menu in the Profile Editor. Useful for mapping a single JoyCon","* Disable DualSense Mic LED for now","* Edit language used for Run At Startup options to make intent more clear. Contribution by **olokos**","* Updated Ukrainian localization. Contribution by **dondrakon1**","* Added Hungarian translation. Contribution by **rocketbucket10**","* Experimental rumble for DS4 emulation. Make support a profile option. Contribution by **mika-n**","* Added New Battery and Charging command line query options to return the battery value and the charging status. Contribution by **mika-n**","* Updated target .NET Framework to version 4.8. Contribution by **dante38**","* Disable Output Slots section when service is not running","* New outputSlot related command line interfaces. Contribution by **mika-n**"],"editor":"ryochan7","editors_note":["Backup before compy dies"],"updated_at":"2020-11-28T16:51:16+0000" } ] },{"version_str":"2.1.17","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":17},"base_header":"Version 2.1.17","release_date":"2020-11-19T19:07:49+0000","locales":[{"code":"en","header":"Version 2.1.17","log_text":["* Implemented JoyCon support","* Implemented DualSense support. Lightbar and rumble support only work with USB for now","* Added workaround for DS4 reader when a duplicate timestamp is in a report. Fixes smoothing for UDP server output","* Populate totalMicroSec in JoyConDevice and SwitchProDevice. Used in the UDP server output","* Enabled Idle Disconnect for SwitchPro and JoyCon"],"editor":"ryochan7","editors_note":["Many more changes than the Changelog implies"],"updated_at":"2020-11-19T19:07:49+0000" } ] },{"version_str":"2.1.16","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":16},"base_header":"Version 2.1.16","release_date":"2020-11-10T04:52:21+0000","locales":[{"code":"en","header":"Version 2.1.16","log_text":["* Allow inserting wait periods in macro sequence","* Disable IdleDisconnect by default","* Updated URL for Gamepad Tester","* Added initial Flick Stick support","* Various refactors to somewhat abstract controller type from mapper code","* Added initial mapping support for the Switch Pro controller","* Increased default flash warning interval in Settings. Now defaults to 40 ms","* Changed connection type check depending on the input device","* Added an extra Reset call for ManualResetEventSlim for DS4Device","* Allow task startup if running on battery power","* Added fuzz setting for 360 Steering Wheel mode","* Hide DS4 Controller option re-enabled. Contribution by **Yohoki**","* Chinese (Traditional,Taiwan) Translations Updated. Contribution by **SyaoranChang**","* Ukrainian translation added. Contribution by **atimonder1**","* Put null check when checking for new input devices. Necessary for new input device check refactor.","* Bundled HidNinja 0.2.2"],"editor":"ryochan7","editors_note":["Might finally use my Switch Pro controller"],"updated_at":"2020-11-10T04:52:21+0000" } ] },{"version_str":"2.1.15","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":15},"base_header":"Version 2.1.15","release_date":"2020-10-04T18:29:47+0000","locales":[{"code":"en","header":"Version 2.1.15","log_text":["* Found a way to pass URL to Explorer and have the shell not interpret it. Removes cmd window appearing","* Disable Program Folder panel on initial config window when location cannot be written to","* Moved main touchpad options to a tab in the Profile Editor","* Moved items in DS4 Canvas around. Top Touch hover image now appears above Lightbar button","* Only reset rumble on extras deactivatoin if extras has rumble enabled","* Allow Touchpad Click to be used as a Gyro trigger","* Added an initial Touchpad Absolute Mouse implementation","* Make sure to isolate Touchpad double tap check to Mouse mode","* Added rotation setting to Touchpad Mouse","* Make No Controller Connected message dynamic. Show updated controller limit depending on build","* Increased interval for flashing latency warning","* Added minimum threshold to Touchpad Relative Mouse","* Added Min Threshold setting for Gyro Mouse","* Updated Dutch Translation. Contribution by **RedDevilus**","* Updated French Translation. Contribution by **RedDevilus**","* Added translation contributors to About window finally","* Disable ViGEm install button while installation process is active"],"editor":"ryochan7","editors_note":["Got nothing"],"updated_at":"2020-10-04T18:29:47+0000" } ] },{"version_str":"2.1.14","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":14},"base_header":"Version 2.1.14","release_date":"2020-09-27T02:29:04+0000","locales":[{"code":"en","header":"Version 2.1.14","log_text":["* More max controller 4 value changes to use Global.MAX_DS4_CONTROLLER_COUNT parameter. Contribution by **mika-n**","* Corrected bindings for AutoProfiles controls","* Fixed trigger bindings in KB+M presets","* No longer skip profile migration for version 1 profiles (Jays2Kings)"],"editor":"ryochan7","editors_note":["Hopefully 8 Controller issues are done"],"updated_at":"2020-09-27T02:29:04+0000" } ] },{"version_str":"2.1.13","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":13},"base_header":"Version 2.1.13","release_date":"2020-09-15T01:44:48+0000","locales":[{"code":"en","header":"Version 2.1.13","log_text":["* Added FORCE_4_INPUT compilation symbol","* Another place for bumping up test profile index"],"editor":"ryochan7","editors_note":["Blast"],"updated_at":"2020-09-15T01:44:48+0000" } ] },{"version_str":"2.1.12","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":12},"base_header":"Version 2.1.12","release_date":"2020-09-14T06:44:30+0000","locales":[{"code":"en","header":"Version 2.1.12","log_text":["* Fixed test profile index use for Windows 7","* Found more places where controller limit check was needed"],"editor":"ryochan7","editors_note":["Win7 changes"],"updated_at":"2020-09-14T06:44:30+0000" } ] },{"version_str":"2.1.11","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":11},"base_header":"Version 2.1.11","release_date":"2020-09-14T01:48:21+0000","locales":[{"code":"en","header":"Version 2.1.11","log_text":["* Added clamping on LS and RS dead zones in profile reader","* Corrected test profile index when launching Profile Editor from Profiles tab"],"editor":"ryochan7","editors_note":["Missed an index bump"],"updated_at":"2020-09-14T01:48:21+0000" } ] },{"version_str":"2.1.10","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":10},"base_header":"Version 2.1.10","release_date":"2020-09-13T05:26:35+0000","locales":[{"code":"en","header":"Version 2.1.10","log_text":["* Allow Black icon image for tray icon","* Changes to allow a maximum of 8 input controllers. The old limit was 4.","* Leave custom lightbar color active after macro if 'Keep key state' is set. Contribution by **mika-n**","* Added One Euro Filter to UDP Server mapping","* Added simple Presets window for Profile Editor","* Changed some Gyro Controls checks in mapping routine. Old routine could have activated any set Gyro Controls buttons even while Gyro Mouse Joystick is used","* Added a Changelog viewer window to project","* Remove temp profile association on device removal","* Fixed profile save name check for Save method in Profile Editor","* Changed Quick Charge check to delay disconnecting BT controller until USB controller is detected. Allows USB wall chargers to be used to charge a DS4 and not interfere.","* Fixed profile save on profile migration"],"editor":"ryochan7","editors_note":["Unnecessary aggravation"],"updated_at":"2020-09-13T05:26:35+0000" } ] },{"version_str":"2.1.9","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":9},"base_header":"Version 2.1.9","release_date":"2020-09-03T01:15:05+0000","locales":[{"code":"en","header":"Version 2.1.9","log_text":["* Added XInputChecker link","* Fixed null pointer issues in Macro Editor when using Preset options"],"editor":"ryochan7","editors_note":["Reinstall Windows time"],"updated_at":"2020-09-03T01:15:05+0000" } ] },{"version_str":"2.1.8","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":8},"base_header":"Version 2.1.8","release_date":"2020-09-02T06:37:47+0000","locales":[{"code":"en","header":"Version 2.1.8","log_text":["* Added WIN64 compilation symbol back in","* Added Touchpad Click as an output binding","* Added support for SnakeByte Game:Pad 4S gamepad. Contribution by **mika-n**","* Implemented fuzz routine for LS and RS. Delta value before stick coordinates are updated","* Changed assembly references. Found a way to safely use AggressiveInlining","* Increased initial service start delay","* Do not change window size if it is currently larger than default Profile Editor size","* Added note about Edge to Exclusive mode error message","* Fixed app crash when TaskService COM objects don't work. Contribution by **mika-n**"],"editor":"ryochan7","editors_note":["Nothin"],"updated_at":"2020-09-02T06:37:47+0000" } ] },{"version_str":"2.1.7","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":7},"base_header":"Version 2.1.7","release_date":"2020-08-30T03:59:05+0000","locales":[{"code":"en","header":"Version 2.1.7","log_text":["* Fixed 'index out of bounds' error for localization string when default profile is not found. Contribution by **mika-n**","* Updated build script to bundle newer translation packs","* Updated Spanish translation. Contribution by **peter9811**"],"editor":"ryochan7","editors_note":["Minor fixes"],"updated_at":"2020-08-30T03:59:05+0000" } ] },{"version_str":"2.1.6","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":6},"base_header":"Version 2.1.6","release_date":"2020-08-29T05:53:41+0000","locales":[{"code":"en","header":"Version 2.1.6","log_text":["* Removed LBRY social link and resources","* Allow setting a custom executable file for DS4Windows.exe","* Changed CONFIG_VERSION to 4. Start of profile migration support","* Added 1 Euro Filter smoothing for Gyro Mouse and Gyro Mouse Joystick output modes","* Bump up Gyro Mouse offsets","* Apply 1 Euro filter to calculated rotation angle from 360 Steering Wheel mode rather than each accel axis value","* Fixed locatiztion bug in the input custom bezier curve string value. Contribution by **mika-n**","* Added support for three specialist PS4 controllers. Contribution by **tpneill**","* Increased scale multiplier used for Gyro Mouse","* Changed translation string for 'save' in German translation. Contribution by **Haamar**","* Dutch translation added. Contribution by **RedDevilus**","* French translation added. Contribution by **RedDevilus**","* Only call RefreshVolume when the DS4Audio device is detected","* App can now find a unified USB device tied to the DS4 HID and audio devices. DS4Windows no longer relies on string name to match audio devices","* Increased minimum headphone volume","* Added new Chinese (Traditional,Taiwan) translation. Contribution by **SyaoranChang**","* Fixed issue with wrong window position data being saved while window is minimized","* Now show battery level for controller plugin tray message","* Added current battery level from DS4State object to Controller Readings. Used to diagnose if BatteryChanged events are not firing in main window","* Change profile save routine to allow dots in profile name","* Escape underscores in profile names for some GUI controls. Needed to disable access key usage in some GUI controls","* Fixed sides for Test Rumble in Profile Editor","* Allow both rumble motors to be usable simultaneously for Test Rumble","* Dynamically create task.bat file as requested. Allows a custom exe filename to be written to the file","* Reset button mappings when a special action is triggered","* Updated app manifest file to specify confirmed compatible versions of Windows","* Now log current exe filename to Log file. Just the base filename not the whole path","* Updated DS4Updater.exe to version 1.4.3"],"editor":"ryochan7","editors_note":["Long Changelog this time around"],"updated_at":"2020-08-29T06:36:00+0000" } ] },{"version_str":"2.1.5","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":5},"base_header":"Version 2.1.5","release_date":"2020-08-07T15:43:44+0000","locales":[{"code":"en","header":"Version 2.1.5","log_text":["* New 'Query' cmdline options to return profile and DS4Windows app properties to a 3rd party app or batch scripts. Contribution by **mika-n**","* Fixed Gyro Mouse Joystick invert options","* Added OneEuroFilter class to project","* Added 1 Euro Filter options to 360 Steering Wheel mode","* Disable profile name textbox when editing an existing profile","* Abstract portion of resource URI strings","* Added max output throttling option to Gyro Mouse Joystick","* Quick change to not persist auto profile messages to the log file","* Added small wrapper for ReaderWriteerLockSlim objects","* Display Gyro Mouse Joystick anti-dead zones as percentages","* Take special action for certain keys in RecordBox when WPF does not transmit a KeyDown event","* Added RWin button handling in mapping window","* Added Parler Social link in About window","* Added GitHub Issue template to Git repository","* Added minimum threshold for Gyro Mouse Joystick","* Set neutral resource language for assembly","* Disabled force feedback support for virtual DS4 controllers"],"editor":"ryochan7","editors_note":["Still nothin"],"updated_at":"2020-08-07T15:43:44+0000" } ] },{"version_str":"2.1.4","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":4},"base_header":"Version 2.1.4","release_date":"2020-07-04T18:07:41+0000","locales":[{"code":"en","header":"Version 2.1.4","log_text":["* Fixed app crash when No is selected in UAC confirm window","* Make sure to cache profile flags after changing Steering Wheel axis in Profile Editor","* Force permanent output device removal on service stop","* Added support for Astro C40 gamepad. Contribution by **mika-n**","* Fixed Gyro Mouse Turn Behavior setting","* Fixed input bound flag updating for output slots","* Changed Exclusive Mode check to take HidGuardian support into account. Key icon will appear for devices affected by HG","* Added preset menu for face buttons. Finally wanted that option back.","* Re-enabled lightbar color change for output DS4 force feedback routine","* Fixed output slot active flag when switching device types","* Made changes to allow LastVersionChecked to be an optional element in config file","* Raised default stick mouse offset","* Fixed spelling mistake in DE translation file. Contribution by **Flo082002**","* Changed gamepad latency log message to show current latency measurement. Contribution by **dondrakon**","* Raised Square Stick Roundness max value to 1000.0","* Use BeginInvoke for changing properties for permanent device manipulation. Keeps EventDispatcher actions in order","* Reset state of permanent device when unbinding an input device","* Fixed NumPadEnter binding in Binding Window","* Bundled HidNinja v.0.2.1 HidGuardian management program"],"editor":"ryochan7","editors_note":["I got nothin"],"updated_at":"2020-07-04T18:07:41+0000" } ] },{"version_str":"2.1.3","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":3},"base_header":"Version 2.1.3","release_date":"2020-06-17T02:14:15+0000","locales":[{"code":"en","header":"Version 2.1.3","log_text":["* Updated to use newer version of ViGEm.NET client libraries","* Correct feature configuration for Hori PS4 Mini controller. Contribution by **sergejkiller**","* Finally removed AnyCPU targets from solution","* Added extra null check safeguard for output slots","* Finally re-enabled Controller Readings tab from Profiles list","* Finally removed support for old Flush HID option","* Improved UI markup in Profile Editor window. Contribution by **dondrakon**","* Add some extra Japanese translation string. Contribution by **stryblt**","* Added config version number to profiles","* Change to bundle DE lang assembly pack","* Added app_version attr to profiles","* Added extra exception catch to safeguard against corrupt XML files","* Changed Profile Editor to not change virtual devices during loading","* Changed Check Updates default interval to 1 Day rather than 1 Hour","* Add Apply button on profile settings window. Contribution by **dondrakon**","* Added Chinese Simplified translation. Contribution by **mayawei**","* Allow skipping a version update from Updater Window","* Added link for HidNinja program in Settings tab","* Bundled HidNinja v.0.2 HidGuardian management program","* Added app_version attr to main config file"],"editor":"ryochan7","editors_note":["Burnout"],"updated_at":"2020-06-17T02:14:15+0000" } ] },{"version_str":"2.1.2","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":2},"base_header":"Version 2.1.2","release_date":"2020-06-02T00:40:16+0000","locales":[{"code":"en","header":"Version 2.1.2","log_text":["* Added architecture info to log","* Added option to specify permanently connected output devices","* Added extra check before sending output reports to virtual device"],"editor":"ryochan7","editors_note":["Should work"],"updated_at":"2020-06-02T00:40:16+0000" } ] },{"version_str":"2.1.1","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":1},"base_header":"Version 2.1.1","release_date":"2020-05-15T19:39:08+0000","locales":[{"code":"en","header":"Version 2.1.1","log_text":["* Changed type of output report transmitted to DS4 in BT. Now use report type 0x15 (previously 0x11)","* Added extra data transmission flag to output report","* Changed thread affinity of hidDevice object. Link with initial high priority thread","* Use a Dispatcher instance for managing the OutputSlotManager rather than Tasks","* Changed how a running output slot queue is specified","* Initial mouse offset refactors. Base mouse offset on percentage of full speed. Defaults to 0.500","* Make button mouse offset a profile setting","* Set MinWidth and MinHeight values for the main window. Contribution by **dondrakon**","* Group some button mouse fields into a class. Reduces getter calls","* Show minimum effective mouse speed in GUI","* Put OS Info in log. Will be useful for debugging","* Removed chance for a dead lock when stopping input controllers. Luckily I have never encountered it","* Fixed a bug where a shiftKey macro accidentally saved HoldMacro and Macro status values. Contribution by **mika-n**","* Fixed debug x86 project target by enabling the Allow Unsafe Code project setting. Contribution by **mika-n**"],"editor":"ryochan7","editors_note":["Might have missed some changes from commits in other branches"],"updated_at":"2020-05-15T19:39:08+0000" } ] },{"version_str":"2.1","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":0},"base_header":"Version 2.1","release_date":"2020-05-02T17:26:38+0000","locales":[{"code":"en","header":"Version 2.1","log_text":["* Fixed possible sign flip issue with radial output curves","* Fixed NaN problem when radial cap is 0. Fixes output curve coordinate issues on the extreme low end","* Support for various non-standard DS4 gamepads which behave in BT just like USB connected DS4. Contribution made by **mika-n**","* Made a dedicated updater dialog window","* Added Changelog text to updater window","* Now actively using Newtonsoft Json.NET library","* Added Markdown.XAML library","* Fixed a few networking issues when pulling new version info","* Minor optimization of Controller Readings tab. Moved state copying outside of UI thread","* Updated UDP server to call the semaphore release on socket complete event","* Added German translation files. Changes made by **Flo082002**","* Added small log message stating whether running as Admin or User. Useful info when dealing with SendInput problems","* Fixed bug with 360 Steering Wheel output. Now two DS4 gamepads can be properly mapped to different VJoy output device axes"],"editor":"ryochan7","editors_note":["First version with Changelog info. Hope this works. Fingers crossed."],"updated_at":"2020-05-02T17:10:57+0000" },{"code":"jp","header":"Version 2.1","log_text":["* Fixed possible sign flip issue with radial output curves","* Fixed NaN problem when radial cap is 0","* Support for various non-standard DS4 gamepads which behave in BT just like USB connected DS4. Contribution made by **mika-n**","* Made a dedicated updater dialog window","* Added Changelog text to updater window","* Now actively using Newtonsoft Json.NET library","* Added Markdown.XAML library","* Fixed a few networking issues when pulling new version info","* Minor optimization of Controller Readings tab. Moved state copying outside of UI thread","* Updated UDP server to call the semaphore release on socket complete event","* Added German translation files. Changes made by **Flo082002**","* Added small log message stating whether running as Admin or User. Useful info when dealing with SendInput problems","* Fixed bug with 360 Steering Wheel output. Now two DS4 gamepads can be properly mapped to different VJoy output device axes"],"editor":"ryochan7","editors_note":["TODO:Make some form of translation later"],"updated_at":"2020-05-02T17:10:57+0000" } ] } ] }} +{"latest_version":"3.3.1","latest_version_number_info":{"majorPart":3,"minorPart":3,"buildPart":1},"updated_at":"2023-12-21T12:56:39+0000","changelog":{"versions":[{"version_str":"3.3.1","version_number_info":{"majorPart":3,"minorPart":3,"buildPart":1},"base_header":"Version 3.3.1","release_date":"2023-12-21T12:56:39+0000","locales":[{"code":"en","header":"Version 3.3.1","log_text":["* Fixed use of SocketAsyncEventArgs for .NET 8. Allows clients to disconnect and reconnect as expected","* Use manualresetevent timeout as a precaution for HaltReportingRunAction method","* Fixed length of macroDone array. Added const to enforce array length. Fixes macro binding for Switch,JoyCon,DSE exclusive buttons"],"editor":"ryochan7","editors_note":["UDP regression fix"],"updated_at":"2023-12-21T12:56:39+0000" } ] },{"version_str":"3.3.0","version_number_info":{"majorPart":3,"minorPart":3,"buildPart":0},"base_header":"Version 3.3.0","release_date":"2023-12-15T22:10:24+0000","locales":[{"code":"en","header":"Version 3.3.0","log_text":["* Update project to target .NET 8 Desktop Runtime","* Updated bundled libraries to target .NET 8","* Added initial unit test project to solution","* Updated use of ProfileMigration class","* Changed how migrated XML string is grabbed from ProfileMigration class","* Fixed issues with converting of older profiles from earlier DS4Windows versions including Jays2Kings builds","* Force waiting for mapper routine to be over before switching profiles. Fixes BT lightbar issues","* Unregister DataContext used to link VMs early. Purge memory early and reduce memory usage. Thanks to **kurtanr** for figuring out the problem","* Loosen analog to mouse wheel mapping","* Increased RWC for FlickStick in editor. Allow upper limit of 200","* Changed technique for stopping mapping routine from input thread. Allows some routines to still run while profile loading is in progress","* Make sure XmlReader instance is closed after using ProfileMigration class","* Quick UDP server startup tweaks","* Add missing button ids to the gyroTriggerItems. Contribution by **christranq**","* DualSense LED:Swap player 4 & player 6. Contribution by **RobbyCBennett**"],"editor":"ryochan7","editors_note":[".NET 8. Buffering the quit"],"updated_at":"2023-12-15T22:10:24+0000" } ] },{"version_str":"3.2.21","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":21},"base_header":"Version 3.2.21","release_date":"2023-12-05T05:23:00+0000","locales":[{"code":"en","header":"Version 3.2.21","log_text":["* Updated ViGEmClient to work around IOCTL_VIGEM_WAIT_DEVICE_READY timeout when resuming from sleep. The problem affected normal operation as well. Just not that often","* Clear some memory references early in ProfileEditor. Contribution by **kurtanr**","* Fixed new line in translation string. Contribution by **DraakjeYoblama**","* Dutch strings update. Contribution by **DraakjeYoblama**","* Updated zn-hans translation. Contribution by **CrazyHPi**","* Russian translation update. Contribution by **mentalsolin**","* Attempt to load DS4Windows config when loading WelcomeDialog for a separate process. Makes sure set translation choice is used","* Enable localization for LogMessageDisplay window","* Added check for last check task when starting app update","* Enable .NET 8 nag window"],"updated_at":"2023-12-05T05:23:00+0000" } ] },{"version_str":"3.2.20","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":20},"base_header":"Version 3.2.20","release_date":"2023-11-24T19:04:30+0000","locales":[{"code":"en","header":"Version 3.2.20","log_text":["* Bump DotNetProjects.Extended.Wpf.Toolkit from 5.0.103 to 5.0.106","* Fixed some Gyro trigger indexes. Make sure Touchpad relate triggers work again","* Added DSE buttons for use as shift trigger. Actually allow JoyCon side buttons to work for shift triggers","* Abstract resource paths more. Allows easier renaming of assembly. Minor consequences in the VS XAML editor though","* Consolidate gyro trigger context menu lists in Profile Editor","* Added Malay translation. Contribution by **shoen1x**","* Use FileVersion prop for grabbing assembly version instead. More helpful for .NET 8 usage than right now","* Updated FakerInputDLL files","* Hide some ViGEmBus messages in Profile Editor regarding passthru when using supported versions. Small tweak","* Use ViGEmBus version check for lightbar passthru message as well","* add Resources.zh-hans.resx for Chinese simplified translation. Contribution by **CrazyHPi**","* update Strings.zh-Hans.resx for Chinese simplified translation. Contribution by **CrazyHPi**","* Marked more strings in GUI for translation. It will not affect this version obviously","* Removed use of deprecated LocText extension. Now use BLoc extension instead. Only used to render one string in Profile Editor previously","* Skip trying to reset UDP server connection if requested the server to stop","* Fixed Load a Profile Special Action unload trigger list header in Dark theme","* Changed display text for Side L and Side R buttons in unload trigger list"],"updated_at":"2023-11-24T19:04:30+0000" } ] },{"version_str":"3.2.19","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":19},"base_header":"Version 3.2.19","release_date":"2023-11-05T21:29:22+0000","locales":[{"code":"en","header":"Version 3.2.19","log_text":["* Tweaked HidHide whitelist app check to work behind a junction directory. Scoop install","* Updated some installer URLs in the WelcomeDialog window. Updated linked ViGEmBus installer to version 1.22.0","* Changing source code license to GPL version 3. Added notices","* Added GPL version 3 text to About window","* Perform junction directory check at startup. Use real install path for exepath if found"],"updated_at":"2023-11-05T21:29:22+0000" } ] },{"version_str":"3.2.18","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":18},"base_header":"Version 3.2.18","release_date":"2023-10-29T17:24:35+0000","locales":[{"code":"en","header":"Version 3.2.18","log_text":["* Fixed HidHide registry check when key does not exist","* Fixed Gyro Mouse Joystick trigger indexes for some triggers. DualSense Edge triggers in particular","* Updated SharpOSC libraries","* Fixed default app setting for JoyCon LinkMode option","* Added Turkish translation. Contribution by **onuralpyilkin**","* Changed helpURL for SendInput warning message"],"updated_at":"2023-10-29T17:24:35+0000" } ] },{"version_str":"3.2.17","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":17},"base_header":"Version 3.2.17","release_date":"2023-09-30T19:58:19+0000","locales":[{"code":"en","header":"Version 3.2.17","log_text":["* Fix disconnect of DS4 connected to Sony WA when Stop button is used","* Revert back to having Launch Program special action run as current user","* Take CollectionView into account when removing a Special Action from list"],"updated_at":"2023-09-30T19:58:19+0000" } ] },{"version_str":"3.2.16","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":16},"base_header":"Version 3.2.16","release_date":"2023-09-27T20:14:36+0000","locales":[{"code":"en","header":"Version 3.2.16","log_text":["* Change SetupAPI calls used to grab device information. Needed for fake USB DS4 device"],"updated_at":"2023-09-27T20:14:36+0000" } ] },{"version_str":"3.2.15","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":15},"base_header":"Version 3.2.15","release_date":"2023-09-23T17:53:59+0000","locales":[{"code":"en","header":"Version 3.2.15","log_text":["* Show blank panel for DS3 in registration window","* Check for vendor-defined HID devices based on HID Capabilities instead of description. Contribution by **Kanuan**","* Changed props in HidDeviceCapabilities class to be full properties","* Changed HidDeviceAttributes class to use full properties","* Changed auto props in HidDevice to use full properties","* Have Launch Program Special Action try to de-elevate when launching a program","* Removed Nefarius.Utilities.DeviceManagement AnyCPU library dependency. Do virtual device check in program code instead"],"updated_at":"2023-09-23T17:53:59+0000" } ] },{"version_str":"3.2.14","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":14},"base_header":"Version 3.2.14","release_date":"2023-09-02T19:12:26+0000","locales":[{"code":"en","header":"Version 3.2.14","log_text":["* Removed social accounts from app","* Added style resource for first launch window","* Check for inverse application cloak HidHide setting. Skip checking HidHide whitelist if option is enabled","* Allow DS4 output to not report virtual trigger button state","* Added small exception handling for single app instance check","* Updated Nefarius.ViGEm.Client.dll files with fixed userdata args for adding notification callback","* Display Windows error code for unknown ViGEmFailure in the Log","* Added Greek translation. Contribution by **trlef19**","* Added Indonesia translation. Contribution by **Adamsw72**","* Added extra user documentation to repo. Edited README.md. Contribution by **Oliver-Noah**","* Expose secondary joined JoyCon SideL and SideR buttons in mapper. Use DS FnL and FnR codes","* Allow DS4 trigger button output only","* Allow virtual DS4 trigger behavior combobox strings to be translatable"],"updated_at":"2023-09-02T19:12:26+0000" } ] },{"version_str":"3.2.13","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":13},"base_header":"Version 3.2.13","release_date":"2023-07-24T15:42:16+0000","locales":[{"code":"en","header":"Version 3.2.13","log_text":["* Added Resource workaround in project file to remove then add files. Performance bump. .NET is a weird beast.","* Added missing JoyCon controls for Special Actions Unload Triggers","* Added remainder cutoff for Touchpad Mouse and Gyro Mouse","* Added FirstLaunchUtilWindow. Currently used to specify which devices the mapper should read","* Added extra attribution for DsHidMini project in first launch window","* Change single app instance check to use EventWaitHandleAcl.TryOpenExisting","* Added profile switch notifications for Auto Profile system","* Added implicit Default theme logic. Have default app theme change based on Windows app color setting","* Prevent lock recursion in OutputSlotManager if ViGEmFailure is encountered","* Added Vietnamese language. Contribution by **taolatao147**"],"updated_at":"2023-07-24T15:42:16+0000" } ] },{"version_str":"3.2.12","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":12},"base_header":"Version 3.2.12","release_date":"2023-06-25T21:26:29+0000","locales":[{"code":"en","header":"Version 3.2.12","log_text":["* Fixed DS3 support not being able to be enabled. Contribution by **sunnyqeen**","* Updated german translation. Contribution by **PaulWentzel**","* Added Finnish translation. Contribution by **eemijun**","* Attempt to adjust JoyCon stick axis ranges based on initial axis coordinates","* Decreased wait period after resume. Reduced to 5 seconds. Likely a mistake","* Dispose notify icon early before closing program. At least H.NotifyIcon errors will show up in the Log upon quitting","* Fixed RS stick calibration parsing for JoyCon and Switch Pro controllers","* Changed routine to find HidHideClient program. Use registry info to attempt to find HidHide location","* Added extra safeguard if profiles list is empty. Prevents crash"],"updated_at":"2023-06-25T21:26:29+0000" } ] },{"version_str":"3.2.11","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":11},"base_header":"Version 3.2.11","release_date":"2023-06-03T23:08:23+0000","locales":[{"code":"en","header":"Version 3.2.11","log_text":["* Added task logging to resume method","* Increase wait period in resume routine","* Updated HidHide installer link to version 1.2.128.0","* Changed boundary check for main window placement on startup","* Added jitter compensation to Gyro Mouse Joystick","* Make DS3 device support optional. Separate it from DS4 Controller Support","* Lowered JoyCon LS X- boundary when no user calibration is present","* Updated FakerInputDll.dll files with file write flag fix","* Fixed initial saving of default enable status for non-DS4 controllers. Mainly changes saving to AppData folder","* Updated French translation. Contribution by **EnzoChaussivert**","* Fixed restoring of Window position on multi-monitor systems. Contribution by **kurtanr**"],"updated_at":"2023-06-03T23:08:23+0000" } ] },{"version_str":"3.2.10","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":10},"base_header":"Version 3.2.10","release_date":"2023-04-30T19:46:54+0000","locales":[{"code":"en","header":"Version 3.2.10","log_text":["* Added jitter compensation routine for Gyro Mouse","* Move output handler init and disconnect calls to ControlService Start and Stop routines","* Changed suspend and resume routines","* Added extra exception handling for tray notification failure","* Use DetermineConnectionType in PostInit of DS3Device. Contribution by **SunnyQeen**","* Fixed a crash when open device options with null option. Contribution by **SunnyQeen**","* Add InterpretingOscMonitoring Option. Contribution by **xAdler**","* Added some OSC translation strings. Contribution by **xAdler**","* Added OSC monitoring message interpreting. Contribution by **xAdler**","* Added OSC trigger control. Contribution by **xAdler**","* Added additional mapping checks in ProfileDTO MapFrom routine","* Changed how macros are saved from binding window. Do not reset shift trigger","* Support Horipad 4 FPS. Contribution by **markguleno**","* Fixed custom led mode. Contribution by **MatrixDJ96**"],"updated_at":"2023-04-30T19:46:54+0000" } ] },{"version_str":"3.2.9","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":9},"base_header":"Version 3.2.9","release_date":"2023-03-07T16:16:55+0000","locales":[{"code":"en","header":"Version 3.2.9","log_text":["* Fixed changing of Trigger Effect while switching profiles with DualSense controller","* Allow LSVerticalScale and RSVerticalScale to save values > 1.0. Contribution by **Katalysta**","* Updated Italian translation. Contribution by **MarkThat**","* Increased LS and RS Vertical Scale max to 4.0","* Check for string length from HidD_GetSerialNumberString call from possible invalid response from hardware","* Added extra locking for LoggerHolder","* DualSense Edge input support (FnL FnR BLP BRP). Contribution by **steffalon**","* Added subtype property for DualSenseDevice class","* Added COMException catching when adding hook for power events","* Removed message regarding Middle Mouse closing app in tray menu. Windows 11 no longer supports this at least right now","* Added DualShock 3 support using DsHidMini driver (SXS) or Sony Sixaxis driver. Contribution by **SunnyQeen**","* Added logging when reading of Actions.xml fails","* Changed processing of Delay tags for Actions.xml. Fixes some cases where recent DS4Windows no longer reads Special Action files from older versions","* Fixed outer bounds when using smoothing for 360 Gyro Steering.","* Fixed anti-dead zone interpretation for 360 Gyro Steering stick output. Applies to Xbox 360 and DS4 output (not VJoy)","* Added Playmax PS4 controller. Contribution by **nzgamer41**"],"updated_at":"2023-03-07T16:16:55+0000" } ] },{"version_str":"3.2.8","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":8},"base_header":"Version 3.2.8","release_date":"2023-02-05T20:31:36+0000","locales":[{"code":"en","header":"Version 3.2.8","log_text":["* Corrected list display of Press Key special action regarding Toggle status","* No longer enforce en-US values for Custom Bezier curve string","* Fixed saving of options for Macro special action. Model problem","* Check tray icon has been created before trying to show notification","* Fixed DS4KeyType check for shift modifier when multiple flags are used","* Ignore None KeyType flag for shift modifier","* Simplify shift modifier key type saving","* Fixed loading of Gyro Mouse Joystick trigger eval condition","* Added extra precautions when disconnecting from FakerInput","* Adding initial DualSense Edge support. Contribution by **dezerving**","* Updated zh-cn translatation. Contribution by **jyc001**","* Grab firmware info for DualSense controller"],"updated_at":"2023-02-05T20:31:36+0000" } ] },{"version_str":"3.2.7","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":7},"base_header":"Version 3.2.7","release_date":"2023-01-19T05:18:21+0000","locales":[{"code":"en","header":"Version 3.2.7","log_text":["* Fixed loading of Unload Trigger for Load Profile special action","* Fixed model for Press Key special action regarding Toggle status","* Changed Press Key special action keyType to reflect Toggle status. Was broken before version 3.2"],"updated_at":"2023-01-19T05:18:21+0000" } ] },{"version_str":"3.2.6","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":6},"base_header":"Version 3.2.6","release_date":"2023-01-13T05:36:12+0000","locales":[{"code":"en","header":"Version 3.2.6","log_text":["* Fixed key type and trigger assignments for shift actions. Fixed bindings for shift button and macro actions"],"updated_at":"2023-01-13T05:36:12+0000" } ] },{"version_str":"3.2.5","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":5},"base_header":"Version 3.2.5","release_date":"2023-01-12T05:44:27+0000","locales":[{"code":"en","header":"Version 3.2.5","log_text":["* Fixed some default values for app settings","* Extra app settings checks. Re-establish some app settings defaults","* Set AbsRegionDisplay to empty string by default"],"updated_at":"2023-01-12T05:44:27+0000" } ] },{"version_str":"3.2.4","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":4},"base_header":"Version 3.2.4","release_date":"2023-01-11T05:31:31+0000","locales":[{"code":"en","header":"Version 3.2.4","log_text":["* Fixed loading of Launch Program Special Actions arguments"],"updated_at":"2023-01-11T05:31:31+0000" } ] },{"version_str":"3.2.3","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":3},"base_header":"Version 3.2.3","release_date":"2023-01-09T01:09:48+0000","locales":[{"code":"en","header":"Version 3.2.3","log_text":["* Fixed saving and loading of Shift Modifier trigger"],"updated_at":"2023-01-09T01:09:48+0000" } ] },{"version_str":"3.2.2","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":2},"base_header":"Version 3.2.2","release_date":"2023-01-08T00:02:51+0000","locales":[{"code":"en","header":"Version 3.2.2","log_text":["* Fixed saving of Launch Program special action","* Fixed Macro and Press Key Special Actions"],"updated_at":"2023-01-08T00:02:51+0000" } ] },{"version_str":"3.2.1","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":1},"base_header":"Version 3.2.1","release_date":"2023-01-07T05:53:15+0000","locales":[{"code":"en","header":"Version 3.2.1","log_text":["* Fixed wait period offset for automatic added wait times in macro editor","* Fixed serializing of Special Actions","* Fixed saving of Special Actions to Actions.xml","* Fixed delay time usage for some Special Action types"],"updated_at":"2023-01-07T05:53:15+0000" } ] },{"version_str":"3.2.0","version_number_info":{"majorPart":3,"minorPart":2,"buildPart":0},"base_header":"Version 3.2.0","release_date":"2023-01-05T19:58:58+0000","locales":[{"code":"en","header":"Version 3.2.0","log_text":["* Migrate app settings and profile readers to use XmlSerializer DTO classes","* Small tweaks for JoyCon base init","* Tweaked Switch Pro init","* Fixed Gyro Mouse toggle profile setting","* Experimental support for JoyCon Charging Grip support","* Force cancel stalled IO operations when stopping input thread loop","* Reset DS4State while removing JoyCon device","* Added simple haptic dirty flag","* Tweaked hue changing for lightbar Rainbow mode","* Made SideL and SideR available as Gyro triggers","* Changed rainbow label. Value actually affects lightness level,not saturation","* Updated note regarding stick rotation setting","* Add extra macro wait periods if delays are not already in use. Tried to keep the old Jay2Kings behavior but it is time to change things","* Fixed device type set for JoyConControllerOptions instance","* Bump NLog from 5.1.0 to 5.1.1","* Updated references to Swedish locale assembly","* Bundle custom Nefarius.Utilities.DeviceManagement. Minimal build changes","* Fixed crash on updating tooltip if Windows Explorer is not running for some reason. Contribution by **V-Olk**","* Updated Russian translation. Contribution by **V-Olk**","* Fixed default value of UseLang in AppSettingsDTO"],"updated_at":"2023-01-05T19:58:58+0000" } ] },{"version_str":"3.1.12","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":12},"base_header":"Version 3.1.12","release_date":"2022-12-20T17:21:17+0000","locales":[{"code":"en","header":"Version 3.1.12","log_text":["* Updated NuGet packages. H.NotifyIcon.Wpf,MdXaml,NLog,System.Management","* Moved some DualSense rumble settings into Profiles. Contribution by **Kanuan**","* Ignore invalid OscPacket that might come through","* Changed counter use for Hotplug routine","* Removed old DS4 BT output counter workaround. Was only needed when using the Control endpoint","* Fixed RS outer binding","* Fixed bad copy pasta for SideR control value in special actions"],"updated_at":"2022-12-20T17:21:17+0000" } ] },{"version_str":"3.1.11","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":11},"base_header":"Version 3.1.11","release_date":"2022-11-27T05:34:04+0000","locales":[{"code":"en","header":"Version 3.1.11","log_text":["* Fixed loading of language assemblies from Lang folder","* Update Traditional Chinese assembly. Contribution by **syaoran**","* Fixed snap to center Y axis coordinate for control abs mouse","* Tweaks to DS4 BT output support. Revert back to using output report 0x11","* Take payload length into account besides just array length. Strip 0xA0 data magic byte from output packet","* Added workflows for issue moderation automation. Contribution by **nefarius**","* Check current virtual desktop display bounds when restoring window position on startup","* Added Poast social link in About window","* Tweaked Switch Pro init routine. Increased initial USB delay,tweaked modeswitch command","* Removed use of old ControlService busThread. Utilize Dispatcher","* Fixed rsync ignore rules for default translation assemblies"],"updated_at":"2022-11-27T05:34:04+0000" } ] },{"version_str":"3.1.10","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":10},"base_header":"Version 3.1.10","release_date":"2022-11-07T02:41:13+0000","locales":[{"code":"en","header":"Version 3.1.10","log_text":["* Added Mouse instance null check when performing PreLoadReset before profile loading","* Added absolute mouse output support for bindable controls","* Removed references to old BitTube channel","* Added WpfScreenHelper NuGet package to dependencies","* Use absolute mouse region display coordinate translation for Touchpad abs mouse","* Removed App references to MemoryMappedViewAccessor objects for cmd interface. Create as needed. Snappier app as a result"],"updated_at":"2022-11-07T02:41:13+0000" } ] },{"version_str":"3.1.9","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":9},"base_header":"Version 3.1.9","release_date":"2022-10-25T21:39:41+0000","locales":[{"code":"en","header":"Version 3.1.9","log_text":["* Updated ViGEm.NET libraries. Includes check for IOCTL_DS4_AWAIT_OUTPUT_AVAILABLE status. Contribution by **Nefarius**","* Added check that AwaitBufferThread has reached inner loop before attempting to Interrupt thread","* Fixed Gyro Mouse Joystick output for vertical axes"],"updated_at":"2022-10-25T21:39:41+0000" } ] },{"version_str":"3.1.8","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":8},"base_header":"Version 3.1.8","release_date":"2022-10-24T21:05:14+0000","locales":[{"code":"en","header":"Version 3.1.8","log_text":["* Added working directory info for startup lnk file","* Display input slot number in Output Slots tab","* Force update TooltipText in GUI thread","* Implementation of Touch Mouse Joystick","* Fixed log message generation when virtual pad plugin fails","* Abstract post action stick axis state changing for use with Mouse Joystick routines","* Display some input device information in Output Slots section","* Added some device number checks in ProfileSettingsVM. Avoids test index","* Fixed Keypad Decimal mapping for FakerInput","* Fixes for virtual DS4 output feedback support from ViGEm project. Contribution by **Nefarius**","* Updated ViGEmClient and ViGEm.NET libraries. Contribution by **Nefarius**","* Virtual DS4 output feedback support re-enabled. Contribution by **Nefarius**"],"updated_at":"2022-10-24T21:05:14+0000" } ] },{"version_str":"3.1.7","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":7},"base_header":"Version 3.1.7","release_date":"2022-10-12T15:14:40+0000","locales":[{"code":"en","header":"Version 3.1.7","log_text":["* Added stick delta acceleration options for LS and RS","* Added extra UAC Warning to Log when using SendInput event generator. Contribution by **Yohoki**","* Changed URL parser for link generation in LogMessageDisplay window","* Changed XInput output slot display routine. Contribution by **Ygor**","* Added Touchpad virtual button activation mode options. Adds ability for activation on Touchpad Touch and Touchpad Release","* Added newer possible HidHide locations to HidHide client search routine","* Updated some NuGet packages. H.NotifyIcon.Wpf,MdXaml,Nefarius.Utilities.DeviceManagement","* Updated linked ViGEmBus version to 1.21.442.0. Now listed as a stable release","* Lowered eventDispatcherThread priority to BelowNormal;Event loop primarily used for hotplug and output device plugin and removal","* Added PowerA FUSION Wired Fightpad for PS4 to known device list. Contribution by **Ygov**","* Added Thrustmaster eSwap Pro to known device list. Contribution by **SakifX9**","* Arabic language translation updated. Contribution by **Ahmed**","* Added reWASD and VirtualHere to new exclusion filter for virtual device check. Contribution by **Nefarius**","* Changed duration for multimedia timer in app. Not really used now but it would allow sleep times less than 16 ms in app","* Unfortunately had to disable virtual DS4 feedback support again. Routine only worked reliably with one controller"],"updated_at":"2022-10-12T15:14:40+0000" } ] },{"version_str":"3.1.6","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":6},"base_header":"Version 3.1.6","release_date":"2022-09-23T01:54:08+0000","locales":[{"code":"en","header":"Version 3.1.6","log_text":["* Updated DS4Windows.deps.json file","* Made sure to bundle latest Lang assembly folder"],"updated_at":"2022-09-23T01:54:08+0000" } ] },{"version_str":"3.1.5","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":5},"base_header":"Version 3.1.5","release_date":"2022-09-22T21:04:32+0000","locales":[{"code":"en","header":"Version 3.1.5","log_text":["* Updated German translation. Contribution by **h1nnak**","* Added Razer Raion Fightpad PS4 to known devices. Contribution by **Ygor Vaz**","* Updated NLog package to version 5.0.4","* Updated H.NotifyIcon.Wpf package to version 2.0.64","* Updated bundled ViGEm.NET libraries","* Fixed wrong UI binding used for RSAntiSnapback. Contribution by **Kanuan**","* Fixed Hip Fire Delay settings not saving. Contribution by **Kanuan**","* Fixed preset option using wrong preset. Contribution by **Kanuan**","* Fixed Flick Stick Min Angle settings not saving. Contribution by **Kanuan**","* Set DualSense's Lightbar to white when stopping DS4Windows. Contribution by **Kanuan**","* Added AutoProfile target EXE to Hidhide. Contribution by **Yohoki**","* Added Auto-Profile Target to HidHide's Whitelist. Contribution by **Yohoki**","* Fixed LF byte for rumble frequency with Switch Pro and JoyCon","* Added reference to Nefarius.Utilities.DeviceManagement package. Contribution by **nefarius**","* Hardened virtual device check using Nefarius.Utilities.DeviceManagement package. New check detects and skips reWASD created virtual DS4 controllers. Contribution by **nefarius**","* Updated Driver Installer window to link to HidHide 1.2.98","* Display XInput slot num in output slots panel","* Added Filename to LogDebug when adding/removing EXE entry for HIDHide's whitelist. Contribution by **Yohoki**","* Updated README file with updated instructions and pictures. Contribution by **dpearson2699**","* Activated Improved Rumble Emulation for DualSense controllers using newer firmware. Set DualSense's default rumble strength level to High. Contribution by **Ygor Vaz**","* Increased max amplitude for Switch Pro rumble. Increases max rumble output","* Added initial support for updated ViGEmBus DS4 full output payload (rumble + lightbar) support. Requires latest pre-release ViGEmBus driver (AwaitRawOutputReport calls) to work."],"updated_at":"2022-09-22T21:04:32+0000" } ] },{"version_str":"3.1.4","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":4},"base_header":"Version 3.1.4","release_date":"2022-09-01T23:36:52+0000","locales":[{"code":"en","header":"Version 3.1.4","log_text":["* Changed when CustomName is defined for TaskbarIcon. Fixes Custom Name Exe option with TaskbarIcon workaround"],"updated_at":"2022-09-01T23:36:52+0000" } ] },{"version_str":"3.1.3","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":3},"base_header":"Version 3.1.3","release_date":"2022-08-22T01:49:39+0000","locales":[{"code":"en","header":"Version 3.1.3","log_text":["* Changed startup device init and hotplug to unify code routines","* Changed minimum sensitivity for LS and RS","* Updated H.NotifyIcon package to version 2.0.60","* Implemented workaround for H.NotifyIcon disposing TaskbarIcon instance after display scaling and RDP sessions","* Updated NLog package to version 5.0.2","* Small change to display of Binding window panels when bringing up macro recorder","* Added credit notes for vJoyInterfaceCS","* Changed ViGEmPluginFailure string text. Removed reference to old PurgeOldXInput project"],"editor":"ryochan7","editors_note":["Pushing tray icon fixes early"],"updated_at":"2022-08-22T01:49:39+0000" } ] },{"version_str":"3.1.2","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":2},"base_header":"Version 3.1.2","release_date":"2022-08-08T02:21:08+0000","locales":[{"code":"en","header":"Version 3.1.2","log_text":["* Hide alpha slider from color picker window","* Changed some translation files locations based on .NET 6 locale changes","* Added OSC Server and Sender. Contribution by **GreySole**","* Updated H.NotifyIcon package","* Use new H.NotifyIcon property for handling tray icon identifier","* Removed Speaker volume feature flag from DS4 output report","* Minor tweak for ReadLocker wrapper class","* Added H.NotifyIcon to About Extras tab","* Removed DS4Audio class from project","* Disabled failed fake DS4 detection. Does not really work for its purpose based on reports","* Fixed Rename Profile window to use app theme colors","* Slightly alter how loading a temp profile is performed"],"editor":"ryochan7","editors_note":["Biking now taking up a lot of my time"],"updated_at":"2022-08-08T02:21:08+0000" } ] },{"version_str":"3.1.1","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":1},"base_header":"Version 3.1.1","release_date":"2022-07-21T10:36:14+0000","locales":[{"code":"en","header":"Version 3.1.1","log_text":["* Changed gyro output mode output behavior for joined JoyCon. Run output early for Gyro Mouse and Gyro Mouse-like Joystick","* Updated many project dependency NuGet packages and DLL files","* Migrated project to use H.NotifyIcon.Wpf package","* Added extra CONNRESET IOControl call for ReceiveCallback method in UDP server. Avoids potential memory leak within UDP server in .NET 6. The call should have probably existed beforehand","* Switched main UDP message rsp to convert payload from a struct. Faster and simpler","* Added dependabot to GitHub actions. Contribution by **sitiom**","* Slightly tweaked Suspend and Resume power routines","* Fixed DS4Updater download URL redirect when automatic download fails","* Fixed initial data bindings for Auto Profile section","* Have Full Pull Dual Stage triggers use raw input range rather than interpreted. Might have to change how Full Pull is handled later","* Changed WelcomeDialog to use Windows temp folder while downloading rather than program folder. Would mainly affect when DS4Windows is run in a read-only folder (shouldn't be the case on a proper setup)","* Removed Mastodon and Minds social media links from About window. No longer support Mastodon as a whole. DS4Windows actually got banned from Minds","* Added extra project links and notes to About window","* Allow joined JoyCons to transmit unique Gyro data to UDP server. Mimics behavior of BetterJoy for two JoyCon controllers linked together","* Changed HidHide download link to point to version 1.1.50.0. Approved release","* Enforce 6 normal key maximum for fake virtual keyboard in FakerInput handler. Pretty sure some reports were from people abusing said limit","* Removed old .NET 5 workaround for single process instance checking. Use EventWaitHandleAcl.OpenExisting included with .NET 6. Contribution by **sitiom**","* Fixed touchpad counter reading with DualSense. Needed for Touchpad passthru for virtual DS4 Extended output to work. Contribution by **Kanuan**"],"editor":"ryochan7","editors_note":["JoyCon changes finally make my old Wiimote config obsolete"],"updated_at":"2022-07-21T10:36:14+0000" } ] },{"version_str":"3.1.0","version_number_info":{"majorPart":3,"minorPart":1,"buildPart":0},"base_header":"Version 3.1.0","release_date":"2022-07-10T02:13:52+0000","locales":[{"code":"en","header":"Version 3.1.0","log_text":["* Have project target .NET 6. Good performance jump. **Make sure to download the .NET 6 Runtime before updating.** [.NET 6 Runtime x64](https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-desktop-6.0.6-windows-x64-installer)","* Updated extra libs to target .NET 6","* Remove the use of the DS4Audio monitor class for select devices. Use appropriate feature flags instead","* Changed expanded output range for Gyro Mouse-like Joystick","* Added additional checks for HidHideClient path","* Change gyro mode subcommand calls for Switch Pro and JoyCon","* Added try catch for initial outputKBMHandler connect call","* Changed Backslash OEM key alias for FakerInput mapping","* Corrected current gyro toggle flags. Could have impacted profile changes","* Raise default warning intervals used for controller readings control and lightbar flashing","* Removed several DS4 BT Windows 7 workarounds. Seriously,Win 7 support is done. 8.1 is almost EOL","* Fixed use of WIN64 compilation symbol for serial reading routine. VS probably stripped it with the .NET 5 migration"],"editor":"ryochan7","editors_note":["Going my own way with this. Likey short lived support"],"updated_at":"2022-07-10T02:13:52+0000" } ] },{"version_str":"3.0.18","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":18},"base_header":"Version 3.0.18","release_date":"2021-08-17T18:46:29+0000","locales":[{"code":"en","header":"Version 3.0.18","log_text":["* Added output Stick and Axis options for Gyro Mouse Joystick","* Use TabControl to contain gyro output panels. Simplifies XAML","* Re-enabled DS4 emulation support"],"editor":"ryochan7","editors_note":["Can't have nice things like a functioning society"],"updated_at":"2021-08-17T18:46:29+0000" } ] },{"version_str":"3.0.17","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":17},"base_header":"Version 3.0.17","release_date":"2021-08-16T04:18:45+0000","locales":[{"code":"en","header":"Version 3.0.17","log_text":["* Added fake DS4 FrameCounter field for DualSense,Switch Pro and JoyCon devices","* Increased default Idle Disconnect time to 15 min","* Disabled DS4 controller emulation support. Can't have nice things","* Only perform output slot lookup in virtual device plugin routine when emulating a controller","* Check for device removal status before adding device to main view list. Fixes initial Switch Pro disconnect on hotplug when controller battery is dead"],"editor":"ryochan7","editors_note":["Tired of this crap"],"updated_at":"2021-08-16T04:18:45+0000" } ] },{"version_str":"3.0.16","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":16},"base_header":"Version 3.0.16","release_date":"2021-08-09T02:07:23+0000","locales":[{"code":"en","header":"Version 3.0.16","log_text":["* Changed mapper to copy timestamp data from original input state object. Used for DS4 Gyro Passthru"],"editor":"ryochan7","editors_note":["Tired of everything"],"updated_at":"2021-08-09T02:07:23+0000" } ] },{"version_str":"3.0.15","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":15},"base_header":"Version 3.0.15","release_date":"2021-08-07T17:34:17+0000","locales":[{"code":"en","header":"Version 3.0.15","log_text":["* Changed ControllerListViewModel locking strategy for non-Sony DS4s that might fail the initial handshake","* Removed OnlyInputData0x01 hack for fake DS4 controllers (fake DS4 using Sony VID+PID combo)","* No longer provide support for knockoff fake DS4 controllers","* Changed Lightbar TabItem in Profile Editor to use embedded TabControl","* Added warning text for Lightbar Passthru mode stating the old feature is currently disabled","* Fixed combo box cutoff in Dark theme. Contribution by **Sajidur78**","* Updated Brazilian Portuguese translation pack. Contribution by **nelitow**"],"editor":"ryochan7","editors_note":["Tired of problems"],"updated_at":"2021-08-07T17:34:17+0000" } ] },{"version_str":"3.0.14","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":14},"base_header":"Version 3.0.14","release_date":"2021-08-04T01:48:11+0000","locales":[{"code":"en","header":"Version 3.0.14","log_text":["* Updated FakerInputWrapper libraries for F13 - F24 key support","* Added F13 to F24 keys for FakerInput mapping","* Decreased button wheel delta. Increased button wheel sensitivity. Now uses 150 ms for time delta","* Updated FakerInputWrapper libraries. Fixes array bounds check for KeyboardReport","* Fixes for Stick Outer Btn bindings","* Added ManagementException catch for initial connection. Apparently it can be thrown in that call.","* Expanded max output limits for LS and RS","* Re-design dark theme and use theme colors in AutoProfiles. Contribution by **Sajidur78**","* Changed DualSense trigger Full Click resistance depending on profile settings","* Changes to better handle connection failure for Switch Pro and JoyCon devices"],"editor":"ryochan7","editors_note":["Need update"],"updated_at":"2021-08-04T01:48:11+0000" } ] },{"version_str":"3.0.13","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":13},"base_header":"Version 3.0.13","release_date":"2021-07-07T20:16:18+0000","locales":[{"code":"en","header":"Version 3.0.13","log_text":["* Another fix for EnhancedKey usage for FakerInput mapping"],"editor":"ryochan7","editors_note":["Fixes"],"updated_at":"2021-07-07T20:16:18+0000" } ] },{"version_str":"3.0.12","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":12},"base_header":"Version 3.0.12","release_date":"2021-07-06T21:04:03+0000","locales":[{"code":"en","header":"Version 3.0.12","log_text":["* Removed old Input Curve options","* Corrected coordinate system for Stick to Mouse Wheel","* Fixed saving of Max Output Force options","* Expand output for Gyro Mouse Joystick Max Output routine. Make sure maximum output can be achieved. Likely would not achieve a completely straight line when using Gyro.","* Expanded macrodone array. Fixes some macro bindings for later virtual buttons","* Added 'Hide DS4 Controller' option back in again","* Increased button mouse wheel delta. Decreases wheel sensitivity","* Unified late profile options checks","* Increased resistance range for DualSense trigger Full Click"],"editor":"ryochan7","editors_note":["Fixes"],"updated_at":"2021-07-06T21:04:03+0000" } ] },{"version_str":"3.0.11","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":11},"base_header":"Version 3.0.11","release_date":"2021-06-29T23:15:01+0000","locales":[{"code":"en","header":"Version 3.0.11","log_text":["* Group and move Virtual Controller options in Other tab. Contribution by **Kanuan**","* Fixed MODIFIER_ENHANCED value for FakerInput mapping","* Fixed Alt,Windows,and other modifier keys mapping for FakerInput","* Fixed Stick to Mouse Wheel routine for SendInput output","* Fixed tray menu profile selection for names with underscores","* Added many tooltip strings in Profile Editor","* Fixed RenameProfileWindow closing early due to early DialogResult assignment. Property calls Close on the Window","* Removed BitChute social link","* Fixed display of CheckEveryUnit combobox in Settings tab. Not sure when VS changed that portion of the XAML","* Removed obsolete 'Hide DS4 Controller' option again. Can't have options","* Added ScrollViewer to Other tab in Profile Editor. Enough controls in tab to justify it","* Added force option for LS and RS MaxOutput. Allow 100% forced circular max output for sticks","* Made Capture,SL,and SR buttons mappable","* Created Outer Button bindings for LS and RS. Allows extra distance action for the sticks like Walk or Sprint","* Display Touchpad X and Y in Controller Readings tab","* Increased HID report input buffer to 3 rather than 2. Not sure it will really matter","* Disabled broken DS4 feedback support **again**. Can't have semi-nice things. **Don't bring it up again until at least the next ViGEmBus driver update**","* Added change to not send Profile loaded message for secondary JoyCon in Joined mode"],"editor":"ryochan7","editors_note":["Done dealing with the average gamer (DSP)"],"updated_at":"2021-06-29T23:15:01+0000" } ] },{"version_str":"3.0.10","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":10},"base_header":"Version 3.0.10","release_date":"2021-06-22T16:13:13+0000","locales":[{"code":"en","header":"Version 3.0.10","log_text":["* Removed virtual device plug/unplug delay","* Removed Dispatcher and thread from OutputSlotManager","* Another fix to hopefully sort out Special Action items properly","* Allow profiles to be renamed from within app using Profiles tab","* 'Hold for X secs' special actions now support decimal values. Contribution by **mika-n**","* DeviceOptions has a new 'Verbose log messages' option. Contribution by **mika-n**","* Fixed coordinate system for Stick to Mouse Wheel calculations","* Reset mouse position for FakerInput on Sync method. Fixes some mouse related actions conflicting with FakerInput output handler","* Updated Touchpad scroll support to use new coordinate system","* Updated Strings.ru.resx. Contribution by **shikulja**"],"editor":"ryochan7","editors_note":[""],"updated_at":"2021-06-22T16:13:13+0000" } ] },{"version_str":"3.0.9","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":9},"base_header":"Version 3.0.9","release_date":"2021-06-12T04:47:57+0000","locales":[{"code":"en","header":"Version 3.0.9","log_text":["* Fixed obtaining source index item for Special Action list","* Allow Touchpad Click as an output for Macros","* Delay log message for virtual device association","* Updated ViGEmPluginFailure message to make reference to PurgeOldXInput utility","* Added PurgeOldXInput utility to Tools folder. Might be useful for deleting invalid virtual Xbox 360 controllers","* Updated Japanese translation. Contribution by **toshixm**","* Updated Czech translation. Contribution by **MikeCZ23**"],"editor":"ryochan7","editors_note":["Burnout"],"updated_at":"2021-06-12T04:47:57+0000" } ] },{"version_str":"3.0.8","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":8},"base_header":"Version 3.0.8","release_date":"2021-06-06T03:50:47+0000","locales":[{"code":"en","header":"Version 3.0.8","log_text":["* Fixed Special Action sorting to sort by user defined Action name","* Removed support for HidGuardian completely. **HidHide is the only supported HID device blocking driver now**"],"editor":"ryochan7","editors_note":["Done"],"updated_at":"2021-06-06T03:50:47+0000" } ] },{"version_str":"3.0.7","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":7},"base_header":"Version 3.0.7","release_date":"2021-06-04T20:24:42+0000","locales":[{"code":"en","header":"Version 3.0.7","log_text":["* Added slot# log messages to a gamepad connect/disconnect handler and 'permanent' slot debug msg. Contribution by **mika-n**","* Small special action fix when action trigger is somehow flagged as None","* Added support for virtual KB+M driver FakerInput v. 0.1. Needed to play Valorant and other apps that block SendInput events.","* Sort Special Action list by action name","* Fixed event order issue that caused output slots to not get disconnected","* Reduced mouse remainder cutoff to the hundredths place","* Fixed OutSlotDevice check to make sure Permanent slots are detached on service stop"],"editor":"ryochan7","editors_note":["Driver hell"],"updated_at":"2021-06-04T20:24:42+0000" } ] },{"version_str":"3.0.6","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":6},"base_header":"Version 3.0.6","release_date":"2021-05-27T05:02:47+0000","locales":[{"code":"en","header":"Version 3.0.6","log_text":["* Re-compiled program and tools"],"editor":"ryochan7","editors_note":["Nothin"],"updated_at":"2021-05-10T06:11:48+0000" } ] },{"version_str":"3.0.5","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":5},"base_header":"Version 3.0.5","release_date":"2021-05-10T06:11:48+0000","locales":[{"code":"en","header":"Version 3.0.5","log_text":["* Fixed copying of app config file for fake named exe","* Now copy deps file for fake named exe","* Fixed initial Config folder selection dialog when multiple configs (Program Folder and AppData) are found. Make sure to display option to delete one of the configs","* Updated DotNetProjects.Extended.Wpf.Toolkit to version 4.6.97","* Updated MdXaml to version 1.10.0","* Updated NLog to version 4.7.9","* Check if DS4Windows program folder is actually AppData subfolder when locating program config. Treat case as Program Folder option","* Added All Files option for Launch Program special action File Dialog. Use Explorer to launch associated program for an arbitrary file"],"editor":"ryochan7","editors_note":["I'm on break"],"updated_at":"2021-05-10T06:11:48+0000" } ] },{"version_str":"3.0.4","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":4},"base_header":"Version 3.0.4","release_date":"2021-05-05T14:47:29+0000","locales":[{"code":"en","header":"Version 3.0.4","log_text":["* Support for DS3 gamepad as vendor defined device over DsHidMini driver. Contribution by **mika-n**","* Now issue immediate virtual device unplug upon Windows suspend","* Changed ViGEmBus lookup routine to perform a list based lookup for potential drivers. Attempt to discover newest version from version info","* Changed ViGEmClient library to attempt to connect to newest available version of ViGEmBus on a system rather than the first version found","* Set all controller slots to use the Default profile initially when making a new config","* Immediately issue unplug of all virtual controllers when pressing main Stop button","* Initial implementation of HidHide integration. Display key icon for HidHide hidden device. Insert DS4Windows.exe into whitelist at startup if necessary","* Changed method of obtaining current executable file location. Needed due to assembly changes in .NET 5 breaking support for custom exe filenames","* Added HidHide installer link to Welcome dialog window","* Added HidHide Configuration Client app link in Settings tab","* Hide HidNinja link in Settings tab if HidGuardian is not installed","* Show the text value of 'Max Saturation' lightbar setting. Contribution by **sabihoshi**","* Changed Launch Program special action to use UseShellExecute"],"editor":"ryochan7","editors_note":["Major ViGEmBus changes. HidHide support"],"updated_at":"2021-05-05T14:47:29+0000" } ] },{"version_str":"3.0.3","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":3},"base_header":"Version 3.0.3","release_date":"2021-04-15T16:32:18+0000","locales":[{"code":"en","header":"Version 3.0.3","log_text":["* Fixed Open Program Folder link in tray menu","* Lessen ViGEmBus restriction for now. Allow connecting to ViGEmBus 1.16.112.0. **PLEASE DON'T MAKE ME REGRET THIS**."],"editor":"ryochan7","editors_note":["Can't move forward"],"updated_at":"2021-04-15T16:32:18+0000" } ] },{"version_str":"3.0.2","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":2},"base_header":"Version 3.0.2","release_date":"2021-04-12T00:45:20+0000","locales":[{"code":"en","header":"Version 3.0.2","log_text":["* Use UseShellExecute for ProcessStartInfo in more places for .NET 5 changes","* DS4Windows updater message update. Contribution **RedDevilus**","* German translation update. Contribution by **jmg2k**","* Added Portuguese (Portugal) translation. Contribution by **joaopedrogome**","* Add cmd line command for 'Change led color'. Contribution by **bernspedras**","* Muted blues used in Dark theme. Contribution by **AnessZurba**","* Added some exception handling for XML in ProfileMigration","* Added output controller option to Preset Window for certain Presets. Change profile values based on output controller type.","* Added some precautions for possible empty devicePath string","* Changed GroupBox template for Dark theme","* Now enforcing ViGEmBus minimum supported version. Targetting ViGEmBus 1.17.333.0","* Fixed ProcessStartInfo for ViGEmBus installer launching with .NET 5","* Refresh internal data about ViGEmBus on service startup"],"editor":"ryochan7","editors_note":["Why"],"updated_at":"2021-04-12T00:45:20+0000" } ] },{"version_str":"3.0.1","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":1},"base_header":"Version 3.0.1","release_date":"2021-04-02T17:46:02+0000","locales":[{"code":"en","header":"Version 3.0.1","log_text":["* Fixed launching of HidGuardHelper for .NET 5 usage","* Fixed URL string generation for updater version redirect on download failure","* Fixed a few typos in the English strings. Contribution by **instilledbee**","* Bundled HidGuardHelper 0.2.0"],"editor":"ryochan7","editors_note":["nothing"],"updated_at":"2021-04-02T17:46:02+0000" } ] },{"version_str":"3.0.0","version_number_info":{"majorPart":3,"minorPart":0,"buildPart":0},"base_header":"Version 3.0.0","release_date":"2021-04-01T20:29:11+0000","locales":[{"code":"en","header":"Version 3.0.0","log_text":["* DS4Windows now targets .NET 5","* Changed ViGEm libraries to target .NET Core 3.1","* Now use MdXaml rather than Markdown.Xaml for Changelog text rendering","* Removed Newtonsoft.Json library dependency","* Removed use of .NET 5 Runtime check nag window","* Fixed UDP Server locking device input in .NET 5. Caused by API change for SocketAsyncEventArgs","* Moved app config loading to occur after logger is created","* Change extras flag to take current DS4Control into account","* Added additionalProbingPaths to runtimeconfig.json","* Use UseShellExecute for ProcessStartInfo. Due to Process.Start change in .NET 5","* Added newer bat self deletion routine. Make sure to return 0 status code in process when performing bat self-delete"],"editor":"ryochan7","editors_note":[".NET 5 updates"],"updated_at":"2021-04-01T20:29:11+0000" } ] },{"version_str":"2.2.15","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":15},"base_header":"Version 2.2.15","release_date":"2021-03-25T16:22:38+0000","locales":[{"code":"en","header":"Version 2.2.15","log_text":["* Ignore duplicate device when in Shared mode","* Added extra processing to Version string for .NET 5 and later. Expecting Microsoft to use their own standard was a mistake","* Changed URL used for .NET 5 Runtime download"],"editor":"ryochan7","editors_note":["None"],"updated_at":"2021-03-25T16:22:38+0000" } ] },{"version_str":"2.2.14","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":14},"base_header":"Version 2.2.14","release_date":"2021-03-24T18:19:59+0000","locales":[{"code":"en","header":"Version 2.2.14","log_text":["* Implemented stick vertical scale","* Include nag window telling people to install .NET 5 Runtime. Window will open at program startup if needed."],"editor":"ryochan7","editors_note":["None"],"updated_at":"2021-03-24T18:19:59+0000" } ] },{"version_str":"2.2.13","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":13},"base_header":"Version 2.2.13","release_date":"2021-03-20T02:48:37+0000","locales":[{"code":"en","header":"Version 2.2.13","log_text":["* Have device hotplug routine enforce profile settings when using a temp auto profile","* Bundled DS4Updater 1.4.7"],"editor":"ryochan7","editors_note":["None"],"updated_at":"2021-03-20T02:48:37+0000" } ] },{"version_str":"2.2.12","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":12},"base_header":"Version 2.2.12","release_date":"2021-03-19T14:01:18+0000","locales":[{"code":"en","header":"Version 2.2.12","log_text":["* Fixed CRC32 error counter for DualSense","* Fixed bad copy pasta regarding device setting wheel calibration saving","* Added error checking with device wheel calibration loading"],"editor":"ryochan7","editors_note":["None"],"updated_at":"2021-03-19T14:01:18+0000" } ] },{"version_str":"2.2.11","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":11},"base_header":"Version 2.2.11","release_date":"2021-03-17T20:05:46+0000","locales":[{"code":"en","header":"Version 2.2.11","log_text":["* Implemented newer feedback handler routine for virtual DS4 devices. Added virtual DS4 rumble back in","* Now sure to use continuous calibration routine for non-DS4 devices","* Changed severity of ViGEmPluginFailure message. Now indicates that a user should probably reboot Windows if it happens","* Fixed JoyCon R Gyro Roll. Old value was inverted","* Copy modified JoyCon current state for use in UDP server","* Only display device in UDP server if it is a primary device. Mainly needed due to JoyCon R in Joined JoyCon mode","* Added exception catching when saving Actions xml file. File corruption will now cause the file to be written from scratch","* Use Task error log helper for some background service tasks. Allows some extra possible error messages to show up in the Log","* Simplify UDP motion event creation. Allow motion event to be created when enabling UDP server","* Make Flash at High Latency default to 50 ms","* Dark Theme color changes. Color contrast has been reduced. Contribution by **AnessZurba**","* Skip writing device wheel calibraton nodes if empty","* Now use estimated wheel center values if controller config has an empty entry. Problem caused some app instability and memory bloating due to excessive log messages in Log tab (over 1GB RAM usage)","* Implemented axial dead zone and related settings","* Fixed ColorByBattery panel visibility for first open. Contribution by **MakiseKurisu**","* Changes for continuous calibration routine for Sony Wireless Adapter connections. Contribution by **MakiseKurisu**","* Tweaked profile loading for some older fallback options"],"editor":"ryochan7","editors_note":["None"],"updated_at":"2021-03-17T20:05:46+0000" } ] },{"version_str":"2.2.10","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":10},"base_header":"Version 2.2.10","release_date":"2021-03-09T20:14:08+0000","locales":[{"code":"en","header":"Version 2.2.10","log_text":["* Change Disconnect command syntax to allow all wireless controllers to get disconnected","* Increased GUI enforced max Trackball Friction value to 20.0","* Slightly edited colors used in Dark theme","* Disabled virtual DS4 feedback routine again","* Allow Joined JoyCon support. Joined link mode is now the default","* Changed L1 binding for KB+M and Gyro preset profile. Make Unbound","* Fixed macroRecorder bug where MUTE control threw an exception because it is not in macroDS4Values array. Contribution by **mika-n**","* Fixed wrong on-screen button indexes while remapping using 'readout' feature. Contribution by **mika-n**","* Added artificial VID/PID for DualShock 3 running under DsHidMini drivers. Contribution by **nefarius**"],"editor":"ryochan7","editors_note":["None"],"updated_at":"2021-03-09T20:14:08+0000" } ] },{"version_str":"2.2.9","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":9},"base_header":"Version 2.2.9","release_date":"2021-03-05T02:36:16+0000","locales":[{"code":"en","header":"Version 2.2.9","log_text":["* Profile settings fuzz option hang fix. Contribution by **RokasKil**","* Anti-snapback stick settings added. Contribution by **RokasKil**","* .NET 5 progress complete. Will keep net5 branch updated regularly until used in public build. Contribution by **sitiom**","* Fixed index out of bounds error when loading profiles in virtual output device check","* Fixed current item selection for right click Disconnect BT","* Removed references to Frog site. No longer posting updates there","* Changed initial trackball velocity calculations to attempt to make numbers more uniform across devices","* Added Disconnect command line option","* Disable macro mode combobox when opening Macro used in a Multi-Action Button special action","* Take out nag disclaimer window regarding Hide DS4 Controller option"],"editor":"ryochan7","editors_note":["Burnout"],"updated_at":"2021-03-05T02:36:16+0000" } ] },{"version_str":"2.2.8","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":8},"base_header":"Version 2.2.8","release_date":"2021-02-26T18:33:49+0000","locales":[{"code":"en","header":"Version 2.2.8","log_text":["* Fixed resetting of trigger values for Two Stage modes","* Removed references to old Discord server","* Pull gyro calibration sampling routine out to its own method","* Fixed normal button binding to Touchpad Click output","* Attempt to go to DS4Updater Release page if automatic download of updater failed","* Added GitHub link to Social row in About window","* Fixed x86 ViGEm installer URL"],"editor":"ryochan7","editors_note":["Take a break"],"updated_at":"2021-02-26T18:33:49+0000" } ] },{"version_str":"2.2.7","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":7},"base_header":"Version 2.2.7","release_date":"2021-02-18T21:49:24+0000","locales":[{"code":"en","header":"Version 2.2.7","log_text":["* Added delay time to Gyro Directional Swipe action","* Fixed populate of Gyro Directional Swipe and Gyro Controls triggers buttons","* Lowered touchpad slide distance for Controls mode","* Fixed Steering Wheel calibration Special Action saving","* Allow resetting of extras for Trigger soft pull and full pull","* Allow resetting Extras bound to Gyro Swipe actions","* Now officially only support Windows 10 and later. THANKS MICROSOFT","* Added BatteryPercentage mode for DualSense Player LED Bar","* Fixed Switch Pro and JoyCon AccelY coordinate used by UDP Server","* Fixed profile cancelling for the test index","* Tweaked disable device time for Exclusive mode routine","* Removed DynamicResource lookups for Special Action Editor","* .NET 5 port in progress","* Added App instance check to work around Design mode in .NET 5.0.","* Changed Browse Programs fallback value in Profile Editor for .NET 5.0","* Changed method to strip null terminated strings","* Added Gyro Calibration button to Gyro Mouse StackPanel","* Updated ViGEmClient library to use notification queue","* Fixed critical notification callback bug in ViGEm.NET library","* Fixed infinite rumble problem stemming from ViGEm library issues"],"editor":"ryochan7","editors_note":["ViGEm updates are the most relevant"],"updated_at":"2021-02-19T17:57:22+0000" } ] },{"version_str":"2.2.6","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":6},"base_header":"Version 2.2.6","release_date":"2021-02-11T03:50:45+0000","locales":[{"code":"en","header":"Version 2.2.6","log_text":["* Fixed Gyro Mouse Joystick trigger selection","* Corrected Gyro Mouse and Gyro Mouse Joystick toggle flags","* Put Gyro Calibration button in other Gyro mode panels","* Added Mute LED mode for DualSense device options","* Fixed default virtual Touchpad button bindings","* Corrected Special Action regression"],"editor":"ryochan7","editors_note":["None"],"updated_at":"2021-02-11T03:50:45+0000" } ] },{"version_str":"2.2.5","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":5},"base_header":"Version 2.2.5","release_date":"2021-02-10T03:07:55+0000","locales":[{"code":"en","header":"Version 2.2.5","log_text":["* Fixed sync between button mouse sens and active mouse sens in Profile Editor","* Changed DualSense blanking flags used for initial connection and detach","* Now use defined ControlActionData for mapped actions rather than unboxing object references. Speeds up the mapping routine a good amount.","* Hebrew translation added to project file. Translation was never added in","* Allow Gyro triggers for Gyro Controls mode","* Reset Gyro Controls output accel values to 0 for each poll","* Driver installer window now takes arch into account when downloading the latest ViGEm installer. It uses a different setup file for each arch","* Disable Xbox 360 installer button in Welcome Dialog if running on Win8 or greater","* Added toggle mode to Gyro Controls","* Added ScrollViewer for Gyro tab","* Increased Full Click trigger effect resistance a bit","* Use fake HW serial to index SonyWA connections. Should allow multiple Sony dongles to work","* Allow audio volume searching for Nacon Rev Pro v.2 controller.","* Added DS4 setting to attempt to change output report features for copycat controllers"],"editor":"ryochan7","editors_note":["None"],"updated_at":"2021-02-10T03:07:55+0000" } ] },{"version_str":"2.2.4","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":4},"base_header":"Version 2.2.4","release_date":"2021-02-02T22:25:55+0000","locales":[{"code":"en","header":"Version 2.2.4","log_text":["* Fixed SelectedValue display in Dark theme for some dynamic ComboBox controls","* Added Gyro Directional Swipe output mode"],"editor":"ryochan7","editors_note":["None"],"updated_at":"2021-02-02T22:25:55+0000" } ] },{"version_str":"2.2.3","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":3},"base_header":"Version 2.2.3","release_date":"2021-02-01T21:09:33+0000","locales":[{"code":"en","header":"Version 2.2.3","log_text":["* Added an extra precaution to unplug any permanent output devices upon service stop. ViGEmBus should handle this already but just want to make sure.","* Updated Polish translation. Contribution by **gregory678**","* Changed locking strategy for ControllerSlotManager collection","* Fixed right click disconnect slot index for new sorted list","* Implemented a variant of Two Stage Triggers","* Added Trigger effects presets. Currently only useful for the DualSense controller","* Added averaging gyro calibration upon device connection. Contribution by **firodj**","* Skip unknown DS4Controls names while loading a profile","* Fixed issue with missingSettings being set for fallback value lookup on Profile load. Constantly re-saved profiles","* Only reset outDevTypeTemp on full profile save. Ensured proper controller image is used in Binding window after clicking Apply in Profile Editor","* Change arrangement of lit LED lights for DualSense controller","* Allow Touchpad Click button passthru with Mouse and Controls mode","* Changed device type settings. Now use device specific (serial) settings. Now saved to ControllerConfigs.xml","* Added check for valid output report types upon DS4 BT device connection. Can revert to using output report 0x11 if needed. Not sure if it will matter","* Ignore output plugin routine and other calls if requested profile file does not exist"],"editor":"ryochan7","editors_note":["None"],"updated_at":"2021-02-01T21:09:33+0000" } ] },{"version_str":"2.2.2","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":2},"base_header":"Version 2.2.2","release_date":"2021-01-19T17:17:09+0000","locales":[{"code":"en","header":"Version 2.2.2","log_text":["* Have app ignore embedded color profile for rainbowCCrop image. Fixes Profile Editor crashing app on some systems","* Supports .BAT/.CMD batch scripts in specAction LaunchProgram. Contribution by **mika-n**","* Added Hebrew translation. Contribution by **avsha114**","* Corrected Touchpad Resolution Y Max for DS4 and DualSense","* Fixed crash when right click disconnect is done twice and GUI has not changed yet. More of a pre-caution than anything","* Gioteck VX4 gamepad support. Contribution by **mika-n**","* Fixed passthru panels showing up properly for Touchpad and Gyro","* Pushing half-baked controller options window","* Change DupBox placeholder text behavior","* Removed Parler link from About window for now. RIP Parler","* Now use device specific Gyro Mouse sensitivity values","* Decreased sensitivity of DualSense Gyro Mouse slightly","* Added placeholder help text for window title auto profile field","* Fixed window style for Updater window","* Allow Home LED to be disabled for Switch Pro and JoyCon","* Fixed app config loading. Stopped extra config saves on program launch from missingSetting being set unintentionally","* Added more white variation of images for use in Dark theme","* Make custom Bezier curve perform circular interpolation rather than per axis","* Use ControlService event dispatcher for synchronization on device unplug","* Fixed Gyro Mouse and Mouse Joystick Smoothing panels visibility in Profile Editor under certain scenarios","* Fixed a bug in autoProfile set Path handler. Contribution by **mika-n**","* Lowered default rumble emulation strength of DualSense controller","* Allow configurable rumble strength setting for DualSense controllers. Will likely change later","* Now use player LEDs on Switch Pro,JoyCon,and DualSense controllers. Used to display input device slot number","* Display input slot number in controller list","* Now sort main controller list by device index","* Changed output device pluging routine. Stop DS4Windows service if ViGEm device connect call fails","* Changed default dead zone for KBM profile templates","* Only output DS4 touchpad button click when in Passthru mode","* Make sure to refresh gyro mouse smoothing combobox indexes after loading from a preset","* Bundled DS4Updater 1.4.5"],"editor":"ryochan7","editors_note":["Burnout"],"updated_at":"2021-01-19T17:17:09+0000" } ] },{"version_str":"2.2.1","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":1},"base_header":"Version 2.2.1","release_date":"2020-12-31T05:22:47+0000","locales":[{"code":"en","header":"Version 2.2.1","log_text":["* Put lock block in for DS4 USB output routine"],"editor":"ryochan7","editors_note":["Too many cases to test and my dying PC"],"updated_at":"2020-12-31T05:22:47+0000" } ] },{"version_str":"2.2.0","version_number_info":{"majorPart":2,"minorPart":2,"buildPart":0},"base_header":"Version 2.2.0","release_date":"2020-12-31T03:22:07+0000","locales":[{"code":"en","header":"Version 2.2.0","log_text":["* Import newer ViGEm.NET libraries for ViGEmBus 1.17.333.0 extended support","* Allow passthru of Touchpad and Gyro to output virtual DS4. Requires ViGEmBus 1.17.333.0 and Windows 10","* Put note about DS4Windows assembly architecture in Log. Needed to diagnose Exclusive mode problems.","* No longer reset X360 report data each gamepad poll","* Fixed Touchpad Swipe and Gyro Tilt controls index values for Profile Editor controls","* Fixed some 8 controller bugs. Make sure to save set profile and load setting","* Don't reset auto profile flags on device removal","* Sort auto profile list by app file name","* Allow binding to Mute button in Special Action editor","* Added DualSense Mute button to Gyro and Touchpad triggers","* Allow Mute button as a Shift Trigger","* Use a WrapPanel for Utils section","* Fixed crash on Windows 7 when attempting to download ViGEm installer. Side effect of targeting .NET Framework 4.8","* Remove Aero2 assembly reference","* Changed output method used for Windows 7 BT DS4 devices. Forced to use Control endpoint on Windows 7","* Have driver installer window choose different ViGEmBus installer depending on detected Windows OS install"],"editor":"ryochan7","editors_note":["Windows 7 EOL seriously this time"],"updated_at":"2020-12-31T03:22:07+0000" } ] },{"version_str":"2.1.23","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":23},"base_header":"Version 2.1.23","release_date":"2020-12-25T15:51:12+0000","locales":[{"code":"en","header":"Version 2.1.23","log_text":["* Updated App.config file with proper .NET Framework version","* Added support for mapping DualSense Mute button","* Fixed Dark theme crashing app in Windows 7. Removed Aero2 elements from Dark theme.","* Disable apply button when creating a new profile. Further enforce current flow","* Added feature set check before generating CRC-32 output data","* Fixed theme style for SaveWhere window","* Corrected KeyDown and KeyUp images in Macro editor","* Split DS4HapticState to two structs. Separate force feedback data from lightbar color","* Added -command cycle cmd flag. Allows for an easy on/off shortcut without having to set any conditions. Contribution by **wingfixer**","* Changed AutoProfile EXE file extension check to be case-sensitive. Contribution by **mika-n**","* Added MinWidth back in Dark theme for combobox. Was removed with Aero2 tags.","* Updated Russian translation file. Contribution by **shikulja**","* Don't display data write failure if device is known to be disconnecting. Hopefully eliminates excessive gamepad write failure log messages when Idle Disconnect is executed.","* Tweaked axis scaling to output Xbox 360 axis. Low end now can scale to 0 properly."],"editor":"ryochan7","editors_note":["Not much"],"updated_at":"2020-12-25T15:51:12+0000" } ] },{"version_str":"2.1.22","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":22},"base_header":"Version 2.1.22","release_date":"2020-12-13T15:42:18+0000","locales":[{"code":"en","header":"Version 2.1.22","log_text":["* Make sure profile name textbox is enabled by default again"],"editor":"ryochan7","editors_note":["Fail"],"updated_at":"2020-12-13T15:42:18+0000" } ] },{"version_str":"2.1.21","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":21},"base_header":"Version 2.1.21","release_date":"2020-12-13T01:11:04+0000","locales":[{"code":"en","header":"Version 2.1.21","log_text":["* Grab proper image for Exclusive access display"],"editor":"ryochan7","editors_note":["Oops"],"updated_at":"2020-12-13T01:11:04+0000" } ] },{"version_str":"2.1.20","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":20},"base_header":"Version 2.1.20","release_date":"2020-12-12T21:26:53+0000","locales":[{"code":"en","header":"Version 2.1.20","log_text":["* Changed project file to allow building app with msbuild","* Use custom window for displaying Log messages. Can highlight text and click URLs","* Send empty output report before closing a DualSense device. Resets rumble emulation flag to allow haptics to work again.","* Fixed -command Shutdown cmdline option. Contribution by **mika-n**","* Updated Russian translation. Contribution by **shikulja**","* Allow longer periods of rumble with DualSense","* Changed battery max value for DualSense","* Increased delay before hotplug device check","* Added button mouse vertical scale","* Changed Subcommand routine for Switch Pro and JoyCon classes","* Updated Polish translation. Contribution by **gregory678**","* Added Brook Mars controller support. Contribution by **Кладовая**","* Implemented a Dark theme for the GUI","* Fixed Change Light extras setting loading in Binding window. Keep setting in tact","* Changed buffer size for DS4 FileStream instance","* Now use Interrupt endpoint for DS4 BT output reports","* Fixed out-of-bounds access when enabling square stick. Contribution by **hpesoj**","* Added Arabic translation. Contribution by **xLive**"],"editor":"ryochan7","editors_note":["Nothing"],"updated_at":"2020-12-12T21:26:53+0000" } ] },{"version_str":"2.1.19","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":19},"base_header":"Version 2.1.19","release_date":"2020-11-29T15:47:50+0000","locales":[{"code":"en","header":"Version 2.1.19","log_text":["* Fixed translation loading"],"editor":"ryochan7","editors_note":["Fixed App.config"],"updated_at":"2020-11-29T15:47:50+0000" } ] },{"version_str":"2.1.18","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":18},"base_header":"Version 2.1.18","release_date":"2020-11-28T16:51:16+0000","locales":[{"code":"en","header":"Version 2.1.18","log_text":["* Lowered intensity of rumble effect for DualSense","* Rumble and lightbar support for DualSense now work over BT","* Added Rotate options to the Preset Menu in the Profile Editor. Useful for mapping a single JoyCon","* Disable DualSense Mic LED for now","* Edit language used for Run At Startup options to make intent more clear. Contribution by **olokos**","* Updated Ukrainian localization. Contribution by **dondrakon1**","* Added Hungarian translation. Contribution by **rocketbucket10**","* Experimental rumble for DS4 emulation. Make support a profile option. Contribution by **mika-n**","* Added New Battery and Charging command line query options to return the battery value and the charging status. Contribution by **mika-n**","* Updated target .NET Framework to version 4.8. Contribution by **dante38**","* Disable Output Slots section when service is not running","* New outputSlot related command line interfaces. Contribution by **mika-n**"],"editor":"ryochan7","editors_note":["Backup before compy dies"],"updated_at":"2020-11-28T16:51:16+0000" } ] },{"version_str":"2.1.17","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":17},"base_header":"Version 2.1.17","release_date":"2020-11-19T19:07:49+0000","locales":[{"code":"en","header":"Version 2.1.17","log_text":["* Implemented JoyCon support","* Implemented DualSense support. Lightbar and rumble support only work with USB for now","* Added workaround for DS4 reader when a duplicate timestamp is in a report. Fixes smoothing for UDP server output","* Populate totalMicroSec in JoyConDevice and SwitchProDevice. Used in the UDP server output","* Enabled Idle Disconnect for SwitchPro and JoyCon"],"editor":"ryochan7","editors_note":["Many more changes than the Changelog implies"],"updated_at":"2020-11-19T19:07:49+0000" } ] },{"version_str":"2.1.16","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":16},"base_header":"Version 2.1.16","release_date":"2020-11-10T04:52:21+0000","locales":[{"code":"en","header":"Version 2.1.16","log_text":["* Allow inserting wait periods in macro sequence","* Disable IdleDisconnect by default","* Updated URL for Gamepad Tester","* Added initial Flick Stick support","* Various refactors to somewhat abstract controller type from mapper code","* Added initial mapping support for the Switch Pro controller","* Increased default flash warning interval in Settings. Now defaults to 40 ms","* Changed connection type check depending on the input device","* Added an extra Reset call for ManualResetEventSlim for DS4Device","* Allow task startup if running on battery power","* Added fuzz setting for 360 Steering Wheel mode","* Hide DS4 Controller option re-enabled. Contribution by **Yohoki**","* Chinese (Traditional,Taiwan) Translations Updated. Contribution by **SyaoranChang**","* Ukrainian translation added. Contribution by **atimonder1**","* Put null check when checking for new input devices. Necessary for new input device check refactor.","* Bundled HidNinja 0.2.2"],"editor":"ryochan7","editors_note":["Might finally use my Switch Pro controller"],"updated_at":"2020-11-10T04:52:21+0000" } ] },{"version_str":"2.1.15","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":15},"base_header":"Version 2.1.15","release_date":"2020-10-04T18:29:47+0000","locales":[{"code":"en","header":"Version 2.1.15","log_text":["* Found a way to pass URL to Explorer and have the shell not interpret it. Removes cmd window appearing","* Disable Program Folder panel on initial config window when location cannot be written to","* Moved main touchpad options to a tab in the Profile Editor","* Moved items in DS4 Canvas around. Top Touch hover image now appears above Lightbar button","* Only reset rumble on extras deactivatoin if extras has rumble enabled","* Allow Touchpad Click to be used as a Gyro trigger","* Added an initial Touchpad Absolute Mouse implementation","* Make sure to isolate Touchpad double tap check to Mouse mode","* Added rotation setting to Touchpad Mouse","* Make No Controller Connected message dynamic. Show updated controller limit depending on build","* Increased interval for flashing latency warning","* Added minimum threshold to Touchpad Relative Mouse","* Added Min Threshold setting for Gyro Mouse","* Updated Dutch Translation. Contribution by **RedDevilus**","* Updated French Translation. Contribution by **RedDevilus**","* Added translation contributors to About window finally","* Disable ViGEm install button while installation process is active"],"editor":"ryochan7","editors_note":["Got nothing"],"updated_at":"2020-10-04T18:29:47+0000" } ] },{"version_str":"2.1.14","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":14},"base_header":"Version 2.1.14","release_date":"2020-09-27T02:29:04+0000","locales":[{"code":"en","header":"Version 2.1.14","log_text":["* More max controller 4 value changes to use Global.MAX_DS4_CONTROLLER_COUNT parameter. Contribution by **mika-n**","* Corrected bindings for AutoProfiles controls","* Fixed trigger bindings in KB+M presets","* No longer skip profile migration for version 1 profiles (Jays2Kings)"],"editor":"ryochan7","editors_note":["Hopefully 8 Controller issues are done"],"updated_at":"2020-09-27T02:29:04+0000" } ] },{"version_str":"2.1.13","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":13},"base_header":"Version 2.1.13","release_date":"2020-09-15T01:44:48+0000","locales":[{"code":"en","header":"Version 2.1.13","log_text":["* Added FORCE_4_INPUT compilation symbol","* Another place for bumping up test profile index"],"editor":"ryochan7","editors_note":["Blast"],"updated_at":"2020-09-15T01:44:48+0000" } ] },{"version_str":"2.1.12","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":12},"base_header":"Version 2.1.12","release_date":"2020-09-14T06:44:30+0000","locales":[{"code":"en","header":"Version 2.1.12","log_text":["* Fixed test profile index use for Windows 7","* Found more places where controller limit check was needed"],"editor":"ryochan7","editors_note":["Win7 changes"],"updated_at":"2020-09-14T06:44:30+0000" } ] },{"version_str":"2.1.11","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":11},"base_header":"Version 2.1.11","release_date":"2020-09-14T01:48:21+0000","locales":[{"code":"en","header":"Version 2.1.11","log_text":["* Added clamping on LS and RS dead zones in profile reader","* Corrected test profile index when launching Profile Editor from Profiles tab"],"editor":"ryochan7","editors_note":["Missed an index bump"],"updated_at":"2020-09-14T01:48:21+0000" } ] },{"version_str":"2.1.10","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":10},"base_header":"Version 2.1.10","release_date":"2020-09-13T05:26:35+0000","locales":[{"code":"en","header":"Version 2.1.10","log_text":["* Allow Black icon image for tray icon","* Changes to allow a maximum of 8 input controllers. The old limit was 4.","* Leave custom lightbar color active after macro if 'Keep key state' is set. Contribution by **mika-n**","* Added One Euro Filter to UDP Server mapping","* Added simple Presets window for Profile Editor","* Changed some Gyro Controls checks in mapping routine. Old routine could have activated any set Gyro Controls buttons even while Gyro Mouse Joystick is used","* Added a Changelog viewer window to project","* Remove temp profile association on device removal","* Fixed profile save name check for Save method in Profile Editor","* Changed Quick Charge check to delay disconnecting BT controller until USB controller is detected. Allows USB wall chargers to be used to charge a DS4 and not interfere.","* Fixed profile save on profile migration"],"editor":"ryochan7","editors_note":["Unnecessary aggravation"],"updated_at":"2020-09-13T05:26:35+0000" } ] },{"version_str":"2.1.9","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":9},"base_header":"Version 2.1.9","release_date":"2020-09-03T01:15:05+0000","locales":[{"code":"en","header":"Version 2.1.9","log_text":["* Added XInputChecker link","* Fixed null pointer issues in Macro Editor when using Preset options"],"editor":"ryochan7","editors_note":["Reinstall Windows time"],"updated_at":"2020-09-03T01:15:05+0000" } ] },{"version_str":"2.1.8","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":8},"base_header":"Version 2.1.8","release_date":"2020-09-02T06:37:47+0000","locales":[{"code":"en","header":"Version 2.1.8","log_text":["* Added WIN64 compilation symbol back in","* Added Touchpad Click as an output binding","* Added support for SnakeByte Game:Pad 4S gamepad. Contribution by **mika-n**","* Implemented fuzz routine for LS and RS. Delta value before stick coordinates are updated","* Changed assembly references. Found a way to safely use AggressiveInlining","* Increased initial service start delay","* Do not change window size if it is currently larger than default Profile Editor size","* Added note about Edge to Exclusive mode error message","* Fixed app crash when TaskService COM objects don't work. Contribution by **mika-n**"],"editor":"ryochan7","editors_note":["Nothin"],"updated_at":"2020-09-02T06:37:47+0000" } ] },{"version_str":"2.1.7","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":7},"base_header":"Version 2.1.7","release_date":"2020-08-30T03:59:05+0000","locales":[{"code":"en","header":"Version 2.1.7","log_text":["* Fixed 'index out of bounds' error for localization string when default profile is not found. Contribution by **mika-n**","* Updated build script to bundle newer translation packs","* Updated Spanish translation. Contribution by **peter9811**"],"editor":"ryochan7","editors_note":["Minor fixes"],"updated_at":"2020-08-30T03:59:05+0000" } ] },{"version_str":"2.1.6","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":6},"base_header":"Version 2.1.6","release_date":"2020-08-29T05:53:41+0000","locales":[{"code":"en","header":"Version 2.1.6","log_text":["* Removed LBRY social link and resources","* Allow setting a custom executable file for DS4Windows.exe","* Changed CONFIG_VERSION to 4. Start of profile migration support","* Added 1 Euro Filter smoothing for Gyro Mouse and Gyro Mouse Joystick output modes","* Bump up Gyro Mouse offsets","* Apply 1 Euro filter to calculated rotation angle from 360 Steering Wheel mode rather than each accel axis value","* Fixed locatiztion bug in the input custom bezier curve string value. Contribution by **mika-n**","* Added support for three specialist PS4 controllers. Contribution by **tpneill**","* Increased scale multiplier used for Gyro Mouse","* Changed translation string for 'save' in German translation. Contribution by **Haamar**","* Dutch translation added. Contribution by **RedDevilus**","* French translation added. Contribution by **RedDevilus**","* Only call RefreshVolume when the DS4Audio device is detected","* App can now find a unified USB device tied to the DS4 HID and audio devices. DS4Windows no longer relies on string name to match audio devices","* Increased minimum headphone volume","* Added new Chinese (Traditional,Taiwan) translation. Contribution by **SyaoranChang**","* Fixed issue with wrong window position data being saved while window is minimized","* Now show battery level for controller plugin tray message","* Added current battery level from DS4State object to Controller Readings. Used to diagnose if BatteryChanged events are not firing in main window","* Change profile save routine to allow dots in profile name","* Escape underscores in profile names for some GUI controls. Needed to disable access key usage in some GUI controls","* Fixed sides for Test Rumble in Profile Editor","* Allow both rumble motors to be usable simultaneously for Test Rumble","* Dynamically create task.bat file as requested. Allows a custom exe filename to be written to the file","* Reset button mappings when a special action is triggered","* Updated app manifest file to specify confirmed compatible versions of Windows","* Now log current exe filename to Log file. Just the base filename not the whole path","* Updated DS4Updater.exe to version 1.4.3"],"editor":"ryochan7","editors_note":["Long Changelog this time around"],"updated_at":"2020-08-29T06:36:00+0000" } ] },{"version_str":"2.1.5","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":5},"base_header":"Version 2.1.5","release_date":"2020-08-07T15:43:44+0000","locales":[{"code":"en","header":"Version 2.1.5","log_text":["* New 'Query' cmdline options to return profile and DS4Windows app properties to a 3rd party app or batch scripts. Contribution by **mika-n**","* Fixed Gyro Mouse Joystick invert options","* Added OneEuroFilter class to project","* Added 1 Euro Filter options to 360 Steering Wheel mode","* Disable profile name textbox when editing an existing profile","* Abstract portion of resource URI strings","* Added max output throttling option to Gyro Mouse Joystick","* Quick change to not persist auto profile messages to the log file","* Added small wrapper for ReaderWriteerLockSlim objects","* Display Gyro Mouse Joystick anti-dead zones as percentages","* Take special action for certain keys in RecordBox when WPF does not transmit a KeyDown event","* Added RWin button handling in mapping window","* Added Parler Social link in About window","* Added GitHub Issue template to Git repository","* Added minimum threshold for Gyro Mouse Joystick","* Set neutral resource language for assembly","* Disabled force feedback support for virtual DS4 controllers"],"editor":"ryochan7","editors_note":["Still nothin"],"updated_at":"2020-08-07T15:43:44+0000" } ] },{"version_str":"2.1.4","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":4},"base_header":"Version 2.1.4","release_date":"2020-07-04T18:07:41+0000","locales":[{"code":"en","header":"Version 2.1.4","log_text":["* Fixed app crash when No is selected in UAC confirm window","* Make sure to cache profile flags after changing Steering Wheel axis in Profile Editor","* Force permanent output device removal on service stop","* Added support for Astro C40 gamepad. Contribution by **mika-n**","* Fixed Gyro Mouse Turn Behavior setting","* Fixed input bound flag updating for output slots","* Changed Exclusive Mode check to take HidGuardian support into account. Key icon will appear for devices affected by HG","* Added preset menu for face buttons. Finally wanted that option back.","* Re-enabled lightbar color change for output DS4 force feedback routine","* Fixed output slot active flag when switching device types","* Made changes to allow LastVersionChecked to be an optional element in config file","* Raised default stick mouse offset","* Fixed spelling mistake in DE translation file. Contribution by **Flo082002**","* Changed gamepad latency log message to show current latency measurement. Contribution by **dondrakon**","* Raised Square Stick Roundness max value to 1000.0","* Use BeginInvoke for changing properties for permanent device manipulation. Keeps EventDispatcher actions in order","* Reset state of permanent device when unbinding an input device","* Fixed NumPadEnter binding in Binding Window","* Bundled HidNinja v.0.2.1 HidGuardian management program"],"editor":"ryochan7","editors_note":["I got nothin"],"updated_at":"2020-07-04T18:07:41+0000" } ] },{"version_str":"2.1.3","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":3},"base_header":"Version 2.1.3","release_date":"2020-06-17T02:14:15+0000","locales":[{"code":"en","header":"Version 2.1.3","log_text":["* Updated to use newer version of ViGEm.NET client libraries","* Correct feature configuration for Hori PS4 Mini controller. Contribution by **sergejkiller**","* Finally removed AnyCPU targets from solution","* Added extra null check safeguard for output slots","* Finally re-enabled Controller Readings tab from Profiles list","* Finally removed support for old Flush HID option","* Improved UI markup in Profile Editor window. Contribution by **dondrakon**","* Add some extra Japanese translation string. Contribution by **stryblt**","* Added config version number to profiles","* Change to bundle DE lang assembly pack","* Added app_version attr to profiles","* Added extra exception catch to safeguard against corrupt XML files","* Changed Profile Editor to not change virtual devices during loading","* Changed Check Updates default interval to 1 Day rather than 1 Hour","* Add Apply button on profile settings window. Contribution by **dondrakon**","* Added Chinese Simplified translation. Contribution by **mayawei**","* Allow skipping a version update from Updater Window","* Added link for HidNinja program in Settings tab","* Bundled HidNinja v.0.2 HidGuardian management program","* Added app_version attr to main config file"],"editor":"ryochan7","editors_note":["Burnout"],"updated_at":"2020-06-17T02:14:15+0000" } ] },{"version_str":"2.1.2","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":2},"base_header":"Version 2.1.2","release_date":"2020-06-02T00:40:16+0000","locales":[{"code":"en","header":"Version 2.1.2","log_text":["* Added architecture info to log","* Added option to specify permanently connected output devices","* Added extra check before sending output reports to virtual device"],"editor":"ryochan7","editors_note":["Should work"],"updated_at":"2020-06-02T00:40:16+0000" } ] },{"version_str":"2.1.1","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":1},"base_header":"Version 2.1.1","release_date":"2020-05-15T19:39:08+0000","locales":[{"code":"en","header":"Version 2.1.1","log_text":["* Changed type of output report transmitted to DS4 in BT. Now use report type 0x15 (previously 0x11)","* Added extra data transmission flag to output report","* Changed thread affinity of hidDevice object. Link with initial high priority thread","* Use a Dispatcher instance for managing the OutputSlotManager rather than Tasks","* Changed how a running output slot queue is specified","* Initial mouse offset refactors. Base mouse offset on percentage of full speed. Defaults to 0.500","* Make button mouse offset a profile setting","* Set MinWidth and MinHeight values for the main window. Contribution by **dondrakon**","* Group some button mouse fields into a class. Reduces getter calls","* Show minimum effective mouse speed in GUI","* Put OS Info in log. Will be useful for debugging","* Removed chance for a dead lock when stopping input controllers. Luckily I have never encountered it","* Fixed a bug where a shiftKey macro accidentally saved HoldMacro and Macro status values. Contribution by **mika-n**","* Fixed debug x86 project target by enabling the Allow Unsafe Code project setting. Contribution by **mika-n**"],"editor":"ryochan7","editors_note":["Might have missed some changes from commits in other branches"],"updated_at":"2020-05-15T19:39:08+0000" } ] },{"version_str":"2.1","version_number_info":{"majorPart":2,"minorPart":1,"buildPart":0},"base_header":"Version 2.1","release_date":"2020-05-02T17:26:38+0000","locales":[{"code":"en","header":"Version 2.1","log_text":["* Fixed possible sign flip issue with radial output curves","* Fixed NaN problem when radial cap is 0. Fixes output curve coordinate issues on the extreme low end","* Support for various non-standard DS4 gamepads which behave in BT just like USB connected DS4. Contribution made by **mika-n**","* Made a dedicated updater dialog window","* Added Changelog text to updater window","* Now actively using Newtonsoft Json.NET library","* Added Markdown.XAML library","* Fixed a few networking issues when pulling new version info","* Minor optimization of Controller Readings tab. Moved state copying outside of UI thread","* Updated UDP server to call the semaphore release on socket complete event","* Added German translation files. Changes made by **Flo082002**","* Added small log message stating whether running as Admin or User. Useful info when dealing with SendInput problems","* Fixed bug with 360 Steering Wheel output. Now two DS4 gamepads can be properly mapped to different VJoy output device axes"],"editor":"ryochan7","editors_note":["First version with Changelog info. Hope this works. Fingers crossed."],"updated_at":"2020-05-02T17:10:57+0000" },{"code":"jp","header":"Version 2.1","log_text":["* Fixed possible sign flip issue with radial output curves","* Fixed NaN problem when radial cap is 0","* Support for various non-standard DS4 gamepads which behave in BT just like USB connected DS4. Contribution made by **mika-n**","* Made a dedicated updater dialog window","* Added Changelog text to updater window","* Now actively using Newtonsoft Json.NET library","* Added Markdown.XAML library","* Fixed a few networking issues when pulling new version info","* Minor optimization of Controller Readings tab. Moved state copying outside of UI thread","* Updated UDP server to call the semaphore release on socket complete event","* Added German translation files. Changes made by **Flo082002**","* Added small log message stating whether running as Admin or User. Useful info when dealing with SendInput problems","* Fixed bug with 360 Steering Wheel output. Now two DS4 gamepads can be properly mapped to different VJoy output device axes"],"editor":"ryochan7","editors_note":["TODO:Make some form of translation later"],"updated_at":"2020-05-02T17:10:57+0000" } ] } ] }}