Repository navigation
Tell users when their organization has moved to Executor v2 - #2269
Merged
Merged
Conversation
Reads the move v2 records on the WorkOS organization (executor_v2_org_slug, executor_v2_moved_at) into the v2-import answer, shows a dismissible notice on the dashboard with a feedback step for staying on v1, and points the sidebar link at the org in v2.
RhysSullivan
added this pull request to stack #2268
October 12, 2026 00:45
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
executor-marketing | a9150be | Commit Preview URL Branch Preview URL |
Oct 12 2026, 12:47 AM |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
executor-cloud | a9150be | Oct 12 2026, 12:49 AM |
Contributor
Cloudflare previewTorn down — the PR is closed. |
@executor-js/cli
@executor-js/config
@executor-js/execution
@executor-js/sdk
@executor-js/plugin-file-secrets
@executor-js/plugin-graphql
@executor-js/plugin-keychain
@executor-js/plugin-mcp
@executor-js/plugin-onepassword
@executor-js/plugin-openapi
@executor-js/codemode-core
@executor-js/runtime-quickjs
executor
commit: |
RhysSullivan
marked this pull request as ready for review
October 12, 2026 02:40
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
When a user finishes importing a v1 organization, Executor v2 writes two keys onto the v1 WorkOS organization's metadata:
executor_v2_org_slug: the v2 organization slugexecutor_v2_moved_at: an ISO 8601 timestampv1 now reads them and tells users of a moved organization where it lives. This is only a notice. The organization keeps working in v1.
Endpoint.
GET /api/auth/v2-importnow returns{ url, moved }.movedis{ v2Url, v2Slug, movedAt } | null, andv2Urlis<v2 origin>/org/<slug>. The origin is the same one the import link uses (theV2_SIGN_UP_URLorigin, validated byparseV2Edge). An organization that has moved is not offered the import again, and its eligibility is not read.movedis null in any of these cases:^[a-z0-9]+(?:-[a-z0-9]+)*$, at most 45 characters)Notice. It appears on dashboard load when
movedis set. It has:v1 · <name> → v2 · <slug>pair"Keep using v1" opens a second step: "What went wrong?" with a required free-text field, "Back", and "Send and stay in v1". Send stays disabled until the trimmed text is non-empty.
Snooze. The snooze is stored in localStorage, per browser and per organization:
Sidebar. For a moved organization, the "Move to Executor v2" item becomes "Open in Executor v2" and links to the organization in v2. It stays so the user can still reach v2 after snoozing the notice.
Analytics. These events are added to the typed catalog:
v2_moved_modal_shownv2_moved_open_clicked { via: "modal" | "sidebar" }v2_moved_stay_clickedv2_moved_feedback_sent { feedback }v2_moved_dismissed { step }The catalog's rules ban user-entered free text and identity properties. This PR adds one narrow, documented exception: feedback the user writes to us and sends on purpose. The organization is attached through the existing PostHog group, so the events have no
org_idproperty.Tests are in the PR stacked on top.
Verification
bun run format:check,bun run lint,bun run typecheck(45 tasks), and cloudbun run test(867 passed)cloud/v2-moved-notice.test.ts(3 passed) andcloud/v2-import-link.test.ts(4 passed)