feat: redesign onboarding as standalone synthwave page#78
Conversation
- Replace multi-step onboarding overlay with standalone page matching CashPilot Desktop's synthwave aesthetic - Unified 3-step flow: Welcome → Create Account → Done (→ Setup Wizard) - Remove "What's your situation?" step (assume fresh start) - Remove category selection (users pick services in Setup Wizard) - Redirect / and /login to /onboarding when no users exist - Post-registration redirects to /setup directly - Remove earnings claim from FAQ (varies too much to give a number) - Remove CashPilot-Desktop from ecosystem table (self-referential) - Un-defer auto-claim daily rewards on roadmap
|
Warning Review limit reached
Your plan includes 1 review of capacity. Refill in 40 minutes and 30 seconds. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more review capacity refills, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than trial, open-source, and free plans. In all cases, review capacity refills continuously over time. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughBackend authentication flow and onboarding template refactored to establish a clear first-run sequence: new users land on an onboarding page (3-step form), create an account, then proceed to setup. Documentation updated to reflect broader earnings variability and active roadmap tracking of automated rewards. ChangesOnboarding Flow Refactor
Product Documentation Updates
🎯 3 (Moderate) | ⏱️ ~25 minutes 🚥 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 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.
Actionable comments posted: 1
🧹 Nitpick comments (1)
app/main.py (1)
390-393: ⚡ Quick winUpdate route tests to match the new first-run contract.
Lines 392, 583, and 597 changed routing behavior, but provided snippets in
tests/test_main_routes.pystill assert the old/registerand unauthenticated/onboardingexpectations.Suggested test updates
-assert "/register" in resp.headers["location"] +assert "/onboarding" in resp.headers["location"] -assert "/register" in resp.headers["location"] +assert "/onboarding" in resp.headers["location"] -def test_onboarding_no_auth(self, client): - with _no_auth(): - resp = client.get("/onboarding", follow_redirects=False) - assert resp.status_code == 303 +def test_onboarding_no_auth_no_users(self, client): + with ( + _no_auth(), + patch("app.main.database.has_any_users", new_callable=AsyncMock, return_value=False), + ): + resp = client.get("/onboarding", follow_redirects=False) + assert resp.status_code == 200 + +def test_onboarding_redirects_to_login_when_users_exist(self, client): + with patch("app.main.database.has_any_users", new_callable=AsyncMock, return_value=True): + resp = client.get("/onboarding", follow_redirects=False) + assert resp.status_code == 303 + assert resp.headers["location"] == "/login"Also applies to: 582-584, 597-598
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@app/main.py` around lines 390 - 393, Tests in tests/test_main_routes.py still expect the old first-run routing (/register and unauthenticated /onboarding) but main.py now redirects to "/onboarding" when database.has_any_users() is false (see RedirectResponse("/onboarding", status_code=303)); update the test assertions at the cases covering the first run and unauthenticated flows (previously asserting "/register" and the old onboarding behavior) to assert the new 303 redirect to "/onboarding" and any changed authentication redirects at the other affected assertions (those near the previous line references), and ensure the test setup simulates database.has_any_users() returning False/True as appropriate to exercise both branches.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@app/templates/onboarding.html`:
- Around line 9-11: The Google Fonts stylesheet link in
app/templates/onboarding.html (the link with href
"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"
and the preconnect to fonts.gstatic.com) is render-blocking; change the
stylesheet link to use the async preload pattern by making it rel="preload"
as="style" with an onload handler that sets this.rel='stylesheet', keep the
existing preconnect to fonts.googleapis.com and the crossorigin preconnect to
fonts.gstatic.com, and optionally include a noscript fallback to load the
stylesheet for non-JS clients.
---
Nitpick comments:
In `@app/main.py`:
- Around line 390-393: Tests in tests/test_main_routes.py still expect the old
first-run routing (/register and unauthenticated /onboarding) but main.py now
redirects to "/onboarding" when database.has_any_users() is false (see
RedirectResponse("/onboarding", status_code=303)); update the test assertions at
the cases covering the first run and unauthenticated flows (previously asserting
"/register" and the old onboarding behavior) to assert the new 303 redirect to
"/onboarding" and any changed authentication redirects at the other affected
assertions (those near the previous line references), and ensure the test setup
simulates database.has_any_users() returning False/True as appropriate to
exercise both branches.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: d2637200-4329-4871-aa9c-6c86b1a74b05
📒 Files selected for processing (4)
README.mdROADMAP.mdapp/main.pyapp/templates/onboarding.html
Redirect destination changed from /register to /onboarding. Onboarding page is now unprotected and requires has_any_users mock.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #78 +/- ##
==========================================
- Coverage 91.00% 90.99% -0.01%
==========================================
Files 26 26
Lines 2812 2811 -1
==========================================
- Hits 2559 2558 -1
Misses 253 253
🚀 New features to boost your workflow:
|
Summary
Changes
app/templates/onboarding.html: Complete rewrite as standalone page with inline SVG backgroundapp/main.py: Route adjustments — redirects to/onboardingwhen no users, first user goes to/setupREADME.md: Remove specific earnings claims, remove self-referencing ecosystem entryROADMAP.md: Re-enable auto-claim daily rewards as active roadmap itemTest plan
docker compose up -dwith clean volumes) → lands on synthwave onboarding/setuppage/onboardingredirects to/loginSummary by CodeRabbit
Documentation
Improvements