Skip to content

feat(external-api,terminal): node-info drill-down window (closes #45)#229

Merged
Assar63 merged 1 commit into
masterfrom
feat/node-info-window
Jun 27, 2026
Merged

feat(external-api,terminal): node-info drill-down window (closes #45)#229
Assar63 merged 1 commit into
masterfrom
feat/node-info-window

Conversation

@Assar63

@Assar63 Assar63 commented Jun 27, 2026

Copy link
Copy Markdown
Owner

Summary

A per-node drill-down (#45) composing everything the daemon knows about a node into one view: identity (device-class triple + manufacturer/product ids), the interview-gathered capabilities (Version firmware, Multi Channel endpoints, Z-Wave+ role/icons), the security scheme, the full CC list, and the last-known values with age.

Daemon

  • New GetNodeInfo(y) → (yyyy ay y qqq yyyyy ybb yyyqq) D-Bus method (manifest + codegen tuple alias + hand-written emitGetNodeInfo). It reads NodeRegistry::snapshot() directly, so it carries the schema-v4/v5 fields the lean GetNodes list omits and the real security scheme. An unknown node returns a zeroed record whose nodeId echoes the query.
  • Non-breaking: GetNodes is untouched; this is a separate, dedicated drill-down method.

Terminal

  • [i] opens a full-screen node-info modal (new reusable runInfoModal) for the selected node, composing GetNodeInfo with the node's name (§16c) and last-known values + age (§16d) from the UI model.
  • Dongle introspection (formerly [i]) now rides along with the [n] network-status view, so no functionality is lost.

Verification

  • Codegen regenerates the method + emit declaration correctly; daemon and terminal NodeInfoTuple field sequences match exactly (so the wire signature agrees on both ends).
  • Both gnu and llvm build clean (daemon + terminal); 483/483 ctest; clang-tidy + clang-format clean on all changed files.

Docs

MANUAL §16f (method struct layout + the [i] window), CLAUDE.md, TODO.md (#45 marked done).

Note

D-Bus methods aren't unit-tested in this repo (they need a live bus); this follows the existing emitGet* pattern and is verified by build + codegen + the matching tuple layouts. Hardware/live-bus exercise rides with #189.

🤖 Generated with Claude Code

A per-node drill-down composing everything the daemon knows about a node:
identity (device-class triple + manufacturer/product ids), the interview-
gathered capabilities (Version firmware, Multi Channel endpoints, Z-Wave+
role/icons), the security scheme, the CC list, and the last-known values.

Daemon:
- New GetNodeInfo(y) -> (yyyy ay y qqq yyyyy ybb yyyqq) D-Bus method
  (manifest + codegen alias + emitGetNodeInfo). Reads NodeRegistry::snapshot()
  directly so it carries the schema-v4/v5 fields the lean GetNodes list omits
  (and the real security scheme); an unknown node returns a zeroed record
  whose nodeId echoes the query. Non-breaking — GetNodes is untouched.

Terminal:
- [i] opens a full-screen node-info modal (new reusable runInfoModal) for the
  selected node, composing GetNodeInfo with the node's name + cached values
  /age from the UI model.
- Dongle introspection (formerly [i]) now rides along with the [n]
  network-status view, so no functionality is lost.

Docs: MANUAL §16f (method struct layout + the [i] window), CLAUDE.md,
TODO.md (#45 done).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@Assar63 Assar63 merged commit f957054 into master Jun 27, 2026
4 checks passed
@Assar63 Assar63 deleted the feat/node-info-window branch June 27, 2026 19:38
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