diff --git a/prd.json b/prd.json index cdcedf2..acafa3b 100644 --- a/prd.json +++ b/prd.json @@ -173,7 +173,7 @@ "Verify in browser using dev-browser skill" ], "priority": 10, - "passes": false, + "passes": true, "notes": "" }, { diff --git a/progress.txt b/progress.txt index ac710c3..a2f837e 100644 --- a/progress.txt +++ b/progress.txt @@ -142,3 +142,19 @@ - Use ' for apostrophe in JSX to avoid HTML entity issues - Follow same styling pattern as login page for consistency across auth pages --- + +## 2026-01-21 - US-010 +- What was implemented: Password reset - set new password page +- Files changed: + - src/app/reset-password/page.tsx - new file with password reset form + - src/app/login/page.tsx - updated to show success message from password reset +- **Learnings for future iterations:** + - Supabase recovery tokens come via URL hash fragment with type=recovery + - Use setSession() with access_token and refresh_token from hash to establish recovery session + - Show loading state while verifying token validity (tokenValid === null) + - Show error state with link to request new reset if token is invalid + - After password update, sign out the user and redirect to login with success message + - Use query param (message=password_reset_success) to pass success state between pages + - Login page uses useSearchParams to read and display success messages + - Success messages styled with green background (bg-green-50) +---