From 8d6186c602c74367b364f014488a8a57ab0bad85 Mon Sep 17 00:00:00 2001 From: Anton Kara Date: Tue, 25 Aug 2026 00:45:52 -0400 Subject: [PATCH] chore(release): sync 0.1.3 from workspace --- CHANGELOG.md | 40 +++++++++++++++++++++++++++++++++ README.md | 3 +++ docs/GUARANTEES.md | 2 +- pyproject.toml | 4 ++-- src/packvium_native/__init__.py | 2 +- 5 files changed, 47 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c04cba3..18f498e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,46 @@ The format follows [Keep a Changelog](https://keepachangelog.com/1.1.0/) and thi adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html) — with the caveat that the public API is not frozen until `1.0.0`. Pin an exact version. +## [0.1.3] + +An additive release. No packing request/result field or solver algorithm changed. + +### Added + +- **First-party carrier connectors for UPS, FedEx, DHL Express and USPS**, and a live + rate-card contract behind them. Connectors prepare ordinary rate-table data before a + deterministic solve; no network call, clock or carrier module enters a packing engine. + A rate card records which tariff version priced a quote and when it was fetched, and a + card that has gone stale is refused rather than served. + +### Fixed + +- **`@packvium/browser` now works under Node**, not only in a browser. The WebAssembly + loader generated for the `web` target fetches its own `.wasm` from a `file:` URL, which + Node's `fetch` refuses — so server-side rendering, a Vitest node environment and + `node --test` failed at initialization on 0.1.1 and 0.1.2. The package now selects a + Node entry point that reads the module off disk. Browser behaviour is unchanged. +- **The PHP package's compatibility tree could not autoload a class on old PHP.** Its + entry point was the one shipped file the downgrade did not process, and it used a PHP 8 + function to match the namespace prefix. Three of its solver files also could not be + parsed by PHP 8.0 or 8.1, which that tree also serves. Both are fixed, and the tree is + installed and loaded on 7.3, 7.4, 8.0 and 8.1 before release. +- **The compatibility tree did not place items where the canonical engine does on PHP 7.** + Several solver comparators were partial and relied on `usort` being stable, which PHP + guarantees only from 8.0, so three shared fixtures came back with a different rotation + chosen. The tie-breaking is explicit now — identical results on every supported version — + and no released package ever carried it, because none was installable below 8.2. + +### Changed + +- **`packvium/packvium` now requires `php: >=7.3` instead of `>=8.2`.** One package + carries both the canonical PHP 8.2+ source and a generated `src-legacy/` tree, and its + `autoload.php` selects by `PHP_VERSION_ID`; PHP parses only what it loads. + `composer require packvium/packvium` is the right command on 7.3 through 8.5, and every + one of those versions is held to the same committed placement results. Nothing changes + for an 8.2+ consumer: the same files load, under the same names. +- Every package's `homepage` now points at . + ## [0.1.2] An additive documentation and integration release. No packing request/result field or diff --git a/README.md b/README.md index 32dd165..168145e 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,9 @@ One request and result contract, implemented independently in four engines (Rust Python, PHP, JavaScript) and held to identical placements on a shared fixture set. Pick the package for your stack; mixing them in one system is safe. +Documentation, the constraint reference and the benchmarks are at +[packvium.com](https://packvium.com). + | Package | Install | Source | | --- | --- | --- | | Python — [`packvium`](https://pypi.org/project/packvium/) | `pip install packvium` | [packvium-python](https://github.com/toxakara/packvium-python) | diff --git a/docs/GUARANTEES.md b/docs/GUARANTEES.md index 499404a..af5efb3 100644 --- a/docs/GUARANTEES.md +++ b/docs/GUARANTEES.md @@ -48,7 +48,7 @@ silently — if you need them, they belong in your own layer above this library. ## Status of this release -Version `0.1.2` is an early release. The public API is not yet frozen: field names, +Version `0.1.3` is an early release. The public API is not yet frozen: field names, status codes and the objective vector may change before `1.0.0`. Pin an exact version. The algorithm complexities documented in `ALGORITHMS-AND-COMPLEXITY.md` are design diff --git a/pyproject.toml b/pyproject.toml index 96d6291..401e13d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "packvium-native" -version = "0.1.2" +version = "0.1.3" requires-python = ">=3.9" description = "Backend selector for Packvium's native and pure Python engines" readme = "README.md" @@ -13,7 +13,7 @@ keywords = ["3d-bin-packing", "cartonization", "packaging", "container-loading"] dependencies = [] [project.urls] -Homepage = "https://github.com/toxakara/packvium-python-adapter" +Homepage = "https://packvium.com" Source = "https://github.com/toxakara/packvium-python-adapter" Issues = "https://github.com/toxakara/packvium-python-adapter/issues" diff --git a/src/packvium_native/__init__.py b/src/packvium_native/__init__.py index 8b65761..dc38bf6 100644 --- a/src/packvium_native/__init__.py +++ b/src/packvium_native/__init__.py @@ -3,7 +3,7 @@ import json from typing import Any -__version__ = "0.1.2" +__version__ = "0.1.3" def backend() -> str: