- Added rebuild reports with
statum::Validation<T>,RebuildAttempt.reason_key, andRebuildAttempt.messageso typed rehydration can explain failed matches without changing the normal.build()result surface. - Added named-field
#[state]variants, generated payload structs for those variants, and extra#[machine]type/const generic support after the state generic. - Added first-class
statum::Branch<A, B>support for two-way transition branching, including exact introspection of both legal targets. - Added source-local presentation sugar through
#[present(...)]plus typed#[presentation_types(...)]metadata for generatedmachine::PRESENTATIONconstants. - Expanded adversarial coverage around introspection and rebuild hygiene, including cfg-pruned items, macro/include sources, sibling name pressure, and validator local-name collisions.
- Refreshed the public docs so the published surface matches the actual authority boundary and supported feature set.
- Added first-class machine introspection emitted directly from
#[machine], including typedStateId,TransitionId, and a staticGRAPHdescriptor for exact transition-site queries. - Added typed runtime transition recording so consumer crates can record the chosen branch and join it back to static machine metadata.
- Added an optional typed presentation overlay for attaching labels, descriptions, phases, and other consumer-owned metadata without rebuilding the machine graph.
- Hardened proc-macro authority boundaries so machine metadata and diagnostics reject ambiguous or out-of-order definitions instead of silently inferring the wrong source.
- Added adversarial coverage for
#[cfg]-hidden duplicates,include!ambiguity, and declaration-order mistakes around#[state],#[machine], and#[validators].
- 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.