Update notice

Studio compares the versions your box (the container running your workspace, or stackbone dev on your laptop) reports with the newest Stackbone releases. When the box is behind, a strip marked update appears at the top of Studio with one line per package. It never blocks a screen, and closing it hides it until the next release.

What Studio compares

Studio reads two versions from the box's handshake, GET /api/contract (the payload stackbone contract show prints):

Field What it is
build.version The CLI that runs a stackbone dev session, or the runtime inside a deployed box's image.
sdk.version The @stackbone/sdk your workflows run. stackbone dev reads it when it starts. A deployed box reads it from the manifest stackbone package writes. Optional.

It compares each one with the newest @stackbone/cli and @stackbone/sdk releases on the two channels Stackbone publishes on: latest for releases and alpha for prereleases. The control plane reads those from the npm registry.

When a line appears

A line appears when the box runs a version behind the newest release on its own channel. Any version behind counts, a patch release included.

The box runs Studio compares it with It shows a line for
A release, such as 0.5.4 The newest latest 0.5.4 while latest is 0.5.5
A prerelease, such as 0.6.0-alpha.3 The newest alpha, and latest too 0.6.0-alpha.3 while alpha is 0.6.0-alpha.4 or latest is 0.6.0

A prerelease is behind once the stable line passes it, so it is compared with latest as well. When it is behind both, the line names the newer of the two releases.

No line appears in these cases:

  • The box runs the newest release, or a version ahead of it, such as a build of your own.
  • The registry has no release on that channel.
  • The version is not plain semver (v0.5.3, dev). Build metadata such as +build.5 does not count in the comparison.
  • The box reports no sdk.version (no SDK installed, or an image built before the box reported it). That box gets no SDK line.

Studio shows no strip at all when the control plane cannot say what the newest releases are: npm did not answer, or the control plane has no release list to serve, as on a self-host deployment. It also stays hidden while Studio is still reading the handshake, and while a full-page message has replaced the screen (the box is too old for this Studio, or Studio cannot reach it), because that message already says what to do.

The lines need the box's own answer. When the control plane answers the handshake for a box it could not reach, that answer carries the control plane's version and no SDK version, so Studio has nothing of your box's to compare and shows no line.

What each line asks you to do

Each line names the newest release first and the version your box runs second.

Update the SDK

A newer SDK is available (0.6.0, your workflows run 0.5.2): pnpm add @stackbone/sdk@latest

The command carries the channel of the release the line names: @latest, or @alpha for a prerelease. Run it in your project root:

pnpm add @stackbone/sdk@latest

A workspace that stackbone init scaffolded lists the SDK in workflows/package.json as well, and your workflows run that copy. Run the same command inside workflows/ too.

Then put the box on the new version. Stop stackbone dev and start it again, because it reads the SDK version when it starts. For a deployed box, run stackbone package again and redeploy: the version travels in the bundle.

Update the CLI

A newer CLI is available (0.5.5, you run 0.5.4). Update it.

Studio shows this wording for a stackbone dev session. Install the newer CLI with the same command you installed it with:

pnpm add -g @stackbone/cli@latest

Use @alpha instead of @latest when the release the line names is a prerelease. Then stop stackbone dev and start it again: the session that is running is still the old CLI.

Redeploy the box

A newer runtime is available (0.5.5, this box runs 0.5.4). Redeploy the box.

Studio shows this wording for a deployed box. The runtime comes from the published base image your Dockerfile starts FROM, so rebuild the image on the current base and redeploy it. From a deploy folder:

docker compose build --pull
docker compose up -d

--pull fetches the current base. Without it, Docker reuses the copy it already holds. On a platform that builds the image for you, start a new deploy. On Railway, Redeploy rebuilds the image and fetches the current base.

That only works while the FROM line names the moving tag (node24-base, what stackbone package writes). If you packaged with --base pointing at a fixed tag or a digest, every rebuild gets that same old runtime: run stackbone package again without --base, then deploy.

When Studio does not know where the box runs

A newer CLI is available (0.5.5, this agent runs 0.5.4). Update the CLI, or redeploy the box if it is deployed.

Studio shows this wording before it knows whether the box is a stackbone dev session or a deployed box. Follow Update the CLI for a stackbone dev session and Redeploy the box for a deployed one.

Close it

The close button at the end of the strip ("Dismiss update notice") hides every line on screen. Closing it hides it until the next release: Studio remembers which release each line named, and a newer one shows the line again. Updating the box removes the line as well: once it runs the newest release, there is nothing to show.

Studio keeps the close in this browser's local storage, per box and per line. It is not saved on your account, so another browser, or a teammate, still sees the line. When the browser blocks site storage, the line stays closed for this visit only.

What's next

BUILT WITH ❤️ FROM CANADA AND SPAIN