diff --git a/crates/nexus-fjall/CHANGELOG.md b/crates/nexus-fjall/CHANGELOG.md new file mode 100644 index 00000000..d2ab2cc6 --- /dev/null +++ b/crates/nexus-fjall/CHANGELOG.md @@ -0,0 +1,76 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [0.1.0](https://github.com/devrandom-labs/nexus/releases/tag/nexus-fjall-v0.1.0) - 2026-07-10 + +### Added + +- *(store)* [**breaking**] port nexus-store to no_std (core+alloc) ([#301](https://github.com/devrandom-labs/nexus/pull/301)) ([#307](https://github.com/devrandom-labs/nexus/pull/307)) +- *(store)* [**breaking**] extract nexus-wake + nexus-inmemory — tokio out of nexus-store ([#300](https://github.com/devrandom-labs/nexus/pull/300)) ([#306](https://github.com/devrandom-labs/nexus/pull/306)) +- *(nexus)* [**breaking**] port kernel to no_std (core+alloc) ([#279](https://github.com/devrandom-labs/nexus/pull/279)) ([#303](https://github.com/devrandom-labs/nexus/pull/303)) +- *(fjall)* projection SnapshotStore + Hydrated hydrate return + LZ4 storage ([#164](https://github.com/devrandom-labs/nexus/pull/164)) +- *(store)* phase-aware subscribe — Step on subscribe, decode composes ([#250](https://github.com/devrandom-labs/nexus/pull/250)) ([#278](https://github.com/devrandom-labs/nexus/pull/278)) +- *(store)* [**breaking**] envelope builder ergonomics — one fallible terminal + .event() ([#254](https://github.com/devrandom-labs/nexus/pull/254)) ([#276](https://github.com/devrandom-labs/nexus/pull/276)) +- *(store)* execute — one-call decide+save combinator ([#251](https://github.com/devrandom-labs/nexus/pull/251)) ([#274](https://github.com/devrandom-labs/nexus/pull/274)) +- *(kernel)* [**breaking**] blanket Id impl, drop the never-read BYTE_LEN const ([#252](https://github.com/devrandom-labs/nexus/pull/252)) ([#273](https://github.com/devrandom-labs/nexus/pull/273)) +- *(store)* [**breaking**] adapter-defined $all position — drop global_seq from the wire frame ([#266](https://github.com/devrandom-labs/nexus/pull/266)) ([#267](https://github.com/devrandom-labs/nexus/pull/267)) +- *(store)* [**breaking**] symmetric CBOR ChunkWriter write-path ([#246](https://github.com/devrandom-labs/nexus/pull/246)) ([#261](https://github.com/devrandom-labs/nexus/pull/261)) +- *(store)* [**breaking**] stream-id byte/typed boundary — concrete StreamKey at the raw layer ([#245](https://github.com/devrandom-labs/nexus/pull/245)) ([#260](https://github.com/devrandom-labs/nexus/pull/260)) +- *(store)* RawEventStore::into_store — de-nest store construction ([#244](https://github.com/devrandom-labs/nexus/pull/244)) ([#258](https://github.com/devrandom-labs/nexus/pull/258)) +- *(fjall)* implement AtomicAppend + StreamLister, prove export/import on disk ([#220](https://github.com/devrandom-labs/nexus/pull/220)) ([#242](https://github.com/devrandom-labs/nexus/pull/242)) +- *(store)* [**breaking**] apply #[non_exhaustive] to public error enums for 1.0 ([#209](https://github.com/devrandom-labs/nexus/pull/209)) ([#236](https://github.com/devrandom-labs/nexus/pull/236)) +- *(store)* [**breaking**] narrow pub mod wire to the minimal adapter surface ([#210](https://github.com/devrandom-labs/nexus/pull/210)) ([#235](https://github.com/devrandom-labs/nexus/pull/235)) +- *(fjall)* [**breaking**] adopt ErrorId in FjallError + AppendError, drop store transitional conversion (#208, PR 3/4) ([#233](https://github.com/devrandom-labs/nexus/pull/233)) +- *(store)* add frame-format-version byte to wire layout ([#205](https://github.com/devrandom-labs/nexus/pull/205)) ([#229](https://github.com/devrandom-labs/nexus/pull/229)) +- global $all subscription cursor (GlobalSeq-ordered, all-streams) ([#214](https://github.com/devrandom-labs/nexus/pull/214)) ([#216](https://github.com/devrandom-labs/nexus/pull/216)) +- bound subscription/read batch size ([#176](https://github.com/devrandom-labs/nexus/pull/176)) ([#192](https://github.com/devrandom-labs/nexus/pull/192)) +- *(store, fjall)* [**breaking**] per-stream subscription wake registry ([#191](https://github.com/devrandom-labs/nexus/pull/191)) +- *(store, fjall)* SharedSubscription (Arc-based, 'static cursor) — PR1 of arc-subscription refactor ([#177](https://github.com/devrandom-labs/nexus/pull/177)) +- *(store, fjall, framework)* SnapshotStore + per-event GlobalSeq ([#168](https://github.com/devrandom-labs/nexus/pull/168)) +- *(store)* unified state persistence and projection rebuild ([#158](https://github.com/devrandom-labs/nexus/pull/158)) ([#163](https://github.com/devrandom-labs/nexus/pull/163)) +- *(store)* subscription-powered projection runner ([#157](https://github.com/devrandom-labs/nexus/pull/157)) ([#162](https://github.com/devrandom-labs/nexus/pull/162)) +- *(store)* projection core traits + runner design (#155, #157) ([#161](https://github.com/devrandom-labs/nexus/pull/161)) +- [**breaking**] subscriptions, allocation-free errors, EventStream API fix ([#150](https://github.com/devrandom-labs/nexus/pull/150)) +- aggregate snapshots for fast rehydration ([#123](https://github.com/devrandom-labs/nexus/pull/123)) ([#142](https://github.com/devrandom-labs/nexus/pull/142)) +- [**breaking**] fjall adapter, store refactoring, serde codecs, repository builder ([#138](https://github.com/devrandom-labs/nexus/pull/138)) +- *(store)* [**breaking**] event store with save atomicity, schema versioning, and structured errors ([#122](https://github.com/devrandom-labs/nexus/pull/122)) +- *(nexus)* added docs +- *(nexus)* removed tixlys related stuff +- *(tixlys)* added age-keygen sops + +### Fixed + +- *(store, fjall)* close wire/envelope schema_version asymmetry; harden decode ([#186](https://github.com/devrandom-labs/nexus/pull/186)) + +### Other + +- *(fjall)* craftsmanship + architecture pass — plan_run, Partitions, configurable AllIndex ([#270](https://github.com/devrandom-labs/nexus/pull/270)) ([#271](https://github.com/devrandom-labs/nexus/pull/271)) +- pin stable toolchain via rust-toolchain.toml, declare MSRV ([#204](https://github.com/devrandom-labs/nexus/pull/204)) ([#226](https://github.com/devrandom-labs/nexus/pull/226)) +- extract subscription loop to nexus-store (zero-cost, no Box); unify fjall cursors ([#224](https://github.com/devrandom-labs/nexus/pull/224)) +- [**breaking**] retire nexus-framework; projection is primitives, the loop is the consumer's ([#193](https://github.com/devrandom-labs/nexus/pull/193)) +- *(store, fjall, framework)* [**breaking**] collapse Subscription trait pair to concrete struct ([#181](https://github.com/devrandom-labs/nexus/pull/181)) ([#190](https://github.com/devrandom-labs/nexus/pull/190)) +- *(store, fjall)* [**breaking**] shrink wire.rs to pure framing; SchemaVersion + PersistedEnvelope value accessors (PR3 of 3) ([#189](https://github.com/devrandom-labs/nexus/pull/189)) +- *(store)* [**breaking**] PendingEnvelope holds value newtypes; builder fallible (PR2 of 3) ([#188](https://github.com/devrandom-labs/nexus/pull/188)) +- PR3 of bytes-envelope refactor — README, rustdoc, CLAUDE.md ([#184](https://github.com/devrandom-labs/nexus/pull/184)) +- *(store, fjall, framework)* [**breaking**] stream + codec collapse + wire alignment — PR2 of bytes-envelope refactor ([#183](https://github.com/devrandom-labs/nexus/pull/183)) +- *(store,fjall)* [**breaking**] Bytes-based envelopes with Range offsets — PR1 of bytes-envelope refactor ([#182](https://github.com/devrandom-labs/nexus/pull/182)) +- *(store, fjall, framework)* [**breaking**] delete borrowed Subscription; promote Arc-based shape — PR3 of arc-subscription refactor ([#179](https://github.com/devrandom-labs/nexus/pull/179)) +- *(store)* generalize EventStream with Item<'a> GAT + lending combinators (Map/TryMap/TryScan) ([#170](https://github.com/devrandom-labs/nexus/pull/170)) +- *(store, framework)* split Codec into independent Encode/Decode/BorrowingDecode traits ([#169](https://github.com/devrandom-labs/nexus/pull/169)) +- enforce clippy across the whole workspace ([#167](https://github.com/devrandom-labs/nexus/pull/167)) +- *(store)* exhaustive stream.rs coverage + reusable adapter conformance suite ([#165](https://github.com/devrandom-labs/nexus/pull/165)) +- apply Section 6 functional-first style across store and fjall ([#143](https://github.com/devrandom-labs/nexus/pull/143)) +- update README with kernel documentation and verification table +- *(docs)* updated readme +- *(tixlys)* removed the last section of readme +- *(auth)* added test for fallback and doc +- *(readme)* updates status badges +- *(readme)* updated the status badges +- added github status bar +- initial nix flake setup diff --git a/crates/nexus-inmemory/CHANGELOG.md b/crates/nexus-inmemory/CHANGELOG.md new file mode 100644 index 00000000..bacc6d11 --- /dev/null +++ b/crates/nexus-inmemory/CHANGELOG.md @@ -0,0 +1,33 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [0.1.0](https://github.com/devrandom-labs/nexus/releases/tag/nexus-inmemory-v0.1.0) - 2026-07-10 + +### Added + +- *(store)* [**breaking**] port nexus-store to no_std (core+alloc) ([#301](https://github.com/devrandom-labs/nexus/pull/301)) ([#307](https://github.com/devrandom-labs/nexus/pull/307)) +- *(store)* [**breaking**] extract nexus-wake + nexus-inmemory — tokio out of nexus-store ([#300](https://github.com/devrandom-labs/nexus/pull/300)) ([#306](https://github.com/devrandom-labs/nexus/pull/306)) +- *(store)* projection core traits + runner design (#155, #157) ([#161](https://github.com/devrandom-labs/nexus/pull/161)) +- *(store)* [**breaking**] event store with save atomicity, schema versioning, and structured errors ([#122](https://github.com/devrandom-labs/nexus/pull/122)) +- *(nexus)* added docs +- *(nexus)* removed tixlys related stuff +- *(tixlys)* added age-keygen sops + +### Other + +- [**breaking**] retire nexus-framework; projection is primitives, the loop is the consumer's ([#193](https://github.com/devrandom-labs/nexus/pull/193)) +- PR3 of bytes-envelope refactor — README, rustdoc, CLAUDE.md ([#184](https://github.com/devrandom-labs/nexus/pull/184)) +- update README with kernel documentation and verification table +- *(docs)* updated readme +- *(tixlys)* removed the last section of readme +- *(auth)* added test for fallback and doc +- *(readme)* updates status badges +- *(readme)* updated the status badges +- added github status bar +- initial nix flake setup diff --git a/crates/nexus-macros/CHANGELOG.md b/crates/nexus-macros/CHANGELOG.md new file mode 100644 index 00000000..a0745462 --- /dev/null +++ b/crates/nexus-macros/CHANGELOG.md @@ -0,0 +1,97 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [0.1.0](https://github.com/devrandom-labs/nexus/releases/tag/nexus-macros-v0.1.0) - 2026-07-10 + +### Added + +- *(kernel)* [**breaking**] blanket Id impl, drop the never-read BYTE_LEN const ([#252](https://github.com/devrandom-labs/nexus/pull/252)) ([#273](https://github.com/devrandom-labs/nexus/pull/273)) +- *(kernel)* [**breaking**] fold post-persist mutators into commit_persisted, de-hide driver seam ([#212](https://github.com/devrandom-labs/nexus/pull/212)) ([#237](https://github.com/devrandom-labs/nexus/pull/237)) +- *(kernel)* aggregate given/when/then test fixture ([#126](https://github.com/devrandom-labs/nexus/pull/126)) ([#198](https://github.com/devrandom-labs/nexus/pull/198)) +- *(store)* projection core traits + runner design (#155, #157) ([#161](https://github.com/devrandom-labs/nexus/pull/161)) +- [**breaking**] subscriptions, allocation-free errors, EventStream API fix ([#150](https://github.com/devrandom-labs/nexus/pull/150)) +- [**breaking**] fjall adapter, store refactoring, serde codecs, repository builder ([#138](https://github.com/devrandom-labs/nexus/pull/138)) +- *(store)* [**breaking**] event store with save atomicity, schema versioning, and structured errors ([#122](https://github.com/devrandom-labs/nexus/pull/122)) +- add in-memory bank account example +- *(macros)* add #[nexus::aggregate] attribute macro +- flatten nexus crate — kernel becomes top-level, remove old modules +- *(macros)* rewrite DomainEvent derive to work on enums with per-variant name() +- *(nexus)* added docs +- *(nexus)* removed tixlys related stuff +- *(nexus)* added custom result type +- *(nexus)* added name field for domain event +- *(macros)* added domain event macro +- *(macros)* made find fields morerobust +- *(macros)* enforced variant chck +- *(macros)* added domain event macro +- *(macros)* added query macro +- *(rusqlite)* added command macro +- *(macros)* added get attribute fnc +- *(macros)* added message macro +- *(tixlys)* added nexus-macros crate +- *(tixlys)* added age-keygen sops + +### Fixed + +- *(ci)* regenerate workspace-hack + add pre-commit hook +- *(kernel)* M2 — replace Default with AggregateState::initial() +- *(macros)* M6 — preserve user attributes through aggregate macro +- *(macros)* H6 — redacted Debug output, no internal state leakage +- *(macros)* reject empty event enums at compile time instead of unreachable +- pass nix flake check — elite clippy, audit ignore, trybuild refresh +- *(macros)* removed enum support +- *(macros)* fixed macro errors +- *(macros)* updated domain name macros +- *(macros)* fixed paths after macro addition + +### Other + +- pin stable toolchain via rust-toolchain.toml, declare MSRV ([#204](https://github.com/devrandom-labs/nexus/pull/204)) ([#226](https://github.com/devrandom-labs/nexus/pull/226)) +- [**breaking**] retire nexus-framework; projection is primitives, the loop is the consumer's ([#193](https://github.com/devrandom-labs/nexus/pull/193)) +- PR3 of bytes-envelope refactor — README, rustdoc, CLAUDE.md ([#184](https://github.com/devrandom-labs/nexus/pull/184)) +- *(store, macros)* [**breaking**] delete Upcaster trait; drop U generic; load_with + save_with for with-upcaster ergonomics ([#175](https://github.com/devrandom-labs/nexus/pull/175)) +- *(store, macros)* [**breaking**] slim Upcaster trait; macro gap-coverage check; drop UpcastError ([#173](https://github.com/devrandom-labs/nexus/pull/173)) +- fix formatting from sed-inserted initial() methods +- *(macros)* add roundtrip expand-compile test +- *(macros)* add exhaustiveness regression test +- *(macros)* add 7 property-based tests for macro-generated aggregates +- *(macros)* add adversarial input tests + fix empty enum DomainEvent +- *(macros)* expand macro hygiene tests to 7 cases +- *(macros)* add cross-crate boundary tests +- *(macros)* add macro hygiene tests +- *(macros)* add 9 compile-failure tests for macro error messages +- add release-plz for automated crate publishing +- update README with kernel documentation and verification table +- update workspace dependencies to latest compatible versions +- *(docs)* updated readme +- *(tixlys)* fixing clippy warnings +- *(macros)* clippy warning applied +- *(nexus)* updated test cases and macros +- *(nexus)* fixing tests +- *(nexus)* removed id from domain events +- *(nexus)* updated integrations tests +- *(rusqlite)* added test for append +- *(macors)* fixed clippy errors +- *(macros)* added aggregate type macro +- *(macros)* added field type +- *(macros)* added domain_event macro +- *(macro)* added command file +- *(macros)* added parse_command +- *(macros)* added skeleton for other core types +- *(macro)* added query one +- *(macros)* added main for macro +- *(macros)* simple derive macro +- *(macros)* added macros skeleton +- *(rusqlite)* added embedded migrations +- *(tixlys)* removed the last section of readme +- *(auth)* added test for fallback and doc +- *(readme)* updates status badges +- *(readme)* updated the status badges +- added github status bar +- initial nix flake setup diff --git a/crates/nexus-postgres/CHANGELOG.md b/crates/nexus-postgres/CHANGELOG.md new file mode 100644 index 00000000..e8696810 --- /dev/null +++ b/crates/nexus-postgres/CHANGELOG.md @@ -0,0 +1,37 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [0.1.0](https://github.com/devrandom-labs/nexus/releases/tag/nexus-postgres-v0.1.0) - 2026-07-10 + +### Added + +- *(store)* [**breaking**] port nexus-store to no_std (core+alloc) ([#301](https://github.com/devrandom-labs/nexus/pull/301)) ([#307](https://github.com/devrandom-labs/nexus/pull/307)) +- *(store)* [**breaking**] extract nexus-wake + nexus-inmemory — tokio out of nexus-store ([#300](https://github.com/devrandom-labs/nexus/pull/300)) ([#306](https://github.com/devrandom-labs/nexus/pull/306)) +- *(nexus)* [**breaking**] port kernel to no_std (core+alloc) ([#279](https://github.com/devrandom-labs/nexus/pull/279)) ([#303](https://github.com/devrandom-labs/nexus/pull/303)) +- *(store)* phase-aware subscribe — Step on subscribe, decode composes ([#250](https://github.com/devrandom-labs/nexus/pull/250)) ([#278](https://github.com/devrandom-labs/nexus/pull/278)) +- *(store)* [**breaking**] envelope builder ergonomics — one fallible terminal + .event() ([#254](https://github.com/devrandom-labs/nexus/pull/254)) ([#276](https://github.com/devrandom-labs/nexus/pull/276)) +- *(postgres)* nexus-postgres — second store adapter, contract validation before freeze ([#213](https://github.com/devrandom-labs/nexus/pull/213)) ([#269](https://github.com/devrandom-labs/nexus/pull/269)) +- *(store)* projection core traits + runner design (#155, #157) ([#161](https://github.com/devrandom-labs/nexus/pull/161)) +- *(store)* [**breaking**] event store with save atomicity, schema versioning, and structured errors ([#122](https://github.com/devrandom-labs/nexus/pull/122)) +- *(nexus)* added docs +- *(nexus)* removed tixlys related stuff +- *(tixlys)* added age-keygen sops + +### Other + +- [**breaking**] retire nexus-framework; projection is primitives, the loop is the consumer's ([#193](https://github.com/devrandom-labs/nexus/pull/193)) +- PR3 of bytes-envelope refactor — README, rustdoc, CLAUDE.md ([#184](https://github.com/devrandom-labs/nexus/pull/184)) +- update README with kernel documentation and verification table +- *(docs)* updated readme +- *(tixlys)* removed the last section of readme +- *(auth)* added test for fallback and doc +- *(readme)* updates status badges +- *(readme)* updated the status badges +- added github status bar +- initial nix flake setup diff --git a/crates/nexus-store-testing/CHANGELOG.md b/crates/nexus-store-testing/CHANGELOG.md new file mode 100644 index 00000000..1dfa7b0f --- /dev/null +++ b/crates/nexus-store-testing/CHANGELOG.md @@ -0,0 +1,40 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [0.1.0](https://github.com/devrandom-labs/nexus/releases/tag/nexus-store-testing-v0.1.0) - 2026-07-10 + +### Added + +- *(store)* [**breaking**] port nexus-store to no_std (core+alloc) ([#301](https://github.com/devrandom-labs/nexus/pull/301)) ([#307](https://github.com/devrandom-labs/nexus/pull/307)) +- *(store)* [**breaking**] envelope builder ergonomics — one fallible terminal + .event() ([#254](https://github.com/devrandom-labs/nexus/pull/254)) ([#276](https://github.com/devrandom-labs/nexus/pull/276)) +- *(store)* [**breaking**] adapter-defined $all position — drop global_seq from the wire frame ([#266](https://github.com/devrandom-labs/nexus/pull/266)) ([#267](https://github.com/devrandom-labs/nexus/pull/267)) +- *(store)* projection core traits + runner design (#155, #157) ([#161](https://github.com/devrandom-labs/nexus/pull/161)) +- *(store)* [**breaking**] event store with save atomicity, schema versioning, and structured errors ([#122](https://github.com/devrandom-labs/nexus/pull/122)) +- *(nexus)* added docs +- *(nexus)* removed tixlys related stuff +- *(tixlys)* added age-keygen sops + +### Other + +- pin stable toolchain via rust-toolchain.toml, declare MSRV ([#204](https://github.com/devrandom-labs/nexus/pull/204)) ([#226](https://github.com/devrandom-labs/nexus/pull/226)) +- [**breaking**] retire nexus-framework; projection is primitives, the loop is the consumer's ([#193](https://github.com/devrandom-labs/nexus/pull/193)) +- PR3 of bytes-envelope refactor — README, rustdoc, CLAUDE.md ([#184](https://github.com/devrandom-labs/nexus/pull/184)) +- *(store, fjall, framework)* [**breaking**] stream + codec collapse + wire alignment — PR2 of bytes-envelope refactor ([#183](https://github.com/devrandom-labs/nexus/pull/183)) +- *(store,fjall)* [**breaking**] Bytes-based envelopes with Range offsets — PR1 of bytes-envelope refactor ([#182](https://github.com/devrandom-labs/nexus/pull/182)) +- *(store)* generalize EventStream with Item<'a> GAT + lending combinators (Map/TryMap/TryScan) ([#170](https://github.com/devrandom-labs/nexus/pull/170)) +- enforce clippy across the whole workspace ([#167](https://github.com/devrandom-labs/nexus/pull/167)) +- *(store)* exhaustive stream.rs coverage + reusable adapter conformance suite ([#165](https://github.com/devrandom-labs/nexus/pull/165)) +- update README with kernel documentation and verification table +- *(docs)* updated readme +- *(tixlys)* removed the last section of readme +- *(auth)* added test for fallback and doc +- *(readme)* updates status badges +- *(readme)* updated the status badges +- added github status bar +- initial nix flake setup diff --git a/crates/nexus-store/CHANGELOG.md b/crates/nexus-store/CHANGELOG.md new file mode 100644 index 00000000..a4f9d26b --- /dev/null +++ b/crates/nexus-store/CHANGELOG.md @@ -0,0 +1,99 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [0.1.0](https://github.com/devrandom-labs/nexus/releases/tag/nexus-store-v0.1.0) - 2026-07-10 + +### Added + +- *(store)* [**breaking**] port nexus-store to no_std (core+alloc) ([#301](https://github.com/devrandom-labs/nexus/pull/301)) ([#307](https://github.com/devrandom-labs/nexus/pull/307)) +- *(store)* [**breaking**] extract nexus-wake + nexus-inmemory — tokio out of nexus-store ([#300](https://github.com/devrandom-labs/nexus/pull/300)) ([#306](https://github.com/devrandom-labs/nexus/pull/306)) +- *(nexus)* [**breaking**] port kernel to no_std (core+alloc) ([#279](https://github.com/devrandom-labs/nexus/pull/279)) ([#303](https://github.com/devrandom-labs/nexus/pull/303)) +- *(store)* [**breaking**] make json feature additive — repository() returns NeedsCodec unconditionally ([#211](https://github.com/devrandom-labs/nexus/pull/211)) ([#298](https://github.com/devrandom-labs/nexus/pull/298)) +- *(fjall)* projection SnapshotStore + Hydrated hydrate return + LZ4 storage ([#164](https://github.com/devrandom-labs/nexus/pull/164)) +- *(store)* Projection stepper — assemble a projection from a few named inputs ([#255](https://github.com/devrandom-labs/nexus/pull/255)) ([#284](https://github.com/devrandom-labs/nexus/pull/284)) +- *(store)* phase-aware subscribe — Step on subscribe, decode composes ([#250](https://github.com/devrandom-labs/nexus/pull/250)) ([#278](https://github.com/devrandom-labs/nexus/pull/278)) +- *(store)* typed subscription view — reuse the configured codec ([#249](https://github.com/devrandom-labs/nexus/pull/249)) ([#277](https://github.com/devrandom-labs/nexus/pull/277)) +- *(store)* [**breaking**] envelope builder ergonomics — one fallible terminal + .event() ([#254](https://github.com/devrandom-labs/nexus/pull/254)) ([#276](https://github.com/devrandom-labs/nexus/pull/276)) +- *(store)* execute — one-call decide+save combinator ([#251](https://github.com/devrandom-labs/nexus/pull/251)) ([#274](https://github.com/devrandom-labs/nexus/pull/274)) +- *(kernel)* [**breaking**] blanket Id impl, drop the never-read BYTE_LEN const ([#252](https://github.com/devrandom-labs/nexus/pull/252)) ([#273](https://github.com/devrandom-labs/nexus/pull/273)) +- *(store)* [**breaking**] adapter-defined $all position — drop global_seq from the wire frame ([#266](https://github.com/devrandom-labs/nexus/pull/266)) ([#267](https://github.com/devrandom-labs/nexus/pull/267)) +- *(store)* [**breaking**] one .build() terminal — unify EventStore/ZeroCopyEventStore ([#248](https://github.com/devrandom-labs/nexus/pull/248)) ([#263](https://github.com/devrandom-labs/nexus/pull/263)) +- *(store)* [**breaking**] symmetric CBOR ChunkWriter write-path ([#246](https://github.com/devrandom-labs/nexus/pull/246)) ([#261](https://github.com/devrandom-labs/nexus/pull/261)) +- *(store)* [**breaking**] stream-id byte/typed boundary — concrete StreamKey at the raw layer ([#245](https://github.com/devrandom-labs/nexus/pull/245)) ([#260](https://github.com/devrandom-labs/nexus/pull/260)) +- *(store)* make Store the front door — backup/restore without .raw() ([#247](https://github.com/devrandom-labs/nexus/pull/247)) ([#259](https://github.com/devrandom-labs/nexus/pull/259)) +- *(store)* RawEventStore::into_store — de-nest store construction ([#244](https://github.com/devrandom-labs/nexus/pull/244)) ([#258](https://github.com/devrandom-labs/nexus/pull/258)) +- *(store)* [**breaking**] aggregate-bound repository — load/save infer the aggregate, no annotation ([#243](https://github.com/devrandom-labs/nexus/pull/243)) ([#257](https://github.com/devrandom-labs/nexus/pull/257)) +- *(kernel)* [**breaking**] fold post-persist mutators into commit_persisted, de-hide driver seam ([#212](https://github.com/devrandom-labs/nexus/pull/212)) ([#237](https://github.com/devrandom-labs/nexus/pull/237)) +- *(store)* [**breaking**] apply #[non_exhaustive] to public error enums for 1.0 ([#209](https://github.com/devrandom-labs/nexus/pull/209)) ([#236](https://github.com/devrandom-labs/nexus/pull/236)) +- *(store)* [**breaking**] narrow pub mod wire to the minimal adapter surface ([#210](https://github.com/devrandom-labs/nexus/pull/210)) ([#235](https://github.com/devrandom-labs/nexus/pull/235)) +- *(fjall)* [**breaking**] adopt ErrorId in FjallError + AppendError, drop store transitional conversion (#208, PR 3/4) ([#233](https://github.com/devrandom-labs/nexus/pull/233)) +- *(store)* [**breaking**] adopt ErrorId in StoreError, re-export bytes/futures_core::Stream, seal ProjectedIntents::IntoIter (#208, PR 2/4) ([#232](https://github.com/devrandom-labs/nexus/pull/232)) +- *(store)* [**breaking**] Repository::save takes &Events, not &[EventOf] ([#207](https://github.com/devrandom-labs/nexus/pull/207)) ([#230](https://github.com/devrandom-labs/nexus/pull/230)) +- *(store)* add frame-format-version byte to wire layout ([#205](https://github.com/devrandom-labs/nexus/pull/205)) ([#229](https://github.com/devrandom-labs/nexus/pull/229)) +- *(store)* default CBOR backup box (export/import Card 3, #145) ([#219](https://github.com/devrandom-labs/nexus/pull/219)) +- *(store)* export/import primitives — contract, raw export, EventImporter ([#145](https://github.com/devrandom-labs/nexus/pull/145)) ([#218](https://github.com/devrandom-labs/nexus/pull/218)) +- global $all subscription cursor (GlobalSeq-ordered, all-streams) ([#214](https://github.com/devrandom-labs/nexus/pull/214)) ([#216](https://github.com/devrandom-labs/nexus/pull/216)) +- *(store)* bounded saga repository (load → react → save → return intents) ([#202](https://github.com/devrandom-labs/nexus/pull/202)) ([#203](https://github.com/devrandom-labs/nexus/pull/203)) +- *(store)* add StoreError::is_conflict() retry predicate ([#129](https://github.com/devrandom-labs/nexus/pull/129)) ([#200](https://github.com/devrandom-labs/nexus/pull/200)) +- *(kernel)* aggregate given/when/then test fixture ([#126](https://github.com/devrandom-labs/nexus/pull/126)) ([#198](https://github.com/devrandom-labs/nexus/pull/198)) +- bound subscription/read batch size ([#176](https://github.com/devrandom-labs/nexus/pull/176)) ([#192](https://github.com/devrandom-labs/nexus/pull/192)) +- *(store, fjall)* [**breaking**] per-stream subscription wake registry ([#191](https://github.com/devrandom-labs/nexus/pull/191)) +- *(store, fjall)* SharedSubscription (Arc-based, 'static cursor) — PR1 of arc-subscription refactor ([#177](https://github.com/devrandom-labs/nexus/pull/177)) +- *(store)* futures::Stream bridge for owning-output lending streams ([#171](https://github.com/devrandom-labs/nexus/pull/171)) +- *(store, fjall, framework)* SnapshotStore + per-event GlobalSeq ([#168](https://github.com/devrandom-labs/nexus/pull/168)) +- *(store)* unified state persistence and projection rebuild ([#158](https://github.com/devrandom-labs/nexus/pull/158)) ([#163](https://github.com/devrandom-labs/nexus/pull/163)) +- *(store)* subscription-powered projection runner ([#157](https://github.com/devrandom-labs/nexus/pull/157)) ([#162](https://github.com/devrandom-labs/nexus/pull/162)) +- *(store)* projection core traits + runner design (#155, #157) ([#161](https://github.com/devrandom-labs/nexus/pull/161)) +- [**breaking**] subscriptions, allocation-free errors, EventStream API fix ([#150](https://github.com/devrandom-labs/nexus/pull/150)) +- aggregate snapshots for fast rehydration ([#123](https://github.com/devrandom-labs/nexus/pull/123)) ([#142](https://github.com/devrandom-labs/nexus/pull/142)) +- [**breaking**] fjall adapter, store refactoring, serde codecs, repository builder ([#138](https://github.com/devrandom-labs/nexus/pull/138)) +- *(store)* [**breaking**] event store with save atomicity, schema versioning, and structured errors ([#122](https://github.com/devrandom-labs/nexus/pull/122)) +- *(nexus)* added docs +- *(nexus)* removed tixlys related stuff +- *(tixlys)* added age-keygen sops + +### Fixed + +- *(store, fjall)* close wire/envelope schema_version asymmetry; harden decode ([#186](https://github.com/devrandom-labs/nexus/pull/186)) + +### Other + +- gate clippy on --all-targets and run snapshot tests ([#262](https://github.com/devrandom-labs/nexus/pull/262)) ([#272](https://github.com/devrandom-labs/nexus/pull/272)) +- *(store)* record GlobalSeq freeze decision — width u64, not a distributed clock ([#206](https://github.com/devrandom-labs/nexus/pull/206)) ([#228](https://github.com/devrandom-labs/nexus/pull/228)) +- pin stable toolchain via rust-toolchain.toml, declare MSRV ([#204](https://github.com/devrandom-labs/nexus/pull/204)) ([#226](https://github.com/devrandom-labs/nexus/pull/226)) +- extract subscription loop to nexus-store (zero-cost, no Box); unify fjall cursors ([#224](https://github.com/devrandom-labs/nexus/pull/224)) +- Closing the Books pattern guide + runnable contrast ([#139](https://github.com/devrandom-labs/nexus/pull/139)) ([#199](https://github.com/devrandom-labs/nexus/pull/199)) +- [**breaking**] retire nexus-framework; projection is primitives, the loop is the consumer's ([#193](https://github.com/devrandom-labs/nexus/pull/193)) +- *(store, fjall, framework)* [**breaking**] collapse Subscription trait pair to concrete struct ([#181](https://github.com/devrandom-labs/nexus/pull/181)) ([#190](https://github.com/devrandom-labs/nexus/pull/190)) +- *(store, fjall)* [**breaking**] shrink wire.rs to pure framing; SchemaVersion + PersistedEnvelope value accessors (PR3 of 3) ([#189](https://github.com/devrandom-labs/nexus/pull/189)) +- *(store)* [**breaking**] PendingEnvelope holds value newtypes; builder fallible (PR2 of 3) ([#188](https://github.com/devrandom-labs/nexus/pull/188)) +- *(store)* introduce value newtypes module (PR1 of 3) ([#187](https://github.com/devrandom-labs/nexus/pull/187)) +- PR3 of bytes-envelope refactor — README, rustdoc, CLAUDE.md ([#184](https://github.com/devrandom-labs/nexus/pull/184)) +- *(store, fjall, framework)* [**breaking**] stream + codec collapse + wire alignment — PR2 of bytes-envelope refactor ([#183](https://github.com/devrandom-labs/nexus/pull/183)) +- *(store,fjall)* [**breaking**] Bytes-based envelopes with Range offsets — PR1 of bytes-envelope refactor ([#182](https://github.com/devrandom-labs/nexus/pull/182)) +- *(store)* explain OwnedEventStream as the on-ramp to futures::Stream — PR4 of arc-subscription refactor ([#180](https://github.com/devrandom-labs/nexus/pull/180)) +- *(store, fjall, framework)* [**breaking**] delete borrowed Subscription; promote Arc-based shape — PR3 of arc-subscription refactor ([#179](https://github.com/devrandom-labs/nexus/pull/179)) +- *(store, macros)* [**breaking**] delete Upcaster trait; drop U generic; load_with + save_with for with-upcaster ergonomics ([#175](https://github.com/devrandom-labs/nexus/pull/175)) +- *(store)* [**breaking**] combinator-chain replay_from via map_err; Arc-own facade components; expose Store::raw ([#174](https://github.com/devrandom-labs/nexus/pull/174)) +- *(store, macros)* [**breaking**] slim Upcaster trait; macro gap-coverage check; drop UpcastError ([#173](https://github.com/devrandom-labs/nexus/pull/173)) +- *(store)* [**breaking**] delete decoder facade; load paths run inline upcast+decode ([#172](https://github.com/devrandom-labs/nexus/pull/172)) +- *(store)* generalize EventStream with Item<'a> GAT + lending combinators (Map/TryMap/TryScan) ([#170](https://github.com/devrandom-labs/nexus/pull/170)) +- *(store, framework)* split Codec into independent Encode/Decode/BorrowingDecode traits ([#169](https://github.com/devrandom-labs/nexus/pull/169)) +- enforce clippy across the whole workspace ([#167](https://github.com/devrandom-labs/nexus/pull/167)) +- *(store, framework)* interruptible async fold + collapsed projection runner ([#166](https://github.com/devrandom-labs/nexus/pull/166)) +- *(store)* exhaustive stream.rs coverage + reusable adapter conformance suite ([#165](https://github.com/devrandom-labs/nexus/pull/165)) +- apply Section 6 functional-first style across store and fjall ([#143](https://github.com/devrandom-labs/nexus/pull/143)) +- update README with kernel documentation and verification table +- *(docs)* updated readme +- *(tixlys)* removed the last section of readme +- *(auth)* added test for fallback and doc +- *(readme)* updates status badges +- *(readme)* updated the status badges +- added github status bar +- initial nix flake setup diff --git a/crates/nexus-wake-nostd/CHANGELOG.md b/crates/nexus-wake-nostd/CHANGELOG.md new file mode 100644 index 00000000..38237645 --- /dev/null +++ b/crates/nexus-wake-nostd/CHANGELOG.md @@ -0,0 +1,32 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [0.1.0](https://github.com/devrandom-labs/nexus/releases/tag/nexus-wake-nostd-v0.1.0) - 2026-07-10 + +### Added + +- *(wake-nostd)* no_std WakeSource bridge — GlobalWake ([#302](https://github.com/devrandom-labs/nexus/pull/302)) ([#308](https://github.com/devrandom-labs/nexus/pull/308)) +- *(store)* projection core traits + runner design (#155, #157) ([#161](https://github.com/devrandom-labs/nexus/pull/161)) +- *(store)* [**breaking**] event store with save atomicity, schema versioning, and structured errors ([#122](https://github.com/devrandom-labs/nexus/pull/122)) +- *(nexus)* added docs +- *(nexus)* removed tixlys related stuff +- *(tixlys)* added age-keygen sops + +### Other + +- [**breaking**] retire nexus-framework; projection is primitives, the loop is the consumer's ([#193](https://github.com/devrandom-labs/nexus/pull/193)) +- PR3 of bytes-envelope refactor — README, rustdoc, CLAUDE.md ([#184](https://github.com/devrandom-labs/nexus/pull/184)) +- update README with kernel documentation and verification table +- *(docs)* updated readme +- *(tixlys)* removed the last section of readme +- *(auth)* added test for fallback and doc +- *(readme)* updates status badges +- *(readme)* updated the status badges +- added github status bar +- initial nix flake setup diff --git a/crates/nexus-wake/CHANGELOG.md b/crates/nexus-wake/CHANGELOG.md new file mode 100644 index 00000000..f2d579db --- /dev/null +++ b/crates/nexus-wake/CHANGELOG.md @@ -0,0 +1,32 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [0.1.0](https://github.com/devrandom-labs/nexus/releases/tag/nexus-wake-v0.1.0) - 2026-07-10 + +### Added + +- *(store)* [**breaking**] extract nexus-wake + nexus-inmemory — tokio out of nexus-store ([#300](https://github.com/devrandom-labs/nexus/pull/300)) ([#306](https://github.com/devrandom-labs/nexus/pull/306)) +- *(store)* projection core traits + runner design (#155, #157) ([#161](https://github.com/devrandom-labs/nexus/pull/161)) +- *(store)* [**breaking**] event store with save atomicity, schema versioning, and structured errors ([#122](https://github.com/devrandom-labs/nexus/pull/122)) +- *(nexus)* added docs +- *(nexus)* removed tixlys related stuff +- *(tixlys)* added age-keygen sops + +### Other + +- [**breaking**] retire nexus-framework; projection is primitives, the loop is the consumer's ([#193](https://github.com/devrandom-labs/nexus/pull/193)) +- PR3 of bytes-envelope refactor — README, rustdoc, CLAUDE.md ([#184](https://github.com/devrandom-labs/nexus/pull/184)) +- update README with kernel documentation and verification table +- *(docs)* updated readme +- *(tixlys)* removed the last section of readme +- *(auth)* added test for fallback and doc +- *(readme)* updates status badges +- *(readme)* updated the status badges +- added github status bar +- initial nix flake setup diff --git a/crates/nexus/CHANGELOG.md b/crates/nexus/CHANGELOG.md new file mode 100644 index 00000000..94391656 --- /dev/null +++ b/crates/nexus/CHANGELOG.md @@ -0,0 +1,341 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [0.1.0](https://github.com/devrandom-labs/nexus/compare/nexus-v0.0.1...nexus-v0.1.0) - 2026-07-10 + +### Added + +- *(nexus)* [**breaking**] port kernel to no_std (core+alloc) ([#279](https://github.com/devrandom-labs/nexus/pull/279)) ([#303](https://github.com/devrandom-labs/nexus/pull/303)) +- *(kernel)* version! literal + Version::run ([#253](https://github.com/devrandom-labs/nexus/pull/253)) ([#275](https://github.com/devrandom-labs/nexus/pull/275)) +- *(kernel)* [**breaking**] blanket Id impl, drop the never-read BYTE_LEN const ([#252](https://github.com/devrandom-labs/nexus/pull/252)) ([#273](https://github.com/devrandom-labs/nexus/pull/273)) +- *(kernel)* [**breaking**] fold post-persist mutators into commit_persisted, de-hide driver seam ([#212](https://github.com/devrandom-labs/nexus/pull/212)) ([#237](https://github.com/devrandom-labs/nexus/pull/237)) +- *(kernel)* [**breaking**] Id::to_label returns ErrorId, seal arrayvec from public API (#208, PR 4/4) ([#234](https://github.com/devrandom-labs/nexus/pull/234)) +- *(fjall)* [**breaking**] adopt ErrorId in FjallError + AppendError, drop store transitional conversion (#208, PR 3/4) ([#233](https://github.com/devrandom-labs/nexus/pull/233)) +- *(kernel)* seal arrayvec from public API — ErrorId + EventsIntoIter (#208, PR 1/4) ([#231](https://github.com/devrandom-labs/nexus/pull/231)) +- *(kernel)* saga / process-manager primitive + SagaFixture ([#127](https://github.com/devrandom-labs/nexus/pull/127)) ([#201](https://github.com/devrandom-labs/nexus/pull/201)) +- *(kernel)* aggregate given/when/then test fixture ([#126](https://github.com/devrandom-labs/nexus/pull/126)) ([#198](https://github.com/devrandom-labs/nexus/pull/198)) +- *(store)* projection core traits + runner design (#155, #157) ([#161](https://github.com/devrandom-labs/nexus/pull/161)) +- [**breaking**] subscriptions, allocation-free errors, EventStream API fix ([#150](https://github.com/devrandom-labs/nexus/pull/150)) +- aggregate snapshots for fast rehydration ([#123](https://github.com/devrandom-labs/nexus/pull/123)) ([#142](https://github.com/devrandom-labs/nexus/pull/142)) +- [**breaking**] fjall adapter, store refactoring, serde codecs, repository builder ([#138](https://github.com/devrandom-labs/nexus/pull/138)) +- *(store)* [**breaking**] event store with save atomicity, schema versioning, and structured errors ([#122](https://github.com/devrandom-labs/nexus/pull/122)) +- *(kernel)* M3 — conditional Clone and PartialEq for AggregateRoot +- *(macros)* add #[nexus::aggregate] attribute macro +- add AggregateEntity trait for newtype aggregate pattern +- flatten nexus crate — kernel becomes top-level, remove old modules +- *(kernel)* add debug_assert! contract invariants to AggregateRoot +- *(kernel)* add events![] macro for non-empty event collections +- *(kernel)* add AggregateRoot with apply_event, load_from_events, take_uncommitted_events +- *(kernel)* add VersionedEvent and non-empty Events collection +- *(kernel)* add Id, Message, DomainEvent, AggregateState, Aggregate traits +- *(kernel)* add KernelError with VersionMismatch variant +- *(kernel)* add Version newtype with INITIAL, next(), Display +- *(kernel)* scaffold empty kernel module structure +- *(nexus)* added handler +- *(nexus)* addd name for command and queries +- *(nexus)* added versioning in execute handle +- *(nexus)* added streamable rehydration +- *(nexus)* added snapshot stream and apply +- *(nexus)* error check in history load +- *(nexus)* added stream_name in pending event +- *(nexus)* added event streamer trait +- *(rusqlite)* added sequence check for events +- *(nexus)* introduced boxed events +- *(nexus)* validation in pending event builder +- *(nexus)* added payload testing +- *(helpers)* added prop test strategy module +- *(nexus)* added faker for metadata +- *(nexus)* added fake uuid for event_id +- *(nexus)* added fake nexusId +- *(nexus)* added downcast-sync for message +- *(nexus)* made builder take serializeable event +- *(nexus)* added small vec instead of events +- *(nexus)* added custom result type +- *(nexus)* added sqlite constraint error +- *(nexus)* added serializer and deserialize +- *(nexus)* made id trait more stricter +- *(nexus)* added len for events +- *(nexus)* added events intoiter +- *(nexus)* added from for a single domain event +- *(nexus)* added copy trait to nexus_id +- *(nexus)* nexusid for aggregates and imp +- *(nexus)* added name field for domain event +- *(macros)* added aggregate macro +- *(macros)* added message macro +- *(rusqlite)* added read stream event fn +- *(nexus)* added event record response +- *(rusqlite)* storing records +- *(rusqlite)* added version check +- *(todo)* added refinery for migrations +- *(nexus)* correlation_id and stream_id are arc +- *(nexus)* added event metadata +- *(nexus)* added typed metadata +- *(nexus)* record builder takes metadata +- *(nexus)* introduced StreamId for events +- *(nexus)* added store error enum +- *(nexus)* streamable event store read +- *(nexus)* global error with store error +- *(nexus)* added async_trait for clearity +- *(nexus)* added event type to event record +- *(nexus)* added store desrializer trait +- *(nexus)* added event serializer trait +- *(nexus)* added event store trait +- *(nexus)* boxerror returned from serializer +- *(nexus)* even record with serialization +- *(nexus)* added event record with version +- *(nexus)* added lowlevel event record +- *(store)* added event records and source +- *(nexus)* added events! macro +- *(nexus)* repository now has static methods +- *(nexus)* NonEmptyEvent for every command +- *(nexus)* added smallvec and contraints +- *(nexus)* added repo and shared services +- *(nexus)* query fn for query dispatcher +- *(nexus)* added build for query dispatcher bldr +- *(nexus)* added register service feature +- *(nexus)* added dispatch query handler +- *(nexus)* added erased query handler trait +- *(nexus)* added query handler adapter +- added traits for cesr +- *(nexus)* added read model and repository +- *(nexus)* added query mod files +- *(nexus)* added persistence and invoke handle +- *(nexus)* added load service +- *(nexus)* added load service impl skeleton +- *(nexus)* added repository save function +- *(nexus)* added respositor error +- *(nexus)* added repository trait +- *(nexus)* added aggregate id validation +- *(nexus)* command handler is stronger with AT +- *(nexus)* added command handler response +- *(nexus)* made aggregate command handler async +- *(nexus)* added aggregate traits and struct +- *(nexus)* added base traits +- *(nexus)* added domain event and dispatcher mod +- *(nexus)* added domain event trait +- *(tixlys)* meow_diator + cqrs = nexus + +### Fixed + +- *(ci)* resolve elite clippy errors for CI +- *(ci)* regenerate workspace-hack + add pre-commit hook +- *(kernel)* M2 — replace Default with AggregateState::initial() +- *(kernel)* M5 — cap size_hint reservation to MAX_UNCOMMITTED +- *(kernel)* H5 — event recorded before state mutation (panic-safe) +- *(kernel)* H2 — zero-alloc error paths with stack-based ErrorId +- *(kernel)* H1 — bounded rehydration with MAX_REHYDRATION_EVENTS +- *(kernel)* add bounded uncommitted events (C3) + security tests +- *(kernel)* prevent version overflow + add security test suite +- pass nix flake check — elite clippy, audit ignore, trybuild refresh +- *(kernel)* pass elite clippy with all+pedantic+nursery deny +- *(kernel)* advance version on take_uncommitted_events + add edge case tests +- *(nexus)* fixed test cases and clippy problems +- *(rusqlite)* fixed stream_name inclusion +- *(rusqlite)* fixed data integrity check +- *(nexus)* fixed scripts and serde issue +- *(rusqlite)* updated conflict error +- *(rusqlite)* expected version check +- *(rusqlte)* checking stream_id as uuid +- *(nexus)* fixed pending event builder error +- *(nexus)* fixed events iterator problems +- *(nexus)* fixed even builder +- *(nexus)* removed mismatch, didnt make sense +- *(nexus)* removed integrity check +- *(tixlys)* fixed schema migration for nix +- *(macros)* fixed paths after macro addition +- *(nexus)* updated event store trait +- *(nexus)* fixed file problem and deps upgrade +- *(nexus)* concurrency check on append_events +- *(nexus)* fixed declartive macro +- *(nexus)* made history ref type +- *(nexus)* removed hash +- *(nexus)* unwanted char +- *(nexus)* formatting in docs +- *(nexus)* fixed handler register bug +- *(nexus)* fixed module name for persistence +- *(nexus)* fixed clippy warning +- *(nexus)* type aliased for complex types + +### Other + +- *(nexus)* migrate hand-rolled decide/react tests onto the fixtures ([#238](https://github.com/devrandom-labs/nexus/pull/238)) ([#299](https://github.com/devrandom-labs/nexus/pull/299)) +- pin stable toolchain via rust-toolchain.toml, declare MSRV ([#204](https://github.com/devrandom-labs/nexus/pull/204)) ([#226](https://github.com/devrandom-labs/nexus/pull/226)) +- Closing the Books pattern guide + runnable contrast ([#139](https://github.com/devrandom-labs/nexus/pull/139)) ([#199](https://github.com/devrandom-labs/nexus/pull/199)) +- fix formatting from sed-inserted initial() methods +- update deps, README, release-plz, fix flake (WIP) +- add release-plz for automated crate publishing +- update README with kernel documentation and verification table +- *(kernel)* add architecture test verifying kernel layer isolation +- *(kernel)* add doc comments with runnable examples +- *(kernel)* eliminate redundant current_version() calls, pre-allocate SmallVec +- *(kernel)* add criterion benchmarks for kernel hot paths +- *(kernel)* verify version increments by exactly 1 with many uncommitted +- *(kernel)* verify zero undefined behavior with Miri +- *(kernel)* add trybuild compile-failure tests proving type safety +- *(kernel)* restrict Version construction, remove From +- *(kernel)* encapsulate VersionedEvent fields +- *(kernel)* remove Clone from VersionedEvent, fix property tests +- *(kernel)* add proptest property-based tests for algebraic invariants +- *(kernel)* add static_assertions for compile-time trait and size invariants +- *(kernel)* apply rustfmt to test files +- *(kernel)* add full integration test for kernel user experience +- *(nexus)* refactored execute method +- *(rusqlite)* conflict prop test +- *(helpers)* added size for arbitrary sequence +- *(tixlys)* updated cargo deps +- *(nexus)* deleted tests +- *(helpers)* added user domain events +- *(nexus)* removed aggregate type +- *(nexus)* clippy fixes +- *(nexus)* clippy lint fixes +- *(nexus)* fixed query handler test +- *(nexus)* fixed command handler test +- *(nexus)* fixed aggregate tests +- *(nexus)* changed mock tests +- *(nexus)* updated test cases and macros +- *(nexus)* fixing tests +- *(nexus)* updated builder +- *(nexus)* removed docs for a while +- *(nexus)* removed id from domain events +- *(nexus)* updated the tests +- *(nexus)* fixing refactored tests +- *(nexus)* added store mod +- *(nexus)* added async_trait for repo +- *(nexus)* added async_trait to read +- *(nexus)* added async_trait in handlers +- *(nexus)* updated integrations tests +- *(nexus)* moved read side to test common +- *(nexus)* refactoring to integration test +- *(nexus)* refactored modules +- *(nexus)* cleaned store functionality +- *(nexus)* identity module for identity shit +- *(nexus)* folder structure +- *(rusqlite)* basic testing in rusqlite +- *(nexus)* checking read side +- *(nexus)* changed build to serialize +- *(rusqlite)* added test for append +- *(nexus)* fixed clippy warnings +- *(tixlys)* removed v4 of uuid +- *(todo)* added test skeleton +- *(nexus)* refactored store module +- *(nexus)* created a mod for event_records +- *(todo)* EventStore impl for todo store +- *(nexus)* passing stream_id by value to ES +- *(nexus)* added documentation for root error +- *(nexus)* heirarchical layered error +- *(nexus)* centralized serde errors +- *(nexus)* added tokio_stream +- *(nexus)* core module for core traits +- *(nexus)* cleaned up event record builder +- *(nexus)* added test module for store +- *(nexus)* updated trait fn name +- *(nexus)* added event record with version +- *(nexus)* added event record builder +- *(nexus)* removed ulid +- *(nexus)* added events and store module +- *(auth)* added rusqlite for store +- *(nexus)* removed double generic for Events +- *(nexus)* renamed NonEmptyEvents to Events +- *(nexus)* fixed clippy error +- *(nexus)* added clone for QueryHandler +- *(tixlys)* updated infra qemu settings +- *(nexus)* added dyn service for query +- *(nexus)* added extra tests for command handler +- *(nexus)* added failure feature for query +- *(nexus)* added query handler test +- *(nexus)* added get user repository +- *(nexus)* added read model +- *(nexus)* removed unwanted char +- *(nexus)* added test module +- *(nexus)* added remaining tests +- *(nexus)* fixed clippy errors +- *(nexus)* added mock repository error type +- *(nexus)* fixed clippy warnings +- *(nexus)* replaced get_events with mock data +- *(nexus)* added mock data & mismatch test +- *(nexus)* added conflict test +- *(nexus)* added load aggregate default state +- *(nexus)* save aggregate in repo +- *(nexus)* added aggregate not found error +- *(nexus)* repository new fn +- *(nexus)* optimized mock repo +- *(nexus)* fixed save fn for repo +- *(nexus)* optimized id cloning in repo +- *(nexus)* added save feature for in memory repo +- *(nexus)* refactored mock test +- *(nexus)* added test skeleton +- *(nexus)* updated mockusereventsourcerepo +- *(nexus)* added skeleton for repository +- *(tixlys)* updated cargo lock +- *(nexus)* added dyn service test for handler +- *(nexus)* added state service outcome +- *(nexus)* enhances test 1 for handler +- *(nexus)* trimmed test cases for handler +- *(tixlys)* fixed clippy errors +- *(nexus)* added state check test in handler +- *(tixlys)* updated the flake lock +- *(nexus)* added test skeleton for handlers +- *(nexus)* added service test case +- *(nexus)* sequential command execution +- *(nexus)* added empty event command handler +- *(nexus)* added current version revert +- *(nexus)* added current version test +- *(nexus)* changed the test cases name +- *(nexus)* added empty event check test +- *(nexus)* added unordered events test +- *(nexus)* empty events added to user +- *(nexus)* refactored test module +- *(nexus)* added docs for core types +- *(nexus)* added docs for command and query +- *(nexus)* fix formatting in docs +- *(nexus)* for aggregate traits and structs +- *(nexus)* domain events are partialeq +- *(nexus)* id is a separate trait +- *(nexus)* docs for aggregate type +- *(nexus)* aggregate state docs +- *(nexus)* swapped state traits with event +- *(nexus)* updated command mod doc +- *(nexus)* added crate level documents +- *(tixlys)* updated nexus todo +- *(nexus)* removed dispatcher and pipeline +- *(nexus)* added pipeline factory types +- *(nexus)* moved erased types outside +- *(nexus)* added command dispatcher builder +- *(nexus)* added command side dispatcer mod +- *(nexus)* added todos and removed error +- *(nexus)* added proper error for builder +- *(nexus)* returning error types +- *(nexus)* added dispatcher error +- *(nexus)* added query dispatcher module +- *(nexus)* added read mode comment +- *(nexus)* refactored the dirs +- *(nexus)* refactored persist.rs +- *(nexus)* added execute and persist modules +- *(nexus)* removed dispatcher code +- *(nexus)* polished the load test case +- *(nexus)* added aggregate not found test +- *(nexus)* load service success test +- *(nexus)* added mock repository with load +- *(nexus)* load service is always ready to run +- *(nexus)* made associated type names readable +- *(nexus)* completed aggregate root +- *(nexus)* command handler tests +- *(nexus)* added tokio command handler test +- *(nexus)* added handler code in test +- *(nexus)* removed type aliases, inderections.. +- *(nexus)* aggregate load from history +- *(nexus)* extracted functions to be reused +- *(nexus)* sharing setup structs +- *(nexus)* idempotent test for handler +- *(nexus)* apply order on state +- *(nexus)* state default +- *(nexus)* added readme file +- *(nexus)* wrote test boilerplate +- *(nexus)* basic aggregate root +- *(tixlys)* added nexus removed cqrs/meow