- Create missing Plan 01-07 (password reset navigation) - Update Plan 01-10 to contain logout functionality (covers AUTH-05) - Split Plan 01-04 into Plans 01-04 and 01-11 (2-3 tasks each) - Fix dependency references throughout phase - Update ROADMAP.md to reflect 11 plans in 4 waves
116 lines
4.2 KiB
Markdown
116 lines
4.2 KiB
Markdown
---
|
|
phase: 01-authentication
|
|
plan: 05
|
|
type: execute
|
|
wave: 3
|
|
depends_on: ["01-03", "01-11"]
|
|
files_modified: ["lib/features/authentication/presentation/pages/reset_password_page.dart", "lib/features/authentication/presentation/widgets/password_reset_form.dart"]
|
|
autonomous: true
|
|
user_setup:
|
|
- service: supabase
|
|
why: "Configure password reset redirect URLs"
|
|
env_vars: []
|
|
dashboard_config:
|
|
- task: "Add password reset redirect URLs"
|
|
location: "Supabase Dashboard → Authentication → URL Configuration → Site URL"
|
|
- task: "Add password reset redirect URLs"
|
|
location: "Supabase Dashboard → Authentication → URL Configuration → Redirect URLs"
|
|
|
|
must_haves:
|
|
truths:
|
|
- "User can request password reset via email"
|
|
- "User receives reset email within 1 minute"
|
|
artifacts:
|
|
- path: "lib/features/authentication/presentation/pages/reset_password_page.dart"
|
|
provides: "Password reset request page"
|
|
min_lines: 35
|
|
- path: "lib/features/authentication/presentation/widgets/password_reset_form.dart"
|
|
provides: "Password reset form components"
|
|
min_lines: 25
|
|
key_links:
|
|
- from: "lib/features/authentication/presentation/pages/reset_password_page.dart"
|
|
to: "lib/providers/auth_provider.dart"
|
|
via: "password reset method"
|
|
pattern: "resetPassword|_authProvider"
|
|
---
|
|
|
|
<objective>
|
|
Implement password reset request interface and form components.
|
|
|
|
Purpose: Enable users to initiate password recovery through email-based reset flow.
|
|
Output: Password reset request page with form validation and email submission.
|
|
</objective>
|
|
|
|
<execution_context>
|
|
@~/.opencode/get-shit-done/workflows/execute-plan.md
|
|
@~/.opencode/get-shit-done/templates/summary.md
|
|
</execution_context>
|
|
|
|
<context>
|
|
@.planning/PROJECT.md
|
|
@.planning/ROADMAP.md
|
|
@.planning/STATE.md
|
|
@.planning/phases/01-authentication/01-RESEARCH.md
|
|
</context>
|
|
|
|
<tasks>
|
|
|
|
<task type="auto">
|
|
<name>Create password reset request page</name>
|
|
<files>lib/features/authentication/presentation/pages/reset_password_page.dart</files>
|
|
<action>
|
|
Create ResetPasswordPage that:
|
|
1. Has email input field with validation
|
|
2. Uses AuthButton for "Send Reset Email" action
|
|
3. Shows success message after email sent
|
|
4. Shows error message for invalid email
|
|
5. Has loading state during email sending
|
|
6. Includes "Back to Login" navigation
|
|
7. Provides clear instructions to user
|
|
8. Handles rate limiting feedback (if email already sent)
|
|
9. Uses AuthRepository resetPassword() method
|
|
10. Has proper page structure and responsive design
|
|
11. Includes accessibility features
|
|
12. Shows helpful copy like "Check your email for reset link"
|
|
</action>
|
|
<verify>Reset password page sends email request and shows appropriate success/error states</verify>
|
|
<done>Complete password reset request interface integrated with auth system</done>
|
|
</task>
|
|
|
|
<task type="auto">
|
|
<name>Create password reset components</name>
|
|
<files>lib/features/authentication/presentation/widgets/password_reset_form.dart</files>
|
|
<action>
|
|
Create PasswordResetForm widget that:
|
|
1. Accepts email field configuration
|
|
2. Provides email validation
|
|
3. Shows validation errors in real-time
|
|
4. Has onSubmit callback for email submission
|
|
5. Shows loading state during submission
|
|
6. Has proper styling consistent with AuthForm
|
|
7. Includes proper text input types
|
|
8. Responsive layout for mobile/tablet
|
|
9. Proper accessibility labels
|
|
10. Can be reused in different contexts
|
|
</action>
|
|
<verify>Password reset form validates email properly and handles submission states correctly</verify>
|
|
<done>Reusable password reset form component</done>
|
|
</task>
|
|
|
|
</tasks>
|
|
|
|
<verification>
|
|
1. Password reset email sends successfully and arrives within 1 minute
|
|
2. Reset password page validates email input properly
|
|
3. Error handling covers all failure scenarios (invalid email, network issues, etc.)
|
|
4. Loading states show during email submission
|
|
5. Success message provides clear guidance to users
|
|
</verification>
|
|
|
|
<success_criteria>
|
|
Password reset request interface working with proper validation, email submission, and user feedback.
|
|
</success_criteria>
|
|
|
|
<output>
|
|
After completion, create `.planning/phases/01-authentication/01-05-SUMMARY.md`
|
|
</output> |