# 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.4.0] - 2026-05-22

### Changed

- Updated `Router::route()` calls to pass runtime context via `db.runtime_any()` in both Tokio and Embassy clients, enabling context-aware deserializers (Design 026)
- Updated outbound publishers (Tokio and Embassy) to dispatch via `SerializerKind`, enabling context-aware serializers with `db.runtime_any()`

## [0.3.1] - 2026-03-16

### Changed

- Updated Embassy dependency versions: executor 0.10.0, time 0.5.1, sync 0.8.0, futures 0.1.2, net 0.9.0

## [0.3.0] - 2026-02-21

### Added

- **Dynamic Group Address Routing (Design 018)**: Full support for dynamic KNX group address resolution
  - **Outbound**: Uses `TopicProvider` to dynamically determine group addresses based on data values. Configure via `.with_topic_provider()` on outbound connectors.
  - **Inbound**: Uses `TopicResolverFn` for late-binding subscription addresses at connector startup. Configure via `.with_topic_resolver()` on inbound connectors.
  - Addresses resolved at connector startup via `collect_inbound_routes()` and per-telegram via `TopicProviderFn` for outbound

## [0.2.0] - 2025-12-15

### Changed

- **Breaking: Record Registration**: Updated demo examples to use new key-based `configure<T>(key, |reg| ...)` API
- All demo records now have explicit keys (e.g., `"lights.state"`, `"temp.livingroom"`, `"lights.control"`)
- Demos refactored to use shared `knx-connector-demo-common` crate for cross-platform types, keys, and monitors

## [0.1.0] - 2025-11-20

### Added
- Initial implementation of KNX/IP connector
- Dual runtime support (Tokio and Embassy)
- KNXnet/IP Tunneling protocol support
- Inbound monitoring (KNX bus → AimDB records)
- Outbound control (AimDB records → KNX bus)
- Group address parsing (3-level format)
- DPT type support via knx-pico integration
- Automatic reconnection on connection loss (5s interval)
- **ACK timeout handling** with 3-second timeout for outbound telegrams
- **Heartbeat/keepalive** (CONNECTIONSTATE_REQUEST every 55s)
- **Comprehensive unit tests** (group addresses, frames, connection state)
- **Production deployment guide** in README.md
- `tokio-knx-connector-demo` example with bidirectional control
- `embassy-knx-connector-demo` example for embedded systems

### Fixed
- Proper sequence number tracking for ACK validation
- TUNNELING_ACK detection and processing
- Pending ACK cleanup on timeout

### Known Limitations
- No KNX Secure support (plaintext only)
- No group address discovery
- Fire-and-forget publishing (no bus-level confirmation)
- Single connection per gateway instance
- No routing mode support

## [0.1.0] - 2025-11-20

Initial beta release for production evaluation.

[Unreleased]: https://github.com/aimdb-dev/aimdb/compare/v0.4.0...HEAD
[0.4.0]: https://github.com/aimdb-dev/aimdb/compare/v0.3.1...v0.4.0
[0.3.1]: https://github.com/aimdb-dev/aimdb/compare/v0.3.0...v0.3.1
[0.3.0]: https://github.com/aimdb-dev/aimdb/compare/v0.2.0...v0.3.0
[0.2.0]: https://github.com/aimdb-dev/aimdb/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/aimdb-dev/aimdb/releases/tag/v0.1.0
