Skip to content

feat(node-registry): persist interview capabilities (schema v5)#227

Merged
Assar63 merged 1 commit into
masterfrom
feat/node-registry-capabilities
Jun 27, 2026
Merged

feat(node-registry): persist interview capabilities (schema v5)#227
Assar63 merged 1 commit into
masterfrom
feat/node-registry-capabilities

Conversation

@Assar63

@Assar63 Assar63 commented Jun 27, 2026

Copy link
Copy Markdown
Owner

Summary

Persists the remaining post-inclusion interview data into each node's NodeRegistry row, so capabilities survive daemon restarts and are queryable without re-interviewing. Builds directly on the schema-v4 device-identity persistence (#226). Part of #203.

Changes

  • NodeInfo gains:
    • Version (CC 0x86)libraryType / protocolVersion / protocolSubVersion / applicationVersion / applicationSubVersion.
    • Multi Channel (CC 0x60)endpointCount + endpointsDynamic / endpointsIdentical flags.
    • Z-Wave Plus (CC 0x5E)zwavePlusVersion / roleType / nodeType / installerIconType / userIconType.
  • NodeRegistry subscribes to NodeVersionReport / MultiChannelEndPointReport / ZWavePlusInfoReport and calls the new setVersionInfo / setEndpointInfo / setZWavePlusInfo, each updating the in-memory entry and persisting it (no-op for unknown nodes, mirroring setDeviceIdentity).
  • Schema v5: 13 capability columns, cumulative migration from v1/v2/v3/v4 (a v4 db keeps its identity triple — the identity migration is guarded so it isn't re-run; v0 still drops + recreates).

Scope note

Persistence only — exposing these over GetNodes / the console detail pane (#45) remains a separate follow-up.

Tests

tests/node_registry_capabilities_test.cpp: set/query for each report, unknown-node no-op, and report-driven recording across all three reports. Full suite: 482/482 pass on both gnu and llvm; clang-tidy + clang-format clean.

🤖 Generated with Claude Code

Record the remaining post-inclusion interview data into each node's row
so capabilities survive restarts and are queryable without re-interviewing
(part of #203). Builds on the schema-v4 device-identity persistence.

- NodeInfo gains the Version (CC 0x86) triple (library/protocol/application
  versions), the Multi Channel (CC 0x60) endpoint summary (count + dynamic/
  identical flags), and the Z-Wave Plus (CC 0x5E) role/node-type/icon info.
- NodeRegistry subscribes to NodeVersionReport / MultiChannelEndPointReport /
  ZWavePlusInfoReport and calls the new setVersionInfo / setEndpointInfo /
  setZWavePlusInfo, each updating the in-memory entry and persisting it
  (no-op for unknown nodes, mirroring setDeviceIdentity).
- Schema v5: 13 capability columns, cumulative migration from v1/v2/v3/v4
  (v4 keeps its identity triple; v0 still drops + recreates).
- Tests: set/query per report, unknown-node no-op, and report-driven
  recording across all three reports.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@Assar63 Assar63 merged commit 6f2199f into master Jun 27, 2026
4 checks passed
@Assar63 Assar63 deleted the feat/node-registry-capabilities branch June 27, 2026 18:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant