@graham.systems /dist-town/cli
0.4.0
all artifacts verified
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.
Artifacts
- disttown-darwin-amd64.tar.gz
sha-256
fc70e59726651013c141816feb8b2fc7025af7e260db2216e7c6dc20a7e259da - disttown-darwin-arm64.tar.gz
sha-256
270914604886329cf9d9d7d3d15d411151ad7a831011e6c264ef71fd9cd965b4 - disttown-linux-amd64.tar.gz
sha-256
f7cbc12f0f0460720f506d7a2e9019db1d1b1f97b7050ed1e0e79c51e63d12dc - disttown-linux-arm64.tar.gz
sha-256
560a8987cd678b4a5ce17e5208ab7df0004f205665f3cfd337cbaa88289e9f6f - disttown-windows-amd64.zip
sha-256
1df434e308197cc2244fac3837d004a52bf1d47fd7cadfd07ebb1ab71add7354 - disttown-windows-arm64.zip
sha-256
ce0983dbf4cc77071f7fe6e8a97be86f00985ec9ff8e93f210dd2265239b3537