0.9.77 - 27 Dec 2019

Core

  • Hammerspoon’s Lua environments now pass in a high quality random number to math.randomseed() so it is no longer to manually call that function in your Lua configs
  • For new users, Hammerspoon now defaults to running without a dock icon

Extensions

  • Fixed: hs.itunes extension now correctly talks to macOS 10.15’s Music.app
  • Fixed: various bugs in hs.uielement
  • Added: hs.screen:setOrigin()
  • Added: hs.math with a couple of random number generation functions
  • Added: hs.window.timeout()
  • Added: hs.plist.readString()
  • Changed: hs.image.imageFromURL() now supports asynchronous operation via a callback

0.9.76 - 07 Oct 2019

Core

  • The minimum supported version of macOS is now 10.12.
  • Hammerspoon is now Notarized to satisfy macOS Catalina requirements. Please report any issues you run into.

Extensions

  • Removed: hs.drawing has been removed. Its API remains available via an emulation layer built on hs.canvas
  • Fixed: A potential crash in js.json is now guarded against
  • Fixed: A potential crash in hs.application:getMenus() is now guarded against
  • Fixed: hs.http POST calls now work better with raw binary data
  • Added: hs.hid.led
  • Added: hs.bonjour
  • Added: hs.window:isMaximizable()
  • Added: hs.eventtap.event:getUnicodeString()/setUnicodeString()
  • Added: hs.screen:getUUID()
  • Added: hs.fs.pathToBookmark()
  • Added: hs.webview.toolbar.uniqueName()
  • Added: hs.webview:isVisible()
  • Added: hs.mouse.count() and hs.mouse.names()
  • Added: hs.host.locale.localizedString()
  • Added: hs.microphoneState() and hs.cameraState()
  • Added: hs.json.read() and hs.json.write()
  • Changed: hs.doc has been optimised to reduce startup/reload times significantly
  • Changed: hs.chooser’s UI has been updated and should now correctly return input focus to the previous app when it is dismissed
  • Changed: hs.caffeinate.lockScreen() has been replaced with a new implementation that works more correctly. The old implementation is now available as hs.caffeinate.fastUserSwitch()
  • Changed: hs.screen.find() can now search for screens by UUID
  • Changed: hs.fs.getPathFromBookmark() is now hs.fs.pathFromBookmark()
  • Changed: hs.eventtap.event.newMouseEvent() now accepts mouseMoved events
  • Changed: hs.updateAvailable() now also returns the build number of an available version