Tell the marketplace when a game is released - #7
Merged
Conversation
Cutting a release built the package, tagged it and uploaded it, and stopped. Somebody then had to run `termcade publish` by hand, or the catalog never learned the release existed — which is how a marketplace ends up behind its own games. The workflow publishes now, after the GitHub release rather than before: publishing is a claim that a package is at these coordinates and the registry verifies it by fetching, so claiming first would have it fetch something not yet uploaded. It uses a scoped key, not a password. The key publishes as aviorstudio and can do nothing else, so what a leak costs is bounded by one handle. Without the secret the release still cuts and the step warns with the command to run by hand — a release that failed after tagging is much harder to unpick than one the registry has not been told about. The secret is read into the environment and the step decides from there. `secrets` in a step-level `if` evaluates to something unhelpful rather than failing loudly, and a publish that silently never ran is exactly the failure this exists to prevent. Also fixes the install line in every release note and in the README. Both said `termcade add aviorstudio/<game>@<version>`, and pinning was removed — so the instruction shipped with each release was one the arcade now refuses. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cutting a release built the package, tagged it, uploaded it — and stopped. Somebody then had to run
termcade publishby hand, or the catalog never learned the release existed. That is how a marketplace ends up behind its own games.Publishing after the release, not before
Publishing is a claim that a package is at these coordinates, and the registry verifies it by fetching. Claiming first would have it fetch something not yet uploaded.
A scoped key, not a password
TERMCADE_TOKENis a publish key scoped to theaviorstudiohandle. It publishes and nothing else — it cannot read a library, mint another key, or touch an account — so a leak is bounded by one handle.Without the secret the release still cuts and the step warns with the exact command to run by hand. A release that failed after tagging is much harder to unpick than one the registry has not been told about yet.
The secret is read into the environment and the step decides from there, rather than through a step-level
ifon thesecretscontext — that evaluates to something unhelpful instead of failing loudly, and a publish step that silently never ran is precisely the failure this exists to prevent.A bug this surfaced
Every release note, and the README, said:
Pinning was removed, so the instruction shipped with each release is one the arcade now refuses:
Fixed in both places.
To turn it on
then set the token as the
TERMCADE_TOKENsecret on this repository.🤖 Generated with Claude Code