feat(terminal): live state column in the node list (closes #44)#231
Merged
Conversation
The always-visible node-list pane gains a live "state" column, turning the one-shot [l] dump into a rich, always-current list. Each row is now `# name state sec`, where `state` is the node's headline cached value. - NodeRow gains `state`; the model now fetches GetNodeValues for *every* node (refreshSelectedValues -> refreshValues), populating each row's full value list + a headline picked by priority (binary_switch > multilevel > setpoint > sensor > config > battery, else first value). - Since every row now carries its values, selection moves no longer refetch, and the detail pane / node-info modal read straight from the model. - render.cpp gains padRight() so the id/name/state columns line up; header and rows share the layout. Docs: MANUAL §13, CLAUDE.md, TODO.md (#44 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
Turns the terminal's always-visible node-list pane into a rich, live list by adding a state column — each row is now
# name state sec, wherestateis the node's current headline value from the value cache (#213). This is the "dedicated window with a live state column" #44 asks for, superseding the one-shot[l]dump.Changes
NodeRowgainsstate; the model now fetchesGetNodeValuesfor every node (refreshSelectedValues→refreshValues), populating each row's full value list plus a headline value picked by priority:binary_switch→multilevel_switch→setpoint→sensor→config→battery, else the first value (empty if the node hasn't reported yet).render.cppgains apadRight()helper so the id/name/state columns line up; the header and rows share the layout.nodesDirty/valuesDirty), so the column updates live as nodes report;[r]forces a manual refresh.Verification
gnuandllvmbuild clean (daemon + terminal); 483/483 ctest; clang-tidy + clang-format clean on the changed files.Docs
MANUAL §13 (the pane's live state column), CLAUDE.md, TODO.md (#44 marked done).
🤖 Generated with Claude Code