Skip to content

feat(ide): daemon-served Serial Plotter page + fbuild plotter (#1076 Phase 2) - #1200

Merged
zackees merged 1 commit into
mainfrom
feat/1076-phase2-serial-plotter
Jul 27, 2026
Merged

feat(ide): daemon-served Serial Plotter page + fbuild plotter (#1076 Phase 2)#1200
zackees merged 1 commit into
mainfrom
feat/1076-phase2-serial-plotter

Conversation

@zackees

@zackees zackees commented Jul 27, 2026

Copy link
Copy Markdown
Member

First Phase 2 panel of the corrected #1076 plan: a daemon-served Serial Plotter over the existing serial WebSocket, following the avr8js embedded-page precedent.

  • GET /plotter serves a single self-contained page (include_str!-embedded; no CDN/build step): port selector from POST /api/devices/list, WebSocket to /ws/serial-monitor with the Attach handshake, Arduino-Serial-Plotter-style parsing of Data{lines} batches (whitespace/comma-separated numbers, optional name:value labels), hand-rolled canvas chart (auto-scaled axis, legend, pause/resume, clear, raw-line tail), light/dark via prefers-color-scheme.
  • fbuild plotter [--port <port>] resolves the daemon URL and opens the page in the default browser (reuses the existing open_in_browser helper) — chosen over encoding OS-specific open commands in tasks.json, and it serves non-Zed users too.
  • fbuild ide now generates a "fbuild: Serial Plotter" task that runs fbuild plotter.

Validation (local)

  • soldr cargo test -p fbuild-cli → 247 passed (+6); -p fbuild-daemon → 209 passed (+1 route test); clippy -D warnings clean; fmt clean; full bash test before merge.

Part of #1076 (Phase 2). Remaining Phase 2 panels (build progress, library/board managers) need new daemon endpoints and stay on the meta.

🤖 Generated with Claude Code

…Phase 2)

- New GET /plotter daemon route serving a self-contained embedded page
  (avr8js pattern): /api/devices/list port selector, /ws/serial-monitor
  attach handshake, Arduino-Serial-Plotter-style line parsing
  (whitespace/comma numbers, optional name:value labels), hand-rolled
  canvas chart with auto-scale/legend/pause/clear/raw tail,
  light+dark via prefers-color-scheme, zero external assets.
- New `fbuild plotter [--port <port>]` opens the page via the existing
  open_in_browser helper and get_daemon_url (works outside Zed too).
- `fbuild ide` emits a "fbuild: Serial Plotter" task running it.

Part of #1076 (Phase 2, first panel).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@zackees, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 30 seconds

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 26d90085-372b-4f28-9c7c-0f7c65ecb07e

📥 Commits

Reviewing files that changed from the base of the PR and between f7c4be9 and ac7973c.

📒 Files selected for processing (15)
  • agents/docs/commands-reference.md
  • crates/fbuild-cli/src/cli/args.rs
  • crates/fbuild-cli/src/cli/dispatch.rs
  • crates/fbuild-cli/src/cli/ide.rs
  • crates/fbuild-cli/src/cli/mod.rs
  • crates/fbuild-cli/src/cli/plotter.rs
  • crates/fbuild-cli/src/cli/tests.rs
  • crates/fbuild-daemon/src/handlers/mod.rs
  • crates/fbuild-daemon/src/handlers/plotter.rs
  • crates/fbuild-daemon/src/main.rs
  • crates/fbuild-daemon/tests/README.md
  • crates/fbuild-daemon/tests/test_plotter_route.rs
  • crates/fbuild-daemon/web/plotter/README.md
  • crates/fbuild-daemon/web/plotter/index.html
  • docs/reference/cli.md
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/1076-phase2-serial-plotter

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@zackees
zackees merged commit 6d3b4ba into main Jul 27, 2026
87 of 93 checks passed
@zackees
zackees deleted the feat/1076-phase2-serial-plotter branch July 27, 2026 21:08
@fastled-project-sync fastled-project-sync Bot moved this to Triage in FastLED Tracker Jul 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Triage

Development

Successfully merging this pull request may close these issues.

1 participant