Roadmap quick wins: Spaces guards, fuzzy-match fix, dead code removal, CI#14
Merged
Conversation
…code removal, CI Closes out the small v0.7/v0.8 items from the roadmap (#4): - Guard every hs.spaces call with pcall (private macOS APIs that can throw on Sonoma/Sequoia); failed Space moves are counted and surfaced in the restore alert instead of aborting the restore - Fuzzy matching: titles that normalize to empty ('14:32', '(3)') no longer substring-match anything at 0.9 and steal windows — empty means no signal; such windows fall through to app slotting (2 new tests) - switchProfile validates the name exists, so a Stream Deck URL typo can't activate a brand-new empty profile - Remove the disabled drag-to-edge watcher (as written, any mouse-up near an edge would have maximized the focused window) - Remove the redundant setMenu in setAutoRestoreMode (menu is already dynamic via the builder function) — the last piece of #9 - Cycle-snap clock: os.time() → hs.timer.secondsSinceEpoch(), so the 2s cycle window is actually 2s rather than 1-3s - CI: GitHub Actions workflow running luac -p + the plain-Lua suite on every push/PR (59 tests) Claude-Session: https://claude.ai/code/session_018YxEAK2gUQySh3EUW9crDW
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Lands the small remaining items from the roadmap (#4):
v0.7 reliability items
hs.spacescall is pcall-guarded (private macOS APIs); failed Space moves are counted and shown in the restore alert instead of aborting the restorev0.8 items
setMenuinsetAutoRestoreModeremoved — the menubar-rebuild leak flagged in Settings snapshot: load once instead of a disk read per call #9hs.timer.secondsSinceEpoch()so the 2s window is realswitchProfilevalidates profile names — a Stream Deck typo can't activate an empty profileluac -p+ the plain-Lua suite (59 tests) on every push/PR; no untrusted event inputs in the workflowStill open on #4 after this: stable UUID display keys (the big v0.7 item, blocks #3), cross-Space capture verification, Spoon API conventions, docs.json, atomic writes, luacheck/StyLua in CI, community scaffolding, v1.0 launch items.
Testing
lua tests/run.lua: 59 passed, 0 failedluac -pcleanhttps://claude.ai/code/session_018YxEAK2gUQySh3EUW9crDW