feat: UX polish — onboarding, AiSection CSS, magic link resend#218
Conversation
…resend
Onboarding:
- Add 4th feature card: "Import Your Notes" (Obsidian, Markdown folders)
- Add keyboard shortcut hint: "Press Cmd+K for command palette"
- Change "Skip" to "I'll explore on my own"
Auth:
- Add "Resend magic link" button with 60s cooldown timer
- Shows countdown ("Resend in 45s"), spinner while sending
AiSection:
- Migrate all remaining inline styles to CSS tokens
- Map hardcoded rgba colors to --success-muted, --danger-muted, etc.
- 15+ new CSS classes in Section.module.css
Note: Spellcheck and image paste were already implemented in the codebase.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Caution Review failedPull request was closed or merged during review 📝 WalkthroughWalkthroughThe changes update the desktop onboarding UI with a new card and user hint, add a resend mechanism with cooldown to the magic link authentication flow, and refactor the AI settings component to use CSS modules instead of inline styles. Changes
Sequence Diagram(s)sequenceDiagram
actor User
participant MagicLinkFlow
participant RequestMagicLink as requestMagicLink()
participant IntervalEffect as Cooldown Effect
rect rgba(200, 150, 255, 0.5)
User->>MagicLinkFlow: Click "Resend magic link"
MagicLinkFlow->>MagicLinkFlow: Check cooldown active?
alt Cooldown Active
MagicLinkFlow->>User: Button disabled
else Cooldown Inactive
MagicLinkFlow->>MagicLinkFlow: Set resending=true
MagicLinkFlow->>RequestMagicLink: Call with email
RequestMagicLink->>MagicLinkFlow: Return success/error
alt Success
MagicLinkFlow->>MagicLinkFlow: Start 60s cooldown
MagicLinkFlow->>IntervalEffect: Initialize countdown interval
IntervalEffect->>MagicLinkFlow: Decrement remaining seconds
MagicLinkFlow->>User: Display "Resend in Ns"
else Failure
MagicLinkFlow->>MagicLinkFlow: Set error message
MagicLinkFlow->>User: Display error
end
MagicLinkFlow->>MagicLinkFlow: Set resending=false
end
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Suggested labels
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 60bdc4a3e2
ℹ️ 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".
| try { | ||
| await requestMagicLink(email); | ||
| startCooldown(); | ||
| } catch { | ||
| setError('Failed to resend magic link. Please try again.'); |
There was a problem hiding this comment.
Ignore stale resend results after leaving sent step
The resend handler always applies post-request state updates (startCooldown() on success and setError(...) on failure) after await requestMagicLink(email), even if the user has already clicked “Use different email” and moved back to the email step while that request is in flight. In that case, stale results from the old email can leak into the new flow (e.g., showing a resend failure for the wrong attempt or reintroducing cooldown unexpectedly). Please gate these updates on the current step/request instance, or cancel/ignore the in-flight resend when retrying.
Useful? React with 👍 / 👎.
Summary
Onboarding
Auth
AiSection CSS Migration
rgba(16,185,129,0.08)→var(--success-muted), etc.Already Implemented (verified during audit)
![[filename]]insertTest plan
pnpm typecheck— 17/17 passpnpm test— 16/16 pass🤖 Generated with Claude Code
Summary by CodeRabbit
Release Notes
New Features
Style