Ever since solving a similar problem on the terminal a few years back, I kept wanting to explicitly change working context, keeping application states between whatever tasks I was working on.
So I built an application to solve it for me.
Cleave attempts to solve this by allowing you save and load "context" in macOS, in a manner similar to how IDEs and text editors lets you manipulate "projects" and "workspaces". These actions are available via a global hotkey that triggers the command palette, or via the menu bar.
The open beta will be out this autumn.
Hopefully, I'll get around to documenting the journey some time soon...