Versions, branches and tags
designer
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:
| Control | What it does |
|---|---|
| Revision and sync menu | Branch, 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 revision | Branch, a required message, changelog, external reference, and an auto-bump of patch, minor or major |
| Create version tag | Name, message, channel, Lock tag (immutable) and Protected (tenant admins only) |
| Merge branches | Source 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 / ⌘+G | The 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.