fix(web): send Connect sign-up back to the app instead of a 404 - #6674

Closed
Rishet11 wants to merge 2 commits into
pingdotgg:mainfrom
Rishet11:fix/6302-connect-signup-redirect
Closed

fix(web): send Connect sign-up back to the app instead of a 404#6674
Rishet11 wants to merge 2 commits into
pingdotgg:mainfrom
Rishet11:fix/6302-connect-signup-redirect

Conversation

@Rishet11

@Rishet11Rishet11 commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

What Changed

Signing in to T3 Connect from the browser worked if you already had an account. Choosing "Use a fresh account" and signing up dropped you on a 404 instead of returning to the app. The account was created, but you were left on a dead page.

Clerk uses two separate redirect targets: forceRedirectUrl after a sign-in, and signUpForceRedirectUrl after a sign-up. resolveClerkSignInProps only set the first one on the web, so sign-up fell back to Clerk's dashboard-configured default, which is a route this app does not serve.

The web branch now sets both, so a new account lands back where the user started.

Why

The Electron branch of this same function already sets both keys to the same URL, and ClerkSignInProps already declares signUpForceRedirectUrl. Only the web branch was missing it. This makes the two consistent rather than introducing a new idea about where sign-up should go.

Two things I checked while making it:

  • Should sign-up go somewhere other than sign-in? Electron already sends both to the same place, so same-destination is the behaviour this codebase already chose.
  • Should the web href be normalised first, like Electron does? The Electron branch strips the pathname because, per its comment, "Electron routes through the hash", which does not apply in a browser. More to the point, sign-in on the web already passes this exact raw href and returns correctly today, so reusing it for sign-up carries no risk that sign-in is not already carrying.

All three callers (useT3ConnectAuthPrompt.tsx, and ConnectCliAuthSurface.tsx in two places) go through this one function, so they are all covered.

npx t3 connect from the CLI is unaffected either way, which is why that was a workaround.

UI Changes

n/a - no visual change. Sign-up returns to the app rather than a 404.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes (n/a)
  • I included a video for animation/interaction changes (n/a)

Verification

vp test run apps/web/src/components/clerk/authRedirect.test.ts # 3 passed
vp run --filter @t3tools/web typecheck # exit 0, no errors
vp lint apps/web/src/components/clerk/authRedirect.ts apps/web/src/components/clerk/authRedirect.test.ts
vp fmt --check <same two files>

Reverting the source line makes the web test fail, so it covers the changed behaviour.

Fixes#6302

Implemented with Claude Opus 5 via Claude Code.


Note

Low Risk
Small auth redirect configuration change aligned with existing Electron behavior; no new routes or security logic.

Overview
Fixes T3 Connect web sign-up landing on a 404 after creating a new account (“Use a fresh account”). Sign-in already returned to the starting URL; sign-up did not.

resolveClerkSignInProps now sets signUpForceRedirectUrl to the same href as forceRedirectUrl on the non-Electron path, matching the Electron branch and what Clerk expects for post–sign-up redirects. Without it, Clerk used its dashboard default route, which this app does not serve.

The web unit test expectation is updated to assert both redirect props.

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

Note

Fix Connect sign-up redirect to return to the app instead of a 404

When a user signs up via Clerk on the web (non-Electron) path, the redirect after sign-up was not set, causing a 404. resolveClerkSignInProps in authRedirect.ts now includes signUpForceRedirectUrl set to the same href as forceRedirectUrl for the non-Electron code path.

Macroscope summarized 1a56464.

CopilotAI lite review requested due to automatic review settings August 15, 2026 08:54

CopilotAI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai

coderabbitaiBot commented Aug 15, 2026

Copy link
Copy Markdown

Important

Review skipped

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

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b1849e2d-4144-4c56-a9be-edfe06ef3769

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:XS 0-9 changed lines (additions + deletions). labels Aug 15, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved c1d34e9

Straightforward bug fix adding the missing signUpForceRedirectUrl property to prevent 404s after sign-up. The pattern already exists in the Electron code path, and this change applies the same fix to the non-Electron path. Low risk with test coverage.

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

@Rishet11
Rishet11 requested a lite review from CopilotAugust 15, 2026 10:08

CopilotAI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@juliusmarminge
juliusmarminge enabled auto-merge (squash) August 15, 2026 10:44
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by #5133, which is merged and includes the same signUpForceRedirectUrl: href behavior plus the corresponding authRedirect test coverage as part of the broader /connect authentication fix.

auto-merge was automatically disabled August 15, 2026 12:10

Pull request was closed

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

Labels

size:XS0-9 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]: Sign in to T3 connect hits 404 page

3 participants

