Skip to content

[PROJ-1844] Post-login redirect to /dashboard + signed-out /vote pilot preview - #359

Merged
AndrewNordstrom merged 3 commits into
mainfrom
dev/PROJ-1844-post-login-redirect
Jul 14, 2026
Merged

AndrewNordstrom merged 3 commits into
mainfrom
dev/PROJ-1844-post-login-redirect

Conversation

@AndrewNordstrom

Copy link
Copy Markdown
Collaborator

What & why

Two signed-out / sign-in UX issues reported on the live pilot.

1. Sign-in now takes you to the dashboard

Signing in only closed the dialog in place — no post-login navigation has ever existed — so signing in from the global nav or /sign-in felt like nothing happened even though the session was established. Adds an opt-in redirectOnSuccess prop to SignInDialog; the three global entry points (header, app-shell, /sign-in) pass /dashboard. In-task dialogs (vote, settings, admin, research-consent) omit it and stay put so the user can finish what they came to do; the waitlist submit path never redirects.

2. Signed-out /vote reads as an intentional pilot preview

Signed-out visitors already fall through to the full ballot (epoch + topics are public), but nothing framed it as a read-only preview or offered a way in — the only waitlist CTA was in the global nav. Adds an on-brand "Limited pilot" banner at the top of the ballot, shown only when signed out; its CTA reuses the page's existing waitlist dialog.

Deliberately not gating page views — transparency pages stay public (the product's value); voting + personal data are already server-gated (401 verified live).

Verification

  • Static export build: 25/25 pages
  • Real-browser drive (mocked auth): /sign-in → redirects to /dashboard; signed-out /vote renders the banner and its CTA opens the waitlist dialog; no horizontal scroll at 375px
  • web-next suite: 192/192, incl. new redirect + teaser source-scan guards

Closes PROJ-1844.

…ints

Signing in only closed the dialog in place, so signing in from the global nav
or the /sign-in page felt like nothing happened even though the session was
established. Add an opt-in redirectOnSuccess prop to SignInDialog and wire the
three global entry points (header, app-shell, sign-in page) to /dashboard.
In-task dialogs (vote, settings, admin, research-consent) omit it and stay put
so the user can finish what they came to do; the waitlist submit path never
redirects.
… CTA

Signed-out visitors already fall through to the full ballot (epoch and topics
are public), but nothing framed it as a read-only preview or offered a way in —
the only waitlist CTA was in the global nav. Add an on-brand pilot banner at the
top of the ballot, shown only when signed out; its CTA reuses the page's
existing waitlist dialog. Verified in-browser at desktop and 375px.
@coderabbitai

coderabbitai Bot commented Jul 14, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your recent review volume is higher than typical usage, so adaptive limits are currently applied.

Next review available in: 40 minutes

Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Repository YAML (base), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 6aced6e4-60c8-44b6-856f-17ef35a18174

📥 Commits

Reviewing files that changed from the base of the PR and between 64ae6f8 and 51a3e06.

📒 Files selected for processing (6)
  • tests/web-next-signin-redirect.test.ts
  • web-next/app/sign-in/page.tsx
  • web-next/app/vote/page.tsx
  • web-next/components/app-shell.tsx
  • web-next/components/header.tsx
  • web-next/components/sign-in-dialog.tsx
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dev/PROJ-1844-post-login-redirect
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch dev/PROJ-1844-post-login-redirect

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

@AndrewNordstrom
AndrewNordstrom marked this pull request as draft July 14, 2026 01:01
@AndrewNordstrom

Copy link
Copy Markdown
Collaborator Author

CodeRabbit Audit

Exemption reason: CodeRabbit usage spending cap reached — automated review cannot run on this PR, so a fresh review is impossible without additional budget. Founder-authorized use of the audited coderabbit:exempt bypass for this cap-reached case (confirmed this session).

Scope: Frontend-only (web-next). No backend, no auth/session logic, no config, no secrets, no dependency changes.

Self-review performed (in lieu of CR):

  • Diff: opt-in redirectOnSuccess prop on SignInDialog + a guarded router.push on sign-in success; wired to the 3 global entry points (header, app-shell, /sign-in); in-task dialogs (vote/settings/admin/research-consent) left unchanged so they stay in place. Signed-out /vote pilot-preview banner whose CTA reuses the page's existing waitlist dialog.
  • Build: static export 25/25 pages.
  • Tests: web-next suite 192/192, incl. new redirect + teaser source-scan guards.
  • Behavioral (real browser, mocked auth): /sign-in → /dashboard; signed-out /vote banner renders and its CTA opens the waitlist dialog; no horizontal overflow at 375px.
  • Security: secret-scan, security-gate, and CodeQL analyze all green; no secrets/credentials/PII.

Risk: Low — pure UI, no server surface, no data-handling change, trivially reversible.

@AndrewNordstrom AndrewNordstrom added the coderabbit:exempt Temporary CodeRabbit exemption with audit note label Jul 14, 2026
@AndrewNordstrom
AndrewNordstrom marked this pull request as ready for review July 14, 2026 01:07
@AndrewNordstrom
AndrewNordstrom merged commit 2dc550e into main Jul 14, 2026
22 of 23 checks passed
@AndrewNordstrom
AndrewNordstrom deleted the dev/PROJ-1844-post-login-redirect branch July 14, 2026 01:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

coderabbit:exempt Temporary CodeRabbit exemption with audit note

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant