Skip to content

Add standalone PR Beacon plugin with agent summaries and approval - #99

Closed
bostonaholic wants to merge 7 commits into
block:mainfrom
bostonaholic:bostonaholic--pr-beacon-plugin
Closed

bostonaholic wants to merge 7 commits into
block:mainfrom
bostonaholic:bostonaholic--pr-beacon-plugin

Conversation

@bostonaholic

@bostonaholic bostonaholic commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

Moved to a separate repository

Development continues in the private PR Beacon repository. Closing this PR because the plugin is now maintained there.

The standalone repository now uses the separate, unpublished ctx.agentRequests host API. That host change remains required; the repository README describes the current setup. The shared-channel setup below describes the historical PR implementation.

The original description and demonstration media are preserved below for reference.


Adds a standalone PR Beacon example for reviewing GitHub pull requests from Buzz. Users can filter their pull requests using colored status counts, highlight requested reviews, hide or restore entries, refresh cached queues, open a PR on GitHub, inspect commit-specific diffs, request a summary from an existing Buzz agent, and approve the reviewed commit.

The review queue separates titles from repository and author details. Your pull requests includes clickable counts for Ready to merge, Checks failing, Feedback, Waiting, Draft, and Unresolved, plus All. Filters reuse cached data and retain selection through refresh, tab changes, and PR visits. The review view groups agent replies, colored diffs, and approval controls. Layouts support narrow windows, Buzz’s light/dark appearance, and text-size settings.

Settings now explains how to create a GitHub token and select repository permissions, checks the token before opening reviews, and distinguishes required GitHub access from optional highlighting and agent summaries. Invalid tokens stay on the form with an error. Import examples/plugins/pr-beacon again to update an installed copy; Buzz does not watch the folder.

Both queues retain results across tabs, PR visits, and page reopening, and show when their last successful fetch completed beside Refresh. Refresh keeps the previous list visible and preserves it if the request fails. Results stay in memory and clear on disconnect, token change, plugin disable, or Buzz reload.

Includes source, focused tests, a standalone build recipe, and a ready-to-install bundle under examples/plugins/pr-beacon/. Uses the public author API; no host changes.

The GitHub token stays in memory until the plugin is disabled or Buzz reloads. Summaries require an existing configured Buzz agent. Requests require an explicitly selected agent and channel; the UI identifies the destination and any omitted diff content before sending. An agent response never submits an approval. Non-secret preferences use origin-scoped localStorage and survive uninstall.

Install and try it

  1. Check out this PR. In Buzz Desktop, open Settings → Plugins → Load from folder and select examples/plugins/pr-beacon from that checkout. The folder already contains manifest.json and plugin.js; no build is needed.
  2. Choose Install plugin, enable PR Beacon, then open its page. For an existing installation, load the folder again and choose Update plugin. Buzz copies the files; it does not watch the folder, and restarting alone does not install updates.
  3. Open PR Beacon’s Settings, follow Create a GitHub token, paste the token, then click Connect GitHub. The token stays in memory; re-enter it after reloading Buzz or re-enabling the plugin. Agent setup is optional.

Detailed installation and GitHub-token instructions · Build from source · Automated tests

Manual test

  • Open Review requests, then Your pull requests. Switch tabs and open a PR, then go Back: previously loaded queues should reappear with the same last-fetched time.
  • In Your pull requests, select a status to filter the rows; select All to restore them. Counts remain visible. Open a filtered PR and go Back: the filter should remain selected.
  • In either tab, find Last fetched beside Refresh. Refresh keeps the previous list visible while loading and updates the timestamp after success. Hover the timestamp for the exact date/time.
  • Open a PR to inspect its diff. Open on GitHub should target that PR.
  • Optional approval test: use a disposable PR you are allowed to review. Review its diff before selecting Approve; this submits a real GitHub review. A changed head should require reloading the diff before approval.
  • Optional agent test: choose an existing Buzz agent and a channel it belongs to in Settings. In the PR, inspect the destination and diff-coverage disclosure before Send diff to agent. This sends the diff to that channel; the latest matching agent reply should appear if the agent responds.

