a9script

Docs / Authoring in the browser

The one draft, Activate, the edit lock

Authoring in the browser has one rule under everything: there is one draft per environment, and Activate is the only write. Every edit you make — a connection’s address, a function’s body, a script’s code, which script listens where — goes into one working copy in your browser. Nothing is saved per entity. Activate saves the whole draft as one step.

What that buys you

  • A change that touches three entities lands as one version or not at all.
  • Every Activate is a numbered version, with history, diff, blame and restore — Going back is the page that walks them. A secret is reported as changed in a diff, never shown.
  • The editor knows the draft: a configured function you created a moment ago completes and hovers in a script before anything is activated, and a name that resolves to nothing is marked while you type.
  • Test runs the draft — the script’s source, its linked libraries, a function’s definition as it is on screen — so what Test shows is what the activated script will get.

What is not a draft

The on/off switch on a script, a connection, a function, a mail account or a notification rule applies at once, without Activate: a kill switch never waits.

The edit lock

One browser window edits an environment at a time. When you open an environment for editing, your window holds its lock; a second window — yours in another tab, or a colleague’s — sees the environment read-only, with an offer to take the lock over from the badge in the title bar. After a take-over, the first window’s Activate is refused: two authors cannot overwrite each other.

The lock belongs to a window, not to a person. Close the window and the lock expires after a while; take it over from another window when you need it sooner. The command line and an agent over MCP take the lock the same way for the duration of a write and give it back — the loop is what an agent is taught to do with it.

Refusals you will meet

  • Activate in production asks first, naming the environment. Sandbox never asks.
  • A name a script could not call is refused on the form: a function’s name must be callable, an entity’s name URL-safe.
  • A settings script that answers no value is a warning, not a refusal — in the editor, on Activate, and from the command line.
  • A rename that leaves other entities naming the old name is a warning on Activate; nothing else could catch it.
Written for this site. What it says is held true by apps/ui/e2e/config-forms.spec.ts, apps/ui/e2e/edit-lock-windows.spec.ts, apps/ui/server/test/entity-lock-window.test.ts in the product's own repository. Found a problem on this page? Write to the address in the footer.