<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Hammerspoon</title>
    <description>Staggeringly powerful macOS desktop automation with Lua. Making the runtime, funtime.
</description>
    <link>http://hammerspoon.github.io/</link>
    <atom:link href="http://hammerspoon.github.io/feed.xml" rel="self" type="application/rss+xml" />
    <pubDate>Thu, 26 Feb 2026 10:53:08 +0000</pubDate>
    <lastBuildDate>Thu, 26 Feb 2026 10:53:08 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
      <item>
        <title>1.1.1</title>
        <description>&lt;p&gt;Minimum macOS version: 13.0&lt;/p&gt;

&lt;h2 id=&quot;fixed&quot;&gt;Fixed&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Download archive of Hammerspoon should no longer contain spurious resource forks that can confuse macOS Gatekeeper&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Thu, 26 Feb 2026 00:00:00 +0000</pubDate>
        <link>http://hammerspoon.github.io/releasenotes/1.1.1.html</link>
        <guid isPermaLink="true">http://hammerspoon.github.io/releasenotes/1.1.1.html</guid>
        
        
      </item>
    
      <item>
        <title>1.1.0</title>
        <description>&lt;p&gt;Minimum macOS version: 13.0&lt;/p&gt;

&lt;h2 id=&quot;fixed&quot;&gt;Fixed&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;hs.task arguments are now validated to all be strings. Closes #2337&lt;/li&gt;
  &lt;li&gt;Early Lua setup will now create proper package.path entries with expanded tildes. Closes #3518&lt;/li&gt;
  &lt;li&gt;hs.httpserver:start() now correctly handles websockets. Closes #3468&lt;/li&gt;
  &lt;li&gt;Internal overrides of Lua’s print() function will no longer cause recursion when using hs.ipc&lt;/li&gt;
  &lt;li&gt;hs.window.filter now tracks applications by PID rather than by name, preventing issues when multiple apps are running with the same name&lt;/li&gt;
  &lt;li&gt;Stream Deck Mini v1 button callback is now functional. Closes #3766&lt;/li&gt;
  &lt;li&gt;Resolved a situation where hs.window:application() could corrupt Lua’s stack after an application had terminated&lt;/li&gt;
  &lt;li&gt;Resolved a crash where event handlers received an invalid PID after an application had terminated&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;changed&quot;&gt;Changed&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;hs.urlevent callbacks will now always be sent scheme/host in lowercase. Closes #3686&lt;/li&gt;
  &lt;li&gt;hs.menubar:setMenu() will no longer always recreate menus, allowing them to be modified while visible. Closes #1923&lt;/li&gt;
  &lt;li&gt;hs.window:setFrame() is now aware of applications that use “Enhanced UI” features to animate their windows.&lt;/li&gt;
  &lt;li&gt;hs.mouse.trackingSpeed() can now get/set trackpad speeds. Closes #3744&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;added&quot;&gt;Added&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;When acting as the default handler for http/https, Handoff URLs are now supported (PR #3635)&lt;/li&gt;
  &lt;li&gt;hs.eventtap can now create smart magnify events. Closes #3282&lt;/li&gt;
  &lt;li&gt;Added hs.audiodevice:thru() / hs.audiodevice:setThru() for monitoring audio from one device to another.&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Wed, 24 Dec 2025 00:00:00 +0000</pubDate>
        <link>http://hammerspoon.github.io/releasenotes/1.1.0.html</link>
        <guid isPermaLink="true">http://hammerspoon.github.io/releasenotes/1.1.0.html</guid>
        
        
      </item>
    
      <item>
        <title>1.0.0</title>
        <description>&lt;p&gt;Minimum macOS version: 12.0&lt;/p&gt;

&lt;h1 id=&quot;anniversary&quot;&gt;Anniversary&lt;/h1&gt;

&lt;p&gt;This release comes after 100 releases of 0.9, and just two months shy of Hammerspoon’s 10th birthday.&lt;/p&gt;

