Skip to content

feat(terminal): S2 DSK confirm flow — completes the node console (#215)#223

Merged
Assar63 merged 1 commit into
masterfrom
feat/terminal-dsk-modal
Jun 18, 2026
Merged

feat(terminal): S2 DSK confirm flow — completes the node console (#215)#223
Assar63 merged 1 commit into
masterfrom
feat/terminal-dsk-modal

Conversation

@Assar63

@Assar63 Assar63 commented Jun 18, 2026

Copy link
Copy Markdown
Owner

The last piece of the console redesign (#215) and the last operator-facing gap in the S2 inclusion flow (#187): confirm a node's DSK from the terminal.

What

  • Subscribe to DSKPendingConfirmation(y s): a non-empty payload records {nodeId, dsk} on ActivityState; the daemon's empty notice (sent once the PIN is accepted / the session ends) clears it.
  • Header banner while pending (colour-coded): DSK confirm: node N <partial-DSK> -> press [k] to enter PIN. The partial DSK (first group shown as 00000) is for matching against the device label.
  • [k] prompts the 5-digit PIN and calls ConfirmDSK(nodeId, pin). A malformed PIN is ignored daemon-side, so the banner stays up for a retry; on success the daemon's empty signal clears it.

Why banner + key (not an auto-popped modal)

Less intrusive (doesn't hijack the screen mid-task), and naturally supports retry. The signal handler only stores state — the blocking PIN prompt runs on the UI thread (signal handlers run on the async event-loop thread and mustn't block).

Notes

Builds on both presets; 471/471 ctest unaffected (TUI has no ctest harness); clang-format + clang-tidy clean.

#215 complete

console shell → live values → contextual actions → signal-driven refresh → DSK confirm. The terminal is now a full master/detail node console. Closes #215.

🤖 Generated with Claude Code

Surface the S2 DSK confirmation (#187) in the terminal so an operator can
complete an Authenticated / Access Control inclusion:

  - subscribe to the DSKPendingConfirmation(y s) signal; a non-empty payload
    records {nodeId, dsk} on ActivityState, an empty one (the daemon's
    "cleared" notice once the PIN is accepted / the session ends) clears it;
  - drawHeader shows a colour banner while pending: "DSK confirm: node N
    <partial-DSK> -> press [k] to enter PIN";
  - [k] prompts the 5-digit PIN and calls ConfirmDSK(nodeId, pin). A malformed
    PIN is ignored daemon-side, so the banner stays up for a retry; on success
    the daemon's empty signal clears it.

Banner-plus-key (not an auto-popped modal) keeps it non-intrusive and naturally
supports retry. The signal handler only stores state — the blocking PIN prompt
runs on the UI thread.

This is the last #215 step — the master/detail console redesign is complete.
Builds on both presets; 471/471 ctest unaffected; clang-format + clang-tidy
clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@Assar63 Assar63 merged commit aa42143 into master Jun 18, 2026
4 checks passed
@Assar63 Assar63 deleted the feat/terminal-dsk-modal branch June 18, 2026 05:19
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.

zwave-terminal: master/detail node-console redesign

1 participant