Skip to content

perf(ui): scale realtime node monitoring - #339

Open
XiNian-dada wants to merge 5 commits into
mainfrom
claude/g4-frontend
Open

perf(ui): scale realtime node monitoring#339
XiNian-dada wants to merge 5 commits into
mainfrom
claude/g4-frontend

Conversation

@XiNian-dada

Copy link
Copy Markdown
Owner

Summary

  • stream NodeDetailView live status from the browser WebSocket while retaining REST for initial detail, history, and logs
  • virtualize the fixed-height node card grid and keep incremental node upserts in stable shallow collections
  • lock all six BrowserMessage variants to Rust-generated JSON fixtures consumed by parser, dispatch, and heartbeat tests

Verification

  • pnpm test: 83 files, 514 tests passed
  • pnpm typecheck
  • pnpm lint
  • pnpm build
  • cargo test --workspace
  • cargo +stable fmt --all --check
  • cargo clippy --all-targets -- -D warnings
  • browser verification with 500 nodes: 3 cards initially, 24 after scrolling, visible route navigation succeeded, measured about 101 FPS

Closes #259
Closes #261
Closes #314

XiNian-dada and others added 4 commits July 27, 2026 02:23
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Claude <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2ed49b37f7

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +81 to +83
uptime_secs: current.snapshot?.uptime_secs ?? 0,
disks: current.snapshot?.disks ?? [],
network: current.snapshot?.network ?? {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Preserve polling for fields omitted from summaries

When a detail page remains open after its initial REST load, every WebSocket update explicitly retains the old uptime, disk, network, swap, and 5/15-minute load values because NodeListItem does not carry those fields. Since this commit also removes store.refresh() from the five-second polling callback, the hardware and network panels display those initial values indefinitely even while CPU, memory, and latency continue updating; keep a periodic full-status refresh or expand the realtime payload to include every displayed field.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant