Skip to content

fix(preview): failed tabs no longer sit as a blank floating panel - #7236

Open
gbarros-dev wants to merge 8 commits into
pingdotgg:mainfrom
gbarros-dev:fix/preview-failed-mini-player
Open

fix(preview): failed tabs no longer sit as a blank floating panel#7236
gbarros-dev wants to merge 8 commits into
pingdotgg:mainfrom
gbarros-dev:fix/preview-failed-mini-player

Conversation

@gbarros-dev

@gbarros-dev gbarros-dev commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

A dead preview URL still counted as a live tab. The floating mini-player stayed a white rectangle, and preview_status told the agent the page was healthy.

The mini-player now shows Retry and Close on a failed load. Status reports available: false with the URL the agent actually tried, not chrome-error://.

Closes #7212.

Implemented with Grok 4.6 through Grok CLI.


Note

Medium Risk
Touches preview automation status and overlay readiness paths agents rely on; behavior is narrowed for LoadFailed but incorrect staleness handling could misreport availability.

Overview
Failed preview navigations no longer look like a healthy blank tab. preview_status and desktop automationStatus now return available: false, keep the requested URL (not chrome-error://), and surface the error description as the title.

The floating mini-player hides the live surface on LoadFailed and shows a new PreviewMiniPlayerUnreachable overlay with friendly copy plus Retry and Close. Automation overlay wait logic only requires webview attachment so failed tabs stay reachable for retry; page health is applied via applyPreviewLoadFailureToAutomationStatus on status responses.

Reviewed by Cursor Bugbot for commit ebf9fe9. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Fix failed preview tabs to show an unreachable overlay instead of a blank panel

  • Failed navigations now mark the preview as unavailable, preserving the requested URL and showing the error description as the title instead of a blank chrome-error:// panel.
  • Adds a new PreviewMiniPlayerUnreachable overlay component that displays the failure message with Retry and Close actions.
  • ThreadPreviewMiniPlayer hides the live browser surface and renders the unreachable overlay when navStatus is LoadFailed; the PiP toggle is disabled unless already popped out.
  • applyPreviewLoadFailureToAutomationStatus is introduced as a shared helper to consistently enforce unavailable status on LoadFailed states across desktop and no-desktop paths.
  • PreviewManager.automationStatus in Manager.ts is updated to return the requested URL and error description for failed or destroyed webContents.

Macroscope summarized ebf9fe9.

@coderabbitai

coderabbitai Bot commented Aug 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 593b6b7c-d013-4ca2-b3e3-0c1ca3e41c00

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 16, 2026

@macroscopeapp macroscopeapp Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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

Comment thread apps/web/src/components/preview/PreviewMiniPlayerUnreachable.tsx Outdated
Comment thread apps/web/src/components/preview/PreviewAutomationHosts.tsx
Comment thread apps/web/src/components/preview/ThreadPreviewMiniPlayer.tsx
@macroscopeapp

macroscopeapp Bot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved 481bd05

Straightforward bug fix adding error state handling for failed preview tab navigations. The new UI component is simple, changes are well-scoped to the preview feature, and comprehensive tests are included.

You can customize Macroscope's approvability policy. Learn more.

Comment thread apps/web/src/components/preview/ThreadPreviewMiniPlayer.tsx Outdated
macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Aug 16, 2026
@gbarros-dev
gbarros-dev force-pushed the fix/preview-failed-mini-player branch from 042078f to 20612c1 Compare August 17, 2026 07:39
@macroscopeapp
macroscopeapp Bot dismissed their stale review August 17, 2026 07:39

Dismissing prior approval to re-evaluate 20612c1

@gbarros-dev

Copy link
Copy Markdown
Contributor Author

Rebased onto current main after #7082 / tooltip lint. Conflict was only in ThreadPreviewMiniPlayer.tsx; kept the styled tooltips and the failed-tab PiP disable (close stays available if already popped out).

Comment thread apps/web/src/components/preview/PreviewMiniPlayerUnreachable.tsx Outdated

@macroscopeapp macroscopeapp Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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

Comment thread apps/web/src/components/preview/PreviewMiniPlayerUnreachable.tsx Outdated

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 20612c1. Configure here.

Comment thread apps/desktop/src/preview/Manager.ts
@gbarros-dev
gbarros-dev force-pushed the fix/preview-failed-mini-player branch from 20612c1 to c63e973 Compare August 17, 2026 08:33
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.
@gbarros-dev
gbarros-dev force-pushed the fix/preview-failed-mini-player branch from 481bd05 to ebf9fe9 Compare August 18, 2026 08:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Failed browser preview remains as a blank floating panel

1 participant