fix(web): honor autoOpenPreview when running a project action - #5223
fix(web): honor autoOpenPreview when running a project action#5223matthias-trip wants to merge 1 commit into
Conversation
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. Fixes pingdotgg#5221 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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. Comment |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ 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, | ||
| }); |
There was a problem hiding this comment.
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.
Reviewed by Cursor Bugbot for commit 742c1ef. Configure here.
ApprovabilityVerdict: 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 You can customize Macroscope's approvability policy. Learn more. |


The "Open preview automatically when this action runs" toggle in the Add action modal has had no effect since #2978. That rewrite moved
runProjectScriptonto 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 ofpreviewUrl/autoOpenPreview, so the setting saves and reloads correctly — nothing reads it at run time.Fixes #5221.
What Changed
runProjectScriptopens the preview again when a script carries bothautoOpenPreviewandpreviewUrl, the runtime supports preview, and a thread ref exists — the same four conditions the original code checked.openUrlInPreviewhelper 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.Why
The setting is currently documented behavior that does nothing. Both schemas promise it — "automatically open the preview panel pointed at
previewUrlthe moment this script starts" (orchestration.ts, and the same wording int3ProjectFile.ts) — and the modal's own helper text promises it for the Preview URL field. Since #4317 put both fields in the sharedt3.jsonschema, a team can commitautoOpenPreviewto 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
openTerminalfailure 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 scriptwould be wrong. This mirrors the original code'scatch {}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 typecheckvp lint apps/web/src/components/ChatView.tsxvp run --filter @t3tools/web test— 1765 passed (201 files)app.asarNo regression test.
runProjectScriptis auseCallbackinside ChatView with no existing harness, and the only extraction I could make honestly (ashouldAutoOpenPreviewpredicate) 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
🤖 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
runProjectScriptmoved to the atom command API.After a successful terminal write in
runProjectScript, the flow callsopenUrlInPreview(same helper as markdown/terminal links) whenautoOpenPreview,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
autoOpenPreviewwhen running a project action inChatViewautoOpenPreviewand apreviewUrlset, the script-run handler in ChatView.tsx now callsopenUrlInPreviewafter successfully writing the command to the terminal (in supported runtimes with an active thread).Macroscope summarized 742c1ef.