Skip to main content

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 (alias ws) 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 marked
    orun workspace use <ws-id|slug> # select it — persisted in ~/.orun/config.yaml
    orun workspace use # no argument, on a TTY: numbered picker
    orun workspace use --clear
    orun workspace create <name> # `orun cloud workspace create` under the modern name

    The slug, the ws_… Workspace ID, and the legacy org_… 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.yaml execution.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 workspace always names the winning rung, and use says so up front when something more specific overrides it here:

    $ orun workspace
    workspace: halo (ws_7F3AQ2P1)
    from: this repo's Orun Cloud link
    note: `orun workspace use` is set to ogpic, which this repo's Orun Cloud link overrides here

    It 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 by orun mcp doctor and orun mcp serve.

  • --workspace <ws-id|slug> selects the workspace on every tree. On orun secrets, orun integrations, and orun policy the tenancy selector was --org while --workspace was the workspace-shared rung boolean — so orun integrations cloudflare status --workspace ws_… failed with unexpected argument "ws_…". The flag now names the workspace on those trees too, matching orun run, orun cloud check, orun catalog push, and ORUN_WORKSPACE. --org keeps working as the legacy alias.

  • The workspace-shared rung is --shared. --env <slug> / --project / --shared select which rung of a workspace a key lives at; --workspace selects 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 here
    checked: --workspace, ORUN_WORKSPACE/ORUN_ORG, intent.yaml, this repo's link, then `orun workspace use`
    your workspaces: ogpic, halo, lumen
    pick one for good: `orun workspace use ogpic`
    or for this command only: `--workspace <ws-id|slug>`

    orun cloud check and the integrations scope error point at orun workspace use / orun workspace list the same way.

Upgrade notes​

  • --workspace as a bare boolean is retired on orun secrets and orun integrations — it now takes a workspace. Rewrite the workspace-shared rung as --shared:

    orun secrets set LICENSE_KEY --workspace # before
    orun secrets set LICENSE_KEY --shared # now

    Both halves of the migration fail loudly rather than changing meaning under you: --workspace with no value appends the --shared pointer to pflag's flag needs an argument, and --workspace --json — which pflag would otherwise swallow as the flag's value — is refused with the same pointer. --ws-shared exists as a hidden alias of --shared for scripts that want an unambiguous spelling.

  • --org is unchanged on every tree that had it, now documented as the legacy alias of --workspace. Nothing that passes --org needs to change.

  • The selection is machine-wide, not per-repo. It lands in ~/.orun/config.yaml under a new workspace: block (id, slug, setAt); older orun versions ignore the block. Per-repo tenancy remains orun cloud link, which outranks the selection.

  • CI and headless runs are unaffected — --workspace, ORUN_WORKSPACE, ORUN_ORG, and intent.yaml all outrank the selection, and no CI runner has a ~/.orun/config.yaml selection to inherit.