feat(external-api,terminal): node-info drill-down window (closes #45)#229
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
GetNodeInfo(y) → (yyyy ay y qqq yyyyy ybb yyyqq)D-Bus method (manifest + codegen tuple alias + hand-writtenemitGetNodeInfo). It readsNodeRegistry::snapshot()directly, so it carries the schema-v4/v5 fields the leanGetNodeslist omits and the real security scheme. An unknown node returns a zeroed record whosenodeIdechoes the query.GetNodesis untouched; this is a separate, dedicated drill-down method.Terminal
[i]opens a full-screen node-info modal (new reusablerunInfoModal) for the selected node, composingGetNodeInfowith the node's name (§16c) and last-known values + age (§16d) from the UI model.[i]) now rides along with the[n]network-status view, so no functionality is lost.Verification
NodeInfoTuplefield sequences match exactly (so the wire signature agrees on both ends).gnuandllvmbuild 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