fix(web): honor autoOpenPreview when running a project action - #5223

Open
matthias-trip wants to merge 1 commit into
pingdotgg:mainfrom
matthias-trip:fix/action-auto-open-preview
Open

fix(web): honor autoOpenPreview when running a project action#5223
matthias-trip wants to merge 1 commit into
pingdotgg:mainfrom
matthias-trip:fix/action-auto-open-preview

Conversation

@matthias-trip

@matthias-tripmatthias-trip commented Aug 2, 2026

Copy link
Copy Markdown

The "Open preview automatically when this action runs" toggle in the Add action modal has had no effect since #2978. That rewrite moved runProjectScript onto the atom command API and dropped the block that opened the preview panel once the command was written to the terminal. #3842 later restored persistence of previewUrl / autoOpenPreview, so the setting saves and reloads correctly — nothing reads it at run time.

Fixes#5221.

What Changed

  • runProjectScript opens the preview again when a script carries both autoOpenPreview and previewUrl, the runtime supports preview, and a thread ref exists — the same four conditions the original code checked.
  • It goes through the existing openUrlInPreview helper rather than re-adding the hand-rolled version: that helper already opens the session, applies the snapshot, remembers the URL, and reveals the tab, and the terminal-link and markdown-link paths use it too.
  • A failed terminal write now returns instead of falling through, so a script that never started cannot open a preview.

Why

The setting is currently documented behavior that does nothing. Both schemas promise it — "automatically open the preview panel pointed at previewUrl the moment this script starts" (orchestration.ts, and the same wording in t3ProjectFile.ts) — and the modal's own helper text promises it for the Preview URL field. Since #4317 put both fields in the shared t3.json schema, a team can commit autoOpenPreview to a repo and get nothing.

Two details worth calling out, since they go slightly beyond reverting:

The early return on write failure. Previously that branch set the thread error and then hit the end of the function anyway, so returning was equivalent — it only starts to matter once something is appended after it. Making it explicit keeps "the script never started" from reaching the auto-open, and matches how the openTerminal failure directly above is handled.

The preview result is awaited and ignored. Preview failures surface in the panel itself, and by that point the script is running — reporting one as Failed to run script would be wrong. This mirrors the original code's catch {} with the comment that said the same thing.

UI Changes

No visual or layout change: the preview panel, its chrome and its empty state are all untouched. What changes is when an existing panel opens — with the toggle on, running the action reveals the preview at the configured URL instead of leaving the panel closed. I don't have a recording to attach; happy to add one if you'd like to see the interaction.

Validation

  • vp run --filter @t3tools/web typecheck
  • vp lint apps/web/src/components/ChatView.tsx
  • vp run --filter @t3tools/web test — 1765 passed (201 files)
  • Built a local macOS arm64 desktop artifact and confirmed the restored call is present in the packaged app.asar

No regression test. runProjectScript is a useCallback inside ChatView with no existing harness, and the only extraction I could make honestly (a shouldAutoOpenPreview predicate) would still pass with the call site deleted again — which is the failure mode here. Building a ChatView harness for it seemed well outside "small and focused"; glad to add one if you'd rather have it.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — no visual change; see UI Changes above
  • I included a video for animation/interaction changes — not attached; say the word and I'll record the toggle in action

🤖 Generated with Claude Code


Note

Low Risk
Single-path UI behavior fix in ChatView with no auth or data-model changes; preview errors are intentionally ignored after the script starts.

Overview
Restores auto-open preview when a project action runs with Open preview automatically enabled and a Preview URL configured — behavior that stopped working after runProjectScript moved to the atom command API.

After a successful terminal write in runProjectScript, the flow calls openUrlInPreview (same helper as markdown/terminal links) when autoOpenPreview, previewUrl, preview runtime support, and a thread ref are all present. Preview open failures are awaited but not surfaced as script failures.

A failed terminal write now returns immediately so a script that never started cannot trigger preview open; write-failure handling is structured explicitly instead of only setting thread error and falling through.

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

Note

Honor autoOpenPreview when running a project action in ChatView

  • When a script has autoOpenPreview and a previewUrl set, the script-run handler in ChatView.tsx now calls openUrlInPreview after successfully writing the command to the terminal (in supported runtimes with an active thread).
  • Fixes a bug where a terminal write failure did not exit early, potentially allowing the preview-open logic to run incorrectly.

Macroscope summarized 742c1ef.

The "Open preview automatically when this action runs" toggle has had no
effect since pingdotgg#2978: that rewrite moved runProjectScript onto the atom
command API and dropped the block that opened the preview panel after the
command was written to the terminal. pingdotgg#3842 later restored persistence of
previewUrl/autoOpenPreview, so the setting saves and reloads correctly —
it simply is not read at run time by anything.
Restore the auto-open through the existing openUrlInPreview helper, which
already does what the deleted code did by hand (open the session, apply
the snapshot, remember the URL, reveal the tab in the right panel).
A failed terminal write now returns instead of falling through, so a
script that never started cannot open a preview. Preview failures stay
silent for the caller: they are surfaced by the panel itself, and the
script is already running, so they are not the script's failure.
Fixespingdotgg#5221
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

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: 3ef3d6a7-985e-4ea3-afd2-9a584475d034

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-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Aug 2, 2026

@cursorcursorBot 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.

Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 742c1ef. Configure here.

threadRef: activeThreadRef,
url: script.previewUrl,
openPreview,
});

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.

Preview URL skips env rewrite

Medium Severity

Auto-open passes the raw script.previewUrl into openUrlInPreview, so loopback URLs are never rewritten for the thread environment. The same configured script URLs go through resolveDiscoveredServerUrl when opened from the preview empty state, so remote and 0.0.0.0 targets open the wrong host here while manual open works.

Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit 742c1ef. Configure here.

@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds new runtime behavior for auto-opening previews, and there's an unresolved medium-severity review comment about preview URLs not being properly rewritten for the thread environment (raw URL passed instead of going through resolveDiscoveredServerUrl).

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

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: "Open preview automatically when this action runs" has no effect

1 participant

