From d1b8a4a693365fdf5216c9a48180d50e5fad1dff Mon Sep 17 00:00:00 2001 From: konojunya Date: Mon, 7 Sep 2026 11:32:58 +0900 Subject: [PATCH] Prepare Stack CLI 0.5.4 --- Cargo.lock | 6 ++--- Cargo.toml | 4 +-- THIRD_PARTY_LICENSES.md | 4 +-- distribution/distribution-contract.json | 2 +- distribution/generated/share/man/man1/stack.1 | 2 +- docs/releases/v0.5.4.md | 9 +++++++ scripts/release-security.test.mjs | 2 +- scripts/resolve-release-context.test.mjs | 26 +++++++++---------- scripts/test_package_release.py | 2 +- 9 files changed, 33 insertions(+), 24 deletions(-) create mode 100644 docs/releases/v0.5.4.md diff --git a/Cargo.lock b/Cargo.lock index 2a2c7e2..35cd743 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -375,7 +375,7 @@ checksum = "bdba45c0f7a85ef0ec0bfb766b387dbd90fc6141237ac74b559d08a424750bc6" [[package]] name = "stack-diagram-cli" -version = "0.5.3" +version = "0.5.4" dependencies = [ "roxmltree", "serde", @@ -391,9 +391,9 @@ dependencies = [ [[package]] name = "stack-engine" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ef84a4cea61415aa3b8a032758dbbfcc4e5ac45507cbccaa2401c6df9cc83da" +checksum = "e9316fd964d419b2207182101be9b1da50106da540070efc0d0d7803e4835750" dependencies = [ "roxmltree", "serde_json", diff --git a/Cargo.toml b/Cargo.toml index 1ec0527..4bec493 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "stack-diagram-cli" -version = "0.5.3" +version = "0.5.4" edition = "2024" rust-version = "1.85" publish = ["crates-io"] @@ -28,7 +28,7 @@ serde_json = "=1.0.151" serde_yaml_ng = "=0.10.0" sha2 = "=0.11.0" stack-compiler = "=0.1.0" -stack-engine = "=0.9.0" +stack-engine = "=0.9.1" stack-theme = "=0.7.0" ureq = { version = "=3.4.0", default-features = false, features = ["rustls"] } zip = { version = "=6.0.0", default-features = false, features = ["deflate-flate2-zlib-rs"] } diff --git a/THIRD_PARTY_LICENSES.md b/THIRD_PARTY_LICENSES.md index a9a019e..52e7ce4 100644 --- a/THIRD_PARTY_LICENSES.md +++ b/THIRD_PARTY_LICENSES.md @@ -1,12 +1,12 @@ # Third-party licenses -Audit date: 2026-09-05 +Audit date: 2026-09-07 ## Runtime dependencies | Component | Version or revision | License | Source | Distribution note | | --- | --- | --- | --- | --- | -| `stack-engine` / `stack-formatter` | `0.9.0` / `0.1.0` (crates.io) | Apache-2.0 | | Linked into the native binary; validates and renders caller-owned provider packs without bundling vendor assets. | +| `stack-engine` / `stack-formatter` | `0.9.1` / `0.1.0` (crates.io) | Apache-2.0 | | Linked into the native binary; validates and renders caller-owned provider packs without bundling vendor assets. | | `stack-compiler` | `0.1.0 (crates.io)` | Apache-2.0 | | Linked directly for protocol-neutral language intelligence and transitively through `stack-engine`; performs no runtime I/O. | | `stack-theme` | `0.7.0 (crates.io)` | Apache-2.0 | | Linked directly and through `stack-engine`; its fallback icons and 30 explicit core SVGs are Stack-authored Apache-2.0 assets. It also provides the asset-free provider-pack contract and types. | | `roxmltree` | `0.21.1` | MIT OR Apache-2.0 | | Parses untrusted local SVG into a read-only tree before allowlisted serialization. | diff --git a/distribution/distribution-contract.json b/distribution/distribution-contract.json index b6add9f..c4808ec 100644 --- a/distribution/distribution-contract.json +++ b/distribution/distribution-contract.json @@ -6,7 +6,7 @@ "sourceCargoPackage": "stack-diagram-cli", "publishedCargoPackage": "stack-diagram-cli", "sourceVersionFile": "Cargo.toml", - "currentSourceVersion": "0.5.3", + "currentSourceVersion": "0.5.4", "minimumRustVersion": "1.85", "currentReleaseVersion": "0.5.3" }, diff --git a/distribution/generated/share/man/man1/stack.1 b/distribution/generated/share/man/man1/stack.1 index 7cafc5a..6dfc03f 100644 --- a/distribution/generated/share/man/man1/stack.1 +++ b/distribution/generated/share/man/man1/stack.1 @@ -1,4 +1,4 @@ -.TH STACK 1 "" "Stack CLI 0.5.3" "Stack CLI Manual" +.TH STACK 1 "" "Stack CLI 0.5.4" "Stack CLI Manual" .SH NAME stack \- Stack diagram toolchain .SH SYNOPSIS diff --git a/docs/releases/v0.5.4.md b/docs/releases/v0.5.4.md new file mode 100644 index 0000000..9ea9093 --- /dev/null +++ b/docs/releases/v0.5.4.md @@ -0,0 +1,9 @@ +# Stack CLI 0.5.4 + +- Upgrade the shared rendering engine to 0.9.1. +- Preserve a clear final orthogonal run before arrow-marked endpoints when the adjacent route section can move safely. +- Apply the same terminal clearance to forward and bidirectional relationships while keeping blocked routes unchanged. + +Commands, configuration, machine-readable contracts, theme behavior, and the Rust 1.85 minimum remain unchanged. SVG geometry and bytes intentionally change for affected routes; review any snapshots or exported diagrams when upgrading. + +Upgrade through the package manager that owns the installation. There is no self-update command. A new source version does not activate a distribution channel until its release artifacts and clean-install checks have succeeded. diff --git a/scripts/release-security.test.mjs b/scripts/release-security.test.mjs index 76140a0..e93e07e 100644 --- a/scripts/release-security.test.mjs +++ b/scripts/release-security.test.mjs @@ -12,7 +12,7 @@ import { verifyReleaseMetadata, } from "./release-security.mjs"; -const version = "0.5.3"; +const version = "0.5.4"; const commit = "0123456789abcdef0123456789abcdef01234567"; const provenancePredicate = "https://slsa.dev/provenance/v1"; const sbomPredicate = "https://spdx.dev/Document/v2.3"; diff --git a/scripts/resolve-release-context.test.mjs b/scripts/resolve-release-context.test.mjs index 0cf8de7..3664a21 100644 --- a/scripts/resolve-release-context.test.mjs +++ b/scripts/resolve-release-context.test.mjs @@ -20,17 +20,17 @@ test("main dispatch resolves a non-publishing verification run", () => { ref: "refs/heads/main", refName: "main", sha, - requestedVersion: "0.5.3", + requestedVersion: "0.5.4", cargoToml, contract, }), { - version: "0.5.3", - tag: "v0.5.3", + version: "0.5.4", + tag: "v0.5.4", sourceRef: "refs/heads/main", publish: false, verifiedChannels: "", - minimumSupportedCliVersion: "0.5.3", + minimumSupportedCliVersion: "0.5.4", }, ); }); @@ -39,20 +39,20 @@ test("an exact version tag resolves a publishing run", () => { assert.deepEqual( resolveReleaseContext({ eventName: "push", - ref: "refs/tags/v0.5.3", - refName: "v0.5.3", + ref: "refs/tags/v0.5.4", + refName: "v0.5.4", sha, requestedVersion: "", cargoToml, contract, }), { - version: "0.5.3", - tag: "v0.5.3", - sourceRef: "refs/tags/v0.5.3", + version: "0.5.4", + tag: "v0.5.4", + sourceRef: "refs/tags/v0.5.4", publish: true, verifiedChannels: "github-release", - minimumSupportedCliVersion: "0.5.3", + minimumSupportedCliVersion: "0.5.4", }, ); }); @@ -60,7 +60,7 @@ test("an exact version tag resolves a publishing run", () => { test("removed self-update cannot be activated", () => { const activated = structuredClone(contract); activated.channels.push({ id: "self-update", state: "available" }); - assert.throws(() => resolveReleaseContext({eventName: "push", ref: "refs/tags/v0.5.3", refName: "v0.5.3", sha, cargoToml, contract: activated}), /self-update has been removed/); + assert.throws(() => resolveReleaseContext({eventName: "push", ref: "refs/tags/v0.5.4", refName: "v0.5.4", sha, cargoToml, contract: activated}), /self-update has been removed/); }); test("manual runs from another ref or version are rejected", () => { @@ -72,7 +72,7 @@ test("manual runs from another ref or version are rejected", () => { contract, }; assert.throws( - () => resolveReleaseContext({ ...common, ref: "refs/heads/topic", requestedVersion: "0.5.3" }), + () => resolveReleaseContext({ ...common, ref: "refs/heads/topic", requestedVersion: "0.5.4" }), /must run from main/, ); assert.throws( @@ -107,7 +107,7 @@ test("source and contract version drift is rejected", () => { ref: "refs/heads/main", refName: "main", sha, - requestedVersion: "0.5.3", + requestedVersion: "0.5.4", cargoToml, contract: drifted, }), diff --git a/scripts/test_package_release.py b/scripts/test_package_release.py index d5dd98d..7268435 100644 --- a/scripts/test_package_release.py +++ b/scripts/test_package_release.py @@ -9,7 +9,7 @@ class PackageReleaseTest(unittest.TestCase): - version = "0.5.3" + version = "0.5.4" target = "aarch64-apple-darwin" source_date_epoch = 1_788_566_400