Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
18f85e0
feat(data-contracts): add SimulatableRegistrarExt and ObservableRegis…
lxsaah Jul 6, 2026
33e9692
Implement code changes to enhance functionality and improve performance
lxsaah Jul 6, 2026
497f964
feat(data-contracts): Simulatable v2 — compile-time-only sim + .simul…
lxsaah Jul 6, 2026
be4a156
Refactor observability features in AimDB
lxsaah Jul 6, 2026
e226a31
feat(data-contracts): LinkableRegistrarExt + #[derive(Linkable)] (des…
lxsaah Jul 7, 2026
55b7d38
feat(sync): Settable -> SyncProducer::set_value family (design 041 §3.4)
lxsaah Jul 7, 2026
bbc4477
docs: README verb/tier table + CHANGELOG sweep + version bumps (desig…
lxsaah Jul 7, 2026
a874372
Claude/design doc 41 review s7hguj (#169)
lxsaah Jul 7, 2026
43e0992
Merge branch 'main' into feat/enhance-data-contracts
lxsaah Jul 7, 2026
7dc703e
feat(tests): add serde_json as a dev-dependency for roundtrip tests
lxsaah Jul 7, 2026
145d321
Refactor documentation and comments across multiple modules
lxsaah Jul 7, 2026
39e2a4d
docs: update next development areas section to reference GitHub issues
lxsaah Jul 7, 2026
219b709
feat(docs): enhance README with evidence of data contracts and capabi…
lxsaah Jul 7, 2026
acb842f
refactor(examples): simplify comments in main.rs for clarity
lxsaah Jul 8, 2026
d6a66bc
feat(observable): enhance documentation on feature layering and recor…
lxsaah Jul 8, 2026
2c24ec3
docs(design): add 042 — public weather mesh flagship spec
claude Jul 9, 2026
2249dac
docs(design): add MCU join path (Embassy) to weather mesh flagship spec
claude Jul 9, 2026
ea5b5d6
docs(plan): add implementation plan for 042 public weather mesh flags…
lxsaah Jul 9, 2026
592ce08
Merge branch 'main' into claude/new-vertical-hosting-plan-d52px3
lxsaah Jul 9, 2026
ae42fca
fix(mqtt-connector): select TLS transport for mqtts:// URLs
lxsaah Jul 9, 2026
5affb38
feat(weather-mesh): hub slot pool behind MESH_SLOTS (042 WP1)
lxsaah Jul 9, 2026
092597f
docs(design): add 043 — join endpoint format v1 (042 WP3)
lxsaah Jul 9, 2026
e0dcf9b
feat(cli): add aimdb join — self-serve deployment admission (042 WP4)
lxsaah Jul 9, 2026
57eb4e7
feat(weather-mesh): generic cloud station driven by station.toml (042…
lxsaah Jul 9, 2026
400414f
feat(weather-mesh): gamma build-time station config via MESH_CONFIG (…
lxsaah Jul 9, 2026
4f4953e
feat(weather-mesh): AimX endpoint + visible contract rejections in me…
lxsaah Jul 9, 2026
60d8767
fix(cli): keep observability metadata in record list output (042 WP4 …
lxsaah Jul 9, 2026
6524f17
fix(weather-mesh): station failure UX prints via Display (042 WP5 fol…
lxsaah Jul 9, 2026
5d504d9
docs(weather-mesh): record 042 OSS implementation status + mesh-mode …
lxsaah Jul 9, 2026
5e728a8
fix(cli): join HTTP client uses system trust roots (042 WP4 follow-up)
lxsaah Jul 9, 2026
d01e5da
Merge branch 'main' into claude/new-vertical-hosting-plan-d52px3
lxsaah Jul 9, 2026
8300ae3
Merge remote-tracking branch 'origin/claude/new-vertical-hosting-plan…
lxsaah Jul 9, 2026
bff922f
fix(docs): update TCP connector description to include client support
lxsaah Jul 9, 2026
c3d2c3d
fix(deps): update quinn-proto to version 0.11.15 and windows-sys to v…
lxsaah Jul 9, 2026
213c6be
fix(docs): update TCP connector description to remove client support …
lxsaah Jul 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
163 changes: 161 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ members = [
"examples/remote-access-demo",
"examples/weather-mesh-demo/weather-mesh-common",
"examples/weather-mesh-demo/weather-hub",
"examples/weather-mesh-demo/weather-station",
"examples/weather-mesh-demo/weather-station-alpha",
"examples/weather-mesh-demo/weather-station-beta",
"examples/weather-mesh-demo/weather-station-gamma",
Expand Down
6 changes: 4 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ test:

fmt:
@printf "$(GREEN)Formatting code (workspace members only)...$(NC)\n"
@for pkg in aimdb-derive aimdb-data-contracts aimdb-core aimdb-client aimdb-embassy-adapter aimdb-tokio-adapter aimdb-wasm-adapter aimdb-sync aimdb-persistence aimdb-persistence-sqlite aimdb-mqtt-connector aimdb-knx-connector aimdb-ws-protocol aimdb-websocket-connector aimdb-uds-connector aimdb-serial-connector aimdb-tcp-connector aimdb-codegen aimdb-cli aimdb-mcp sync-api-demo tokio-mqtt-connector-demo embassy-mqtt-connector-demo tokio-knx-connector-demo embassy-knx-connector-demo embassy-serial-connector-demo embassy-bench-stm32h5 weather-mesh-common weather-hub weather-station-alpha weather-station-beta hello-mailbox hello-mailbox-async hello-single-latest-async aimdb-bench; do \
@for pkg in aimdb-derive aimdb-data-contracts aimdb-core aimdb-client aimdb-embassy-adapter aimdb-tokio-adapter aimdb-wasm-adapter aimdb-sync aimdb-persistence aimdb-persistence-sqlite aimdb-mqtt-connector aimdb-knx-connector aimdb-ws-protocol aimdb-websocket-connector aimdb-uds-connector aimdb-serial-connector aimdb-tcp-connector aimdb-codegen aimdb-cli aimdb-mcp sync-api-demo tokio-mqtt-connector-demo embassy-mqtt-connector-demo tokio-knx-connector-demo embassy-knx-connector-demo embassy-serial-connector-demo embassy-bench-stm32h5 weather-mesh-common weather-hub weather-station weather-station-alpha weather-station-beta hello-mailbox hello-mailbox-async hello-single-latest-async aimdb-bench; do \
printf "$(YELLOW) → Formatting $$pkg$(NC)\n"; \
cargo fmt -p $$pkg 2>/dev/null || true; \
done
Expand All @@ -187,7 +187,7 @@ fmt:
fmt-check:
@printf "$(GREEN)Checking code formatting (workspace members only)...$(NC)\n"
@FAILED=0; \
for pkg in aimdb-derive aimdb-data-contracts aimdb-core aimdb-client aimdb-embassy-adapter aimdb-tokio-adapter aimdb-wasm-adapter aimdb-sync aimdb-persistence aimdb-persistence-sqlite aimdb-mqtt-connector aimdb-knx-connector aimdb-ws-protocol aimdb-websocket-connector aimdb-uds-connector aimdb-serial-connector aimdb-tcp-connector aimdb-codegen aimdb-cli aimdb-mcp sync-api-demo tokio-mqtt-connector-demo embassy-mqtt-connector-demo tokio-knx-connector-demo embassy-knx-connector-demo embassy-serial-connector-demo embassy-bench-stm32h5 weather-mesh-common weather-hub weather-station-alpha weather-station-beta hello-mailbox hello-mailbox-async hello-single-latest-async aimdb-bench; do \
for pkg in aimdb-derive aimdb-data-contracts aimdb-core aimdb-client aimdb-embassy-adapter aimdb-tokio-adapter aimdb-wasm-adapter aimdb-sync aimdb-persistence aimdb-persistence-sqlite aimdb-mqtt-connector aimdb-knx-connector aimdb-ws-protocol aimdb-websocket-connector aimdb-uds-connector aimdb-serial-connector aimdb-tcp-connector aimdb-codegen aimdb-cli aimdb-mcp sync-api-demo tokio-mqtt-connector-demo embassy-mqtt-connector-demo tokio-knx-connector-demo embassy-knx-connector-demo embassy-serial-connector-demo embassy-bench-stm32h5 weather-mesh-common weather-hub weather-station weather-station-alpha weather-station-beta hello-mailbox hello-mailbox-async hello-single-latest-async aimdb-bench; do \
printf "$(YELLOW) → Checking $$pkg$(NC)\n"; \
if ! cargo fmt -p $$pkg -- --check 2>&1; then \
printf "$(RED)❌ Formatting check failed for $$pkg$(NC)\n"; \
Expand Down Expand Up @@ -398,6 +398,8 @@ examples:
cargo build --package weather-station-alpha
@printf "$(YELLOW) → Building weather-mesh-demo: weather-station-beta (edge, synthetic)$(NC)\n"
cargo build --package weather-station-beta
@printf "$(YELLOW) → Building weather-mesh-demo: weather-station (public mesh, profile-driven)$(NC)\n"
cargo build --package weather-station
@printf "$(YELLOW) → Building weather-station-gamma (embedded, embassy runtime)$(NC)\n"
cargo build --package weather-station-gamma --target thumbv7em-none-eabihf
@printf "$(YELLOW) → Building remote-access-demo (AimX server + client)$(NC)\n"
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,8 @@ See the [MCP server docs](tools/aimdb-mcp/) for Claude Desktop and other editors
| **MQTT** — `aimdb-mqtt-connector` | ✅ Ready | std, no_std |
| **KNX** — `aimdb-knx-connector` | ✅ Ready | std, no_std |
| **WebSocket** — `aimdb-websocket-connector` | ✅ Ready | std, wasm |
| **Serial (COBS/UART)** — `aimdb-serial-connector` | ✅ Ready | std, no_std |
| **Unix domain socket** — `aimdb-uds-connector` | ✅ Ready | std |
| **TCP** — `aimdb-tcp-connector` | ✅ Ready | std, no_std |
| **Kafka** | 📋 Planned | std |
| **Modbus** | 📋 Planned | std, no_std |
Expand Down
20 changes: 20 additions & 0 deletions aimdb-mqtt-connector/src/tokio_client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,12 @@ impl MqttConnectorImpl {
mqtt_opts.set_credentials(username, password);
}

// mqtts:// selects the TLS transport (system trust roots via
// native-tls); rumqttc otherwise speaks plain TCP regardless of port.
if connector_url.scheme == "mqtts" {
mqtt_opts.set_transport(rumqttc::Transport::Tls(rumqttc::TlsConfiguration::Native));
}

// Wrap router early so we can count topics for capacity calculation
let router_arc = Arc::new(router);
let topic_count = router_arc.resource_ids().len();
Expand Down Expand Up @@ -364,4 +370,18 @@ mod tests {
let connector = MqttConnectorImpl::build_internal("not-a-valid-url", None, router).await;
assert!(connector.is_err());
}

#[tokio::test]
async fn test_connector_mqtts_url_with_credentials() {
// mqtts:// with URL-embedded credentials must parse and build; the TLS
// handshake itself only happens once the event loop is polled.
let router = RouterBuilder::new().build();
let connector = MqttConnectorImpl::build_internal(
"mqtts://hub-sub:secret@broker.example.com:8883",
None,
router,
)
.await;
assert!(connector.is_ok());
}
}
Loading