@matthias-trip
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix(web): honor autoOpenPreview when running a project action - #5223

Open
matthias-trip wants to merge 1 commit into
pingdotgg:mainfrom
matthias-trip:fix/action-auto-open-preview
Open

fix(web): honor autoOpenPreview when running a project action#5223
matthias-trip wants to merge 1 commit into
pingdotgg:mainfrom
matthias-trip:fix/action-auto-open-preview

Conversation

@matthias-trip

@matthias-tripmatthias-trip commented Aug 2, 2026

Copy link
Copy Markdown

The "Open preview automatically when this action runs" toggle in the Add action modal has had no effect since #2978. That rewrite moved runProjectScript onto the atom command API and dropped the block that opened the preview panel once the command was written to the terminal. #3842 later restored persistence of previewUrl / autoOpenPreview, so the setting saves and reloads correctly — nothing reads it at run time.

Fixes#5221.

What Changed

  • runProjectScript opens the preview again when a script carries both autoOpenPreview and previewUrl, the runtime supports preview, and a thread ref exists — the same four conditions the original code checked.
  • It goes through the existing openUrlInPreview helper rather than re-adding the hand-rolled version: that helper already opens the session, applies the snapshot, remembers the URL, and reveals the tab, and the terminal-link and markdown-link paths use it too.
  • A failed terminal write now returns instead of falling through, so a script that never started cannot open a preview.

Why

The setting is currently documented behavior that does nothing. Both schemas promise it — "automatically open the preview panel pointed at previewUrl the moment this script starts" (orchestration.ts, and the same wording in t3ProjectFile.ts) — and the modal's own helper text promises it for the Preview URL field. Since #4317 put both fields in the shared t3.json schema, a team can commit autoOpenPreview to a repo and get nothing.

Two details worth calling out, since they go slightly beyond reverting:

The early return on write failure. Previously that branch set the thread error and then hit the end of the function anyway, so returning was equivalent — it only starts to matter once something is appended after it. Making it explicit keeps "the script never started" from reaching the auto-open, and matches how the openTerminal failure directly above is handled.

The preview result is awaited and ignored. Preview failures surface in the panel itself, and by that point the script is running — reporting one as Failed to run script would be wrong. This mirrors the original code's catch {} with the comment that said the same thing.

UI Changes

No visual or layout change: the preview panel, its chrome and its empty state are all untouched. What changes is when an existing panel opens — with the toggle on, running the action reveals the preview at the configured URL instead of leaving the panel closed. I don't have a recording to attach; happy to add one if you'd like to see the interaction.

Validation

  • vp run --filter @t3tools/web typecheck
  • vp lint apps/web/src/components/ChatView.tsx
  • vp run --filter @t3tools/web test — 1765 passed (201 files)
  • Built a local macOS arm64 desktop artifact and confirmed the restored call is present in the packaged app.asar

No regression test. runProjectScript is a useCallback inside ChatView with no existing harness, and the only extraction I could make honestly (a shouldAutoOpenPreview predicate) would still pass with the call site deleted again — which is the failure mode here. Building a ChatView harness for it seemed well outside "small and focused"; glad to add one if you'd rather have it.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — no visual change; see UI Changes above
  • I included a video for animation/interaction changes — not attached; say the word and I'll record the toggle in action

🤖 Generated with Claude Code


Note

Low Risk
Single-path UI behavior fix in ChatView with no auth or data-model changes; preview errors are intentionally ignored after the script starts.

Overview
Restores auto-open preview when a project action runs with Open preview automatically enabled and a Preview URL configured — behavior that stopped working after runProjectScript moved to the atom command API.

After a successful terminal write in runProjectScript, the flow calls openUrlInPreview (same helper as markdown/terminal links) when autoOpenPreview, previewUrl, preview runtime support, and a thread ref are all present. Preview open failures are awaited but not surfaced as script failures.

A failed terminal write now returns immediately so a script that never started cannot trigger preview open; write-failure handling is structured explicitly instead of only setting thread error and falling through.

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

Note

Honor autoOpenPreview when running a project action in ChatView

  • When a script has autoOpenPreview and a previewUrl set, the script-run handler in ChatView.tsx now calls openUrlInPreview after successfully writing the command to the terminal (in supported runtimes with an active thread).
  • Fixes a bug where a terminal write failure did not exit early, potentially allowing the preview-open logic to run incorrectly.

Macroscope summarized 742c1ef.

The "Open preview automatically when this action runs" toggle has had no
effect since pingdotgg#2978: that rewrite moved runProjectScript onto the atom
command API and dropped the block that opened the preview panel after the
command was written to the terminal. pingdotgg#3842 later restored persistence of
previewUrl/autoOpenPreview, so the setting saves and reloads correctly —
it simply is not read at run time by anything.
Restore the auto-open through the existing openUrlInPreview helper, which
already does what the deleted code did by hand (open the session, apply
the snapshot, remember the URL, reveal the tab in the right panel).
A failed terminal write now returns instead of falling through, so a
script that never started cannot open a preview. Preview failures stay
silent for the caller: they are surfaced by the panel itself, and the
script is already running, so they are not the script's failure.
Fixespingdotgg#5221
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

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: 3ef3d6a7-985e-4ea3-afd2-9a584475d034

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-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Aug 2, 2026

@cursorcursorBot 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.

Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 742c1ef. Configure here.

threadRef: activeThreadRef,
url: script.previewUrl,
openPreview,
});

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.

Preview URL skips env rewrite

Medium Severity

Auto-open passes the raw script.previewUrl into openUrlInPreview, so loopback URLs are never rewritten for the thread environment. The same configured script URLs go through resolveDiscoveredServerUrl when opened from the preview empty state, so remote and 0.0.0.0 targets open the wrong host here while manual open works.

Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit 742c1ef. Configure here.

@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds new runtime behavior for auto-opening previews, and there's an unresolved medium-severity review comment about preview URLs not being properly rewritten for the thread environment (raw URL passed instead of going through resolveDiscoveredServerUrl).

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

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: "Open preview automatically when this action runs" has no effect

1 participant

