Skip to content

shipd v1.0.0 — first stable release

Latest

Choose a tag to compare

@shiftu shiftu released this 30 Apr 04:59
· 3 commits to main since this release

shipd v1.0.0 — first stable release

Production-readiness pass on top of v0.9. Existing v0.9 deployments
upgrade in place: SQLite migrations are idempotent; blob layout is
unchanged; existing tokens authenticate without modification. See
UPGRADE.md for the one operator-facing behavior change worth knowing
(install URL signing defaults on with a 30-minute TTL; opt-out via
--install-url-ttl=0).

What's new vs v0.9:

Storage / catalog
- shipd promote: copy a release across channels without re-uploading
- shipd gc + --keep-last + shipd unyank: reclaim disk while
preserving a per-(app, channel, platform) recovery floor
- publish short-circuits with 409 before reading the body on
duplicate (app, version, channel) — saves S3 PutObject costs
on CI retries
- tokens gain expires_at; --ttl on create

Install pages
- HMAC-signed download + manifest.plist URLs with friendly
303-to-install-page recovery on expiry
- multi-platform aware /install/{app}: User-Agent picks primary,
others surface as "Also available"

Auth
- new admin scope (admin > rw > r); admin tokens implicitly
grant rw, so existing rw flows are unchanged
- bootstrap-via-env-var creates an admin token (existing tokens
in DBs are not modified)

Agent / chat
- shipd_promote_release / shipd_unyank_release / shipd_gc /
shipd_create_token / shipd_stats MCP tools
- streamed ask progress: tool-use loops emit "📡 calling X" lines
per intermediate model turn instead of going silent for 10–30s
- stats chat verb mirrors the MCP surface

Observability
- /metrics (admin, Prometheus exposition)
- /api/v1/stats (rw, JSON sibling for chat bots and agents)

Adapters
- Slack adapter via Socket Mode (no public URL needed)

Plus: design.md changelog cleanup, CLAUDE.md repo guidance, fix for
itms-services links being neutered to #ZgotmplZ by html/template.

Built and tested on Go 1.25; the Dockerfile builds on the same.

Live upgrade simulation against a populated v0.9 data directory
verified: tokens authenticate, releases preserve metadata (including
yanked_reason), blobs download byte-identically, install pages render,
install_url_secret auto-generates at mode 0600.