Skip to content

Switchboard v1.2.2

Choose a tag to compare

@windaddict windaddict released this 13 Jul 00:17
· 42 commits to main since this release

Reliability release: a four-pass adversarial code review (Claude + OpenAI Codex as independent reviewers) of the whole plugin, with every finding verified and fixed.

Fixed

  • Open File could freeze every key and dial. Its directory scan ran synchronously on the plugin's single event loop (and polls every 10s); a large or slow directory stalled the whole deck. Now fully async with bounded batches, and /usr/bin/open gets a timeout.
  • Fast dial spins lost steps and could double-place windows. Rotations arriving as one multi-tick event were collapsed to a single step, and overlapping async handlers could interleave their cursor read/writes. Every state-changing dial gesture is now serialized per action and consumes the full tick count.
  • Arrange Window no longer pretends a window moved when there was no focused window/screen — the helper's failure reports are now honored, and the position only persists after a confirmed move. Scroll logs helper failures.
  • tmux windows named with a | parsed wrong — formats reordered so names are parsed intact.
  • Private-window Safari targets failed silently when the new window matched the old tab's URL; creation is now detected by window count and a timeout raises a visible error.
  • Focus tmux Window no longer shows ✓ on hard failures (blocked automation, failed window switch), and hold-to-capture always probes the frontmost window fresh.
  • Subprocess timeouts everywhere; Window Ring polling can no longer stack up; failed probes keep the last known key image instead of painting false state.

377 tests (+18). Same signed & notarized native helpers.