The core idea: macOS Spaces are already project boundaries. Why doesn't Cmd+Tab respect them?
Scopo replaces the system Cmd+Tab with one scoped to your current Space. Each Space is a project context. You see 3-4 relevant windows instead of a bunch of unrelated windows and apps.
I built it for myself, used it for weeks on my work machine, and realized I couldn't work without it when I switched to a machine that didn't have it.
Some implementation details:
- CGEventTap to intercept Cmd+Tab before the Dock handles it - Moving windows between spaces on macOS 15 is hard — all SLS/CGS private APIs are broken without SIP disabled. Scopo simulates a Mission Control drag (same technique as Hammerspoon's Drag.spoon) - TF-IDF + cosine similarity for smart window-to-project matching
Built with Swift/AppKit
First time launching something, would genuinely appreciate any feedback on the product or the implementation.