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.2and2.0.0-beta.1are valid,1.0.0+build.5is not.The version comes from
game.json, never from the command line.disko publish --visibility public|unlisted|privatesets the release's visibility (see Visibility). A public game requires the flag; a private game only publishesprivatereleases and needs none.--out release.tgzalso saves the exact package that was uploaded.Versions need not increase: publishing
1.3.5after2.0.0is 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.