Skip to content

feat(web): restore Studio Ship this playflow - #2437

Merged
kk-agent merged 1 commit into
mainfrom
cursor/studio-ship-this-playflow-5011
Oct 17, 2026
Merged

kk-agent merged 1 commit into
mainfrom
cursor/studio-ship-this-playflow-5011

Conversation

@kk-agent

@kk-agent kk-agent commented Oct 17, 2026 •

Copy link
Copy Markdown
Collaborator

Canonical issue

Closes #2435.

Dogfood remaining after #1692: no discoverable Ship this; disabled Deploy held production on SeaDance/Cluely-class checks. The 2026-10-07 IDE shell then deleted studio-deploy-button and left those helpers unwired.

Related closed cuts (not closers): 1696 (anon stack-check hold), 1705 (transcript stages), 1712 (player), 1715 (export toast), 1716 (review_action cards), 1719 (durable copy / footer).

Overlap: draft #2436 also targets #2435. This PR is the Ship this / skip-unknown / retry / review-card rewire; keep one winner at merge.

Outcome

Anonymous Studio can Ship this (pack ZIP) on a completed pack. Skip/unknown stack checks are honest and do not disable the button. Review cards, transcript retry, and export toast are visible again. No live hostname claim.

Scope

  • Included:
    • studioShipEnabled / studioShipCta — exportability gates ship; holdReason never does
    • Toolbar Ship this primary CTA (studio-ide-ship) calling existing export
    • Tools tab stack-check rows with skip/unknown labels
    • Intent tab review_action cards via studioActionCard
    • Transcript retry when studioCanRetryTranscript
    • Export toast bottom-4 (sticky footer is gone)
  • Explicitly excluded:
    • Restoring studio-deploy-button / origin studio-deploy kickoff
    • G.A.T.E. contract, live success claims, fake events
    • Ship checkout / Maintain catalog

Risk

  • Risk level: low
  • Failure mode: Ship this is mistaken for production deploy; stack-check rows missing on packs without stack.tools
  • Rollback: revert this PR; Studio returns to Export-less toolbar with only Build live

Verification

Head SHA: 371f6e01f

  • Focused tests: cd apps/web && npm test -- src/lib/__tests__/studio-pipeline-status.test.ts src/lib/__tests__/official-templates.test.ts src/lib/__tests__/uvai-surface-unification.test.ts src/components/__tests__/OneLoopStudio.three-panel.test.tsx src/components/studio/__tests__/StudioIdeOutput.playflow.test.tsx → 5 files, 49 passed
  • Related: OneLoopStudio.build-live + job-strip + linked-sop → 3 files, 16 passed
  • npx tsc --noEmit (apps/web)
  • eslint on touched files
  • Required CI
  • Review threads resolved

Production evidence

UI/playflow only. Preview on Vercel v0-uvai after CI. Not a production Studio E2E and not a live deploy receipt.

Agent handoff

  • One canonical issue is linked (Closes #2435)
  • Acceptance criteria are satisfied (Ship this + honest skip/unknown + review cards + retry + toast)
  • Required checks pass on the current head
  • Human decision is requested only for product, security, irreversible infrastructure, or production approval
Open in Web Open in Cursor 

Unblock anonymous ship after the IDE shell dropped Deploy. Ship this
exports the pack ZIP and stays enabled when SeaDance/Cluely checks are
skip/unknown. Wire review_action cards, transcript retry, and toast
position. Do not restore origin deploy or G.A.T.E. changes.

Co-authored-by: KK <kk-agent@users.noreply.github.com>
@vercel

vercel Bot commented Oct 17, 2026 •

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
v0-uvai Ready Ready Preview, v0 Oct 17, 2026 4:39pm UTC

@github-actions github-actions Bot added documentation Improvements or additions to documentation javascript Pull requests that update javascript code labels Oct 17, 2026
@coderabbitai

coderabbitai Bot commented Oct 17, 2026

Copy link
Copy Markdown
Contributor

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Configuration used: Repository: groupthinking/EventRelay/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 538f93ff-2fc9-4c2d-a202-016f77828f53
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added the tests label Oct 17, 2026
@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Repository reconciliation: this PR does not reference exactly one canonical issue.

Please add a Closes #<issue> reference in the PR description so it can be tracked against the delivery plan.

See governance: #898

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-17T16:42:30.795245Z 371f6e0 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

Copy link
Copy Markdown
Contributor

✅ E2E Test Results: ALL TESTS PASSED

Metric Value
Status 🟢 GREEN
Total Tests
Passed 16
Failed
Deployment https://v0-uvai-ju0jibt4o-garv1.vercel.app
Test Output
very request without persisting it�[32m 1�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mTemplate Gallery�[2m > �[22mhomepage returns 200 with HTML�[32m 200�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mTemplate Gallery�[2m > �[22mfeatures page contains template/workflow markup�[32m 235�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mTemplate Gallery�[2m > �[22mfeatures page surfaces at least 5 workflow/template indicators�[32m 177�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mVideo Pack Pipeline�[2m > �[22mPOST /api/video/pack accepts a YouTube URL without hanging�[33m 1830�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mVideo Pack Pipeline�[2m > �[22mGET /api/video/pack resolves to a ready pack with evidence lineage�[33m 1075�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mError Handling�[2m > �[22mmissing URL returns 400, not a hang�[32m 136�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mError Handling�[2m > �[22minvalid URL returns 400 quickly, not a hang�[32m 110�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mError Handling�[2m > �[22mPOST /api/video/pack with no body returns 400�[32m 107�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mDashboard�[2m > �[22m/dashboard returns 200�[32m 210�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mDashboard�[2m > �[22m/dashboard contains agent or pipeline visualization markup�[32m 155�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mAPI Health�[2m > �[22mGET /api returns a response (not 404)�[32m 260�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mAPI Health�[2m > �[22mretired /api/pipeline routes are gone (no pipeline served)�[32m 84�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mStatic Assets�[2m > �[22mhomepage has proper meta tags�[32m 126�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mStatic Assets�[2m > �[22m/features page returns 200�[32m 178�[2mms�[22m�[39m

�[2m Test Files �[22m �[1m�[32m1 passed�[39m�[22m�[90m (1)�[39m
�[2m      Tests �[22m �[1m�[32m16 passed�[39m�[22m�[90m (16)�[39m
�[2m   Start at �[22m 16:40:29
�[2m   Duration �[22m 6.65s�[2m (transform 52ms, setup 0ms, import 62ms, tests 6.49s, environment 0ms)�[22m


@kk-agent
kk-agent merged commit 560f071 into main Oct 17, 2026
44 of 45 checks passed
@kk-agent
kk-agent deleted the cursor/studio-ship-this-playflow-5011 branch October 17, 2026 16:41

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 371f6e01ff

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +1038 to +1041
onClick={() => void exportPkg()}
disabled={!shipCta.enabled}
data-testid="studio-ide-ship"
title={shipCta.hint}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Route anonymous Ship through an accessible export

For the anonymous users targeted by this change, this handler still calls downloadScaffoldPackage, which posts to /api/workspace/export; that route invokes requireProFeatureAccess, and its route test confirms non-Pro callers receive a 402 checkout response rather than a ZIP. Consequently the newly enabled primary CTA and its “Download the Video Pack ZIP” hint do not deliver the stated anonymous Ship flow. Either use an export endpoint anonymous users may access or present this as a Pro checkout action.

Useful? React with 👍 / 👎.

Comment on lines +1148 to +1150
stackChecks={stackCheckViews}
reviewActions={(workflowActions?.actions ?? []).map((action) => {
const card = studioActionCard(action);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Add a reachable path that populates review actions

These cards cannot appear in the current Studio UI: workflowActions starts as null and is only populated inside act(), but a repo-wide search of this component finds no button or other caller that invokes act. Passing that unreachable state here therefore does not restore review_action cards for users, despite the isolated child-component test; wire the existing Act workflow into the IDE or populate the cards from a reachable result source.

Useful? React with 👍 / 👎.

Comment on lines +1063 to +1067
{showTranscriptRetry ? (
<button
type="button"
data-testid="studio-transcript-retry"
onClick={() => void runAnalysis(url || selected?.url || '')}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Retry the failed selection instead of edited input

When a failed video is selected but the user has edited the URL field, url wins over selected.url, so clicking “Retry transcript” analyzes the newly typed video rather than retrying the failed transcript shown on screen. The existing recovery paths intentionally prefer selected?.url; this handler should do the same so the retry remains scoped to the failure that caused the button to appear.

Useful? React with 👍 / 👎.

cursor Bot pushed a commit that referenced this pull request Oct 17, 2026
Leftover after #2437: anonymous Studio can Act on this run without
agent-workflow-ui, and pricing Core no longer claims durable/reviewed work.

Closes #2440

Co-authored-by: KK <kk-agent@users.noreply.github.com>
cursor Bot pushed a commit that referenced this pull request Oct 17, 2026
Keep honest empty Events after the #2437 rebase, and finish leftover
#2440 so the required closer can target an open issue.

Co-authored-by: KK <kk-agent@users.noreply.github.com>
cursor Bot pushed a commit that referenced this pull request Oct 17, 2026
Keep #2437 Ship this ZIP CTA and skip/unknown stack rows. Keep this
branch's Events honesty, pack workbench, Act on this run, and
transcript-tab retry. Deduplicate toolbar Retry and Tools stack lists.

Co-authored-by: KK <kk-agent@users.noreply.github.com>

This branch was successfully deployed

1 active deployment
Preview — 371f6e01 Deployed Oct 17, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation javascript Pull requests that update javascript code tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Restore Studio playflow CTAs after IDE rebuild (B/E/F/G)

2 participants