@Rishet11@juliusmarminge
, '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): send Connect sign-up back to the app instead of a 404 - #6674

Closed
Rishet11 wants to merge 2 commits into
pingdotgg:mainfrom
Rishet11:fix/6302-connect-signup-redirect
Closed

fix(web): send Connect sign-up back to the app instead of a 404#6674
Rishet11 wants to merge 2 commits into
pingdotgg:mainfrom
Rishet11:fix/6302-connect-signup-redirect

Conversation

@Rishet11

@Rishet11Rishet11 commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

What Changed

Signing in to T3 Connect from the browser worked if you already had an account. Choosing "Use a fresh account" and signing up dropped you on a 404 instead of returning to the app. The account was created, but you were left on a dead page.

Clerk uses two separate redirect targets: forceRedirectUrl after a sign-in, and signUpForceRedirectUrl after a sign-up. resolveClerkSignInProps only set the first one on the web, so sign-up fell back to Clerk's dashboard-configured default, which is a route this app does not serve.

The web branch now sets both, so a new account lands back where the user started.

Why

The Electron branch of this same function already sets both keys to the same URL, and ClerkSignInProps already declares signUpForceRedirectUrl. Only the web branch was missing it. This makes the two consistent rather than introducing a new idea about where sign-up should go.

Two things I checked while making it:

  • Should sign-up go somewhere other than sign-in? Electron already sends both to the same place, so same-destination is the behaviour this codebase already chose.
  • Should the web href be normalised first, like Electron does? The Electron branch strips the pathname because, per its comment, "Electron routes through the hash", which does not apply in a browser. More to the point, sign-in on the web already passes this exact raw href and returns correctly today, so reusing it for sign-up carries no risk that sign-in is not already carrying.

All three callers (useT3ConnectAuthPrompt.tsx, and ConnectCliAuthSurface.tsx in two places) go through this one function, so they are all covered.

npx t3 connect from the CLI is unaffected either way, which is why that was a workaround.

UI Changes

n/a - no visual change. Sign-up returns to the app rather than a 404.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes (n/a)
  • I included a video for animation/interaction changes (n/a)

Verification

vp test run apps/web/src/components/clerk/authRedirect.test.ts # 3 passed
vp run --filter @t3tools/web typecheck # exit 0, no errors
vp lint apps/web/src/components/clerk/authRedirect.ts apps/web/src/components/clerk/authRedirect.test.ts
vp fmt --check <same two files>

Reverting the source line makes the web test fail, so it covers the changed behaviour.

Fixes#6302

Implemented with Claude Opus 5 via Claude Code.


Note

Low Risk
Small auth redirect configuration change aligned with existing Electron behavior; no new routes or security logic.

Overview
Fixes T3 Connect web sign-up landing on a 404 after creating a new account (“Use a fresh account”). Sign-in already returned to the starting URL; sign-up did not.

resolveClerkSignInProps now sets signUpForceRedirectUrl to the same href as forceRedirectUrl on the non-Electron path, matching the Electron branch and what Clerk expects for post–sign-up redirects. Without it, Clerk used its dashboard default route, which this app does not serve.

The web unit test expectation is updated to assert both redirect props.

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

Note

Fix Connect sign-up redirect to return to the app instead of a 404

When a user signs up via Clerk on the web (non-Electron) path, the redirect after sign-up was not set, causing a 404. resolveClerkSignInProps in authRedirect.ts now includes signUpForceRedirectUrl set to the same href as forceRedirectUrl for the non-Electron code path.

Macroscope summarized 1a56464.

CopilotAI lite review requested due to automatic review settings August 15, 2026 08:54

CopilotAI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai

coderabbitaiBot commented Aug 15, 2026

Copy link
Copy Markdown

Important

Review skipped

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

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b1849e2d-4144-4c56-a9be-edfe06ef3769

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:XS 0-9 changed lines (additions + deletions). labels Aug 15, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved c1d34e9

Straightforward bug fix adding the missing signUpForceRedirectUrl property to prevent 404s after sign-up. The pattern already exists in the Electron code path, and this change applies the same fix to the non-Electron path. Low risk with test coverage.

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

@Rishet11
Rishet11 requested a lite review from CopilotAugust 15, 2026 10:08

CopilotAI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@juliusmarminge
juliusmarminge enabled auto-merge (squash) August 15, 2026 10:44
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by #5133, which is merged and includes the same signUpForceRedirectUrl: href behavior plus the corresponding authRedirect test coverage as part of the broader /connect authentication fix.

auto-merge was automatically disabled August 15, 2026 12:10

Pull request was closed

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

Labels

size:XS0-9 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]: Sign in to T3 connect hits 404 page

3 participants

@Rishet11@juliusmarminge
, '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): send Connect sign-up back to the app instead of a 404 - #6674

Closed
Rishet11 wants to merge 2 commits into
pingdotgg:mainfrom
Rishet11:fix/6302-connect-signup-redirect
Closed

fix(web): send Connect sign-up back to the app instead of a 404#6674
Rishet11 wants to merge 2 commits into
pingdotgg:mainfrom
Rishet11:fix/6302-connect-signup-redirect

Conversation

@Rishet11

@Rishet11Rishet11 commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

What Changed

Signing in to T3 Connect from the browser worked if you already had an account. Choosing "Use a fresh account" and signing up dropped you on a 404 instead of returning to the app. The account was created, but you were left on a dead page.

Clerk uses two separate redirect targets: forceRedirectUrl after a sign-in, and signUpForceRedirectUrl after a sign-up. resolveClerkSignInProps only set the first one on the web, so sign-up fell back to Clerk's dashboard-configured default, which is a route this app does not serve.

The web branch now sets both, so a new account lands back where the user started.

Why

The Electron branch of this same function already sets both keys to the same URL, and ClerkSignInProps already declares signUpForceRedirectUrl. Only the web branch was missing it. This makes the two consistent rather than introducing a new idea about where sign-up should go.

Two things I checked while making it:

  • Should sign-up go somewhere other than sign-in? Electron already sends both to the same place, so same-destination is the behaviour this codebase already chose.
  • Should the web href be normalised first, like Electron does? The Electron branch strips the pathname because, per its comment, "Electron routes through the hash", which does not apply in a browser. More to the point, sign-in on the web already passes this exact raw href and returns correctly today, so reusing it for sign-up carries no risk that sign-in is not already carrying.

All three callers (useT3ConnectAuthPrompt.tsx, and ConnectCliAuthSurface.tsx in two places) go through this one function, so they are all covered.

npx t3 connect from the CLI is unaffected either way, which is why that was a workaround.

UI Changes

n/a - no visual change. Sign-up returns to the app rather than a 404.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes (n/a)
  • I included a video for animation/interaction changes (n/a)

Verification

vp test run apps/web/src/components/clerk/authRedirect.test.ts # 3 passed
vp run --filter @t3tools/web typecheck # exit 0, no errors
vp lint apps/web/src/components/clerk/authRedirect.ts apps/web/src/components/clerk/authRedirect.test.ts
vp fmt --check <same two files>

Reverting the source line makes the web test fail, so it covers the changed behaviour.

Fixes#6302

Implemented with Claude Opus 5 via Claude Code.


Note

Low Risk
Small auth redirect configuration change aligned with existing Electron behavior; no new routes or security logic.

Overview
Fixes T3 Connect web sign-up landing on a 404 after creating a new account (“Use a fresh account”). Sign-in already returned to the starting URL; sign-up did not.

resolveClerkSignInProps now sets signUpForceRedirectUrl to the same href as forceRedirectUrl on the non-Electron path, matching the Electron branch and what Clerk expects for post–sign-up redirects. Without it, Clerk used its dashboard default route, which this app does not serve.

The web unit test expectation is updated to assert both redirect props.

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

Note

Fix Connect sign-up redirect to return to the app instead of a 404

When a user signs up via Clerk on the web (non-Electron) path, the redirect after sign-up was not set, causing a 404. resolveClerkSignInProps in authRedirect.ts now includes signUpForceRedirectUrl set to the same href as forceRedirectUrl for the non-Electron code path.

Macroscope summarized 1a56464.

CopilotAI lite review requested due to automatic review settings August 15, 2026 08:54

CopilotAI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai

coderabbitaiBot commented Aug 15, 2026

Copy link
Copy Markdown

Important

Review skipped

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

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b1849e2d-4144-4c56-a9be-edfe06ef3769

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:XS 0-9 changed lines (additions + deletions). labels Aug 15, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved c1d34e9

Straightforward bug fix adding the missing signUpForceRedirectUrl property to prevent 404s after sign-up. The pattern already exists in the Electron code path, and this change applies the same fix to the non-Electron path. Low risk with test coverage.

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

@Rishet11
Rishet11 requested a lite review from CopilotAugust 15, 2026 10:08

CopilotAI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@juliusmarminge
juliusmarminge enabled auto-merge (squash) August 15, 2026 10:44
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by #5133, which is merged and includes the same signUpForceRedirectUrl: href behavior plus the corresponding authRedirect test coverage as part of the broader /connect authentication fix.

auto-merge was automatically disabled August 15, 2026 12:10

Pull request was closed

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

Labels

size:XS0-9 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]: Sign in to T3 connect hits 404 page

3 participants

@Rishet11@juliusmarminge
, '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): send Connect sign-up back to the app instead of a 404 - #6674

Closed
Rishet11 wants to merge 2 commits into
pingdotgg:mainfrom
Rishet11:fix/6302-connect-signup-redirect
Closed

fix(web): send Connect sign-up back to the app instead of a 404#6674
Rishet11 wants to merge 2 commits into
pingdotgg:mainfrom
Rishet11:fix/6302-connect-signup-redirect

Conversation

@Rishet11

@Rishet11Rishet11 commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

What Changed

Signing in to T3 Connect from the browser worked if you already had an account. Choosing "Use a fresh account" and signing up dropped you on a 404 instead of returning to the app. The account was created, but you were left on a dead page.

Clerk uses two separate redirect targets: forceRedirectUrl after a sign-in, and signUpForceRedirectUrl after a sign-up. resolveClerkSignInProps only set the first one on the web, so sign-up fell back to Clerk's dashboard-configured default, which is a route this app does not serve.

The web branch now sets both, so a new account lands back where the user started.

Why

The Electron branch of this same function already sets both keys to the same URL, and ClerkSignInProps already declares signUpForceRedirectUrl. Only the web branch was missing it. This makes the two consistent rather than introducing a new idea about where sign-up should go.

Two things I checked while making it:

  • Should sign-up go somewhere other than sign-in? Electron already sends both to the same place, so same-destination is the behaviour this codebase already chose.
  • Should the web href be normalised first, like Electron does? The Electron branch strips the pathname because, per its comment, "Electron routes through the hash", which does not apply in a browser. More to the point, sign-in on the web already passes this exact raw href and returns correctly today, so reusing it for sign-up carries no risk that sign-in is not already carrying.

All three callers (useT3ConnectAuthPrompt.tsx, and ConnectCliAuthSurface.tsx in two places) go through this one function, so they are all covered.

npx t3 connect from the CLI is unaffected either way, which is why that was a workaround.

UI Changes

n/a - no visual change. Sign-up returns to the app rather than a 404.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes (n/a)
  • I included a video for animation/interaction changes (n/a)

Verification

vp test run apps/web/src/components/clerk/authRedirect.test.ts # 3 passed
vp run --filter @t3tools/web typecheck # exit 0, no errors
vp lint apps/web/src/components/clerk/authRedirect.ts apps/web/src/components/clerk/authRedirect.test.ts
vp fmt --check <same two files>

Reverting the source line makes the web test fail, so it covers the changed behaviour.

Fixes#6302

Implemented with Claude Opus 5 via Claude Code.


Note

Low Risk
Small auth redirect configuration change aligned with existing Electron behavior; no new routes or security logic.

Overview
Fixes T3 Connect web sign-up landing on a 404 after creating a new account (“Use a fresh account”). Sign-in already returned to the starting URL; sign-up did not.

resolveClerkSignInProps now sets signUpForceRedirectUrl to the same href as forceRedirectUrl on the non-Electron path, matching the Electron branch and what Clerk expects for post–sign-up redirects. Without it, Clerk used its dashboard default route, which this app does not serve.

The web unit test expectation is updated to assert both redirect props.

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

Note

Fix Connect sign-up redirect to return to the app instead of a 404

When a user signs up via Clerk on the web (non-Electron) path, the redirect after sign-up was not set, causing a 404. resolveClerkSignInProps in authRedirect.ts now includes signUpForceRedirectUrl set to the same href as forceRedirectUrl for the non-Electron code path.

Macroscope summarized 1a56464.

CopilotAI lite review requested due to automatic review settings August 15, 2026 08:54

CopilotAI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai

coderabbitaiBot commented Aug 15, 2026

Copy link
Copy Markdown

Important

Review skipped

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

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b1849e2d-4144-4c56-a9be-edfe06ef3769

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:XS 0-9 changed lines (additions + deletions). labels Aug 15, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved c1d34e9

Straightforward bug fix adding the missing signUpForceRedirectUrl property to prevent 404s after sign-up. The pattern already exists in the Electron code path, and this change applies the same fix to the non-Electron path. Low risk with test coverage.

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

@Rishet11
Rishet11 requested a lite review from CopilotAugust 15, 2026 10:08

CopilotAI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@juliusmarminge
juliusmarminge enabled auto-merge (squash) August 15, 2026 10:44
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by #5133, which is merged and includes the same signUpForceRedirectUrl: href behavior plus the corresponding authRedirect test coverage as part of the broader /connect authentication fix.

auto-merge was automatically disabled August 15, 2026 12:10

Pull request was closed

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

Labels

size:XS0-9 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]: Sign in to T3 connect hits 404 page

3 participants

@Rishet11@juliusmarminge
, '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): send Connect sign-up back to the app instead of a 404 - #6674

Closed
Rishet11 wants to merge 2 commits into
pingdotgg:mainfrom
Rishet11:fix/6302-connect-signup-redirect
Closed

fix(web): send Connect sign-up back to the app instead of a 404#6674
Rishet11 wants to merge 2 commits into
pingdotgg:mainfrom
Rishet11:fix/6302-connect-signup-redirect

Conversation

@Rishet11

@Rishet11Rishet11 commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

What Changed

Signing in to T3 Connect from the browser worked if you already had an account. Choosing "Use a fresh account" and signing up dropped you on a 404 instead of returning to the app. The account was created, but you were left on a dead page.

Clerk uses two separate redirect targets: forceRedirectUrl after a sign-in, and signUpForceRedirectUrl after a sign-up. resolveClerkSignInProps only set the first one on the web, so sign-up fell back to Clerk's dashboard-configured default, which is a route this app does not serve.

The web branch now sets both, so a new account lands back where the user started.

Why

The Electron branch of this same function already sets both keys to the same URL, and ClerkSignInProps already declares signUpForceRedirectUrl. Only the web branch was missing it. This makes the two consistent rather than introducing a new idea about where sign-up should go.

Two things I checked while making it:

  • Should sign-up go somewhere other than sign-in? Electron already sends both to the same place, so same-destination is the behaviour this codebase already chose.
  • Should the web href be normalised first, like Electron does? The Electron branch strips the pathname because, per its comment, "Electron routes through the hash", which does not apply in a browser. More to the point, sign-in on the web already passes this exact raw href and returns correctly today, so reusing it for sign-up carries no risk that sign-in is not already carrying.

All three callers (useT3ConnectAuthPrompt.tsx, and ConnectCliAuthSurface.tsx in two places) go through this one function, so they are all covered.

npx t3 connect from the CLI is unaffected either way, which is why that was a workaround.

UI Changes

n/a - no visual change. Sign-up returns to the app rather than a 404.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes (n/a)
  • I included a video for animation/interaction changes (n/a)

Verification

vp test run apps/web/src/components/clerk/authRedirect.test.ts # 3 passed
vp run --filter @t3tools/web typecheck # exit 0, no errors
vp lint apps/web/src/components/clerk/authRedirect.ts apps/web/src/components/clerk/authRedirect.test.ts
vp fmt --check <same two files>

Reverting the source line makes the web test fail, so it covers the changed behaviour.

Fixes#6302

Implemented with Claude Opus 5 via Claude Code.


Note

Low Risk
Small auth redirect configuration change aligned with existing Electron behavior; no new routes or security logic.

Overview
Fixes T3 Connect web sign-up landing on a 404 after creating a new account (“Use a fresh account”). Sign-in already returned to the starting URL; sign-up did not.

resolveClerkSignInProps now sets signUpForceRedirectUrl to the same href as forceRedirectUrl on the non-Electron path, matching the Electron branch and what Clerk expects for post–sign-up redirects. Without it, Clerk used its dashboard default route, which this app does not serve.

The web unit test expectation is updated to assert both redirect props.

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

Note

Fix Connect sign-up redirect to return to the app instead of a 404

When a user signs up via Clerk on the web (non-Electron) path, the redirect after sign-up was not set, causing a 404. resolveClerkSignInProps in authRedirect.ts now includes signUpForceRedirectUrl set to the same href as forceRedirectUrl for the non-Electron code path.

Macroscope summarized 1a56464.

CopilotAI lite review requested due to automatic review settings August 15, 2026 08:54

CopilotAI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai

coderabbitaiBot commented Aug 15, 2026

Copy link
Copy Markdown

Important

Review skipped

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

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b1849e2d-4144-4c56-a9be-edfe06ef3769

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:XS 0-9 changed lines (additions + deletions). labels Aug 15, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved c1d34e9

Straightforward bug fix adding the missing signUpForceRedirectUrl property to prevent 404s after sign-up. The pattern already exists in the Electron code path, and this change applies the same fix to the non-Electron path. Low risk with test coverage.

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

@Rishet11
Rishet11 requested a lite review from CopilotAugust 15, 2026 10:08

CopilotAI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@juliusmarminge
juliusmarminge enabled auto-merge (squash) August 15, 2026 10:44
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by #5133, which is merged and includes the same signUpForceRedirectUrl: href behavior plus the corresponding authRedirect test coverage as part of the broader /connect authentication fix.

auto-merge was automatically disabled August 15, 2026 12:10

Pull request was closed

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

Labels

size:XS0-9 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]: Sign in to T3 connect hits 404 page

3 participants

@Rishet11@juliusmarminge
, '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): send Connect sign-up back to the app instead of a 404 - #6674

Closed
Rishet11 wants to merge 2 commits into
pingdotgg:mainfrom
Rishet11:fix/6302-connect-signup-redirect
Closed

fix(web): send Connect sign-up back to the app instead of a 404#6674
Rishet11 wants to merge 2 commits into
pingdotgg:mainfrom
Rishet11:fix/6302-connect-signup-redirect

Conversation

@Rishet11

@Rishet11Rishet11 commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

What Changed

Signing in to T3 Connect from the browser worked if you already had an account. Choosing "Use a fresh account" and signing up dropped you on a 404 instead of returning to the app. The account was created, but you were left on a dead page.

Clerk uses two separate redirect targets: forceRedirectUrl after a sign-in, and signUpForceRedirectUrl after a sign-up. resolveClerkSignInProps only set the first one on the web, so sign-up fell back to Clerk's dashboard-configured default, which is a route this app does not serve.

The web branch now sets both, so a new account lands back where the user started.

Why

The Electron branch of this same function already sets both keys to the same URL, and ClerkSignInProps already declares signUpForceRedirectUrl. Only the web branch was missing it. This makes the two consistent rather than introducing a new idea about where sign-up should go.

Two things I checked while making it:

  • Should sign-up go somewhere other than sign-in? Electron already sends both to the same place, so same-destination is the behaviour this codebase already chose.
  • Should the web href be normalised first, like Electron does? The Electron branch strips the pathname because, per its comment, "Electron routes through the hash", which does not apply in a browser. More to the point, sign-in on the web already passes this exact raw href and returns correctly today, so reusing it for sign-up carries no risk that sign-in is not already carrying.

All three callers (useT3ConnectAuthPrompt.tsx, and ConnectCliAuthSurface.tsx in two places) go through this one function, so they are all covered.

npx t3 connect from the CLI is unaffected either way, which is why that was a workaround.

UI Changes

n/a - no visual change. Sign-up returns to the app rather than a 404.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes (n/a)
  • I included a video for animation/interaction changes (n/a)

Verification

vp test run apps/web/src/components/clerk/authRedirect.test.ts # 3 passed
vp run --filter @t3tools/web typecheck # exit 0, no errors
vp lint apps/web/src/components/clerk/authRedirect.ts apps/web/src/components/clerk/authRedirect.test.ts
vp fmt --check <same two files>

Reverting the source line makes the web test fail, so it covers the changed behaviour.

Fixes#6302

Implemented with Claude Opus 5 via Claude Code.


Note

Low Risk
Small auth redirect configuration change aligned with existing Electron behavior; no new routes or security logic.

Overview
Fixes T3 Connect web sign-up landing on a 404 after creating a new account (“Use a fresh account”). Sign-in already returned to the starting URL; sign-up did not.

resolveClerkSignInProps now sets signUpForceRedirectUrl to the same href as forceRedirectUrl on the non-Electron path, matching the Electron branch and what Clerk expects for post–sign-up redirects. Without it, Clerk used its dashboard default route, which this app does not serve.

The web unit test expectation is updated to assert both redirect props.

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

Note

Fix Connect sign-up redirect to return to the app instead of a 404

When a user signs up via Clerk on the web (non-Electron) path, the redirect after sign-up was not set, causing a 404. resolveClerkSignInProps in authRedirect.ts now includes signUpForceRedirectUrl set to the same href as forceRedirectUrl for the non-Electron code path.

Macroscope summarized 1a56464.

CopilotAI lite review requested due to automatic review settings August 15, 2026 08:54

CopilotAI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai

coderabbitaiBot commented Aug 15, 2026

Copy link
Copy Markdown

Important

Review skipped

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

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b1849e2d-4144-4c56-a9be-edfe06ef3769

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:XS 0-9 changed lines (additions + deletions). labels Aug 15, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved c1d34e9

Straightforward bug fix adding the missing signUpForceRedirectUrl property to prevent 404s after sign-up. The pattern already exists in the Electron code path, and this change applies the same fix to the non-Electron path. Low risk with test coverage.

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

@Rishet11
Rishet11 requested a lite review from CopilotAugust 15, 2026 10:08

CopilotAI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@juliusmarminge
juliusmarminge enabled auto-merge (squash) August 15, 2026 10:44
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by #5133, which is merged and includes the same signUpForceRedirectUrl: href behavior plus the corresponding authRedirect test coverage as part of the broader /connect authentication fix.

auto-merge was automatically disabled August 15, 2026 12:10

Pull request was closed

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

Labels

size:XS0-9 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]: Sign in to T3 connect hits 404 page

3 participants

@Rishet11@juliusmarminge
, '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): send Connect sign-up back to the app instead of a 404 - #6674

Closed
Rishet11 wants to merge 2 commits into
pingdotgg:mainfrom
Rishet11:fix/6302-connect-signup-redirect
Closed

fix(web): send Connect sign-up back to the app instead of a 404#6674
Rishet11 wants to merge 2 commits into
pingdotgg:mainfrom
Rishet11:fix/6302-connect-signup-redirect

Conversation

@Rishet11

@Rishet11Rishet11 commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

What Changed

Signing in to T3 Connect from the browser worked if you already had an account. Choosing "Use a fresh account" and signing up dropped you on a 404 instead of returning to the app. The account was created, but you were left on a dead page.

Clerk uses two separate redirect targets: forceRedirectUrl after a sign-in, and signUpForceRedirectUrl after a sign-up. resolveClerkSignInProps only set the first one on the web, so sign-up fell back to Clerk's dashboard-configured default, which is a route this app does not serve.

The web branch now sets both, so a new account lands back where the user started.

Why

The Electron branch of this same function already sets both keys to the same URL, and ClerkSignInProps already declares signUpForceRedirectUrl. Only the web branch was missing it. This makes the two consistent rather than introducing a new idea about where sign-up should go.

Two things I checked while making it:

  • Should sign-up go somewhere other than sign-in? Electron already sends both to the same place, so same-destination is the behaviour this codebase already chose.
  • Should the web href be normalised first, like Electron does? The Electron branch strips the pathname because, per its comment, "Electron routes through the hash", which does not apply in a browser. More to the point, sign-in on the web already passes this exact raw href and returns correctly today, so reusing it for sign-up carries no risk that sign-in is not already carrying.

All three callers (useT3ConnectAuthPrompt.tsx, and ConnectCliAuthSurface.tsx in two places) go through this one function, so they are all covered.

npx t3 connect from the CLI is unaffected either way, which is why that was a workaround.

UI Changes

n/a - no visual change. Sign-up returns to the app rather than a 404.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes (n/a)
  • I included a video for animation/interaction changes (n/a)

Verification

vp test run apps/web/src/components/clerk/authRedirect.test.ts # 3 passed
vp run --filter @t3tools/web typecheck # exit 0, no errors
vp lint apps/web/src/components/clerk/authRedirect.ts apps/web/src/components/clerk/authRedirect.test.ts
vp fmt --check <same two files>

Reverting the source line makes the web test fail, so it covers the changed behaviour.

Fixes#6302

Implemented with Claude Opus 5 via Claude Code.


Note

Low Risk
Small auth redirect configuration change aligned with existing Electron behavior; no new routes or security logic.

Overview
Fixes T3 Connect web sign-up landing on a 404 after creating a new account (“Use a fresh account”). Sign-in already returned to the starting URL; sign-up did not.

resolveClerkSignInProps now sets signUpForceRedirectUrl to the same href as forceRedirectUrl on the non-Electron path, matching the Electron branch and what Clerk expects for post–sign-up redirects. Without it, Clerk used its dashboard default route, which this app does not serve.

The web unit test expectation is updated to assert both redirect props.

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

Note

Fix Connect sign-up redirect to return to the app instead of a 404

When a user signs up via Clerk on the web (non-Electron) path, the redirect after sign-up was not set, causing a 404. resolveClerkSignInProps in authRedirect.ts now includes signUpForceRedirectUrl set to the same href as forceRedirectUrl for the non-Electron code path.

Macroscope summarized 1a56464.

CopilotAI lite review requested due to automatic review settings August 15, 2026 08:54

CopilotAI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai

coderabbitaiBot commented Aug 15, 2026

Copy link
Copy Markdown

Important

Review skipped

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

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b1849e2d-4144-4c56-a9be-edfe06ef3769

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:XS 0-9 changed lines (additions + deletions). labels Aug 15, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved c1d34e9

Straightforward bug fix adding the missing signUpForceRedirectUrl property to prevent 404s after sign-up. The pattern already exists in the Electron code path, and this change applies the same fix to the non-Electron path. Low risk with test coverage.

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

@Rishet11
Rishet11 requested a lite review from CopilotAugust 15, 2026 10:08

CopilotAI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@juliusmarminge
juliusmarminge enabled auto-merge (squash) August 15, 2026 10:44
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by #5133, which is merged and includes the same signUpForceRedirectUrl: href behavior plus the corresponding authRedirect test coverage as part of the broader /connect authentication fix.

auto-merge was automatically disabled August 15, 2026 12:10

Pull request was closed

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

Labels

size:XS0-9 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]: Sign in to T3 connect hits 404 page

3 participants

@Rishet11@juliusmarminge
, '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): send Connect sign-up back to the app instead of a 404 - #6674

Closed
Rishet11 wants to merge 2 commits into
pingdotgg:mainfrom
Rishet11:fix/6302-connect-signup-redirect
Closed

fix(web): send Connect sign-up back to the app instead of a 404#6674
Rishet11 wants to merge 2 commits into
pingdotgg:mainfrom
Rishet11:fix/6302-connect-signup-redirect

Conversation

@Rishet11

@Rishet11Rishet11 commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

What Changed

Signing in to T3 Connect from the browser worked if you already had an account. Choosing "Use a fresh account" and signing up dropped you on a 404 instead of returning to the app. The account was created, but you were left on a dead page.

Clerk uses two separate redirect targets: forceRedirectUrl after a sign-in, and signUpForceRedirectUrl after a sign-up. resolveClerkSignInProps only set the first one on the web, so sign-up fell back to Clerk's dashboard-configured default, which is a route this app does not serve.

The web branch now sets both, so a new account lands back where the user started.

Why

The Electron branch of this same function already sets both keys to the same URL, and ClerkSignInProps already declares signUpForceRedirectUrl. Only the web branch was missing it. This makes the two consistent rather than introducing a new idea about where sign-up should go.

Two things I checked while making it:

  • Should sign-up go somewhere other than sign-in? Electron already sends both to the same place, so same-destination is the behaviour this codebase already chose.
  • Should the web href be normalised first, like Electron does? The Electron branch strips the pathname because, per its comment, "Electron routes through the hash", which does not apply in a browser. More to the point, sign-in on the web already passes this exact raw href and returns correctly today, so reusing it for sign-up carries no risk that sign-in is not already carrying.

All three callers (useT3ConnectAuthPrompt.tsx, and ConnectCliAuthSurface.tsx in two places) go through this one function, so they are all covered.

npx t3 connect from the CLI is unaffected either way, which is why that was a workaround.

UI Changes

n/a - no visual change. Sign-up returns to the app rather than a 404.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes (n/a)
  • I included a video for animation/interaction changes (n/a)

Verification

vp test run apps/web/src/components/clerk/authRedirect.test.ts # 3 passed
vp run --filter @t3tools/web typecheck # exit 0, no errors
vp lint apps/web/src/components/clerk/authRedirect.ts apps/web/src/components/clerk/authRedirect.test.ts
vp fmt --check <same two files>

Reverting the source line makes the web test fail, so it covers the changed behaviour.

Fixes#6302

Implemented with Claude Opus 5 via Claude Code.


Note

Low Risk
Small auth redirect configuration change aligned with existing Electron behavior; no new routes or security logic.

Overview
Fixes T3 Connect web sign-up landing on a 404 after creating a new account (“Use a fresh account”). Sign-in already returned to the starting URL; sign-up did not.

resolveClerkSignInProps now sets signUpForceRedirectUrl to the same href as forceRedirectUrl on the non-Electron path, matching the Electron branch and what Clerk expects for post–sign-up redirects. Without it, Clerk used its dashboard default route, which this app does not serve.

The web unit test expectation is updated to assert both redirect props.

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

Note

Fix Connect sign-up redirect to return to the app instead of a 404

When a user signs up via Clerk on the web (non-Electron) path, the redirect after sign-up was not set, causing a 404. resolveClerkSignInProps in authRedirect.ts now includes signUpForceRedirectUrl set to the same href as forceRedirectUrl for the non-Electron code path.

Macroscope summarized 1a56464.

CopilotAI lite review requested due to automatic review settings August 15, 2026 08:54

CopilotAI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai

coderabbitaiBot commented Aug 15, 2026

Copy link
Copy Markdown

Important

Review skipped

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

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b1849e2d-4144-4c56-a9be-edfe06ef3769

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:XS 0-9 changed lines (additions + deletions). labels Aug 15, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved c1d34e9

Straightforward bug fix adding the missing signUpForceRedirectUrl property to prevent 404s after sign-up. The pattern already exists in the Electron code path, and this change applies the same fix to the non-Electron path. Low risk with test coverage.

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

@Rishet11
Rishet11 requested a lite review from CopilotAugust 15, 2026 10:08

CopilotAI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@juliusmarminge
juliusmarminge enabled auto-merge (squash) August 15, 2026 10:44
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by #5133, which is merged and includes the same signUpForceRedirectUrl: href behavior plus the corresponding authRedirect test coverage as part of the broader /connect authentication fix.

auto-merge was automatically disabled August 15, 2026 12:10

Pull request was closed

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

Labels

size:XS0-9 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]: Sign in to T3 connect hits 404 page

3 participants

@Rishet11@juliusmarminge