0.9.53 - 24 Apr 2017

Core

  • Addeed support for pure-Lua plugins, or Spoons, see http://www.hammerspoon.org/Spoons/
  • The bundled Lua is now 5.3.4
  • Exceptions generated inside Hammerspoon as part of Lua callbacks are no longer fatal and will print a traceback to the Console window
  • Crash report uploading behaviour can now be controlled via hs.uploadCrashData()
  • Hammerspoon now exposes a minimal AppleScript API for executing Lua code from AppleScript
  • The console window will now save/restore its window location

Extensions

  • Fixed: Guarded against a potential crash in hs.application:getMenuStructure()
  • Fixed: hs.application.find() no longer fails if applications have no :name() value
  • Fixed: hs.checkForUpdates() can now optionally check for Hammerspoon updates without presenting any UI if an update is found
  • Fixed: Removed a small memory leak in hs.menubar when removing menu items
  • Fixed: hs.host.cpuUsage now properly samples CPU ticks
  • Fixed: hs.chooser will now scroll to values selected via hs.chooser:selectedRow()
  • Fixed: hs.timer objects can now work more successfully with sub-second precision
  • Fixed: hs.application:path() now correctly distinguishes between multiple installed copies of the same application
  • Changed: hs.keycodes.map now includes modifier keycodes, JIS keycodes, and will fallback to ANSI US keyboard values
  • Changed: hs.canvas elements with an alphanumeric id attribute can now be accessed directly from the canvas object, using that id.
  • Changed: hs.menubar callbacks registered with :setClickCallback() now receive a reference to the menubar item when called
  • Changed: hs.itunes.previous() now mirrors the behaviour of the equivalent keyboard key, rather than unconditionally skipping back a track
  • Changed: hs.layout items can now specify callback functions for unit/frame/full-frame values
  • Changed: hs.pasteboard:writeDataForUTI()/:writeArchiverDataForUTI()/writePListForUTI() can now be used to write data to the pasteboard for multiple UTIs
  • Changed: hs.color objects can now be created from HTML hex colour strings
  • Changed: hs.noises now uses its own processing queue, which should make Hammerspoon more responsive when this module is being used
  • Changed: hs.httpserver, hs.doc.hsdocs and hs.httpserver.hsminweb can now be configured to listen on a specific network interface
  • Changed: hs.keycode.map.kVK_ANSI_Quote now contains the correct value
  • Changed: hs.ipc.cliUninstall() will now unconditionally remove the CLI tools it finds on disk
  • Added: hs.sqlite3
  • Added: hs.audiodevice:inputMuted(), hs.audiodevice:outputMuted(), hs.audiodevice:setInputMuted(), hs.audiodevice:setOutputMuted()]
  • Added: hs.itunes, hs.spotify and hs.deezer now have .getDuration()
  • Added: hs.updateAvailable()
  • Added: hs.chooser lists can now be scrolled with Ctrl-P/N/V
  • Added: hs.vox (equivalent to hs.itunes/hs.spotify/hs.deezer for the Vox music player)
  • Added: hs.chooser:showCallback(), hs.chooser:select(), hs.chooser:cancel()
  • Added: hs.pasteboard.readAllData(), hs.pasteboard.writeAllData()
  • Added: hs.accessibilityStateCallback
  • Added: hs.webview:windowCallback()
  • Added: hs.images.systemImageNames now includes new system images from macOS 10.12 (when running on 10.12 or higher)
  • Added: hs.application.infoForBundleID() and hs.application.infoForBundlePath()
  • Added: hs.host.locale
  • Added: hs.textDroppedToDockIconCallback() and hs.fileDroppedToDockIconCallback() for receiving text/files via drag and drop onto the Hammerspoon dock icon (also available via the macOS Services menu)
  • Added: hs.eventtap.event:getFlags() values now support :contains() and :containExactly() to assist checking which flags are set

0.9.52 - 29 Dec 2016

Core

  • Non-interactive output lines in the Console Window now have timestamps

Extensions

  • Fixed: Fixed an infinite loop regression in hs.chooser
  • Changed: hs.chooser now defaults to the light/dark theme setting of macOS