Skip to content

feat(messages): add telemetry time-range selector to Node Details#3530

Merged
Yeraze merged 1 commit into
mainfrom
feature/node-details-telemetry-range
Jun 17, 2026
Merged

feat(messages): add telemetry time-range selector to Node Details#3530
Yeraze merged 1 commit into
mainfrom
feature/node-details-telemetry-range

Conversation

@Yeraze

@Yeraze Yeraze commented Jun 17, 2026

Copy link
Copy Markdown
Owner

Summary

The Node Details panel (Messages view → selected node) renders its telemetry graphs with a fixed telemetryVisualizationHours window (24h by default), so longer history couldn't be viewed there — e.g. a node whose environment readings are a few days old shows an empty environment graph even though the data exists.

The Device Info page (InfoTab) already exposes the 15m–7d range buttons via TelemetryGraphs' showTimeRangeSelector prop. This enables the same on the Node Details graphs.

Change

One line: pass showTimeRangeSelector to the <TelemetryGraphs> in MessagesTab.tsx (the node-details panel).

Behavior (already implemented in the component):

  • Renders the range buttons above the graphs.
  • Seeds from the global telemetryVisualizationHours as the default, and persists the user's choice (shared localStorage key with Device Info).
  • When the selector is shown, effectiveHours follows the selected range instead of the fixed prop.

Why

Lets users widen any selected node's telemetry to 7d to view longer history (the prompting case: a node with environment telemetry from ~4 days ago that didn't appear in the default 24h node-details view).

Scope note: MeshCoreTelemetryView is a favorites-dashboard, not a per-node graph, so it's intentionally untouched.

Verification

Typecheck clean; all 28 TelemetryGraphs tests pass (incl. the existing showTimeRangeSelector cases). Built and deployed to the local dev container for manual confirmation.

🤖 Generated with Claude Code

The Node Details panel's telemetry graphs were locked to the fixed
telemetryVisualizationHours window (24h by default), so older history
(e.g. environment readings more than a day old) couldn't be viewed there
even when present. The Device Info page already exposes the 15m–7d range
buttons via TelemetryGraphs' showTimeRangeSelector; enable the same on the
Node Details graphs.

The selector seeds from the global telemetryVisualizationHours as its default
and persists the choice (shared localStorage key with Device Info), so users
can widen to 7d to see longer history on any selected node.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jun 17, 2026

Copy link
Copy Markdown

Claude finished @Yeraze's task —— View job


PR Review: feat(messages): add telemetry time-range selector to Node Details

  • Read changed file and related components
  • Analyze code quality, bugs, performance, security
  • Post review feedback

Summary

This is a minimal, well-scoped one-line change that passes showTimeRangeSelector to <TelemetryGraphs> in MessagesTab.tsx. The prop is already fully implemented and tested in TelemetryGraphs.tsx. The PR is clean and correct.

One Minor Observation

Shared localStorage key (TELEMETRY_RANGE_STORAGE_KEY = 'deviceInfoTelemetryHours') — the key name is deviceInfoTelemetryHours, which now also governs the Node Details panel's range selector. The PR description explicitly calls this out as intentional ("persists the user's choice (shared localStorage key with Device Info)"), so this is a design decision, not a bug.

That said, sharing state means a user who widens to 7d in Device Info will arrive at Node Details already at 7d, and vice versa. This is arguably the better UX (preserve the user's last choice globally), but the storage key name deviceInfoTelemetryHours is now a slight misnomer since it's no longer Device Info-specific. Not a blocker — just worth noting in case the name causes future confusion.

Verdict

LGTM. The change is correct, safe, and consistent with how InfoTab.tsx already uses the same prop. No bugs, no security concerns, no performance issues. The existing TelemetryGraphs test suite (including showTimeRangeSelector cases) covers the behavior.


@Yeraze Yeraze merged commit fc0309f into main Jun 17, 2026
27 of 28 checks passed
@Yeraze Yeraze deleted the feature/node-details-telemetry-range branch June 17, 2026 21:17
@Yeraze Yeraze mentioned this pull request Jun 17, 2026
Yeraze added a commit that referenced this pull request Jun 17, 2026
Release candidate for 4.11.0. Bumps the version across all five tracked
locations (package.json, package-lock.json, helm Chart.yaml version+appVersion,
desktop/package.json, desktop/src-tauri/tauri.conf.json).

4.11.0 carries the multi-source route-extraction refactors, the telemetry
ingestion unification (#3506/#3507/#3515), the auto-ping ack/race fix (#3522),
NodeInfo position-precision guard (#3516), backup-route hardening (#3524), and
the Node Details telemetry range selector (#3530).

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@Yeraze Yeraze mentioned this pull request Jun 19, 2026
Yeraze added a commit that referenced this pull request Jun 19, 2026
Finalize the 4.11.0 release (from 4.11.0-rc2) and bring documentation up to
date with everything new since 4.10.

Version bump across all five files: package.json, package-lock.json,
helm/meshmonitor/Chart.yaml, desktop/src-tauri/tauri.conf.json,
desktop/package.json.

Documentation:
- CHANGELOG: finalize the Unreleased section as [4.11.0], adding the
  previously-missing entries — headline MeshCore virtual node (#3540),
  MeshCore path-by-repeater-name (#3550), MeshCore map icons + filtering
  (#3563), per-node Hide from Map (#3565), telemetry time-range selector
  (#3530), newer AirQualityMetrics fields (#3517), UI/map unification
  (#3561), plus the bug-fix and documentation changes since 4.10.4.
- virtual-node.md: document the new MeshCore Virtual Node alongside the
  Meshtastic one (default port 5000, per-source enablement, admin-command
  safety, MeshCore app setup, troubleshooting) + a two-variants intro note.
- configuration/index.md, docs/index.md, README.md: mention the MeshCore
  Virtual Node in the Virtual Node feature blurbs.
- CLAUDE.md: refresh stale version header (4.10.0 -> 4.11.0) and migration
  count (84 -> 92, latest 092_add_hide_from_map_to_nodes).

Co-Authored-By: Claude Opus 4.8 (1M context) <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.

1 participant