- Recentered the public docs around representational correctness and the goal of making invalid, undesirable, or not-yet-validated states unrepresentable in ordinary code.
- Refreshed published crate metadata and keywords so the crates.io surface reflects Statum's correctness-first positioning.
- Added package-level
modumconfiguration so the workspace's existing public naming surfaces lint cleanly without forced API renames.
- Removed the
statum::bonre-export and the bon-backed builder internals from Statum's public surface. If your code imported bon through Statum, depend onbondirectly.
- Replaced bon-backed generated builders with Statum-owned builders while preserving
Machine::<State>::builder(),into_machine(),.into_machines(), and.into_machines_by(...). - Reduced generated builder expansion size and downstream cold compile cost for builder-heavy consumers.
- Restored ergonomic
#[machine]field type handling so imported aliases, renamed imports, and module aliases no longer need to be rewritten as fully qualified paths.
- Expanded
macro_registrywith a reusable query layer for module-aware item discovery and typed registry lookup results. - Refactored
statum-macrosto use the sharedmacro_registryquery and named-lookup APIs instead of local duplicate resolution logic. - Tightened proc-macro module-path resolution so metadata loading fails explicitly when the call-site module cannot be determined.
- Refreshed the
module_path_extractorandmacro_registryREADMEs around real proc-macro workflows and public entry points.
- Added a
docs/agents/adoption kit with copyable agent-instruction templates, audit heuristics, and targeted prompt packs for Statum-friendly workflows. - Linked the agent kit from the root README and the published
statumcrate README. - Expanded docs link validation to recurse through nested
docs/content so the agent docs stay covered.
- Corrected crate metadata for docs.rs links and marked
statum-examplesas non-publishable. - Expanded docs link validation to include the root README and
docs/*.md. - Hardened publish preflight so already-published versions fail early and downstream crates use package inspection when dry-runs are impossible before upstream publish.
- Expanded the public rustdoc surface for
statumandstatum-core. - Added runnable crate-level examples for the root API pages.
- Clarified stable-toolchain guidance in internal docs.
- Cleaned up the public API around
machine::State,into_machine(),.into_machines(), and.into_machines_by(...). - Added crate-level advanced traits such as
CanTransitionMap. - Added
statum::projectionfor event-log projection before typed rehydration. - Reworked macro diagnostics and UI coverage for more informative editor errors.
- Split examples into toy demos plus showcase apps, including Axum, CLI, worker, event-log, and protocol examples.
- Added
into_machine()as the preferred validators builder entry point.machine_builder()remains for compatibility. - Updated README examples to use
into_machine()andstatum::Result.
- Added
statum::Result<T>as a convenience alias forResult<T, statum::Error>. - README updated to use enum-based validator matching and
statum::Result.
- Validators now generate a machine-scoped module alias for matching superstates.
- README updated to use the new module alias and enum-based status matching.
- README refreshed with enum-based validator examples and links to compiling examples/tests.
- Removed the
serdefeature and dependency; derives on#[state]/#[machine]are now fully user-driven. - Bumped internal versions and publish metadata.
- Updated examples/docs to remove Serde usage.
This release is a major rewrite focused on a cleaner typestate API, improved macro diagnostics, and a more complete example/test suite.
- New examples crate: examples moved into
statum-examples/with runnable tests. - Macro diagnostics overhaul: clearer, state-named errors for common misuse cases.
- Deterministic macro loading: more stable macro metadata resolution across modules.
- Validators flow: improved reconstruction ergonomics with a generated
{Machine}SuperStatefor matching. - Robust module path extraction: handles multi-module files more reliably.
- Expanded test coverage: trybuild UI cases + stress tests for API permutations.
- Examples moved: use
statum-examplesinstead ofstatum/examples. - Validator superstate: reconstruction returns
{Machine}SuperState(match on variants). - Docs restructured: new rewrite docs + migration guide under
docs/.
[dependencies]
statum = "0.3.0"Run examples/tests:
cargo test -p statum-examplesIf you were relying on older macro error strings or example paths, update to the new docs and examples layout.