On mobile, typing the first characters of a work description on a new
entry caused the form to remount: the auto-save POST replaced the temp
entry with the server copy, changing its React key, which destroyed the
textarea, dropped focus and closed the keyboard.
- Key EntryForm on a stable clientKey that survives the id swap
- Merge only the server id into the local entry so keystrokes typed
while the create request is in flight are kept
- Track temp-id -> real-id and in-flight creates so queued changes
become PUTs instead of duplicate POSTs; deletes resolve to the real row
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- Add PUT /api/auth/profile for users to change their own email/password
- Add POST /api/admin/users/:id/reset-password for admin password resets
- Add updateProfileSchema and resetPasswordSchema validation (Zod)
- Create Profile.jsx page with email change and password change forms
- Add Reset Password button with inline form to ManageUsers in Admin panel
- Add /profile route and Account nav link in Layout
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Added screenshot.png showing the current timesheet interface
- Removed old screenshot.jpg file
- Screenshot displays validation features, dynamic fields, and professional layout
Resolved conflicts by keeping the enhanced version with:
- Employee name validation for all submissions
- Complete entry validation (all fields required when any field has input)
- Dynamic auto-resizing work description fields
- Optimized field layout (Homeowner → Hours → Work Description)
- Professional PDF generation with validation
- Email/share functionality with validation
- Data import/export capabilities
- Dark/light theme support
- Mobile-responsive design
- Local data persistence
- Multiple entries per day support
- Custom homeowner management
- Comprehensive README with deployment instructions
- Production build ready for web hosting
- Employee name validation for all submissions
- Complete entry validation (all fields required when any field has input)
- Dynamic auto-resizing work description fields
- Optimized field layout (Homeowner → Hours → Work Description)
- Professional PDF generation with validation
- Email/share functionality with validation
- Data import/export capabilities
- Dark/light theme support
- Mobile-responsive design
- Local data persistence
- Multiple entries per day support
- Custom homeowner management
- Comprehensive README with deployment instructions
- Production build ready for web hosting