Files
Sage/.planning/phases/01-authentication/01-05-PLAN.md
Dani B 4a20b93fae fix(01): revise plans based on checker feedback
- Split Plan 05 (5 tasks → 2 tasks): password reset request interface
- Split Plan 06 (5 tasks → 2 tasks): created Plans 06-09 for focused scope
- Fixed Plan 06 wave assignment: Wave 4 → Wave 3 (depends only on Wave 2)
- Created Plan 07: password reset navigation and deep linking
- Created Plan 08: authentication pages error handling
- Created Plan 09: auth components error display and loading feedback
- Updated Plan 07 → Plan 10: logout and verification
- Updated ROADMAP.md with 10 plans in 4 waves
- All plans now have 2-3 tasks as recommended
2026-01-28 00:38:31 -05:00

116 lines
4.2 KiB
Markdown

---
phase: 01-authentication
plan: 05
type: execute
wave: 3
depends_on: ["01-03", "01-04"]
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>