Skip to content

Commit 86c8342

Browse files
authored
chore: prepare v0.5.0 release (#76)
* chore: prepare v0.5.0 release ## Version bumps - aimdb-core: 0.4.0 → 0.5.0 - aimdb-tokio-adapter: 0.4.0 → 0.5.0 - aimdb-embassy-adapter: 0.4.0 → 0.5.0 - aimdb-client: 0.4.0 → 0.5.0 - aimdb-sync: 0.4.0 → 0.5.0 - aimdb-mqtt-connector: 0.4.0 → 0.5.0 - aimdb-knx-connector: 0.2.0 → 0.3.0 - aimdb-cli: 0.4.0 → 0.5.0 - aimdb-mcp: 0.4.0 → 0.5.0 - workspace: 0.3.0 → 0.5.0 ## New features in this release - Transform API (Design 020): reactive single/multi-input data transforms - Graph Introspection API (Design 021): dependency graph visualization - Record Drain API (Design 019): non-blocking batch history access - Persistence layer: aimdb-persistence + aimdb-persistence-sqlite (v0.1.0) - Dynamic topic/destination routing (Design 018) for MQTT and KNX - Graph commands in aimdb-cli (nodes, edges, order, dot export) - Graph introspection tools in aimdb-mcp (graph_nodes, graph_edges, graph_topo_order) - Drain tool in aimdb-mcp replacing subscription system ## Breaking changes - aimdb-core: RecordId constructor now requires RecordOrigin parameter - aimdb-core: .with_serialization() renamed to .with_remote_access() - aimdb-core: set_from_json rejects writes on records with active transforms - aimdb-mcp: subscription tools removed in favour of drain_record * fix: remove aimdb-data-contracts version entry from changelog
1 parent f4b54a5 commit 86c8342

24 files changed

Lines changed: 534 additions & 66 deletions

File tree

CHANGELOG.md

Lines changed: 74 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,85 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1515
> - [aimdb-knx-connector/CHANGELOG.md](aimdb-knx-connector/CHANGELOG.md)
1616
> - [aimdb-sync/CHANGELOG.md](aimdb-sync/CHANGELOG.md)
1717
> - [aimdb-client/CHANGELOG.md](aimdb-client/CHANGELOG.md)
18+
> - [aimdb-persistence/CHANGELOG.md](aimdb-persistence/CHANGELOG.md)
19+
> - [aimdb-persistence-sqlite/CHANGELOG.md](aimdb-persistence-sqlite/CHANGELOG.md)
1820
> - [tools/aimdb-cli/CHANGELOG.md](tools/aimdb-cli/CHANGELOG.md)
1921
> - [tools/aimdb-mcp/CHANGELOG.md](tools/aimdb-mcp/CHANGELOG.md)
2022
2123
## [Unreleased]
2224

2325
No changes yet.
2426

27+
## [0.5.0] - 2026-02-21
28+
29+
### Added
30+
31+
- **aimdb-persistence**: New crate providing a pluggable persistence layer for long-term record history
32+
- `PersistenceBackend` trait with `store`, `query`, `cleanup`, and `initialize` hooks
33+
- `AimDbBuilderPersistExt` trait adding `.with_persistence(backend, retention)` to `AimDbBuilder<R>`
34+
- `RecordRegistrarPersistExt` trait adding `.persist(record_name)` to `RecordRegistrar<T, R>`
35+
- `AimDbQueryExt` trait with `query_latest`, `query_range`, and `query_raw` methods
36+
- Automatic 24-hour retention cleanup task registration
37+
- **aimdb-persistence-sqlite**: New crate providing a SQLite backend for `aimdb-persistence`
38+
- `SqliteBackend` with WAL journal mode, actor-model command dispatch, and window-function queries
39+
- Pattern-based queries with `*` wildcard support and optional time/row-count limits
40+
- Dedicated OS writer thread; `Clone` = `O(1)` handle copy
41+
- **aimdb-data-contracts**: New crate for portable, versioned AimDB data schemas
42+
- Optional features: `observable`, `simulatable`, `migratable`, `ts` (TypeScript bindings via `ts-rs`)
43+
- Schema versioning and migration support
44+
- **Transform API (Design 020)** in `aimdb-core`: Reactive data transformations between records
45+
- `transform_raw()` for single-input derivations and `transform_join_raw()` for multi-input joins
46+
- `TransformBuilder` and `JoinBuilder` fluent APIs with optional stateful handlers
47+
- Transforms spawned as tasks during `AimDb::build()`; mutual exclusion with `.source()` enforced
48+
- **Graph Introspection API (Design 021)** in `aimdb-core` and `aimdb-client`:
49+
- `RecordOrigin` enum classifying record sources (`Source`, `Link`, `Transform`, `TransformJoin`, `Passive`)
50+
- `GraphNode`, `GraphEdge`, `DependencyGraph` types for full graph representation
51+
- `graph_nodes()`, `graph_edges()`, `graph_topo_order()` methods on `AimDb` and `AimDbClient`
52+
- **Record Drain API (Design 019)** in `aimdb-core`, `aimdb-tokio-adapter`, and `aimdb-client`:
53+
- `try_recv()` on `BufferReader` for non-blocking batch pulls
54+
- `record.drain` AimX protocol method with cold-start semantics and optional limit
55+
- `DrainResponse` type in `aimdb-client`
56+
- **Dynamic Topic/Address Routing (Design 018)** in `aimdb-core`, `aimdb-mqtt-connector`, `aimdb-knx-connector`:
57+
- `TopicProvider<T>` trait for per-message outbound topic/address determination
58+
- `TopicResolverFn` for late-binding inbound topic resolution at connector startup
59+
- `with_topic_provider()` and `with_topic_resolver()` builder methods on connector links
60+
- **Graph Tools** in `tools/aimdb-mcp`:
61+
- `graph_nodes`, `graph_edges`, `graph_topo_order` MCP tools for LLM-powered graph exploration
62+
- `drain_record` MCP tool for batch history access with persistent cold-start reader
63+
- **Graph Commands** in `tools/aimdb-cli`:
64+
- `aimdb graph nodes`, `graph edges`, `graph order`, `graph dot` subcommands
65+
- Color-coded output and DOT format export for Graphviz visualization
66+
- **Extension Macro** in `aimdb-core`: `impl_record_registrar_ext!` for generating runtime adapter extension traits
67+
68+
### Changed
69+
70+
- **aimdb-core**: Renamed `.with_serialization()` to `.with_remote_access()` for clearer semantics (breaking)
71+
- **aimdb-core**: `RecordId::new()` now requires a `RecordOrigin` parameter for dependency graph support (breaking)
72+
- **aimdb-core**: `set_from_json` now also rejects writes on records with active transforms
73+
- **aimdb-core**: `collect_outbound_routes()` returns `OutboundRoute` tuples with optional `TopicProviderFn`
74+
- **aimdb-core**: `collect_inbound_routes()` calls `link.resolve_topic()` for dynamic topic resolution
75+
- **tools/aimdb-mcp**: Replaced real-time subscription system with simpler drain-based polling
76+
- Removed `subscribe_record`, `unsubscribe_record`, `list_subscriptions`, `get_notification_directory` tools
77+
- Simplified architecture reduces infrastructure complexity for LLM clients
78+
79+
### Published Crates
80+
81+
| Crate | Previous | New |
82+
|-------|----------|-----|
83+
| `aimdb-core` | 0.4.0 | **0.5.0** |
84+
| `aimdb-tokio-adapter` | 0.4.0 | **0.5.0** |
85+
| `aimdb-embassy-adapter` | 0.4.0 | **0.5.0** |
86+
| `aimdb-client` | 0.4.0 | **0.5.0** |
87+
| `aimdb-sync` | 0.4.0 | **0.5.0** |
88+
| `aimdb-mqtt-connector` | 0.4.0 | **0.5.0** |
89+
| `aimdb-knx-connector` | 0.2.0 | **0.3.0** |
90+
| `aimdb-cli` | 0.4.0 | **0.5.0** |
91+
| `aimdb-mcp` | 0.4.0 | **0.5.0** |
92+
| `aimdb-persistence` || **0.1.0** (new) |
93+
| `aimdb-persistence-sqlite` || **0.1.0** (new) |
94+
| `aimdb-derive` | 0.1.0 | unchanged |
95+
| `aimdb-executor` | 0.1.0 | unchanged |
96+
2597
## [0.4.0] - 2025-12-25
2698

2799
### Added
@@ -469,7 +541,8 @@ https://github.com/aimdb-dev/aimdb
469541

470542
---
471543

472-
[Unreleased]: https://github.com/aimdb-dev/aimdb/compare/v0.4.0...HEAD
544+
[Unreleased]: https://github.com/aimdb-dev/aimdb/compare/v0.5.0...HEAD
545+
[0.5.0]: https://github.com/aimdb-dev/aimdb/compare/v0.4.0...v0.5.0
473546
[0.4.0]: https://github.com/aimdb-dev/aimdb/compare/v0.3.0...v0.4.0
474547
[0.3.0]: https://github.com/aimdb-dev/aimdb/compare/v0.2.0...v0.3.0
475548
[0.2.0]: https://github.com/aimdb-dev/aimdb/compare/v0.1.0...v0.2.0

Cargo.lock

Lines changed: 13 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ resolver = "2"
3434
default-members = ["aimdb-core"]
3535

3636
[workspace.package]
37-
version = "0.3.0"
37+
version = "0.5.0"
3838
edition = "2021"
3939
authors = ["AimDB Team <team@aimdb.dev>"]
4040
license = "Apache-2.0"

Makefile

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -294,47 +294,55 @@ publish:
294294
else \
295295
printf "$(BLUE)Running in CI mode - skipping confirmation$(NC)\n"; \
296296
fi
297-
@printf "$(YELLOW) → Publishing aimdb-executor (1/11)$(NC)\n"
297+
@printf "$(YELLOW) → Publishing aimdb-executor (1/13)$(NC)\n"
298298
@cargo publish -p aimdb-executor
299299
@printf "$(YELLOW) → Waiting 10s for crates.io propagation...$(NC)\n"
300300
@sleep 10
301-
@printf "$(YELLOW) → Publishing aimdb-derive (2/11)$(NC)\n"
301+
@printf "$(YELLOW) → Publishing aimdb-derive (2/13)$(NC)\n"
302302
@cargo publish -p aimdb-derive
303303
@printf "$(YELLOW) → Waiting 10s for crates.io propagation...$(NC)\n"
304304
@sleep 10
305-
@printf "$(YELLOW) → Publishing aimdb-core (3/11)$(NC)\n"
305+
@printf "$(YELLOW) → Publishing aimdb-core (3/13)$(NC)\n"
306306
@cargo publish -p aimdb-core
307307
@printf "$(YELLOW) → Waiting 10s for crates.io propagation...$(NC)\n"
308308
@sleep 10
309-
@printf "$(YELLOW) → Publishing aimdb-tokio-adapter (4/11)$(NC)\n"
309+
@printf "$(YELLOW) → Publishing aimdb-tokio-adapter (4/13)$(NC)\n"
310310
@cargo publish -p aimdb-tokio-adapter
311311
@printf "$(YELLOW) → Waiting 10s for crates.io propagation...$(NC)\n"
312312
@sleep 10
313-
@printf "$(YELLOW) → Publishing aimdb-embassy-adapter (5/11)$(NC)\n"
313+
@printf "$(YELLOW) → Publishing aimdb-embassy-adapter (5/13)$(NC)\n"
314314
@cargo publish -p aimdb-embassy-adapter --no-verify
315315
@printf "$(YELLOW) → Waiting 10s for crates.io propagation...$(NC)\n"
316316
@sleep 10
317-
@printf "$(YELLOW) → Publishing aimdb-client (6/11)$(NC)\n"
317+
@printf "$(YELLOW) → Publishing aimdb-client (6/13)$(NC)\n"
318318
@cargo publish -p aimdb-client
319319
@printf "$(YELLOW) → Waiting 10s for crates.io propagation...$(NC)\n"
320320
@sleep 10
321-
@printf "$(YELLOW) → Publishing aimdb-sync (7/11)$(NC)\n"
321+
@printf "$(YELLOW) → Publishing aimdb-sync (7/13)$(NC)\n"
322322
@cargo publish -p aimdb-sync
323323
@printf "$(YELLOW) → Waiting 10s for crates.io propagation...$(NC)\n"
324324
@sleep 10
325-
@printf "$(YELLOW) → Publishing aimdb-mqtt-connector (8/11)$(NC)\n"
325+
@printf "$(YELLOW) → Publishing aimdb-persistence (8/13)$(NC)\n"
326+
@cargo publish -p aimdb-persistence
327+
@printf "$(YELLOW) → Waiting 10s for crates.io propagation...$(NC)\n"
328+
@sleep 10
329+
@printf "$(YELLOW) → Publishing aimdb-persistence-sqlite (9/13)$(NC)\n"
330+
@cargo publish -p aimdb-persistence-sqlite
331+
@printf "$(YELLOW) → Waiting 10s for crates.io propagation...$(NC)\n"
332+
@sleep 10
333+
@printf "$(YELLOW) → Publishing aimdb-mqtt-connector (10/13)$(NC)\n"
326334
@cargo publish -p aimdb-mqtt-connector
327335
@printf "$(YELLOW) → Waiting 10s for crates.io propagation...$(NC)\n"
328336
@sleep 10
329-
@printf "$(YELLOW) → Publishing aimdb-knx-connector (9/11)$(NC)\n"
337+
@printf "$(YELLOW) → Publishing aimdb-knx-connector (11/13)$(NC)\n"
330338
@cargo publish -p aimdb-knx-connector
331339
@printf "$(YELLOW) → Waiting 10s for crates.io propagation...$(NC)\n"
332340
@sleep 10
333-
@printf "$(YELLOW) → Publishing aimdb-cli (10/11)$(NC)\n"
341+
@printf "$(YELLOW) → Publishing aimdb-cli (12/13)$(NC)\n"
334342
@cargo publish -p aimdb-cli
335343
@printf "$(YELLOW) → Waiting 10s for crates.io propagation...$(NC)\n"
336344
@sleep 10
337-
@printf "$(YELLOW) → Publishing aimdb-mcp (11/11)$(NC)\n"
345+
@printf "$(YELLOW) → Publishing aimdb-mcp (13/13)$(NC)\n"
338346
@cargo publish -p aimdb-mcp
339347
@printf "$(GREEN)✓ All crates published successfully!$(NC)\n"
340348
@printf "$(BLUE)🎉 AimDB v$(shell grep '^version' Cargo.toml | head -1 | cut -d '"' -f 2) is now live on crates.io!$(NC)\n"

aimdb-client/CHANGELOG.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
No changes yet.
11+
12+
## [0.5.0] - 2026-02-21
13+
1014
### Added
1115

1216
- **Record Drain API**: New methods for batch history access
@@ -57,7 +61,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
5761

5862
---
5963

60-
[Unreleased]: https://github.com/aimdb-dev/aimdb/compare/v0.4.0...HEAD
64+
[Unreleased]: https://github.com/aimdb-dev/aimdb/compare/v0.5.0...HEAD
65+
[0.5.0]: https://github.com/aimdb-dev/aimdb/compare/v0.4.0...v0.5.0
6166
[0.4.0]: https://github.com/aimdb-dev/aimdb/compare/v0.3.0...v0.4.0
6267
[0.3.0]: https://github.com/aimdb-dev/aimdb/compare/v0.2.0...v0.3.0
6368
[0.2.0]: https://github.com/aimdb-dev/aimdb/compare/v0.1.0...v0.2.0

aimdb-client/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "aimdb-client"
3-
version = "0.4.0"
3+
version = "0.5.0"
44
edition = "2021"
55
license.workspace = true
66
repository.workspace = true
@@ -11,7 +11,7 @@ categories = ["database", "network-programming"]
1111

1212
[dependencies]
1313
# Core dependencies - protocol types from aimdb-core
14-
aimdb-core = { version = "0.4.0", path = "../aimdb-core", features = ["std"] }
14+
aimdb-core = { version = "0.5.0", path = "../aimdb-core", features = ["std"] }
1515

1616
# Serialization
1717
serde = { version = "1", features = ["derive"] }

aimdb-core/CHANGELOG.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
No changes yet.
11+
12+
## [0.5.0] - 2026-02-21
13+
1014
### Added
1115

1216
- **Transform API (Design 020)**: Reactive data transformations between records
@@ -35,13 +39,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3539
- Supports `SpmcRing` (full history), `SingleLatest` (at most 1), `Mailbox` (at most 1)
3640
- Handler maintains per-connection drain readers via `ConnectionState`
3741
- **Extension Macro**: `impl_record_registrar_ext!` macro in `ext_macros.rs` for generating runtime adapter extension traits
38-
39-
### Changed
40-
41-
- **Renamed `.with_serialization()` to `.with_remote_access()`**: Clearer naming for JSON serialization configuration
42-
- **`RecordId` constructor**: Now requires `RecordOrigin` parameter for dependency graph support
43-
- **`set_from_json` protection**: Now also rejects writes on records with active transforms (in addition to sources)
44-
4542
- **Dynamic Topic/Destination Routing (Design 018)**: Complete support for dynamic topic resolution
4643
- **Outbound (`TopicProvider` trait)**: Dynamically determine MQTT topics or KNX group addresses based on data being published
4744
- New `TopicProvider<T>` trait for type-safe topic determination
@@ -63,6 +60,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6360

6461
### Changed
6562

63+
- **Renamed `.with_serialization()` to `.with_remote_access()`**: Clearer naming for JSON serialization configuration
64+
- **`RecordId` constructor**: Now requires `RecordOrigin` parameter for dependency graph support
65+
- **`set_from_json` protection**: Now also rejects writes on records with active transforms (in addition to sources)
6666
- **Outbound Route Collection**: `collect_outbound_routes()` now returns `OutboundRoute` tuples with optional `TopicProviderFn`
6767
- **Inbound Topic Resolution**: `collect_inbound_routes()` now calls `link.resolve_topic()` instead of `link.url.resource_id()` directly, enabling dynamic topic resolution
6868

@@ -255,7 +255,8 @@ warning fires if you exceed 1000 interned keys.
255255

256256
---
257257

258-
[Unreleased]: https://github.com/aimdb-dev/aimdb/compare/v0.4.0...HEAD
258+
[Unreleased]: https://github.com/aimdb-dev/aimdb/compare/v0.5.0...HEAD
259+
[0.5.0]: https://github.com/aimdb-dev/aimdb/compare/v0.4.0...v0.5.0
259260
[0.4.0]: https://github.com/aimdb-dev/aimdb/compare/v0.3.0...v0.4.0
260261
[0.3.0]: https://github.com/aimdb-dev/aimdb/compare/v0.2.0...v0.3.0
261262
[0.2.0]: https://github.com/aimdb-dev/aimdb/compare/v0.1.0...v0.2.0

aimdb-core/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "aimdb-core"
3-
version = "0.4.0"
3+
version = "0.5.0"
44
edition = "2021"
55
license.workspace = true
66
repository.workspace = true

0 commit comments

Comments
 (0)