diff --git a/Cargo.lock b/Cargo.lock index 9cf02a4..022e029 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -196,7 +196,7 @@ checksum = "bdba45c0f7a85ef0ec0bfb766b387dbd90fc6141237ac74b559d08a424750bc6" [[package]] name = "stack-engine" -version = "0.9.0" +version = "0.9.1" dependencies = [ "roxmltree", "serde", @@ -209,7 +209,7 @@ dependencies = [ [[package]] name = "stack-engine-wasm" -version = "0.9.0" +version = "0.9.1" dependencies = [ "js-sys", "serde", diff --git a/README.md b/README.md index 9fe4176..be095cc 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Both packages provide format, check, render, completion, and hover operations ov ## Rust quick start ```sh -cargo add stack-engine@0.9.0 +cargo add stack-engine@0.9.1 ``` ```rust @@ -43,7 +43,7 @@ The crate supports Rust 1.85 or newer. ## Browser quick start ```sh -npm install @stack-sh/engine@0.9.0 +npm install @stack-sh/engine@0.9.1 ``` ```js diff --git a/crates/stack-engine-wasm/Cargo.toml b/crates/stack-engine-wasm/Cargo.toml index 32c0d80..2dd3987 100644 --- a/crates/stack-engine-wasm/Cargo.toml +++ b/crates/stack-engine-wasm/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "stack-engine-wasm" -version = "0.9.0" +version = "0.9.1" edition.workspace = true rust-version.workspace = true license.workspace = true diff --git a/crates/stack-engine/Cargo.toml b/crates/stack-engine/Cargo.toml index b148608..96245f2 100644 --- a/crates/stack-engine/Cargo.toml +++ b/crates/stack-engine/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "stack-engine" -version = "0.9.0" +version = "0.9.1" edition.workspace = true rust-version.workspace = true license.workspace = true diff --git a/crates/stack-engine/README.md b/crates/stack-engine/README.md index 1c15813..62686d1 100644 --- a/crates/stack-engine/README.md +++ b/crates/stack-engine/README.md @@ -4,7 +4,7 @@ Pure Rust layout and SVG rendering for Stack diagrams. The engine reuses the reg ```toml [dependencies] -stack-engine = "=0.9.0" +stack-engine = "=0.9.1" ``` Rust 1.85 or newer is supported. See the [API documentation](https://docs.rs/stack-engine) and [repository documentation](https://github.com/stack-sh/engine) for rendering, limits, and compatibility. The browser adapter is distributed separately as `@stack-sh/engine` on npm; this crate is the native library. diff --git a/crates/stack-engine/tests/snapshots/render/complete-semantics.svg b/crates/stack-engine/tests/snapshots/render/complete-semantics.svg index 614be6c..7c72ea2 100644 --- a/crates/stack-engine/tests/snapshots/render/complete-semantics.svg +++ b/crates/stack-engine/tests/snapshots/render/complete-semantics.svg @@ -1,8 +1,8 @@ - + Complete semantics Architecture diagram with 10 nodes, 3 groups, and 8 relationships. - stack-engine 0.9.0; language 1.0; theme 0.7.0 at sha256:4a8b94b746c6b120998bfbe701edd722449a28c89c424b0a33f67561756ded5a + stack-engine 0.9.1; language 1.0; theme 0.7.0 at sha256:4a8b94b746c6b120998bfbe701edd722449a28c89c424b0a33f67561756ded5a diff --git a/crates/stack-engine/tests/snapshots/render/default-normalization.svg b/crates/stack-engine/tests/snapshots/render/default-normalization.svg index e3085d7..929dc68 100644 --- a/crates/stack-engine/tests/snapshots/render/default-normalization.svg +++ b/crates/stack-engine/tests/snapshots/render/default-normalization.svg @@ -1,8 +1,8 @@ - + Default normalization Architecture diagram with 2 nodes, 0 groups, and 1 relationship. - stack-engine 0.9.0; language 1.0; theme 0.7.0 at sha256:4a8b94b746c6b120998bfbe701edd722449a28c89c424b0a33f67561756ded5a + stack-engine 0.9.1; language 1.0; theme 0.7.0 at sha256:4a8b94b746c6b120998bfbe701edd722449a28c89c424b0a33f67561756ded5a diff --git a/crates/stack-engine/tests/snapshots/render/explicit-core-icon.svg b/crates/stack-engine/tests/snapshots/render/explicit-core-icon.svg index 8676b22..843619b 100644 --- a/crates/stack-engine/tests/snapshots/render/explicit-core-icon.svg +++ b/crates/stack-engine/tests/snapshots/render/explicit-core-icon.svg @@ -1,8 +1,8 @@ - + Core icon Architecture diagram with 1 node, 0 groups, and 0 relationships. - stack-engine 0.9.0; language 1.0; theme 0.7.0 at sha256:4a8b94b746c6b120998bfbe701edd722449a28c89c424b0a33f67561756ded5a + stack-engine 0.9.1; language 1.0; theme 0.7.0 at sha256:4a8b94b746c6b120998bfbe701edd722449a28c89c424b0a33f67561756ded5a diff --git a/docs/cargo-releasing.md b/docs/cargo-releasing.md index 59393d8..c060886 100644 --- a/docs/cargo-releasing.md +++ b/docs/cargo-releasing.md @@ -1,6 +1,6 @@ # Cargo publication -The native `stack-formatter` 0.1.0 and `stack-engine` 0.9.0 crates use exact registry dependencies. The workspace retains local paths for development, with registry versions declared for Cargo packaging. `stack-engine-wasm` is not published to crates.io; its browser output remains the npm package. +The native `stack-formatter` 0.1.0 and `stack-engine` 0.9.1 crates use exact registry dependencies. The workspace retains local paths for development, with registry versions declared for Cargo packaging. `stack-engine-wasm` is not published to crates.io; its browser output remains the npm package. ## Initial publication diff --git a/docs/releases/v0.9.1.md b/docs/releases/v0.9.1.md new file mode 100644 index 0000000..2c29fb4 --- /dev/null +++ b/docs/releases/v0.9.1.md @@ -0,0 +1,14 @@ +# Stack Engine 0.9.1 + +## Clear arrowhead approaches + +- Preserve a 16px final orthogonal run before an arrow-marked endpoint when the adjacent two-bend section can move safely, keeping the marker visually separate from its preceding bend. +- Apply the same clearance rule to forward and bidirectional relationships without changing arrowless endpoints. +- Validate each local adjustment against canvas bounds, nodes, fixed text obstacles, and group frames, retaining the original safe route when the adjustment is blocked. +- Keep the visibility-grid search unchanged so dense-layout runtime remains within the existing budget. + +The Rust and browser WebAssembly packages share this correction. Public operation, language-intelligence, and theme contracts are unchanged; SVG geometry intentionally differs from 0.9.0 for affected routes. Consumers comparing exact SVG bytes should update reviewed references. + +## Verification and rollback + +The release keeps the native/WebAssembly parity, Rust 1.85, conformance, standalone SVG, coverage, and layout-performance gates. Roll back consumers by pinning Engine 0.9.0; published package versions and release assets remain immutable. diff --git a/layout-corpus/catalog.json b/layout-corpus/catalog.json index 11464cc..7509958 100644 --- a/layout-corpus/catalog.json +++ b/layout-corpus/catalog.json @@ -1,7 +1,7 @@ { "$schema": "./schema.json", "schemaVersion": "1.0", - "engineVersion": "0.9.0", + "engineVersion": "0.9.1", "performance": { "warmupIterations": 3, "measuredIterations": 20, diff --git a/layout-corpus/snapshots/dense-commerce.svg b/layout-corpus/snapshots/dense-commerce.svg index 48fe467..f8c4e5c 100644 --- a/layout-corpus/snapshots/dense-commerce.svg +++ b/layout-corpus/snapshots/dense-commerce.svg @@ -1,8 +1,8 @@ - + Dense commerce platform Architecture diagram with 13 nodes, 5 groups, and 12 relationships. - stack-engine 0.9.0; language 1.0; theme 0.7.0 at sha256:4a8b94b746c6b120998bfbe701edd722449a28c89c424b0a33f67561756ded5a + stack-engine 0.9.1; language 1.0; theme 0.7.0 at sha256:4a8b94b746c6b120998bfbe701edd722449a28c89c424b0a33f67561756ded5a diff --git a/layout-corpus/snapshots/fanout-cross-edges.svg b/layout-corpus/snapshots/fanout-cross-edges.svg index d7301e2..913bdab 100644 --- a/layout-corpus/snapshots/fanout-cross-edges.svg +++ b/layout-corpus/snapshots/fanout-cross-edges.svg @@ -1,8 +1,8 @@ - + Fan-out and cross edges Architecture diagram with 8 nodes, 0 groups, and 10 relationships. - stack-engine 0.9.0; language 1.0; theme 0.7.0 at sha256:4a8b94b746c6b120998bfbe701edd722449a28c89c424b0a33f67561756ded5a + stack-engine 0.9.1; language 1.0; theme 0.7.0 at sha256:4a8b94b746c6b120998bfbe701edd722449a28c89c424b0a33f67561756ded5a diff --git a/layout-corpus/snapshots/medium-group-flow.svg b/layout-corpus/snapshots/medium-group-flow.svg index 877d98b..8075a6b 100644 --- a/layout-corpus/snapshots/medium-group-flow.svg +++ b/layout-corpus/snapshots/medium-group-flow.svg @@ -1,8 +1,8 @@ - + Medium group flow Architecture diagram with 6 nodes, 2 groups, and 5 relationships. - stack-engine 0.9.0; language 1.0; theme 0.7.0 at sha256:4a8b94b746c6b120998bfbe701edd722449a28c89c424b0a33f67561756ded5a + stack-engine 0.9.1; language 1.0; theme 0.7.0 at sha256:4a8b94b746c6b120998bfbe701edd722449a28c89c424b0a33f67561756ded5a diff --git a/layout-corpus/snapshots/multilingual-long-labels.svg b/layout-corpus/snapshots/multilingual-long-labels.svg index 850caf9..5c757a1 100644 --- a/layout-corpus/snapshots/multilingual-long-labels.svg +++ b/layout-corpus/snapshots/multilingual-long-labels.svg @@ -1,8 +1,8 @@ - + Multilingual long labels Architecture diagram with 4 nodes, 0 groups, and 3 relationships. - stack-engine 0.9.0; language 1.0; theme 0.7.0 at sha256:4a8b94b746c6b120998bfbe701edd722449a28c89c424b0a33f67561756ded5a + stack-engine 0.9.1; language 1.0; theme 0.7.0 at sha256:4a8b94b746c6b120998bfbe701edd722449a28c89c424b0a33f67561756ded5a diff --git a/layout-corpus/snapshots/nested-platform.svg b/layout-corpus/snapshots/nested-platform.svg index 8e30236..d2e2045 100644 --- a/layout-corpus/snapshots/nested-platform.svg +++ b/layout-corpus/snapshots/nested-platform.svg @@ -1,8 +1,8 @@ - + Nested platform boundaries Architecture diagram with 7 nodes, 4 groups, and 6 relationships. - stack-engine 0.9.0; language 1.0; theme 0.7.0 at sha256:4a8b94b746c6b120998bfbe701edd722449a28c89c424b0a33f67561756ded5a + stack-engine 0.9.1; language 1.0; theme 0.7.0 at sha256:4a8b94b746c6b120998bfbe701edd722449a28c89c424b0a33f67561756ded5a diff --git a/layout-corpus/snapshots/provider-icon-boundary.svg b/layout-corpus/snapshots/provider-icon-boundary.svg index 3223dd7..cde5aab 100644 --- a/layout-corpus/snapshots/provider-icon-boundary.svg +++ b/layout-corpus/snapshots/provider-icon-boundary.svg @@ -1,8 +1,8 @@ - + Provider icon boundary Architecture diagram with 3 nodes, 1 group, and 2 relationships. - stack-engine 0.9.0; language 1.0; theme 0.7.0 at sha256:4a8b94b746c6b120998bfbe701edd722449a28c89c424b0a33f67561756ded5a; providers example at sha256:6e05b396567a5fa3f141df079c515a8866033b98d11ec4027f486af31f14fa43 using example:storage + stack-engine 0.9.1; language 1.0; theme 0.7.0 at sha256:4a8b94b746c6b120998bfbe701edd722449a28c89c424b0a33f67561756ded5a; providers example at sha256:6e05b396567a5fa3f141df079c515a8866033b98d11ec4027f486af31f14fa43 using example:storage diff --git a/layout-corpus/snapshots/small-request-path.svg b/layout-corpus/snapshots/small-request-path.svg index d380428..4fbd6ee 100644 --- a/layout-corpus/snapshots/small-request-path.svg +++ b/layout-corpus/snapshots/small-request-path.svg @@ -1,8 +1,8 @@ - + Small request path Architecture diagram with 3 nodes, 0 groups, and 2 relationships. - stack-engine 0.9.0; language 1.0; theme 0.7.0 at sha256:4a8b94b746c6b120998bfbe701edd722449a28c89c424b0a33f67561756ded5a + stack-engine 0.9.1; language 1.0; theme 0.7.0 at sha256:4a8b94b746c6b120998bfbe701edd722449a28c89c424b0a33f67561756ded5a diff --git a/package-lock.json b/package-lock.json index 78444b0..be80de6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "stack-engine-workspace", - "version": "0.9.0", + "version": "0.9.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "stack-engine-workspace", - "version": "0.9.0", + "version": "0.9.1", "workspaces": [ "packages/engine" ], @@ -454,7 +454,7 @@ }, "packages/engine": { "name": "@stack-sh/engine", - "version": "0.9.0", + "version": "0.9.1", "license": "Apache-2.0" } } diff --git a/package.json b/package.json index d0aa7b4..8b21bb1 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "stack-engine-workspace", "private": true, - "version": "0.9.0", + "version": "0.9.1", "workspaces": [ "packages/engine" ], diff --git a/packages/engine/package.json b/packages/engine/package.json index 8e7c9df..4308932 100644 --- a/packages/engine/package.json +++ b/packages/engine/package.json @@ -1,6 +1,6 @@ { "name": "@stack-sh/engine", - "version": "0.9.0", + "version": "0.9.1", "description": "Browser WebAssembly adapter for Stack diagram operations", "type": "module", "license": "Apache-2.0", diff --git a/tests/wasm.test.mjs b/tests/wasm.test.mjs index f8852d0..81fcc5d 100644 --- a/tests/wasm.test.mjs +++ b/tests/wasm.test.mjs @@ -210,7 +210,7 @@ test("browser diagnostics preserve actionable compiler guidance", () => { ); assert.ok(actionable); assert.equal(actionable.render.svg, null); - assert.equal(actionable.check.metadata.engineVersion, "0.9.0"); + assert.equal(actionable.check.metadata.engineVersion, "0.9.1"); assert.deepEqual(actionable.check.diagnostics[0], { code: "STK2002", severity: "error", @@ -232,7 +232,7 @@ test("browser rendering resolves the bundled explicit core icon", () => { assert.ok(explicitIcon); assert.deepEqual(explicitIcon.check.diagnostics, []); assert.deepEqual(explicitIcon.render.diagnostics, []); - assert.equal(explicitIcon.render.metadata.engineVersion, "0.9.0"); + assert.equal(explicitIcon.render.metadata.engineVersion, "0.9.1"); assert.equal(explicitIcon.render.metadata.themeCatalogVersion, "0.7.0"); assert.equal( explicitIcon.render.metadata.themeCatalogRevision,