From 222cc6cbff2d6b0be820715b7622af02e5dc7982 Mon Sep 17 00:00:00 2001 From: Chris Tsang Date: Mon, 27 Jul 2026 23:20:26 +0100 Subject: [PATCH] Prepare 1.0.0-alpha.2 release - version 1.0.0-alpha.2 across the workspace, Python, and Node packages - CHANGELOG: date the unreleased section - README: bump install snippets and docs.rs link --- CHANGELOG.md | 4 ++-- Cargo.toml | 2 +- README.md | 6 +++--- crates/vtracer-cli/Cargo.toml | 2 +- crates/vtracer-py/Cargo.toml | 4 ++-- nodejs/Cargo.toml | 4 ++-- nodejs/package.json | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d8fed48..ed822fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). -## Unreleased +## 1.0.0-alpha.2 - 2026-07-27 ### Added @@ -14,7 +14,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). * `stacked` stacks the merge tree itself (coarse ancestors below, refined regions on top), so overdraw stays seam-free. * `cutout` gets the partition natively; neighbouring faces closer than `max(2, (255 − detail) / 8)` merge, so faces a human cannot tell apart never survive as separate patches. * `WatershedHierarchy` is public, split into `build` (expensive, image-only) and `cut` (near-instant); `Session` re-cuts a cached hierarchy on detail changes, making the slider fully interactive (~25 ms vs ~40 ms on a 1400×775 photo). -* Curve simplification (`--simplify `, `Config::simplify`; off by default): a paper.js-style Schneider re-fit — each smooth run between corners is redrawn with the fewest cubics that stay within the tolerance (px). Roughly halves file size (sample photo at tolerance 1: 229 → 138 KB stacked, 103 → 36 KB watershed cutout). Runs on fitted geometry before composition, so cutout simplifies each shared boundary once and stays seam-free; corners and junction endpoints stay pinned. +* Curve simplification (`--simplify `, `Config::simplify`, `simplify` in Python and Node; off by default): a paper.js-style Schneider re-fit — each smooth run between corners is redrawn with the fewest cubics that stay within the tolerance (px). Roughly halves file size (sample photo at tolerance 1: 229 → 138 KB stacked, 103 → 36 KB watershed cutout). Runs on fitted geometry before composition, so cutout simplifies each shared boundary once and stays seam-free; corners and junction endpoints stay pinned. * Binary thresholding: a tunable fixed threshold (`--threshold`) and Bradley–Roth adaptive thresholding for uneven lighting (`--adaptive`, `--adaptive-window`, `--adaptive-t`) — also on `Config`, Python, and Node. * Cutout mode merges neighbouring faces whose colors are within one gradient step, rejoining the near-identical faces that stacked gradient layering splits a smooth area into. diff --git a/Cargo.toml b/Cargo.toml index 21ce3dd..4d23ca9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,7 +18,7 @@ exclude = [ resolver = "2" [workspace.package] -version = "1.0.0-alpha.1" +version = "1.0.0-alpha.2" authors = ["Chris Tsang "] edition = "2024" license = "MIT OR Apache-2.0" diff --git a/README.md b/README.md index 813d61a..f12e3cd 100644 --- a/README.md +++ b/README.md @@ -169,7 +169,7 @@ cargo install vtracer-cli You can install [`vtracer`](https://crates.io/crates/vtracer) as a Rust library. ```sh -cargo add vtracer@1.0.0-alpha.1 +cargo add vtracer@1.0.0-alpha.2 ``` ```rust @@ -199,7 +199,7 @@ let seg = pipeline.segment(&img)?; // the expensive part let doc = pipeline.finish(&seg)?; // VectorDoc, ready to serialize ``` -See [docs.rs/vtracer](https://docs.rs/vtracer/1.0.0-alpha.1/vtracer/) for the full API. +See [docs.rs/vtracer](https://docs.rs/vtracer/1.0.0-alpha.2/vtracer/) for the full API. ### Python Library @@ -238,7 +238,7 @@ See [`crates/vtracer-py`](crates/vtracer-py/README.md) for the full API. [`@visioncortex/vtracer`](https://www.npmjs.com/package/@visioncortex/vtracer) is available for Node as a WebAssembly build (from the [`nodejs`](nodejs/README.md) package) — image decoding and vectorization both run in wasm, so there is **no native dependency**. Decodes PNG, JPEG, GIF, BMP, and WebP; for other formats, decode yourself and pass raw RGBA to `convertPixels`. ```sh -npm install @visioncortex/vtracer@1.0.0-alpha.1 +npm install @visioncortex/vtracer@1.0.0-alpha.2 ``` ```js diff --git a/crates/vtracer-cli/Cargo.toml b/crates/vtracer-cli/Cargo.toml index d4cc3e8..b12dea9 100644 --- a/crates/vtracer-cli/Cargo.toml +++ b/crates/vtracer-cli/Cargo.toml @@ -15,7 +15,7 @@ name = "vtracer" path = "src/main.rs" [dependencies] -vtracer = { version = "1.0.0-alpha.1", path = "../vtracer" } +vtracer = { version = "1.0.0-alpha.2", path = "../vtracer" } visioncortex.workspace = true # Decode-only: trimmed to real input formats (drops the AV1 encoder + OpenEXR). image = { version = "0.25", default-features = false, features = [ diff --git a/crates/vtracer-py/Cargo.toml b/crates/vtracer-py/Cargo.toml index 9433487..2f014d6 100644 --- a/crates/vtracer-py/Cargo.toml +++ b/crates/vtracer-py/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "vtracer-py" description = "Python bindings for the vtracer vectorization framework." -version = "1.0.0-alpha.1" +version = "1.0.0-alpha.2" authors = ["Chris Tsang "] edition = "2024" license = "MIT OR Apache-2.0" @@ -18,7 +18,7 @@ name = "vtracer" crate-type = ["cdylib"] [dependencies] -vtracer = { version = "1.0.0-alpha.1", path = "../vtracer" } +vtracer = { version = "1.0.0-alpha.2", path = "../vtracer" } # Decode-only: trimmed to real input formats (drops the AV1 encoder + OpenEXR). image = { version = "0.25", default-features = false, features = [ "png", "jpeg", "gif", "bmp", "webp", "tiff", "ico", "pnm", "tga", "qoi", diff --git a/nodejs/Cargo.toml b/nodejs/Cargo.toml index b1b6d24..1a2b19d 100644 --- a/nodejs/Cargo.toml +++ b/nodejs/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "vtracer-wasm" description = "WebAssembly core for the vtracer Node.js package." -version = "1.0.0-alpha.1" +version = "1.0.0-alpha.2" authors = ["Chris Tsang "] edition = "2024" license = "MIT OR Apache-2.0" @@ -15,7 +15,7 @@ repository = "https://github.com/visioncortex/vtracer/" crate-type = ["cdylib"] [dependencies] -vtracer = { version = "1.0.0-alpha.1", path = "../crates/vtracer" } +vtracer = { version = "1.0.0-alpha.2", path = "../crates/vtracer" } wasm-bindgen = "0.2" serde = { version = "1", features = ["derive"] } serde-wasm-bindgen = "0.6" diff --git a/nodejs/package.json b/nodejs/package.json index 99896e6..2ffe596 100644 --- a/nodejs/package.json +++ b/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@visioncortex/vtracer", - "version": "1.0.0-alpha.1", + "version": "1.0.0-alpha.2", "description": "Raster to vector graphics converter (SVG). WebAssembly build of the vtracer framework — no native dependencies.", "main": "index.js", "types": "index.d.ts",