Skip to content
Adam Wagner edited this page Jun 11, 2021 · 12 revisions

Up next

v0.1.61

  • Fixed: offset indicators when menubar is not hidden (#80)
  • Fixed: Icons don't change when toggling showIcons (#68)
  • Fixed: Failure to parse json output from yabai that contains inf values (might fix #46)
  • Removed external dependency on jq
  • Removed shell script used to call out to yabai
  • Replaced third-party json library with hs.json
  • Refactored unnecessary object-orientation out of stackline.query
  • Cleaned up stackline.lib.utils

--

v0.1.60

  • #33 Improved configuration
  • #22 Multi-monitor support
  • #23 Conform to "spoon" API for one-step installation & configuration
  • #24 Integrate dynamic indicator color feature into refactored Window class
  • #19 Click on indicator to activate target window (like tabs)

v0.1.50

0.1.50 is the newest version of stackline. It addresses a number of serious issues and includes several small improvements. The result is significantly more stable & performant. In fact, if you primarily work on a single monitor, I'm no longer hesitant to suggest that you try it out ;-)

New & Improved

  • #15: When all the windows in a stack are unfocused, the indicator for the most recently focused window in the stack should be ~50% opaque
  • #18: Much-improved responsiveness when focusing windows by efficiently updating indiactor attributes on change event rather than deleting & re-creating the canvas elements from scratch.
  • #18: Reduced impact on yabai performance by:
    • debouncing yabai -m query invocations
    • only querying on space or layout changes rather than on every window focus event
  • Stack indicators are always positioned on the side of the window that's closest to the edge of the screen. This allows for tight window_gaps, — even with showIcons enabled.
  • Centralized settings in config.lua lay groundwork for users to easily initialize with custom settings from init.lua

Fixes

  • Workaround Hammerspoon bug that causes window unfocus events for same-app windows not to fire
  • Fix issue that unfocused same-app windows occasionally 'flash focus' when switching windows
  • Handle edge case in which window frames overlap exactly, yet are not members of the same stack (can happen when unstacked window is zoom-parent or zoom-fullscreen)
  • Indicators are no longer drawn outside of screen boundaries with small screen padding values (#21)

Structure & organization

  • Enable any window to easily call stack methods by storing a reference to the parent stack directly on the window instance. This allowed redrawOtherAppWindows() to reside in the window class rather than the stack class.
  • Consolidated utils files into utils.lua and pruned unused functions (#1)
  • Magic numbers are less entangled in the implementation details — and a few of them have even been abstracted into easy-to-change configuration settings. The new config.lua file isn't that exciting yet (it's mostly boilerplate), but the next update will improve the configuration experience.

v0.1.01

v0.1.01 Fixes egregious issues that made stackline impractical for daily use. Stackline v0.1.01 behaves as expected, but still suffers from visual artifacts (flicker) and performance issues.

New & Improved

  • Ability to toggle indicator icons from the command line via echo ":toggle_icons:1" | hs -m stackline-config

Fixes

  • #2, #3, #4, #5: Use yabai signals to update stacks, fixing multiple bugs in which stack indicators did not properly update when:
    • a window is added to a stack
    • a window is removed from a stack
    • window layout changes (window is resized, gaps/padding increase/decrease)
  • Update hasbang in shell scripts from usr/local/bin/dash to the more common (and faster) /bin/dash
  • Fix errors and improve clarity of installation instructions

Structure & organization

  • Semantic grouping

v0.1.00

The initial proof of concept. Hammerspoon invokes yabai -m query, ingests the result as json, and renders indicators at the top-left corner of each stack.


Backlog

  • #11 When a stack that has "zoom-parent": 1 occludes another stack, the occluded stack's indicators shouldn't be displayed
  • #10 Configurable + automatic indicator position relative to stack

See also: Dev diary →