Skip to main content

Versions, branches and tags

PlanDesigner plandesigner

The Suite edits one version of a project at a time. Versions are cut and published in the main app (Versions); the studio's project and version pickers list them, with Published or Draft against each.

Published versions are read-only​

A published version shows a banner on every design surface — Published version label · read-only — Create a draft to make changes, or switch to an editable version. — with Create draft and Switch version. An attempted edit raises "This version is published and read-only" with a Create draft action, and the sidebar's add buttons read "Published version is read-only — create a draft to add classes". Applying source edits to a published version is refused with PUBLISHED_IMMUTABLE.

The same rule holds in Authoring: a published version, or the Production environment, is a read-only scope (Authoring).

Draft lock​

While you edit a version in the workspace you hold its draft lock. A source apply that collides with another editor's lock is refused with DRAFT_LOCK_CONFLICT; the lock's owner and expiry are shown as a chip when the git-like features below are on.

Branches, tags, merge and rollback​

Flag offFEATURE_GITLIKE

The studio contains a git-like layer over version history: named branches, version tags, commit, merge with a backward-compatibility check, revert-style rollback, a history graph, and sync chips (Dirty, Ahead, Server ahead). It is off in every shipped build: the flag is a code constant in the main app's shared library, not an environment variable, and while it is off the UI is hidden — the git menu, the Ctrl / ⌘+G palette and its shortcut cheatsheet, the draft-lock chip, and the workspace's Branches, Open PR for review and Diff vs published tools, which stay visible but disabled with a reason that names the flag.

For the record, this is what the layer does when it is on:

ControlWhat it does
Revision and sync menuBranch, revision, published and draft state; Switch branch (New branch…), Commit new revision…, Tag this revision…, Compare with parent…, Merge branches…, Rollback to this revision…, Show history graph…, Switch to latest revision (pull), Open Versions dashboard
Commit revisionBranch, a required message, changelog, external reference, and an auto-bump of patch, minor or major
Create version tagName, message, channel, Lock tag (immutable) and Protected (tenant admins only)
Merge branchesSource and target, the merge base, the compatibility check, and a tenant-admin override with a required justification
Rollback branch (revert-style)A new revision pointing at the prior head — "History is not rewritten" — with a compatibility-risk checkbox
Ctrl / ⌘+GThe Git commands palette; ? shows the cheatsheet

The studio's branch and tag API routes exist regardless of the flag; what is gated is the main app's middleware and the UI. Revision history, compare and the sunset timeline for published versions are main-app features — see Revision history and Compare published versions.