feat: full mode embeds the local dashboard inline by default; clear error when not local (v0.5.0)#12
Merged
Merged
Conversation
…ror when not local (v0.5.0) Per feedback (the minimal screenshot mode isn't wanted): full mode is the default again and now embeds agent-browser's dashboard INLINE — but correctly, at its own local origin (http://<host>:<port>/), not through the impossible sub-path proxy. On a local setup (console + agent-browser on one machine) you get the real dashboard, feeds and all, in the panel. Verified e2e against the live binary (iframe → 127.0.0.1:4848, dashboard loaded — title + tabs, status "running", no error). "Assume local, error if not": full mode detects whether the dashboard is reachable from the operator's browser — LOCAL = loopback host (localhost/127.0.0.1) AND not fleet-proxied (base=="") AND not https. If not local (a member, a non-loopback host, or an https console where the http dashboard is mixed-content-blocked), it shows a clear, specific error pointing at panel_mode: minimal instead of a blank frame. Local-but-stopped shows a Start prompt; the Start/Stop control is in the bar. minimal mode stays as the remote/everywhere option. 19 tests (full-mode test now asserts the embed + the error path), ruff clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
👀 Quinn is reviewing — verdict (PASS / WARN / FAIL) + findings to follow. |
There was a problem hiding this comment.
QA Audit — PR #12 | feat: full mode embeds the local dashboard inline by default; clear error when not local (v0.5.0)
VERDICT: WARN
CI Status
- test: queued
⏳ Non-terminal — re-review will land once checks complete.
Diff Review
browser_panel.py: Full mode switches from launcher card → inline iframe at dashboard's own origin. Local detection (loopback + no fleet proxy + not https) gates the embed; non-local and mixed-content get clear actionable errors pointing atpanel_mode: minimal. Start/Stop lives in the bar, visible only when embeddable.CHANGELOG.md,README.md: Docs updated to reflect new default and error behavior.protoagent.plugin.yaml: Version bump to v0.5.0.
Observations
- LOW: Clawpatch structural review unavailable — repo not in project registry. Diff-based review only.
- LOW: Diff truncated at 200/302 lines — Python route-handler changes beyond the
_FULL_PAGEtemplate update were not reviewed. - INFO:
setTimeout(decide, 1500)after dashboard start gives 1.5s for boot before re-check. Adequate for most systems but may flicker on very slow hardware. Not a correctness issue — the poll catches it on the next interval. - INFO: The three-branch
decide()logic (!LOCAL, MIXED, local) is cleanly separated with specific error messages. No fall-through ambiguity. - INFO:
setIntervalpolling gates onLOCAL && !MIXED && $("f").style.display === "none"— stops polling once the iframe is showing, avoiding unnecessary API traffic. Dashboard-crash detection is left to the iframe's own error display (reasonable).
— Quinn, QA Engineer
|
Submitted COMMENT review on #12. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to the v0.4.0 panel work, per feedback (the minimal screenshot mode isn't wanted).
What changes
fullis the default again — and it embeds the dashboard inline, the right way: at the dashboard's own local origin (http://<host>:<port>/), not through the sub-path proxy that could never serve its root-absolute Next.js assets. On a local setup (console + agent-browser on one box) you get the real dashboard — viewport + activity/console/network feeds — right in the panel. Verified e2e against the live binary: iframe →127.0.0.1:4848, dashboard actually loaded (title + tabs), status "running", no error.panel_mode: minimal— never a blank frame. Local-but-stopped shows a Start prompt; Start/Stop lives in the bar.minimalstays as the works-everywhere option (screenshot viewport) for remote/member agents.No change to the browser tools. 19 tests (the full-mode test now asserts the inline embed + the local-detection + the error), ruff clean.
🤖 Generated with Claude Code