Why Orb's sessions live per Space
How Orb scopes each session to the Mission Control Space it was born on, and why it does it without ever asking for a permission prompt.
Most terminal tools treat every window as global: open ten sessions and all ten follow you everywhere. That's the opposite of how people actually organize work. You put the client project on one Space, side experiments on another, and you don't want them mixed. So in Orb, a session belongs to the Space it was created on and never follows you elsewhere.
The dock is always reachable from the edge of the screen, but what it shows is filtered by where you are:
Space 1 (work) Space 2 (experiments)
┌──────────────┬───┐ ┌──────────────┬───┐
│ │ ● │ │ │ ○ │
│ TERMINAL │ ● │ │ TERMINAL │ ○ │
│ │ ● │ │ │ │
└──────────────┴───┘ └──────────────┴───┘
work bubbles experiment bubbles
swipe left ⇄ swipe right, the dock re-filtersThe problem: which Space am I on?
macOS deliberately doesn't hand out a public, stable identifier for the current Mission Control Space. The clean, documented ways to get at it either don't exist or would force Orb to ask for entitlements and a permission prompt, and a menu-bar app that pops a scary dialog on first launch has already lost. So per-Space identity leans on a private macOS API instead, one that reports which Space is active without any prompt at all.
The catch with anything private is that Apple can change or remove it at any time. The rule Orb follows is simple: a private API can make things nicer, but it must never be load-bearing for correctness. If the platform ever stops answering, Orb collapses every session into a single shared bucket. You lose per-Space scoping until the next OS that behaves, but you never lose a session. The feature degrades; the product doesn't break.
Reacting to Space changes
Knowing the current Space is only half of it. Orb also has to notice the moment you swipe to another one. That signal is public, so Orb listens for it and re-filters the dock the instant the active Space changes: the bubbles for the Space you just left slide out of view, the bubbles for the Space you arrived on slide in.
The panels themselves are joined to every Space, so the edge handle is always where you expect it. Only their contents are scoped. Wherever you are, the dock is one gesture away, and it only ever shows you the sessions that belong there.
Surviving reboots
There's one more sharp edge. The identifiers macOS uses for Spaces aren't stable across a restart: the Space you saved a session against yesterday might not exist today, or might now point at a completely different desktop. Pin a restored session to a dead identifier and it's stranded in a Space you can never reach.
So Orb doesn't trust yesterday's identifiers. On launch, restored sessions are remapped onto whatever Space is current, so they surface where you actually are instead of vanishing into a ghost Space. You come back to a working dock, every time.
The whole scheme has one theme running through it: lean on the platform for the nice behavior, but never let the nice behavior be the thing that has to work. You get per-Space polish when macOS cooperates, and a dock full of your sessions when it doesn't.