You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Tracking the audit findings not yet addressed by PR #2 (which covered the rebrand, auto-restore on display change, the stale-menu fix, storage migration, installer, and repo hygiene).
v0.7 — reliability (the travel use case)
Stable display-config keys: getDisplayConfigId() uses screen:id() (CGDirectDisplayID), which can change across reboots/reconnects — profiles can silently orphan. Re-key on screen:getUUID() with one-time migration of existing profiles. Blocks Profile visualizer UI: see your display setups, screens, and saved windows #3. ← the big remaining item
Verify cross-Space capture: hs.window.filter likely can't enumerate standard windows on non-visible Spaces; test empirically and either make it work or document the limitation precisely.
Spoon API conventions: obj:init() / obj:start() / obj:stop() (nothing can currently be torn down — watchers, hotkeys, menubar) and standard obj:bindHotkeys(mapping) via hs.spoons.bindHotkeysToSpec, keeping the base-modifier convenience as default.
Generate docs.json from doc comments (required for the official Spoons registry).
Stamp obj.version from the git tag in the release workflow — resolved the other way round in Release docs gate: changelog required, release notes derived from it #15: the workflow verifiesobj.version matches the tag and fails the release otherwise, so the source of truth stays in the repo.
Submit to the official Spoons registry; upload assets/social-preview.png in repo Settings → Social preview.
Announce (r/hammerspoon, Show HN, etc.).
Full audit context: session of 2026-07-03; UI visualizer tracked separately in #3 (first slice — the menubar minimap — shipped in #13).
Tracking the audit findings not yet addressed by PR #2 (which covered the rebrand, auto-restore on display change, the stale-menu fix, storage migration, installer, and repo hygiene).
v0.7 — reliability (the travel use case)
getDisplayConfigId()usesscreen:id()(CGDirectDisplayID), which can change across reboots/reconnects — profiles can silently orphan. Re-key onscreen:getUUID()with one-time migration of existing profiles. Blocks Profile visualizer UI: see your display setups, screens, and saved windows #3. ← the big remaining itemhs.spacescalls: done in Roadmap quick wins: Spaces guards, fuzzy-match fix, dead code removal, CI #14 — every call pcall-guarded; failed Space moves counted and surfaced in the restore alert.hs.window.filterlikely can't enumerate standard windows on non-visible Spaces; test empirically and either make it work or document the limitation precisely.v0.8 — proper project
obj:init()/obj:start()/obj:stop()(nothing can currently be torn down — watchers, hotkeys, menubar) and standardobj:bindHotkeys(mapping)viahs.spoons.bindHotkeysToSpec, keeping the base-modifier convenience as default.docs.jsonfrom doc comments (required for the official Spoons registry).lua tests/run.lua) landed in Architecture: module split, menubar minimap, and README brand visuals #13 and runs in CI since Roadmap quick wins: Spaces guards, fuzzy-match fix, dead code removal, CI #14 — no Hammerspoon mock needed since the pure modules take plain tables (busted plan superseded)..bak).hs.timer.secondsSinceEpoch()(Roadmap quick wins: Spaces guards, fuzzy-match fix, dead code removal, CI #14); URL handler validates profile names before switching (Roadmap quick wins: Spaces guards, fuzzy-match fix, dead code removal, CI #14).hs.reload.v1.0 — launch
Stamp— resolved the other way round in Release docs gate: changelog required, release notes derived from it #15: the workflow verifiesobj.versionfrom the git tag in the release workflowobj.versionmatches the tag and fails the release otherwise, so the source of truth stays in the repo.assets/social-preview.pngin repo Settings → Social preview.Full audit context: session of 2026-07-03; UI visualizer tracked separately in #3 (first slice — the menubar minimap — shipped in #13).