0.9.40 - 09 Sep 2015

Core

  • None

Extensions

  • Fixed: hs.screen object methods were broken in 0.9.39, and are now fixed
  • Fixed: hs.alert now correctly handles multiple monitors
  • Fixed: hs.window.ensureIsInScreenBounds() now interacts properly with window animations
  • Fixed: hs.milight was broken in 0.9.39, and is now fixed
  • Fixed: hs.httpserver now works correctly with SSL, on OS X 10.11
  • Changed: hs.window.allWindows() should now be significantly faster
  • Changed: hs.layout.apply() now matches window titles as Lua patterns
  • Added: hs.timer:setNextTrigger()
  • Added: hs.window.find() and hs.application.find(), which effectively deprecate hs.appfinder
  • Added: hs.window.get(), hs.window.move()
  • Added: hs.application.open(), hs.application.get(), hs.application:getWindow(), hs.application:findWindow()
  • Added: hs.urlevent can now register Hammerspoon as the default handler for http/https URLs, and adds API for managing that
  • Added: hs.drawing:setLevel(), hs.drawing.windowLevels
  • Added: hs.geometry:floor(), hs.geometry.string, hs.geometry.table and various other improvements to hs.geometry
  • Added: hs.window.filter.copy()

0.9.39 - 01 Sep 2015

Core

  • The build system for extensions has changed from our custom Makefile/script setup, to Xcode. This should not produce any noticeable changes for users, but if it does, please file issues at GitHub!
  • Almost all extensions are now making extensive use of our LuaSkin framework for registering their functions with Lua, and calling Lua callbacks. This should also not produce any noticeable changes for users, but if it does, please file issues at GitHub!
  • Many of the userdata objects created by extensions, now have __tostring methods, which makes inspecting them in the Hammerspoon Console, easier.

Extensions

  • Fixed: hs.base64.encode() no longer truncates its output
  • Fixed: hs.ipc no longer leaks CFMessagePortRefs
  • Fixed: hs.spaces.watcher no longer leaks window lists
  • Fixed: hs.menubar crash with nil menu item names
  • Fixed: Console window output should now be more UTF8-safe
  • Changed: hs.windowfilter has seen numerous improvements and has been renamed to hs.window.filter
  • Changed: Various hs.fnutils iterators have slightly changed their behaviours
  • Changed: hs.grid will now use hs.window.frontmostWindow() instead of hs.window.focusedWindow(), which should be more intuitive for users
  • Changed: hs.timer timers will now stop firing if the Lua callback generates an error (although this behaviour can be overridden)
  • Changed: hs.notify has been partially rewritten and should be more reliable
  • Changed: Object methods in hs.caffeinate and hs.eventtap.event now return their object (i.e. to enable method chaining)
  • Changed: hs.geometry is now significantly more powerful
  • Changed: hs.grid.show() can now be used to iterate through multiple windows
  • Added: hs.screen.primaryScreen(), hs.screen.screenPositions(), hs.screen:position()
  • Added: hs.drawing.setTextStyle(), hs.drawing.getTextDrawingSize()
  • Added: hs.timer:nextTrigger()
  • Added: hs.audiodevice can now operate on input devices as well as output devices.
  • Added: hs.expose
  • Added: hs.screen.find() and hs.screen:fromUnitRect()