v2.52.0
Release notes for orun v2.52.0 — everything landed since v2.51.1. The headline
is workspace selection: pick the workspace you are working in once, with
orun workspace use, instead of spelling it on
every command — and --workspace now means the same thing everywhere in the
CLI.
Highlights
-
orun workspace— the working workspace. A new top-level tree (aliasws) for the question every Orun Cloud command asks first:orun workspace # what am I working in, and which rung decided that?orun workspace list # every workspace this session can reach, current markedorun workspace use <ws-id|slug> # select it — persisted in ~/.orun/config.yamlorun workspace use # no argument, on a TTY: numbered pickerorun workspace use --clearorun workspace create <name> # `orun cloud workspace create` under the modern nameThe slug, the
ws_…Workspace ID, and the legacyorg_…id all resolve, case-insensitively. A name that isn't on your session fails with a "did you mean" suggestion and the list you can actually reach — and persists nothing. -
The selection is a default, never an override. It sits last in the resolution chain —
--workspace>ORUN_WORKSPACE/ORUN_ORG>intent.yamlexecution.state.workspace> this repo's link > the selected workspace — so choosing one can never silently retarget a repo that declares or links its own tenancy. Because a machine-wide default invites "why did it pick that one?",orun workspacealways names the winning rung, andusesays so up front when something more specific overrides it here:$ orun workspaceworkspace: halo (ws_7F3AQ2P1)from: this repo's Orun Cloud linknote: `orun workspace use` is set to ogpic, which this repo's Orun Cloud link overrides hereIt resolves through the shared scope resolver, so every workspace-scoped surface inherits it:
orun run --remote-state,orun work,orun catalog push,orun secrets,orun integrations,orun policy,orun cloud check, and the workspace rung reported byorun mcp doctorandorun mcp serve. -
--workspace <ws-id|slug>selects the workspace on every tree. Onorun secrets,orun integrations, andorun policythe tenancy selector was--orgwhile--workspacewas the workspace-shared rung boolean — soorun integrations cloudflare status --workspace ws_…failed withunexpected argument "ws_…". The flag now names the workspace on those trees too, matchingorun run,orun cloud check,orun catalog push, andORUN_WORKSPACE.--orgkeeps working as the legacy alias. -
The workspace-shared rung is
--shared.--env <slug>/--project/--sharedselect which rung of a workspace a key lives at;--workspaceselects which workspace. Two different questions, two different flags. -
"Which workspace?" errors say what is missing. A command that needed a tenancy and found none used to report
this repo isn't connected to Orun Cloud yet; run 'orun auth login'— wrong for a logged-in user standing outside a linked repo, which is exactly when it fired. It now names the chain it checked, lists the workspaces you can reach, and offers both fixes:✕ specify a workspace: none is selected and none resolves herechecked: --workspace, ORUN_WORKSPACE/ORUN_ORG, intent.yaml, this repo's link, then `orun workspace use`your workspaces: ogpic, halo, lumenpick one for good: `orun workspace use ogpic`or for this command only: `--workspace <ws-id|slug>`orun cloud checkand the integrations scope error point atorun workspace use/orun workspace listthe same way.
Upgrade notes
-
--workspaceas a bare boolean is retired onorun secretsandorun integrations— it now takes a workspace. Rewrite the workspace-shared rung as--shared:orun secrets set LICENSE_KEY --workspace # beforeorun secrets set LICENSE_KEY --shared # nowBoth halves of the migration fail loudly rather than changing meaning under you:
--workspacewith no value appends the--sharedpointer to pflag'sflag needs an argument, and--workspace --json— which pflag would otherwise swallow as the flag's value — is refused with the same pointer.--ws-sharedexists as a hidden alias of--sharedfor scripts that want an unambiguous spelling. -
--orgis unchanged on every tree that had it, now documented as the legacy alias of--workspace. Nothing that passes--orgneeds to change. -
The selection is machine-wide, not per-repo. It lands in
~/.orun/config.yamlunder a newworkspace:block (id,slug,setAt); older orun versions ignore the block. Per-repo tenancy remainsorun cloud link, which outranks the selection. -
CI and headless runs are unaffected —
--workspace,ORUN_WORKSPACE,ORUN_ORG, andintent.yamlall outrank the selection, and no CI runner has a~/.orun/config.yamlselection to inherit.