workspace: single-source the crate version #223

Merged
natsukium merged 1 commit from chore/workspace-version-31 into main 2026-09-08 03:22:49 +09:00
Owner

Refs #31.

Preparation for the v0.1.0 release commit: with the version declared once under [workspace.package] and inherited by every member, cutting a release edits one line instead of twelve, and a missed member becomes impossible rather than merely detected.

  • Cargo.toml gains version = "0.1.0"; the eleven felis-* crates and the tests member take version.workspace = true.
  • nix/package.nix and scripts/make-macos-app.sh read [workspace.package] version instead of crates/felis-cli/Cargo.toml's [package] version, which no longer holds a string.
  • scripts/release/verify.sh compares the tag against the workspace version and asserts every crate inherits it; its self-test gains the crate-pins-its-own-version case.
  • docs/reference/workspace.md ("Versioning", "Release gate") and scripts/README.md state the new source of truth.

Verified: nix build .#felis (reports felis 0.1.0), nix eval --raw .#felis.version = 0.1.0, nix build .#checks.x86_64-linux.home-manager-module, and just check.

Refs #31. Preparation for the v0.1.0 release commit: with the version declared once under `[workspace.package]` and inherited by every member, cutting a release edits one line instead of twelve, and a missed member becomes impossible rather than merely detected. - `Cargo.toml` gains `version = "0.1.0"`; the eleven `felis-*` crates and the `tests` member take `version.workspace = true`. - `nix/package.nix` and `scripts/make-macos-app.sh` read `[workspace.package] version` instead of `crates/felis-cli/Cargo.toml`'s `[package] version`, which no longer holds a string. - `scripts/release/verify.sh` compares the tag against the workspace version and asserts every crate inherits it; its self-test gains the crate-pins-its-own-version case. - `docs/reference/workspace.md` ("Versioning", "Release gate") and `scripts/README.md` state the new source of truth. Verified: `nix build .#felis` (reports `felis 0.1.0`), `nix eval --raw .#felis.version` = `0.1.0`, `nix build .#checks.x86_64-linux.home-manager-module`, and `just check`.
workspace: single-source the crate version
All checks were successful
bench / Criterion full-suite snapshot (pull_request) Has been skipped
fuzz / cargo fuzz nightly long-run (pull_request) Has been skipped
fuzz / cargo fuzz smoke (per target) (pull_request) Successful in 1m11s
pr / nix flake check (pull_request) Successful in 1m2s
bench / Criterion regression gate (pull_request) Successful in 2m3s
darwin / detect relevant changes (pull_request) Successful in 3s
darwin / darwin docs-only no-op (pull_request) Has been skipped
pr / cargo build / clippy / test / deny (pull_request) Successful in 1m47s
pr / wire schema is compatible with the base (pull_request) Successful in 8s
darwin / build felis (aarch64-darwin) (pull_request) Successful in 2m20s
pr / frontend smoke (x86_64-linux) (pull_request) Successful in 54s
pr / publish felis (x86_64-linux) (pull_request) Has been skipped
windows / detect relevant changes (pull_request) Successful in 3s
windows / windows docs-only no-op (pull_request) Has been skipped
windows / cargo clippy (Windows cross) (pull_request) Successful in 15s
windows / cargo nextest (Windows) (pull_request) Successful in 4m34s
windows / frontend smoke (Windows) (pull_request) Successful in 1m46s
windows / package felis (x86_64-pc-windows-msvc) (pull_request) Has been skipped
2db46cc9f9
Every member declared its own `version = "0.1.0"`, so cutting a release
meant editing twelve manifests in lockstep and trusting that no member
was missed; the release gate compensated by comparing all of them
against the tag. Declaring the number once under `[workspace.package]`
and inheriting it makes the drift impossible instead of detected, and
turns a version bump into one line.

The two consumers that read a version out of a manifest by hand
(`nix/package.nix`, `scripts/make-macos-app.sh`) now read the workspace
field. `scripts/release/verify.sh` keeps its guard, aimed at what can
still drift: a member pinning a version of its own would silently
outrank the inherited one.

Refs #31
natsukium deleted branch chore/workspace-version-31 2026-09-08 03:22:50 +09:00
Sign in to join this conversation.
No description provided.