@matthias-trip
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(web): honor autoOpenPreview when running a project action - #5223

Open
matthias-trip wants to merge 1 commit into
pingdotgg:mainfrom
matthias-trip:fix/action-auto-open-preview
Open

fix(web): honor autoOpenPreview when running a project action#5223
matthias-trip wants to merge 1 commit into
pingdotgg:mainfrom
matthias-trip:fix/action-auto-open-preview

Conversation

@matthias-trip

@matthias-tripmatthias-trip commented Aug 2, 2026

Copy link
Copy Markdown

The "Open preview automatically when this action runs" toggle in the Add action modal has had no effect since #2978. That rewrite moved runProjectScript onto the atom command API and dropped the block that opened the preview panel once the command was written to the terminal. #3842 later restored persistence of previewUrl / autoOpenPreview, so the setting saves and reloads correctly — nothing reads it at run time.

Fixes#5221.

What Changed

  • runProjectScript opens the preview again when a script carries both autoOpenPreview and previewUrl, the runtime supports preview, and a thread ref exists — the same four conditions the original code checked.
  • It goes through the existing openUrlInPreview helper rather than re-adding the hand-rolled version: that helper already opens the session, applies the snapshot, remembers the URL, and reveals the tab, and the terminal-link and markdown-link paths use it too.
  • A failed terminal write now returns instead of falling through, so a script that never started cannot open a preview.

Why

The setting is currently documented behavior that does nothing. Both schemas promise it — "automatically open the preview panel pointed at previewUrl the moment this script starts" (orchestration.ts, and the same wording in t3ProjectFile.ts) — and the modal's own helper text promises it for the Preview URL field. Since #4317 put both fields in the shared t3.json schema, a team can commit autoOpenPreview to a repo and get nothing.

Two details worth calling out, since they go slightly beyond reverting:

The early return on write failure. Previously that branch set the thread error and then hit the end of the function anyway, so returning was equivalent — it only starts to matter once something is appended after it. Making it explicit keeps "the script never started" from reaching the auto-open, and matches how the openTerminal failure directly above is handled.

The preview result is awaited and ignored. Preview failures surface in the panel itself, and by that point the script is running — reporting one as Failed to run script would be wrong. This mirrors the original code's catch {} with the comment that said the same thing.

UI Changes

No visual or layout change: the preview panel, its chrome and its empty state are all untouched. What changes is when an existing panel opens — with the toggle on, running the action reveals the preview at the configured URL instead of leaving the panel closed. I don't have a recording to attach; happy to add one if you'd like to see the interaction.

Validation

  • vp run --filter @t3tools/web typecheck
  • vp lint apps/web/src/components/ChatView.tsx
  • vp run --filter @t3tools/web test — 1765 passed (201 files)
  • Built a local macOS arm64 desktop artifact and confirmed the restored call is present in the packaged app.asar

No regression test. runProjectScript is a useCallback inside ChatView with no existing harness, and the only extraction I could make honestly (a shouldAutoOpenPreview predicate) would still pass with the call site deleted again — which is the failure mode here. Building a ChatView harness for it seemed well outside "small and focused"; glad to add one if you'd rather have it.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — no visual change; see UI Changes above
  • I included a video for animation/interaction changes — not attached; say the word and I'll record the toggle in action

🤖 Generated with Claude Code


Note

Low Risk
Single-path UI behavior fix in ChatView with no auth or data-model changes; preview errors are intentionally ignored after the script starts.

Overview
Restores auto-open preview when a project action runs with Open preview automatically enabled and a Preview URL configured — behavior that stopped working after runProjectScript moved to the atom command API.

After a successful terminal write in runProjectScript, the flow calls openUrlInPreview (same helper as markdown/terminal links) when autoOpenPreview, previewUrl, preview runtime support, and a thread ref are all present. Preview open failures are awaited but not surfaced as script failures.

A failed terminal write now returns immediately so a script that never started cannot trigger preview open; write-failure handling is structured explicitly instead of only setting thread error and falling through.

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

Note

Honor autoOpenPreview when running a project action in ChatView

  • When a script has autoOpenPreview and a previewUrl set, the script-run handler in ChatView.tsx now calls openUrlInPreview after successfully writing the command to the terminal (in supported runtimes with an active thread).
  • Fixes a bug where a terminal write failure did not exit early, potentially allowing the preview-open logic to run incorrectly.

Macroscope summarized 742c1ef.

The "Open preview automatically when this action runs" toggle has had no
effect since pingdotgg#2978: that rewrite moved runProjectScript onto the atom
command API and dropped the block that opened the preview panel after the
command was written to the terminal. pingdotgg#3842 later restored persistence of
previewUrl/autoOpenPreview, so the setting saves and reloads correctly —
it simply is not read at run time by anything.
Restore the auto-open through the existing openUrlInPreview helper, which
already does what the deleted code did by hand (open the session, apply
the snapshot, remember the URL, reveal the tab in the right panel).
A failed terminal write now returns instead of falling through, so a
script that never started cannot open a preview. Preview failures stay
silent for the caller: they are surfaced by the panel itself, and the
script is already running, so they are not the script's failure.
Fixespingdotgg#5221
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

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: 3ef3d6a7-985e-4ea3-afd2-9a584475d034

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-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Aug 2, 2026

@cursorcursorBot 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.

Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 742c1ef. Configure here.

threadRef: activeThreadRef,
url: script.previewUrl,
openPreview,
});

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.

Preview URL skips env rewrite

Medium Severity

Auto-open passes the raw script.previewUrl into openUrlInPreview, so loopback URLs are never rewritten for the thread environment. The same configured script URLs go through resolveDiscoveredServerUrl when opened from the preview empty state, so remote and 0.0.0.0 targets open the wrong host here while manual open works.

Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit 742c1ef. Configure here.

@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds new runtime behavior for auto-opening previews, and there's an unresolved medium-severity review comment about preview URLs not being properly rewritten for the thread environment (raw URL passed instead of going through resolveDiscoveredServerUrl).

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

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: "Open preview automatically when this action runs" has no effect

1 participant

@matthias-trip
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(web): honor autoOpenPreview when running a project action - #5223

Open
matthias-trip wants to merge 1 commit into
pingdotgg:mainfrom
matthias-trip:fix/action-auto-open-preview
Open

fix(web): honor autoOpenPreview when running a project action#5223
matthias-trip wants to merge 1 commit into
pingdotgg:mainfrom
matthias-trip:fix/action-auto-open-preview

Conversation

@matthias-trip

@matthias-tripmatthias-trip commented Aug 2, 2026

Copy link
Copy Markdown

The "Open preview automatically when this action runs" toggle in the Add action modal has had no effect since #2978. That rewrite moved runProjectScript onto the atom command API and dropped the block that opened the preview panel once the command was written to the terminal. #3842 later restored persistence of previewUrl / autoOpenPreview, so the setting saves and reloads correctly — nothing reads it at run time.

Fixes#5221.

What Changed

  • runProjectScript opens the preview again when a script carries both autoOpenPreview and previewUrl, the runtime supports preview, and a thread ref exists — the same four conditions the original code checked.
  • It goes through the existing openUrlInPreview helper rather than re-adding the hand-rolled version: that helper already opens the session, applies the snapshot, remembers the URL, and reveals the tab, and the terminal-link and markdown-link paths use it too.
  • A failed terminal write now returns instead of falling through, so a script that never started cannot open a preview.

Why

The setting is currently documented behavior that does nothing. Both schemas promise it — "automatically open the preview panel pointed at previewUrl the moment this script starts" (orchestration.ts, and the same wording in t3ProjectFile.ts) — and the modal's own helper text promises it for the Preview URL field. Since #4317 put both fields in the shared t3.json schema, a team can commit autoOpenPreview to a repo and get nothing.

Two details worth calling out, since they go slightly beyond reverting:

The early return on write failure. Previously that branch set the thread error and then hit the end of the function anyway, so returning was equivalent — it only starts to matter once something is appended after it. Making it explicit keeps "the script never started" from reaching the auto-open, and matches how the openTerminal failure directly above is handled.

The preview result is awaited and ignored. Preview failures surface in the panel itself, and by that point the script is running — reporting one as Failed to run script would be wrong. This mirrors the original code's catch {} with the comment that said the same thing.

UI Changes

No visual or layout change: the preview panel, its chrome and its empty state are all untouched. What changes is when an existing panel opens — with the toggle on, running the action reveals the preview at the configured URL instead of leaving the panel closed. I don't have a recording to attach; happy to add one if you'd like to see the interaction.

Validation

  • vp run --filter @t3tools/web typecheck
  • vp lint apps/web/src/components/ChatView.tsx
  • vp run --filter @t3tools/web test — 1765 passed (201 files)
  • Built a local macOS arm64 desktop artifact and confirmed the restored call is present in the packaged app.asar

No regression test. runProjectScript is a useCallback inside ChatView with no existing harness, and the only extraction I could make honestly (a shouldAutoOpenPreview predicate) would still pass with the call site deleted again — which is the failure mode here. Building a ChatView harness for it seemed well outside "small and focused"; glad to add one if you'd rather have it.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — no visual change; see UI Changes above
  • I included a video for animation/interaction changes — not attached; say the word and I'll record the toggle in action

🤖 Generated with Claude Code


Note

Low Risk
Single-path UI behavior fix in ChatView with no auth or data-model changes; preview errors are intentionally ignored after the script starts.

Overview
Restores auto-open preview when a project action runs with Open preview automatically enabled and a Preview URL configured — behavior that stopped working after runProjectScript moved to the atom command API.

After a successful terminal write in runProjectScript, the flow calls openUrlInPreview (same helper as markdown/terminal links) when autoOpenPreview, previewUrl, preview runtime support, and a thread ref are all present. Preview open failures are awaited but not surfaced as script failures.

A failed terminal write now returns immediately so a script that never started cannot trigger preview open; write-failure handling is structured explicitly instead of only setting thread error and falling through.

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

Note

Honor autoOpenPreview when running a project action in ChatView

  • When a script has autoOpenPreview and a previewUrl set, the script-run handler in ChatView.tsx now calls openUrlInPreview after successfully writing the command to the terminal (in supported runtimes with an active thread).
  • Fixes a bug where a terminal write failure did not exit early, potentially allowing the preview-open logic to run incorrectly.

Macroscope summarized 742c1ef.

The "Open preview automatically when this action runs" toggle has had no
effect since pingdotgg#2978: that rewrite moved runProjectScript onto the atom
command API and dropped the block that opened the preview panel after the
command was written to the terminal. pingdotgg#3842 later restored persistence of
previewUrl/autoOpenPreview, so the setting saves and reloads correctly —
it simply is not read at run time by anything.
Restore the auto-open through the existing openUrlInPreview helper, which
already does what the deleted code did by hand (open the session, apply
the snapshot, remember the URL, reveal the tab in the right panel).
A failed terminal write now returns instead of falling through, so a
script that never started cannot open a preview. Preview failures stay
silent for the caller: they are surfaced by the panel itself, and the
script is already running, so they are not the script's failure.
Fixespingdotgg#5221
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

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: 3ef3d6a7-985e-4ea3-afd2-9a584475d034

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-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Aug 2, 2026

@cursorcursorBot 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.

Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 742c1ef. Configure here.

threadRef: activeThreadRef,
url: script.previewUrl,
openPreview,
});

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.

Preview URL skips env rewrite

Medium Severity

Auto-open passes the raw script.previewUrl into openUrlInPreview, so loopback URLs are never rewritten for the thread environment. The same configured script URLs go through resolveDiscoveredServerUrl when opened from the preview empty state, so remote and 0.0.0.0 targets open the wrong host here while manual open works.

Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit 742c1ef. Configure here.

@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds new runtime behavior for auto-opening previews, and there's an unresolved medium-severity review comment about preview URLs not being properly rewritten for the thread environment (raw URL passed instead of going through resolveDiscoveredServerUrl).

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

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: "Open preview automatically when this action runs" has no effect

1 participant

@matthias-trip
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

fix(web): honor autoOpenPreview when running a project action - #5223

Open
matthias-trip wants to merge 1 commit into
pingdotgg:mainfrom
matthias-trip:fix/action-auto-open-preview
Open

fix(web): honor autoOpenPreview when running a project action#5223
matthias-trip wants to merge 1 commit into
pingdotgg:mainfrom
matthias-trip:fix/action-auto-open-preview

Conversation

@matthias-trip

@matthias-tripmatthias-trip commented Aug 2, 2026

Copy link
Copy Markdown

The "Open preview automatically when this action runs" toggle in the Add action modal has had no effect since #2978. That rewrite moved runProjectScript onto the atom command API and dropped the block that opened the preview panel once the command was written to the terminal. #3842 later restored persistence of previewUrl / autoOpenPreview, so the setting saves and reloads correctly — nothing reads it at run time.

Fixes#5221.

What Changed

  • runProjectScript opens the preview again when a script carries both autoOpenPreview and previewUrl, the runtime supports preview, and a thread ref exists — the same four conditions the original code checked.
  • It goes through the existing openUrlInPreview helper rather than re-adding the hand-rolled version: that helper already opens the session, applies the snapshot, remembers the URL, and reveals the tab, and the terminal-link and markdown-link paths use it too.
  • A failed terminal write now returns instead of falling through, so a script that never started cannot open a preview.

Why

The setting is currently documented behavior that does nothing. Both schemas promise it — "automatically open the preview panel pointed at previewUrl the moment this script starts" (orchestration.ts, and the same wording in t3ProjectFile.ts) — and the modal's own helper text promises it for the Preview URL field. Since #4317 put both fields in the shared t3.json schema, a team can commit autoOpenPreview to a repo and get nothing.

Two details worth calling out, since they go slightly beyond reverting:

The early return on write failure. Previously that branch set the thread error and then hit the end of the function anyway, so returning was equivalent — it only starts to matter once something is appended after it. Making it explicit keeps "the script never started" from reaching the auto-open, and matches how the openTerminal failure directly above is handled.

The preview result is awaited and ignored. Preview failures surface in the panel itself, and by that point the script is running — reporting one as Failed to run script would be wrong. This mirrors the original code's catch {} with the comment that said the same thing.

UI Changes

No visual or layout change: the preview panel, its chrome and its empty state are all untouched. What changes is when an existing panel opens — with the toggle on, running the action reveals the preview at the configured URL instead of leaving the panel closed. I don't have a recording to attach; happy to add one if you'd like to see the interaction.

Validation

  • vp run --filter @t3tools/web typecheck
  • vp lint apps/web/src/components/ChatView.tsx
  • vp run --filter @t3tools/web test — 1765 passed (201 files)
  • Built a local macOS arm64 desktop artifact and confirmed the restored call is present in the packaged app.asar

No regression test. runProjectScript is a useCallback inside ChatView with no existing harness, and the only extraction I could make honestly (a shouldAutoOpenPreview predicate) would still pass with the call site deleted again — which is the failure mode here. Building a ChatView harness for it seemed well outside "small and focused"; glad to add one if you'd rather have it.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — no visual change; see UI Changes above
  • I included a video for animation/interaction changes — not attached; say the word and I'll record the toggle in action

🤖 Generated with Claude Code


Note

Low Risk
Single-path UI behavior fix in ChatView with no auth or data-model changes; preview errors are intentionally ignored after the script starts.

Overview
Restores auto-open preview when a project action runs with Open preview automatically enabled and a Preview URL configured — behavior that stopped working after runProjectScript moved to the atom command API.

After a successful terminal write in runProjectScript, the flow calls openUrlInPreview (same helper as markdown/terminal links) when autoOpenPreview, previewUrl, preview runtime support, and a thread ref are all present. Preview open failures are awaited but not surfaced as script failures.

A failed terminal write now returns immediately so a script that never started cannot trigger preview open; write-failure handling is structured explicitly instead of only setting thread error and falling through.

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

Note

Honor autoOpenPreview when running a project action in ChatView

  • When a script has autoOpenPreview and a previewUrl set, the script-run handler in ChatView.tsx now calls openUrlInPreview after successfully writing the command to the terminal (in supported runtimes with an active thread).
  • Fixes a bug where a terminal write failure did not exit early, potentially allowing the preview-open logic to run incorrectly.

Macroscope summarized 742c1ef.

The "Open preview automatically when this action runs" toggle has had no
effect since pingdotgg#2978: that rewrite moved runProjectScript onto the atom
command API and dropped the block that opened the preview panel after the
command was written to the terminal. pingdotgg#3842 later restored persistence of
previewUrl/autoOpenPreview, so the setting saves and reloads correctly —
it simply is not read at run time by anything.
Restore the auto-open through the existing openUrlInPreview helper, which
already does what the deleted code did by hand (open the session, apply
the snapshot, remember the URL, reveal the tab in the right panel).
A failed terminal write now returns instead of falling through, so a
script that never started cannot open a preview. Preview failures stay
silent for the caller: they are surfaced by the panel itself, and the
script is already running, so they are not the script's failure.
Fixespingdotgg#5221
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

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: 3ef3d6a7-985e-4ea3-afd2-9a584475d034

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-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Aug 2, 2026

@cursorcursorBot 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.

Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 742c1ef. Configure here.

threadRef: activeThreadRef,
url: script.previewUrl,
openPreview,
});

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.

Preview URL skips env rewrite

Medium Severity

Auto-open passes the raw script.previewUrl into openUrlInPreview, so loopback URLs are never rewritten for the thread environment. The same configured script URLs go through resolveDiscoveredServerUrl when opened from the preview empty state, so remote and 0.0.0.0 targets open the wrong host here while manual open works.

Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit 742c1ef. Configure here.

@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds new runtime behavior for auto-opening previews, and there's an unresolved medium-severity review comment about preview URLs not being properly rewritten for the thread environment (raw URL passed instead of going through resolveDiscoveredServerUrl).

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

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: "Open preview automatically when this action runs" has no effect

1 participant

@matthias-trip
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(web): honor autoOpenPreview when running a project action - #5223

Open
matthias-trip wants to merge 1 commit into
pingdotgg:mainfrom
matthias-trip:fix/action-auto-open-preview
Open

fix(web): honor autoOpenPreview when running a project action#5223
matthias-trip wants to merge 1 commit into
pingdotgg:mainfrom
matthias-trip:fix/action-auto-open-preview

Conversation

@matthias-trip

@matthias-tripmatthias-trip commented Aug 2, 2026

Copy link
Copy Markdown

The "Open preview automatically when this action runs" toggle in the Add action modal has had no effect since #2978. That rewrite moved runProjectScript onto the atom command API and dropped the block that opened the preview panel once the command was written to the terminal. #3842 later restored persistence of previewUrl / autoOpenPreview, so the setting saves and reloads correctly — nothing reads it at run time.

Fixes#5221.

What Changed

  • runProjectScript opens the preview again when a script carries both autoOpenPreview and previewUrl, the runtime supports preview, and a thread ref exists — the same four conditions the original code checked.
  • It goes through the existing openUrlInPreview helper rather than re-adding the hand-rolled version: that helper already opens the session, applies the snapshot, remembers the URL, and reveals the tab, and the terminal-link and markdown-link paths use it too.
  • A failed terminal write now returns instead of falling through, so a script that never started cannot open a preview.

Why

The setting is currently documented behavior that does nothing. Both schemas promise it — "automatically open the preview panel pointed at previewUrl the moment this script starts" (orchestration.ts, and the same wording in t3ProjectFile.ts) — and the modal's own helper text promises it for the Preview URL field. Since #4317 put both fields in the shared t3.json schema, a team can commit autoOpenPreview to a repo and get nothing.

Two details worth calling out, since they go slightly beyond reverting:

The early return on write failure. Previously that branch set the thread error and then hit the end of the function anyway, so returning was equivalent — it only starts to matter once something is appended after it. Making it explicit keeps "the script never started" from reaching the auto-open, and matches how the openTerminal failure directly above is handled.

The preview result is awaited and ignored. Preview failures surface in the panel itself, and by that point the script is running — reporting one as Failed to run script would be wrong. This mirrors the original code's catch {} with the comment that said the same thing.

UI Changes

No visual or layout change: the preview panel, its chrome and its empty state are all untouched. What changes is when an existing panel opens — with the toggle on, running the action reveals the preview at the configured URL instead of leaving the panel closed. I don't have a recording to attach; happy to add one if you'd like to see the interaction.

Validation

  • vp run --filter @t3tools/web typecheck
  • vp lint apps/web/src/components/ChatView.tsx
  • vp run --filter @t3tools/web test — 1765 passed (201 files)
  • Built a local macOS arm64 desktop artifact and confirmed the restored call is present in the packaged app.asar

No regression test. runProjectScript is a useCallback inside ChatView with no existing harness, and the only extraction I could make honestly (a shouldAutoOpenPreview predicate) would still pass with the call site deleted again — which is the failure mode here. Building a ChatView harness for it seemed well outside "small and focused"; glad to add one if you'd rather have it.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — no visual change; see UI Changes above
  • I included a video for animation/interaction changes — not attached; say the word and I'll record the toggle in action

🤖 Generated with Claude Code


Note

Low Risk
Single-path UI behavior fix in ChatView with no auth or data-model changes; preview errors are intentionally ignored after the script starts.

Overview
Restores auto-open preview when a project action runs with Open preview automatically enabled and a Preview URL configured — behavior that stopped working after runProjectScript moved to the atom command API.

After a successful terminal write in runProjectScript, the flow calls openUrlInPreview (same helper as markdown/terminal links) when autoOpenPreview, previewUrl, preview runtime support, and a thread ref are all present. Preview open failures are awaited but not surfaced as script failures.

A failed terminal write now returns immediately so a script that never started cannot trigger preview open; write-failure handling is structured explicitly instead of only setting thread error and falling through.

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

Note

Honor autoOpenPreview when running a project action in ChatView

  • When a script has autoOpenPreview and a previewUrl set, the script-run handler in ChatView.tsx now calls openUrlInPreview after successfully writing the command to the terminal (in supported runtimes with an active thread).
  • Fixes a bug where a terminal write failure did not exit early, potentially allowing the preview-open logic to run incorrectly.

Macroscope summarized 742c1ef.

The "Open preview automatically when this action runs" toggle has had no
effect since pingdotgg#2978: that rewrite moved runProjectScript onto the atom
command API and dropped the block that opened the preview panel after the
command was written to the terminal. pingdotgg#3842 later restored persistence of
previewUrl/autoOpenPreview, so the setting saves and reloads correctly —
it simply is not read at run time by anything.
Restore the auto-open through the existing openUrlInPreview helper, which
already does what the deleted code did by hand (open the session, apply
the snapshot, remember the URL, reveal the tab in the right panel).
A failed terminal write now returns instead of falling through, so a
script that never started cannot open a preview. Preview failures stay
silent for the caller: they are surfaced by the panel itself, and the
script is already running, so they are not the script's failure.
Fixespingdotgg#5221
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

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: 3ef3d6a7-985e-4ea3-afd2-9a584475d034

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-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Aug 2, 2026

@cursorcursorBot 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.

Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 742c1ef. Configure here.

threadRef: activeThreadRef,
url: script.previewUrl,
openPreview,
});

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.

Preview URL skips env rewrite

Medium Severity

Auto-open passes the raw script.previewUrl into openUrlInPreview, so loopback URLs are never rewritten for the thread environment. The same configured script URLs go through resolveDiscoveredServerUrl when opened from the preview empty state, so remote and 0.0.0.0 targets open the wrong host here while manual open works.

Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit 742c1ef. Configure here.

@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds new runtime behavior for auto-opening previews, and there's an unresolved medium-severity review comment about preview URLs not being properly rewritten for the thread environment (raw URL passed instead of going through resolveDiscoveredServerUrl).

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

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: "Open preview automatically when this action runs" has no effect

1 participant

@matthias-trip
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(web): honor autoOpenPreview when running a project action - #5223

Open
matthias-trip wants to merge 1 commit into
pingdotgg:mainfrom
matthias-trip:fix/action-auto-open-preview
Open

fix(web): honor autoOpenPreview when running a project action#5223
matthias-trip wants to merge 1 commit into
pingdotgg:mainfrom
matthias-trip:fix/action-auto-open-preview

Conversation

@matthias-trip

@matthias-tripmatthias-trip commented Aug 2, 2026

Copy link
Copy Markdown

The "Open preview automatically when this action runs" toggle in the Add action modal has had no effect since #2978. That rewrite moved runProjectScript onto the atom command API and dropped the block that opened the preview panel once the command was written to the terminal. #3842 later restored persistence of previewUrl / autoOpenPreview, so the setting saves and reloads correctly — nothing reads it at run time.

Fixes#5221.

What Changed

  • runProjectScript opens the preview again when a script carries both autoOpenPreview and previewUrl, the runtime supports preview, and a thread ref exists — the same four conditions the original code checked.
  • It goes through the existing openUrlInPreview helper rather than re-adding the hand-rolled version: that helper already opens the session, applies the snapshot, remembers the URL, and reveals the tab, and the terminal-link and markdown-link paths use it too.
  • A failed terminal write now returns instead of falling through, so a script that never started cannot open a preview.

Why

The setting is currently documented behavior that does nothing. Both schemas promise it — "automatically open the preview panel pointed at previewUrl the moment this script starts" (orchestration.ts, and the same wording in t3ProjectFile.ts) — and the modal's own helper text promises it for the Preview URL field. Since #4317 put both fields in the shared t3.json schema, a team can commit autoOpenPreview to a repo and get nothing.

Two details worth calling out, since they go slightly beyond reverting:

The early return on write failure. Previously that branch set the thread error and then hit the end of the function anyway, so returning was equivalent — it only starts to matter once something is appended after it. Making it explicit keeps "the script never started" from reaching the auto-open, and matches how the openTerminal failure directly above is handled.

The preview result is awaited and ignored. Preview failures surface in the panel itself, and by that point the script is running — reporting one as Failed to run script would be wrong. This mirrors the original code's catch {} with the comment that said the same thing.

UI Changes

No visual or layout change: the preview panel, its chrome and its empty state are all untouched. What changes is when an existing panel opens — with the toggle on, running the action reveals the preview at the configured URL instead of leaving the panel closed. I don't have a recording to attach; happy to add one if you'd like to see the interaction.

Validation

  • vp run --filter @t3tools/web typecheck
  • vp lint apps/web/src/components/ChatView.tsx
  • vp run --filter @t3tools/web test — 1765 passed (201 files)
  • Built a local macOS arm64 desktop artifact and confirmed the restored call is present in the packaged app.asar

No regression test. runProjectScript is a useCallback inside ChatView with no existing harness, and the only extraction I could make honestly (a shouldAutoOpenPreview predicate) would still pass with the call site deleted again — which is the failure mode here. Building a ChatView harness for it seemed well outside "small and focused"; glad to add one if you'd rather have it.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — no visual change; see UI Changes above
  • I included a video for animation/interaction changes — not attached; say the word and I'll record the toggle in action

🤖 Generated with Claude Code


Note

Low Risk
Single-path UI behavior fix in ChatView with no auth or data-model changes; preview errors are intentionally ignored after the script starts.

Overview
Restores auto-open preview when a project action runs with Open preview automatically enabled and a Preview URL configured — behavior that stopped working after runProjectScript moved to the atom command API.

After a successful terminal write in runProjectScript, the flow calls openUrlInPreview (same helper as markdown/terminal links) when autoOpenPreview, previewUrl, preview runtime support, and a thread ref are all present. Preview open failures are awaited but not surfaced as script failures.

A failed terminal write now returns immediately so a script that never started cannot trigger preview open; write-failure handling is structured explicitly instead of only setting thread error and falling through.

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

Note

Honor autoOpenPreview when running a project action in ChatView

  • When a script has autoOpenPreview and a previewUrl set, the script-run handler in ChatView.tsx now calls openUrlInPreview after successfully writing the command to the terminal (in supported runtimes with an active thread).
  • Fixes a bug where a terminal write failure did not exit early, potentially allowing the preview-open logic to run incorrectly.

Macroscope summarized 742c1ef.

The "Open preview automatically when this action runs" toggle has had no
effect since pingdotgg#2978: that rewrite moved runProjectScript onto the atom
command API and dropped the block that opened the preview panel after the
command was written to the terminal. pingdotgg#3842 later restored persistence of
previewUrl/autoOpenPreview, so the setting saves and reloads correctly —
it simply is not read at run time by anything.
Restore the auto-open through the existing openUrlInPreview helper, which
already does what the deleted code did by hand (open the session, apply
the snapshot, remember the URL, reveal the tab in the right panel).
A failed terminal write now returns instead of falling through, so a
script that never started cannot open a preview. Preview failures stay
silent for the caller: they are surfaced by the panel itself, and the
script is already running, so they are not the script's failure.
Fixespingdotgg#5221
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

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: 3ef3d6a7-985e-4ea3-afd2-9a584475d034

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-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Aug 2, 2026

@cursorcursorBot 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.

Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 742c1ef. Configure here.

threadRef: activeThreadRef,
url: script.previewUrl,
openPreview,
});

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.

Preview URL skips env rewrite

Medium Severity

Auto-open passes the raw script.previewUrl into openUrlInPreview, so loopback URLs are never rewritten for the thread environment. The same configured script URLs go through resolveDiscoveredServerUrl when opened from the preview empty state, so remote and 0.0.0.0 targets open the wrong host here while manual open works.

Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit 742c1ef. Configure here.

@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds new runtime behavior for auto-opening previews, and there's an unresolved medium-severity review comment about preview URLs not being properly rewritten for the thread environment (raw URL passed instead of going through resolveDiscoveredServerUrl).

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

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: "Open preview automatically when this action runs" has no effect

1 participant

@matthias-trip
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

fix(web): honor autoOpenPreview when running a project action - #5223

Open
matthias-trip wants to merge 1 commit into
pingdotgg:mainfrom
matthias-trip:fix/action-auto-open-preview
Open

fix(web): honor autoOpenPreview when running a project action#5223
matthias-trip wants to merge 1 commit into
pingdotgg:mainfrom
matthias-trip:fix/action-auto-open-preview

Conversation

@matthias-trip

@matthias-tripmatthias-trip commented Aug 2, 2026

Copy link
Copy Markdown

The "Open preview automatically when this action runs" toggle in the Add action modal has had no effect since #2978. That rewrite moved runProjectScript onto the atom command API and dropped the block that opened the preview panel once the command was written to the terminal. #3842 later restored persistence of previewUrl / autoOpenPreview, so the setting saves and reloads correctly — nothing reads it at run time.

Fixes#5221.

What Changed

  • runProjectScript opens the preview again when a script carries both autoOpenPreview and previewUrl, the runtime supports preview, and a thread ref exists — the same four conditions the original code checked.
  • It goes through the existing openUrlInPreview helper rather than re-adding the hand-rolled version: that helper already opens the session, applies the snapshot, remembers the URL, and reveals the tab, and the terminal-link and markdown-link paths use it too.
  • A failed terminal write now returns instead of falling through, so a script that never started cannot open a preview.

Why

The setting is currently documented behavior that does nothing. Both schemas promise it — "automatically open the preview panel pointed at previewUrl the moment this script starts" (orchestration.ts, and the same wording in t3ProjectFile.ts) — and the modal's own helper text promises it for the Preview URL field. Since #4317 put both fields in the shared t3.json schema, a team can commit autoOpenPreview to a repo and get nothing.

Two details worth calling out, since they go slightly beyond reverting:

The early return on write failure. Previously that branch set the thread error and then hit the end of the function anyway, so returning was equivalent — it only starts to matter once something is appended after it. Making it explicit keeps "the script never started" from reaching the auto-open, and matches how the openTerminal failure directly above is handled.

The preview result is awaited and ignored. Preview failures surface in the panel itself, and by that point the script is running — reporting one as Failed to run script would be wrong. This mirrors the original code's catch {} with the comment that said the same thing.

UI Changes

No visual or layout change: the preview panel, its chrome and its empty state are all untouched. What changes is when an existing panel opens — with the toggle on, running the action reveals the preview at the configured URL instead of leaving the panel closed. I don't have a recording to attach; happy to add one if you'd like to see the interaction.

Validation

  • vp run --filter @t3tools/web typecheck
  • vp lint apps/web/src/components/ChatView.tsx
  • vp run --filter @t3tools/web test — 1765 passed (201 files)
  • Built a local macOS arm64 desktop artifact and confirmed the restored call is present in the packaged app.asar

No regression test. runProjectScript is a useCallback inside ChatView with no existing harness, and the only extraction I could make honestly (a shouldAutoOpenPreview predicate) would still pass with the call site deleted again — which is the failure mode here. Building a ChatView harness for it seemed well outside "small and focused"; glad to add one if you'd rather have it.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — no visual change; see UI Changes above
  • I included a video for animation/interaction changes — not attached; say the word and I'll record the toggle in action

🤖 Generated with Claude Code


Note

Low Risk
Single-path UI behavior fix in ChatView with no auth or data-model changes; preview errors are intentionally ignored after the script starts.

Overview
Restores auto-open preview when a project action runs with Open preview automatically enabled and a Preview URL configured — behavior that stopped working after runProjectScript moved to the atom command API.

After a successful terminal write in runProjectScript, the flow calls openUrlInPreview (same helper as markdown/terminal links) when autoOpenPreview, previewUrl, preview runtime support, and a thread ref are all present. Preview open failures are awaited but not surfaced as script failures.

A failed terminal write now returns immediately so a script that never started cannot trigger preview open; write-failure handling is structured explicitly instead of only setting thread error and falling through.

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

Note

Honor autoOpenPreview when running a project action in ChatView

  • When a script has autoOpenPreview and a previewUrl set, the script-run handler in ChatView.tsx now calls openUrlInPreview after successfully writing the command to the terminal (in supported runtimes with an active thread).
  • Fixes a bug where a terminal write failure did not exit early, potentially allowing the preview-open logic to run incorrectly.

Macroscope summarized 742c1ef.

The "Open preview automatically when this action runs" toggle has had no
effect since pingdotgg#2978: that rewrite moved runProjectScript onto the atom
command API and dropped the block that opened the preview panel after the
command was written to the terminal. pingdotgg#3842 later restored persistence of
previewUrl/autoOpenPreview, so the setting saves and reloads correctly —
it simply is not read at run time by anything.
Restore the auto-open through the existing openUrlInPreview helper, which
already does what the deleted code did by hand (open the session, apply
the snapshot, remember the URL, reveal the tab in the right panel).
A failed terminal write now returns instead of falling through, so a
script that never started cannot open a preview. Preview failures stay
silent for the caller: they are surfaced by the panel itself, and the
script is already running, so they are not the script's failure.
Fixespingdotgg#5221
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

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: 3ef3d6a7-985e-4ea3-afd2-9a584475d034

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-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Aug 2, 2026

@cursorcursorBot 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.

Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 742c1ef. Configure here.

threadRef: activeThreadRef,
url: script.previewUrl,
openPreview,
});

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.

Preview URL skips env rewrite

Medium Severity

Auto-open passes the raw script.previewUrl into openUrlInPreview, so loopback URLs are never rewritten for the thread environment. The same configured script URLs go through resolveDiscoveredServerUrl when opened from the preview empty state, so remote and 0.0.0.0 targets open the wrong host here while manual open works.

Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit 742c1ef. Configure here.

@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds new runtime behavior for auto-opening previews, and there's an unresolved medium-severity review comment about preview URLs not being properly rewritten for the thread environment (raw URL passed instead of going through resolveDiscoveredServerUrl).

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

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: "Open preview automatically when this action runs" has no effect

1 participant

@matthias-trip