Validation

  • 109 example tests pass on the repository’s pinned Node.js 24.18.0, including status counts/filtering, empty groups, selection retention/reset, cached empty results, navigation/remount reuse, refresh failure retention, last-fetched timestamps, credential changes, the external PR link, connection success/rejection, pending input, cancellation on unmount, changed-head refusal, uncertain approval outcomes, reply correlation, teardown, payload limits, and cold agent-library loading.
  • Type checks, example lint, build, and commit hooks pass.
  • Chromium layout checks pass at f23b653: both queues keep Last fetched beside Refresh at 1440px and 390px, with no clipping. Screenshots and recording use this build.
  • Status-filter journeys pass in Chromium and WebKit at 1bae314: all six classifications and counts, single selected filter, All restoration, retained filter after PR detail/Back, and desktop/390px layouts. Selecting filters produced no additional GitHub search requests.
  • Cache/link journeys pass in Chromium and WebKit at ef28ece: both queues reuse results across tabs, PR visits, and page remounts; refresh updates timestamps; failed refreshes retain results; desktop and 390px layouts fit. GitHub link URL and new-tab attributes verified; native external-browser launch was not exercised.
  • Settings journeys pass in Chromium and WebKit at 472996e: setup instructions, empty/pending controls, token rejection and retry, successful navigation, optional settings, and memory-only credentials. Numbered instructions and fields fit desktop and 390px layouts in light/dark mode. No permanent browser test cases added; connection behavior is covered by component tests and layout was checked in the actual host.
  • Chromium and WebKit cold-start journeys pass at 14ff840: install/enable, review queues, hide/unhide, diff disclosure, agent selection, signed request and correlated reply, explicit approval, disable, and token clearing.
  • WebKit additionally verifies dark appearance, 720px layouts, and 150% text size without horizontal overflow.
  • Earlier broader local scan at 19dd685: 415 browser cases passed; the unchanged WebKit emoji layout test failed at tests/browser/emoji.spec.mjs:298 by 0.234375 px (expected ≤1154.5625, received 1154.796875). Cause unconfirmed; later scan stages were not reached. Hosted CI passed at 14ff840. Hosted CI at 472996e failed in the unchanged GIF composer journey (tests/browser/gifs.spec.mjs:269: expected inserted GIF text, received an empty draft); cause unconfirmed. Hosted CI passes at f23b653; the Windows native job was skipped for this example-only change. The broader local scan was not repeated for this example-only update.

The recorded integration uses Buzz's actual App, plugin loader, Rust plugin manager, signed-event verification, and thread reader. Tauri IPC, GitHub, relay HTTP, and the agent response are supplied by isolated fixtures. No real review, external message, or live model request was sent. Packaged native-window and live-account acceptance remain unverified.

Screenshots and recording

Current build: f23b653. The 36-second walkthrough shows status counts and filters, cached queues, Last fetched beside Refresh, PR diffs, and Open on GitHub. GitHub and relay data are simulated; no real approvals or messages were sent.

pr-beacon-refresh-walkthrough.webm

Status counts and filters

PR Beacon current status counts and filters

PR details and Open on GitHub

PR Beacon current PR detail and GitHub link

Refreshed review queue, with Last fetched beside Refresh

PR Beacon current refreshed review queue

Selected Feedback filter at 390px, dark appearance

PR Beacon current narrow dark status filter

codex and others added 2 commits September 18, 2026 13:04
Review GitHub queues and commit-specific diffs in Buzz, request summaries
from a selected agent, and approve only the reviewed head. Include portable
source, regression tests, and an installable example bundle.

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Codex <codex@openai.com>
Refresh idle agent libraries and subscribe to updates so summary selection
does not require visiting Buzz's Agents page first. Show loading and retry
states, and verify listener cleanup with a cold-library fixture.

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Codex <codex@openai.com>
@bostonaholic

Copy link
Copy Markdown
Contributor Author

@codex review

Group review metadata, agent replies, diffs, and approval controls. Add scoped responsive styles that follow Buzz appearance and text size.

Signed-off-by: Codex <codex@openai.com>
Signed-off-by: Codex <codex@openai.com>
Signed-off-by: Codex <codex@openai.com>
Signed-off-by: Codex <codex@openai.com>
Signed-off-by: Codex <codex@openai.com>
@bostonaholic

Copy link
Copy Markdown
Contributor Author

🤖 PR Beacon development moved to the private PR Beacon repository. Closing this PR as requested; installation and development instructions are in the new repository.

The standalone repository now uses the separate, unpublished ctx.agentRequests host API. That host change remains required; the repository README describes the current setup. The original PR description is preserved as historical reference.

@bostonaholic
bostonaholic deleted the bostonaholic--pr-beacon-plugin branch September 22, 2026 23:04
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