dist-town/cli 0.4.0
This release gives the CLI read capabilities, and reorganizes some commands in the name of consistency. There are breaking changes as a result.
The read surface
disttown release list [project]— what you've published, newest first, with channel and lifecycle state.disttown release show <project> <version-or-pointer>— one release in full: digests, download locations with verification state, pointers, source claim, changelog.release show mytool latestworks.disttown project listanddisttown pointer list <project>— your projects (aliases included) and where every pointer aims.disttown whoami— who this machine publishes as, and whether your cached session's scopes still cover everything. The stale-session surprise now surfaces here instead of mid-publish.disttown logout— clears the local session, but does not delete the session server-side.
Reads consult dist.town's index by default — the same public surface the pages use. --pds reads straight from your own repo instead, and --compare reports exactly where the two disagree (useful right after publishing, before the index catches up). Every read says which source answered, and everything takes --json.
Breaking: lifecycle verbs moved, and the vocabulary is complete
disttown yank is now disttown release yank <project> <version> — and it brought company:
release deprecate/release undeprecate— "still works, stop building on it." Deprecated releases keep resolving, with a warning.release unyank— every verb has a named inverse now;--undois gone.project archive/project unarchive— wind a project down without breaking anything it ever shipped.
All of them take --kind and --reason — the inverses too, because "why it came back" is as much history as "why it left."
Breaking: --channel changes what latest means
disttown publish 2.0.0-rc1 --channel beta now moves the beta pointer and leaves latest alone. Previously it moved latest — which meant a release candidate could silently become what every updater and install script sees. The rule is one sentence: the default pointer follows the channel. Want a channel release on latest? Say so: --pointer latest --pointer beta. Naming any pointer replaces the default entirely. Channelless publishes are unchanged.
Fixed: publish could hang forever under OAuth
A logging deadlock could freeze the CLI — silently, permanently — on the first library log line emitted after login, which in practice meant the first blob upload of a publish. It could also invalidate your cached session on the way down, forcing a re-login.
Publish is harder to hurt yourself with
- Scope problems now fail before anything uploads.
publish --dry-runprints the whole plan — digests, records, which pointers move — touching nothing. CI can gate on its exit status.- If a publish fails partway, the CLI names every file already uploaded (content-addressed, so retrying reclaims them; nothing is deleted).
disttown doctor [project]checks the whole pipeline in one go: session, scopes, PDS, storage, and whether dist.town's index can see you — with "publishable but not yet visible" clearly told apart from anything actually wrong.
Did you enjoy this article?
Recommend it — Standard Reader surfaces well-loved writing to more readers across the network.