Skip to content
Docs
Registry

Releases & deprecation

Immutable releases, versions, digests and deprecation.

A release is one published version of a game, named <namespace>/<slug>@<version>, for example gabriel/arena@1.4.2. Once published, a release never changes: the same name always means the same files.

That guarantee is what keeps rooms safe. A room that loads gabriel/arena@1.4.2 gets exactly what was tested, every time. To ship a fix, you publish a new version and rooms move to it when their owners choose. That's also why there are no version ranges, tags or latest: a room always names one exact release.

Versions

  • Versions are SemVer 2.0.0 without build metadata: 1.4.2 and 2.0.0-beta.1 are valid, 1.0.0+build.5 is not.

  • The version comes from game.json, never from the command line.

  • disko publish --visibility public|unlisted|private sets the release's visibility (see Visibility). A public game requires the flag; a private game only publishes private releases and needs none.

  • --out release.tgz also saves the exact package that was uploaded.

  • Versions need not increase: publishing 1.3.5 after 2.0.0 is allowed.

  • Publishing the same archive again with the same visibility succeeds without change, so retries are safe. A different archive or visibility under an existing version fails with version_exists.

  • A failed publish never uses up a version. Releases are never deleted.

Digests

Besides its name, every release has a digest: a fingerprint computed from its contents. If two releases have the same digest, they contain exactly the same files. A release's identity is its digest, blake3: plus 64 hex characters, computed over the uncompressed canonical archive. disko publish prints it, and a room reports the digest of the game it runs. The same source always builds the same archive and digest.

Deprecation

Since releases can't be deleted, you warn people away from a bad one instead. Deprecate a release in the Creator Portal's Releases page, with an optional message of up to 280 characters such as "Use 1.4.3 (fixes goal detection)". A deprecated release still loads normally; rooms receive the warning in their game-loaded event and log it. Un-deprecate at any time.

A release taken down by the platform stops loading everywhere, with game_removed in rooms.