Files
craft-libs/CHANGELOG.md
T
skylar taylor-barrickandskylartaylor 86ed498b49 Prepare v0.1.0 with release notes, versioning policy and pinned adoption
* Prepare the first coordinated craft-libs release

---------

Co-authored-by: skylartaylor <skylartaylor@users.noreply.github.com>
2026-11-12 10:38:46 -05:00

4.3 KiB

Changelog

All crates share the workspace version. See the versioning policy.

v0.1.0 — 2026-10-12

First coordinated Git release of craft-libs. Applications can pin a named baseline instead of following development commits. This is an initial 0.x release: compatibility is maintained within 0.1.x; changes requiring consumer migration use a new minor version.

Included crates

  • craft-atomic: same-directory staged file replacement, exclusive creation, streaming writes, transient rename retries and fault-injection support, extracted from PhotoCraft.
  • craft-settings: app-owned TOML settings with platform/portable paths, atomic saves, backups, damaged-file recovery, schema migrations and preservation of unknown fields.
  • craft-quit: native macOS termination, optional egui close handling and an optional application menu. Save decisions and prompts stay with the app.
  • craft-print: CUPS and native Windows PDF submission, printer discovery, copies, duplex, colour and scaling options. Includes bounded PDF sheet handling and the pinned Windows completion fix. PDF generation stays with the app.
  • craft-ui: egui icon buttons, tabs, splits, resize handles, toolbar overflow, transactional docking, theme helpers and print-settings controls. Commands, content, localization and application state stay with the consumer. Docking serialization is opt-in through serde.

Requirements and adoption

  • Rust 1.95+, edition 2024. Public UI integrations use egui 0.36.
  • Use git = "https://github.com/storytold/craft-libs", tag = "v0.1.0" for each required crate; use the same tag everywhere. The README has a complete manifest example and a commit-pin alternative. Commit application lockfiles.
  • No automatic migration from an arbitrary earlier Git revision is implied. Compare the API you used with this release and test affected workflows before changing pins.
  • For craft-quit, run the close hook last in eframe::App::logic, after the app's unsaved-work decision. Finish asynchronous saves before requesting close; termination does not execute code after run_native. See the crate's API documentation before adoption.
  • This release is distributed through Git only. No crates.io packages are published by it.

Platform coverage and known limits

The release gate checks the workspace on Linux, macOS and Windows with default and all features, plus Linux minimum-compiler and UI/settings WASM checks. UI tests include offscreen visual regressions. Windows print tests exercise a temporary paused spooler queue; those checks do not establish physical printer fidelity or every application's native GUI behavior.

  • craft-ui supports native and WASM use. Font coverage, bidirectional text and screen-reader behavior still depend on the application and upstream stack; see #17.
  • craft-settings persistence is native-only. WASM exposes settings traits, document helpers and error types. Concurrent writers are best-effort, last-writer-wins; strict coordination needs an application-owned lock.
  • craft-atomic does not preserve all filesystem metadata during replacement. Directory sync is best effort; tests do not prove physical power-loss durability. See its README's contract.
  • craft-quit's native behavior is macOS-specific; other platforms keep their normal close path. Earlier hardware testing of the close hook is recorded in #3; it does not qualify every consuming app.
  • craft-print requires CUPS command-line tools on Linux/macOS or the native Windows spooler. Browser submission is unsupported. Windows accepts a bounded subset of print-ready PDFs; unsupported inputs and driver paper/scaling mismatches return errors. Printing is synchronous, so call it from a worker. Physical output needs hardware testing.
  • Windows printing retains a pinned Git dependency on the maintained winprint fork. Its build dependencies require the license/advisory policy exceptions documented in craft-print's README. Registry publication is deferred.

Planned crates and open feature PRs are not part of this release. Existing commit pins remain valid, and consumers do not need to update simply because main changes.