&lt;p&gt;Thank you all for your part in this project, it’s been a lot of fun!&lt;/p&gt;

&lt;h2 id=&quot;fixed&quot;&gt;Fixed&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Large amounts of Console window history should now consume less RAM and Hammerspoon should no longer hang when large amounts of text are written quickly to the window.&lt;/li&gt;
  &lt;li&gt;hs.network.ping should now always call the didFinish callback&lt;/li&gt;
  &lt;li&gt;hs.pasteboard.callbackWhenChanged() now correctly accepts nil for its first argument, as documented&lt;/li&gt;
  &lt;li&gt;Moving a window to another Space is now fixed in macOS Sonoma&lt;/li&gt;
  &lt;li&gt;Various typos/grammar/mistakes in docstrings have been fixed&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;changed&quot;&gt;Changed&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Lua has been updated to 5.4.7&lt;/li&gt;
  &lt;li&gt;hs.urlevent callback now receives an extra parameter containing the full original URL&lt;/li&gt;
  &lt;li&gt;When holding Cmd and Option at startup, the dialog for resetting preferences is now clearer&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;added&quot;&gt;Added&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;hs.spotify.getCurrentTrackArtworkURL()&lt;/li&gt;
  &lt;li&gt;hs.streamdeck now supports the newer hardware variant of the Stream Deck XL&lt;/li&gt;
&lt;/ul&gt;

</description>
        <pubDate>Tue, 06 Aug 2024 00:00:00 +0000</pubDate>
        <link>http://hammerspoon.github.io/releasenotes/1.0.0.html</link>
        <guid isPermaLink="true">http://hammerspoon.github.io/releasenotes/1.0.0.html</guid>
        
        
      </item>
    
      <item>
        <title>0.9.100</title>
        <description>&lt;p&gt;Minimum macOS version: 11.0&lt;/p&gt;

&lt;h2 id=&quot;fixed&quot;&gt;Fixed&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;None&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;changed&quot;&gt;Changed&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;None&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;added&quot;&gt;Added&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;hs.hash now has binary-preserving variants of MD5/SHA1/SHA256/SHA512 (where the existing functions encode the hash to a hex string). These functions have been added to support the new &lt;a href=&quot;https://www.hammerspoon.org/Spoons/OBS.html&quot;&gt;OBS Spoon&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Tue, 14 Mar 2023 00:00:00 +0000</pubDate>
        <link>http://hammerspoon.github.io/releasenotes/0.9.100.html</link>
        <guid isPermaLink="true">http://hammerspoon.github.io/releasenotes/0.9.100.html</guid>
        
        
      </item>
    
      <item>
        <title>0.9.99</title>
        <description>&lt;p&gt;Minimum macOS version: 11.0&lt;/p&gt;

&lt;h2 id=&quot;fixed&quot;&gt;Fixed&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Revert SocketRocket pod update. Closes #3422 &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3424&quot;&gt;#3424&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Fix hs.application.get() interpreting Lua patterns &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3425&quot;&gt;#3425&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;changed&quot;&gt;Changed&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;The default behaviour of hs.application.find() has changed slightly. You may get different results than before, but they should be more correct now.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;added&quot;&gt;Added&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;hs.application.find() now has two additional parameters for controlling how the hint string is interpreted&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Mon, 13 Mar 2023 00:00:00 +0000</pubDate>
        <link>http://hammerspoon.github.io/releasenotes/0.9.99.html</link>
        <guid isPermaLink="true">http://hammerspoon.github.io/releasenotes/0.9.99.html</guid>
        
        
      </item>
    
      <item>
        <title>0.9.98</title>
        <description>&lt;p&gt;Minimum macOS version: 11.0&lt;/p&gt;

&lt;h2 id=&quot;fixed&quot;&gt;Fixed&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;hs.image:colorAt() now takes into account scale &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3185&quot;&gt;#3185&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Fixed crash in hs.image.getExifFromPath() &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3177&quot;&gt;#3177&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Fix hs.spaces so it works when hs.spaces.screensHaveSeparateSpaces() is false &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3196&quot;&gt;#3196&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Fix two crash bugs in hs.camera &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3211&quot;&gt;#3211&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;add DemoPro to SKIP_APPS_TRANSIENT_WINDOWS &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3236&quot;&gt;#3236&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Fix bug where window switcher does not go away when caps lock is on &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3238&quot;&gt;#3238&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Fix hs.application.get() always returning nil &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3216&quot;&gt;#3216&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Fix lua-objc mapping to handle high/low surrogate pairs in hs.styledtext &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3356&quot;&gt;#3356&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Spaces now finds Dock instead of Docker &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3371&quot;&gt;#3371&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Truncate Console scrollback history &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3400&quot;&gt;#3400&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Fix windowHints bugs with utf8 chars &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3243&quot;&gt;#3243&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Fix ICMP socket leak in hs.ping &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3419&quot;&gt;#3419&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;changed&quot;&gt;Changed&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Allow hs.chooser query to still be forwarded when no matching string exists &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3232&quot;&gt;#3232&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Bump minimum requirements to macOS 11.0 &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3312&quot;&gt;#3312&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Speed up window switching timers &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3237&quot;&gt;#3237&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;added&quot;&gt;Added&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Added ability to save a hs.menubar position between reloads &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3195&quot;&gt;#3195&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Added functions to get application localization information &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3191&quot;&gt;#3191&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;hs.http must follow redirects #1889 &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3279&quot;&gt;#3279&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Added hs.mouse.currentCursorType() &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3265&quot;&gt;#3265&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Added hs.serial:rts() and hs.serial:dtr() &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3314&quot;&gt;#3314&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;feat(spaces): add force arg for moveWindowToSpace &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3298&quot;&gt;#3298&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;hs.fnutils.reduce takes an optional initial value &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3363&quot;&gt;#3363&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Added support for Stream Deck Mini V2 &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3378&quot;&gt;#3378&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Added support for Stream Deck Plus &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3383&quot;&gt;#3383&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Add hs.streamdeck:imageSize() &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3407&quot;&gt;#3407&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Add support for Stream Deck Pedal &lt;a href=&quot;https://github.com/Hammerspoon/hammerspoon/pull/3409&quot;&gt;#3409&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
        <pubDate>Sun, 12 Mar 2023 00:00:00 +0000</pubDate>
        <link>http://hammerspoon.github.io/releasenotes/0.9.98.html</link>
        <guid isPermaLink="true">http://hammerspoon.github.io/releasenotes/0.9.98.html</guid>
        
        
      </item>
    
      <item>
        <title>0.9.97</title>
        <description>&lt;p&gt;Minimum macOS version: 11.0&lt;/p&gt;

&lt;h2 id=&quot;core&quot;&gt;Core&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;None&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;extensions&quot;&gt;Extensions&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Fixed: hs.menubar no longer overlaps images and text, if both are set. Fixes #3171&lt;/li&gt;
  &lt;li&gt;Fixed: hs.spaces no longer errors if Docker.app is installed. Fixes #3170&lt;/li&gt;
  &lt;li&gt;Added: hs.menubar:imagePosition()&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Wed, 30 Mar 2022 00:00:00 +0000</pubDate>
        <link>http://hammerspoon.github.io/releasenotes/0.9.97.html</link>
        <guid isPermaLink="true">http://hammerspoon.github.io/releasenotes/0.9.97.html</guid>
        
        
      </item>
    
      <item>
        <title>0.9.96</title>
        <description>&lt;p&gt;Minimum macOS version: 10.15&lt;/p&gt;

&lt;h2 id=&quot;core&quot;&gt;Core&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Lua search paths (package.path and package.cpath) have been updated to search in some additional locations&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;extensions&quot;&gt;Extensions&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Fixed: hs.http connection callbacks should no longer crash in some situations if Lua coroutines are being used.&lt;/li&gt;
  &lt;li&gt;Fixed: Prevented a possible race condition in hs.webview when fading and deleting an object&lt;/li&gt;
  &lt;li&gt;Added: hs.webview.toolbar:toolbarStyle()&lt;/li&gt;
  &lt;li&gt;Added: hs.screen:getInfo() (may be helpful for distinguishing between multiple identical monitors)&lt;/li&gt;
  &lt;li&gt;Added: Various functions in hs.spaces&lt;/li&gt;
  &lt;li&gt;Changed: Several macOS SDK deprecations have been adapted to, across multiple modules. Please report any regressions found.&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Mon, 28 Mar 2022 00:00:00 +0000</pubDate>
        <link>http://hammerspoon.github.io/releasenotes/0.9.96.html</link>
        <guid isPermaLink="true">http://hammerspoon.github.io/releasenotes/0.9.96.html</guid>
        
        
      </item>
    
      <item>
        <title>0.9.95</title>
        <description>&lt;p&gt;Minimum macOS version: 10.15&lt;/p&gt;

&lt;h2 id=&quot;core&quot;&gt;Core&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;None&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;extensions&quot;&gt;Extensions&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Fixed: hs.camera.isInUse() no longer crashes&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Wed, 09 Mar 2022 00:00:00 +0000</pubDate>
        <link>http://hammerspoon.github.io/releasenotes/0.9.95.html</link>
        <guid isPermaLink="true">http://hammerspoon.github.io/releasenotes/0.9.95.html</guid>
        
        
      </item>
    
      <item>
        <title>0.9.94</title>
        <description>&lt;p&gt;Minimum macOS version: 10.15&lt;/p&gt;

&lt;h2 id=&quot;core&quot;&gt;Core&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Default values of package.path/package.cpath should now work with Homebrew luarocks on Apple Silicon&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;extensions&quot;&gt;Extensions&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Added: hs.razer to support Razer Tartarus V2&lt;/li&gt;
  &lt;li&gt;Added: hs.image.toASCII()&lt;/li&gt;
  &lt;li&gt;Added: hs.http.put(), hs.http.asyncPut()&lt;/li&gt;
  &lt;li&gt;Added: hs.streamdeck now supports the Mk2 model&lt;/li&gt;
  &lt;li&gt;Added: hs.urlevent.mailtoCallback for handling mailto: URIs&lt;/li&gt;
  &lt;li&gt;Fixed: hs.audiodevice:setBalance() now works correctly&lt;/li&gt;
  &lt;li&gt;Fixed: hs.doc.builder can now be loaded again&lt;/li&gt;
  &lt;li&gt;Fixed: hs.camera.isInUse() now works correctly&lt;/li&gt;
  &lt;li&gt;Fixed: hs.serial.deviceCallback() should no longer crash in some circumstances&lt;/li&gt;
  &lt;li&gt;Fixed: hs.mouse should now correctly determine if a pointing device is internal&lt;/li&gt;
  &lt;li&gt;Fixed: hs.streamdeck now correctly reads serial/firmware information on all models&lt;/li&gt;
  &lt;li&gt;Changed: hs.processInfo now contains information about CPU architecture and use of Rosetta2&lt;/li&gt;
  &lt;li&gt;Changed: Attempted to work around a crash in hs.eventtap&lt;/li&gt;
  &lt;li&gt;Changed: hs.ipc callbacks now limit how many times they can be called recursively, to work around a potential crash&lt;/li&gt;
  &lt;li&gt;Changed: hs.keycodes now attempts to work around a change in macOS 12 that caused keycodes 93 and 94 to be listed incorrectly&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Fri, 25 Feb 2022 00:00:00 +0000</pubDate>
        <link>http://hammerspoon.github.io/releasenotes/0.9.94.html</link>
        <guid isPermaLink="true">http://hammerspoon.github.io/releasenotes/0.9.94.html</guid>
        
        
      </item>
    
  </channel>
</rss>
