Uh oh!
There was an error while loading. Please reload this page.
fix(preview): failed tabs no longer sit as a blank floating panel - #7236
fix(preview): failed tabs no longer sit as a blank floating panel#7236gbarros-dev wants to merge 15 commits into
Conversation
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Team Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Warning Your free Security trial is over. An organization admin can upgrade to Advanced for continuous pull request security review or dismiss this notice. Comment |
There was a problem hiding this comment.
One finding: the new mini-player overlay's buttons inherit pointer-events: none from the mini-player root, so Retry/Close can't be clicked.
Posted via Macroscope — UI Consistency
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This change adds a new failed-preview recovery UI and modifies automation readiness and status semantics across the desktop process, web renderer, and IPC contract. Although the scope is focused and tested, the cross-layer runtime behavior and new user-facing capability merit human review. You can add or adjust custom eligibility rules. Learn more. |
Uh oh!
There was an error while loading. Please reload this page.
042078f to
20612c1CompareDismissing prior approval to re-evaluate 20612c1
gbarros-dev
commented
Aug 17, 2026
Rebased onto current main after #7082 / tooltip lint. Conflict was only in |
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
One finding on the new mini-player unreachable overlay: the host line can overflow the floating player because nothing constrains or truncates it.
Posted via Macroscope — UI Consistency
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
20612c1 to
c63e973Compareebf9fe9 to
6c07798CompareDismissing prior approval to re-evaluate 83b931f
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Lermatroid
commented
Aug 24, 2026
looking forward to this getting merged 👀 |
a3ff688 to
d4d87f6CompareUh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
9f0f330 to
ef6fdb7CompareUh oh!
There was an error while loading. Please reload this page.
A dead preview URL still has WebContents, so the mini-player rendered a white rectangle and preview_status reported the tab as available. Surface Retry/Close on LoadFailed and mark automation status unavailable.
chrome-error:// is not navigable. available:false plus the Chromium error title already mark the tab dead; status.url stays the page the agent tried.
The listener map was typed as never[], so calling did-fail-load with a real event payload failed tsgo.
…layer The floating preview root is pointer-events-none. The overlay now opts back in so the buttons work, matching the drag chrome and resize handle.
A successful retry can make desktop status available before the server snapshot catches up. Trust live availability on the desktop path. Also disable native PiP on the failed mini-player, matching the full panel.
Disabling the toggle on LoadFailed also blocked closing an already-open separate window. Only prevent opening while the page is unreachable.
LoadFailed still has a live guest. Waiting on available:false blocked navigate and retry. The wait now keys off hasWebContents. The overlay also truncated neither the host nor hostless file/data URLs.
registerWebview now restores audio mute on attach; the LoadFailed automation-status test was still missing those stubs after rebasing onto mute-tab.
LoadFailed reports available:false with a live guest. waitForNavigationReadiness was still polling for available:true, so navigate to a dead URL hung until timeout instead of returning the error status.
available:false + loading:false is LoadFailed only while the webview is still attached. A destroyed webContents now fails as an unavailable target instead of completing waitForNavigationReadiness.
A stale LoadFailed snapshot no longer overwrites an in-flight load. Desktop automation status now reports whether the guest is actually attached, so a destroyed webContents cannot settle as a finished load.
b707c47 to
16d209aCompareThere was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 16d209a. Configure here.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.

A dead preview URL still counted as a live tab. The floating mini-player stayed a white rectangle, and
preview_statustold the agent the page was healthy.The mini-player now shows Retry and Close on a failed load. Status reports
available: falsewith the URL the agent actually tried, notchrome-error://.Closes#7212.
Implemented with Grok 4.6 through Grok CLI.
Note
Medium Risk
Changes preview automation readiness, IPC status shape, and agent-facing
preview_statussemantics; mistakes could block navigate/retry or misreport tab health, but behavior is heavily tested.Overview
Failed preview navigations no longer look like a healthy blank tab: automation status reports
available: falsewith the requested URL and error text (notchrome-error://), and desktop status adds an optionalattachedflag so callers can tell a live-but-failed guest from a destroyed one.The floating mini-player shows a Retry / Close overlay on
LoadFailed, hides the webview surface, and wires Retry topreviewBridge.refresh. SharedapplyPreviewLoadFailureToAutomationStatuskeepspreview_statushonest whilepreferLiveAvailabilityavoids stale failure snapshots during an in-flight retry.Automation overlay and navigation readiness waits now key off attachment (with overlay fallback for older hosts): they settle when a guest is attached but failed, and fail fast when
attached === falseinstead of timing out or treating a dead guest as a finished load.Reviewed by Cursor Bugbot for commit 611eb1d. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Fix failed preview tabs to show unreachable overlay instead of blank panel
PreviewMiniPlayerUnreachablecomponent that renders the parsed host or raw URL, friendly error text, and Retry/Close actions for failed navigations in the floating mini-playerattachedboolean toDesktopPreviewAutomationStatusSchemaso the main process can report whether the live guest process is still attached, independent of the registered web contents identifierPreviewManager.automationStatusto preserve failure description and requested URL for failed navigations, and reportdetachedfor destroyed or missing web contents instead of returning a generic empty statuswaitForNavigationReadinessto settle for an attached guest after a failed navigation and reject detached guests withPreviewAutomationTargetUnavailableError; falls back to overlay snapshot for older hosts without theattachedfieldLoadFailedsnapshot; older desktop hosts without theattachedfield still work via overlay fallbackMacroscope summarized 611eb1d.