Files
wip-rs/RELEASING.md
Hare 26cba3398f feat: add standalone WIP Text View signatures
Render one Object or paired Interface entity without path/context, lookups or wire-schema changes. Preserve declarations, summaries, optional/unit and empty distinctions; validate protocol semantics and bounded input before rendering. Add five spec/nested goldens and 13 external API tests plus a standalone doctest.

Validation: cargo fmt --all -- --check; cargo check --workspace --all-targets; cargo test --workspace --all-targets; cargo test --workspace --doc; nix develop -c bash (cargo clippy --workspace --all-targets -- -D warnings, RUSTDOCFLAGS='-D warnings' cargo doc --workspace --no-deps, cargo run --package wip-public-api-example); git diff --check. All passed. Default shell lacks clippy; declared Nix dev shell supplied it.
2026-10-08 17:50:16 +09:00

79 lines
2.5 KiB
Markdown

# Releasing
The seven public crates in the current workspace (including the unreleased `wip-text-view`) use one version and must be released in dependency order. The filesystem server, terminal client, and public-API example set `publish = false` and are never uploaded.
## Preconditions
1. Work from a clean `master` whose `HEAD` matches `origin/master`.
2. Confirm the intended version in `[workspace.package]` and every internal requirement in `[workspace.dependencies]`.
3. Confirm ownership of all seven names on crates.io.
4. Run the complete repository validation suite:
```console
cargo fmt --all -- --check
cargo check --workspace --all-targets
cargo test --workspace --all-targets
cargo test --workspace --doc
cargo clippy --workspace --all-targets -- -D warnings
RUSTDOCFLAGS='-D warnings' cargo doc --workspace --no-deps
cargo run --package wip-public-api-example
git diff --check
```
## Publish order
Before uploading anything, dry-run the exact public package set together. Cargo uses a temporary local registry for unpublished workspace dependencies during this check:
```console
cargo publish --dry-run --workspace \
--exclude wip-fs-server \
--exclude wip-public-api-example \
--exclude wip-tui
```
Then dry-run and publish each layer before moving to a crate that depends on it:
```console
cargo publish --dry-run --package wip-protocol
cargo publish --package wip-protocol
cargo publish --dry-run --package wip-interface-macros
cargo publish --package wip-interface-macros
```
Wait until both versions are available from the crates.io index, then continue:
```console
cargo publish --dry-run --package wip-text-view
cargo publish --package wip-text-view
cargo publish --dry-run --package wip-interface
cargo publish --package wip-interface
cargo publish --dry-run --package wip-http
cargo publish --package wip-http
```
After those versions are available from the index:
```console
cargo publish --dry-run --package wip-host
cargo publish --package wip-host
cargo publish --dry-run --package wip-client
cargo publish --package wip-client
```
Registry propagation can take time. A dependent dry-run reporting that a WIP crate is unavailable means the previous publish is not visible in the selected registry yet; do not bypass verification.
## Tag
After all seven uploads resolve successfully, tag the exact published commit and push the tag:
```console
git tag -a v0.1.0 -m "release: 0.1.0"
git push origin v0.1.0
```
Do not move or recreate a published version or its tag. Prepare a new version for any subsequent correction.