Skip to content

Add DDNS health indicator to single-station dashboard status bar#20

Merged
kurtmc merged 2 commits into
masterfrom
ddns-status-indicator
May 29, 2026
Merged

Add DDNS health indicator to single-station dashboard status bar#20
kurtmc merged 2 commits into
masterfrom
ddns-status-indicator

Conversation

@kurtmc
Copy link
Copy Markdown
Member

@kurtmc kurtmc commented May 29, 2026

Summary

  • Adds a DDNS indicator to the single-station dashboard status bar showing whether the station's DDNS record matches its current IP (✅ match, ❌ mismatch, ? unknown).
  • Threads optional ddns_hostname / ddns_resolved_ip / ddns_status fields from the server through DashboardService into the Station model; missing values keep the UI silent for older servers and the multi-station path.
  • Renders a hover tooltip explaining what the indicator means and which IPs are involved.

Test plan

  • ng test passes (station + station-service specs updated for the new model fields).
  • Single-station dashboard shows ✅ when DDNS matches.
  • Single-station dashboard shows ❌ with a tooltip naming the stale IP when DDNS is mismatched.
  • Single-station dashboard shows ? when the hostname can't be resolved.
  • Multi-station dashboard and older servers (no DDNS fields) render unchanged — no DDNS row.

🤖 Generated with Claude Code

Render the tri-state DDNS record health reported by the station server in
the single-station status bar, below the IP line:

  MATCH    -> green check     (resolves to the station's current IP)
  MISMATCH -> red cross        (resolves, but to a different/stale IP)
  UNKNOWN  -> grey question    (could not resolve: NXDOMAIN, timeout, no FQDN)

The line is omitted entirely when the server reports no DDNS information
(the multi-station dashboard path and older servers do not send these
fields), so the change degrades safely against an un-bumped backend.

The fields (ddns_hostname / ddns_resolved_ip / ddns_status) are produced
by the backend counterpart in halter-corp/hardware-test-framework#1567.

NOTE: the committed dist/ bundle is NOT regenerated in this commit. The
Angular 4 / webpack 3 / node-sass 7 toolchain could not be built in the
authoring environment (Node 25 / Python 3.12 lacks distutils, node-sass
native build fails). Run "npm install && npm run build" in web_gui with a
compatible Node before deploying, and commit the regenerated dist/. See
the accompanying APPLY.md.

Co-Authored-By: clank-halter[bot] <2696940+clank-halter[bot]@users.noreply.github.com>
Clank-Job-Id: 6ae51244-e605-4ce0-9e50-ebf172b7b87d
@coveralls
Copy link
Copy Markdown

coveralls commented May 29, 2026

Coverage Report for CI Build 26619946790

Warning

No base build found for commit 0e4f7c4 on master.
Coverage changes can't be calculated without a base build.
If a base build is processing, this comment will update automatically when it completes.

Coverage: 61.766%

Details

  • Patch coverage: No coverable lines changed in this PR.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

Requires a base build to compare against. How to fix this →


Coverage Stats

Coverage Status
Relevant Lines: 7462
Covered Lines: 4609
Line Coverage: 61.77%
Coverage Strength: 3.09 hits per line

💛 - Coveralls

The web_ui job used setup-node without a version, picking up the
runner's default (now Node 22). node-sass@7 can't compile its native
addon on Node >= 18, so npm install failed. Pin Node 16 to unblock CI.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@kurtmc kurtmc merged commit f83c790 into master May 29, 2026
14 checks passed
@kurtmc kurtmc deleted the ddns-status-indicator branch May 29, 2026 05:31
kurtmc added a commit that referenced this pull request May 29, 2026
* Add DDNS health indicator to single-station dashboard status bar

Render the tri-state DDNS record health reported by the station server in
the single-station status bar, below the IP line:

  MATCH    -> green check     (resolves to the station's current IP)
  MISMATCH -> red cross        (resolves, but to a different/stale IP)
  UNKNOWN  -> grey question    (could not resolve: NXDOMAIN, timeout, no FQDN)

The line is omitted entirely when the server reports no DDNS information
(the multi-station dashboard path and older servers do not send these
fields), so the change degrades safely against an un-bumped backend.

The fields (ddns_hostname / ddns_resolved_ip / ddns_status) are produced
by the backend counterpart in halter-corp/hardware-test-framework#1567.

NOTE: the committed dist/ bundle is NOT regenerated in this commit. The
Angular 4 / webpack 3 / node-sass 7 toolchain could not be built in the
authoring environment (Node 25 / Python 3.12 lacks distutils, node-sass
native build fails). Run "npm install && npm run build" in web_gui with a
compatible Node before deploying, and commit the regenerated dist/. See
the accompanying APPLY.md.

Co-Authored-By: clank-halter[bot] <2696940+clank-halter[bot]@users.noreply.github.com>
Clank-Job-Id: 6ae51244-e605-4ce0-9e50-ebf172b7b87d

* Pin Node 16 in web_ui CI job so node-sass can build

The web_ui job used setup-node without a version, picking up the
runner's default (now Node 22). node-sass@7 can't compile its native
addon on Node >= 18, so npm install failed. Pin Node 16 to unblock CI.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: kurtmc <2661907+kurtmc@users.noreply.github.com>
Co-authored-by: clank-halter[bot] <2696940+clank-halter[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
kurtmc added a commit that referenced this pull request May 29, 2026
Commit 3214561 (#20) added the single-station DDNS indicator source but
could not regenerate the committed dist/ bundle (the Angular 4 / webpack 3
/ node-sass 7 toolchain needs Node 16), so the served bundle still ran the
pre-DDNS JS and the indicator never rendered on the station.

Rebuilt dist/ under Node 16 (npm install --ignore-scripts && npm rebuild
node-sass && npm run build). New bundle hash 2fc68a8 now contains the
ddnsStatus / ddns-indicator rendering.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.

2 participants