# AutoHotkey changelog > A scripting language for desktop automation on Windows. - Vendor: AutoHotkey Foundation - Category: Productivity - Official site: https://www.autohotkey.com - Tracked by: What's New (https://whatsnew.fyi/product/autohotkey) - Harvested from: GitHub (AutoHotkey/AutoHotkey) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. ## Releases ### v2.0.26 - Date: 2026-05-04 - Version: v2.0.26 - Original notes: https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.26 - Permalink: https://whatsnew.fyi/product/autohotkey/releases/v2.0.26 - **fixed** — Fixed ControlGetItems/ControlGetChoice not throwing for Tab controls - **fixed** — Fixed error reporting for ComObjArray().__Enum() if it ever fails - **fixed** — Fixed TraySetIcon("HBITMAP:" handle) without *
Fixed ControlGetItems/ControlGetChoice not throwing for Tab controls.
Fixed error reporting for ComObjArray().__Enum(), if it ever fails.
Fixed TraySetIcon("HBITMAP:" handle) without *.
2BF1B89B1047136490FC321D2FDC988B42DD86F693EEA7872746AC6ADF722BC3 AutoHotkey_2.0.26_setup.exe
43522AA3122A57784AC5DB30ABF85C2244475C36ACD7796E2C993355F9E926AE AutoHotkey_2.0.26.zip
Fixed ByRef alias to global var becoming unset in recursive calls.
Fixed error raised by Hotkey() not transferring control correctly.
4098093C65C6128912FE484727B62D77085097D6178FD9C3AD9A97AE3138636C AutoHotkey_2.0.25_setup.exe
44035E19CB8B1B642E0AF294B1E53556BF51453BB3AED0A8700C2EF509D0D340 AutoHotkey_2.0.25.zip
A945F745506CF93E41C1FCA2006D1F2FE39E07355F37CA357F90F74CCA8A61D4 AutoHotkey_2.0.24_setup.exe
3E0713009B5D9155AC2CB255BDB9E9352F556A7DCA15F822F6C67E904CB86D35 AutoHotkey_2.0.24.zip
Changed how key-up events are correlated to key-down events for the purpose of determining whether to suppress key-up. A key-down with SendLevel between 1 and 7 now only correlates with a key-up of the same level. When #InputLevel 1 is in effect, this fixes Right::Send "{Right}" not suppressing key-up, RShift::RAlt interfering with RAlt::RShift and vice versa. Events with SendLevel 8 and above are still grouped with non-sent events for practical reasons.
Fixed WinExist("A",,,"B") to not exclude windows which have no controls.
Fixed custom combo hotkeys with neutral modifiers (e.g. Alt & Esc::) [broken by v2.0.22].
Fixed key-up hotkeys to fire consistently when the key is used as both a prefix and a suffix (e.g. a & b::, b & a:: and a up::).
Fixed timers interrupting MsgBox after the timeout starts but before the window is shown, such as if SetTimer(MsgBox, -10) is used immediately before MsgBox(1,,"T1").
D7038E9BA08E9C63EDCDB2E63552B434B87491B449D7082CF28A40CD4ECE91AF AutoHotkey_2.0.23_setup.exe
775CF3233A3C176F14222DF22BADA5AB94B34C4A5DFD55A124AE469E7ED8F6DB AutoHotkey_2.0.23.zip
Removed the undocumented effect that a hotkey with the </> prefix had on the corresponding modifier key; e.g. <^a:: causing LCtrl:: to fire on release, inconsistent with the documentation. Always firing on press provides greater consistency and flexibility. The modifier key itself was suppressed since v2.0.20. Neutral modifiers such as Ctrl:: always fire on release, and similar behaviour can be implemented with A_PriorKey and ~LCtrl up::.
Changed error dialogs to use msftedit.dll instead of riched20.dll to fix the following issues:
Fixed errors within __Delete being suppressed if a Try/Catch is active.
Fixed CallbackCreate to validate ParamCount.
Fixed detection of DllCall(... "str",&var:={} ...) as an error.
Fixed CapsLock:: to suppress even if CapsLock is used as a prefix key.
Fixed neutral Ctrl/Alt/Shift hotkeys to not suppress the key [broken by v2.0.20].
Fixed fire-on-release behaviour of neutral Ctrl/Alt/Shift hotkeys when a key-up variant is turned on but disabled by #HotIf.
Fixed CapsLock & 1:: to revert CapsLock state even if another prefix key is pressed before CapsLock is released.
Fixed L/R modifier key-up not being suppressed in some cases where key-down was suppressed.
Fixed L/R modifier key-up to be passed through if ~ is used even if key-down was suppressed.
Fixed L/R modifier hotkeys to fire on press even if the corresponding neutral modifier is present; e.g. LCtrl:: with Ctrl::.
Fixed corruption of unquoted continuation sections with trailing spaces.
Fixed file stream I/O to flush cached writes if the file hasn't been closed when the process exits.
Fixed `; in contination sections with the ` (literal escape) and C (comment) options.
Cleaned up some code within the keyboard/mouse hook.
5613E65158AB8A8A90D5986B18894080AF367DC36347B366EE3AEB0DBCD6DB86 AutoHotkey_2.0.22_setup.exe
9CD93E5793404D8C2585B73F15BE244872CC4DECCF5FA8B6F1F7B2A549FBBFD4 AutoHotkey_2.0.22.zip
Fixed StrGet crashing when given an address and not a length. (Broken by v2.0.20)
CA4247B757AB19DBF7A4BA5CFAB69B0EBCA60FB4F46E73389E5B9EA9A1CD7C7B AutoHotkey_2.0.21_setup.exe
7386F45BE928F0825FFBE78811187636D72EFCBD264E2FD406E7E045D681A626 AutoHotkey_2.0.21.zip
Fixed potential undefined behaviour in message callbacks during script termination.
Fixed Run not closing the process handle.
Fixed GuiFromHwnd crashing if passed another script's GUI window HWND.
Fixed leading space in For( a in b ) incorrectly raising an error.
Fixed enumerator calls (For) treating implicitly returned "" as true.
Fixed A_maxHotkeysPerInterval and A_Hotkeyinterval returning incorrect values if spelled in lower case.
Fixed FileSelect duplicating the filter pattern if it lacks *..
Fixed ListBox tab-stop spacing when T option is used during control creation. [PR #346]
Fixed ~RAlt & <:: causing RAlt:: to fire on release despite ~ (and likewise with other L/R modifier keys).
Fixed remap with nonexistent source key causing silent exit.
Fixed key-up hotkey causing unwanted passthrough when modifiers don't match. e.g. RButton release not being suppressed after activating RButton:: if ^RButton up:: was also present.
Fixed semicolon in /* ; */ preventing the block comment from ending.
Fixed IsOptional and IsByRef return values for built-in methods.
Fixed RegWrite parameter 1 to be mandatory.
Fixed string return value being corrupted during debugging.
Fixed erroneous Else placement to raise an error, not crash on load.
Fixed StrPut/StrGet handling of 32-bit integer limits on x64.
Fixed 1:: to not fire after 1 & LButton up:: is used, and similar.
Fixed crash when ListView has the Sort option and Add is called with Col1 omitted.
Fixed static functions not using static variables of grandparent functions.
Fixed unpaired key-up hotkey not suppressing the key if it is also used as a prefix but the custom combos are disabled or have the tilde modifier.
7F70BAC4DBA20AA55C12E59A7BBDEC748601AF864D47C3EE892635216B76F89E AutoHotkey_2.0.20_setup.exe
DC0F28EB8B0CDDAD6F1B5C891FDB5261EA376BB8C4FD4D593C015FD89B01B8AA AutoHotkey_2.0.20.zip
Fixed memory out-of-bounds access during RegEx compilation.
Fixed externally-released modifiers to not be "restored" post-Send.
Fixed modal dialog boxes suppressing InputHook events.
Fixed key-up erroneously being suppressed after key-repeat presses it down in some cases.
Fixed Critical Error when loading large icons with no alpha channel.
Fixed MouseGetPos to make Control blank and not throw if ClassNN cannot be determined.
Fixed FileSelect to validate Options.
Fixed unexpected Catch/Else/Finally/Until not being flagged as an error in some cases.
Fixed Try/Catch/Else/Finally not executing Finally if Else returns.
Fixed execution of if-else-if-else-if containing fat arrow functions.
FD55129CBD356F49D2151E0A8B9662D90D2DBBB9579CC2410FDE38DF94787A3A AutoHotkey_2.0.19_setup.exe
4E0D0E65655066A646A210951320FEAEF0729A3597177131ADAEC4066BEF5869 AutoHotkey_2.0.19.zip
Fixed A_Clipboard silently exiting when GetClipboardData returns NULL.
Fixed a.b[c] := d to invoke the getter for a.b if there is no setter.
A30AF310F45D4076CF1580BB08015DB9A1337DDC1A99CF61829E645B196E8B2E AutoHotkey_2.0.18_setup.exe
BF3A27398397B886A3D8B0AD2591C29A7165D1F560B1943A8BC120497B6EA5F8 AutoHotkey_2.0.18.zip
Implemented an optimization to the WinText parameter by Descolada. [PR #335]
Changed UnsetError message to suggest a global declaration instead of appending "(same name as a global)" after the variable name.
Changed VarUnset warning message for consistency with UnsetError.
Fixed the increment/decrement operators to throw UnsetError if the var is unset, not TypeError.
Fixed OwnProps to assign the property name safely in cases where a property deletes itself.
Fixed breakpoints to work in arrow functions under a control flow statement without a block.
Fixed debugger to break at the line of the call when stepping out of a function. (This behaviour was added in Revision 31 and broken by v1.1.30.00.)
Stepping out of a function which was called as a new thread now breaks at the line which was interrupted, instead of waiting until the next line is reached.
Fixed debugger to not delete temporary breakpoints which are ignored while evaluating DBGp property_get or context_get.
69B21D5A3D2BCC2B2B075D275A38F551997C45F28C9504995EDE406AA101BEAD AutoHotkey_2.0.17_setup.exe
2E980BD99ADD2B0859B0BD6586DDDCD688E1F8588EF6C9BF5922674E947A6DC6 AutoHotkey_2.0.17.zip