Fixed 405 Method Not Allowed error on subscription pages:
Issue:
- Subscription pages were making GET requests to /api/user/profile
- The API route only had a PUT handler (for profile updates)
- This caused 405 (Method Not Allowed) errors
Solution:
- Added GET handler to /api/user/profile/route.ts
- Handler authenticates user via Bearer token
- Returns complete user data including subscription fields:
* subscriptionTier
* subscriptionStatus
* conversationLimit
* conversationCount
* limitResetDate
* stripeCustomerId
* stripeSubscriptionId
Result:
- Subscription pages can now fetch user data successfully
- Settings page subscription widget displays correctly
- No more 405 errors in console
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Database & API:
- Enhanced ReadingHistory model with versionId field and unique constraint per user/version
- Created /api/user/reading-progress endpoint (GET/POST) for saving and retrieving progress
- Upsert operation ensures one reading position per user per Bible version
Bible Reader Features:
- Auto-save reading position after 2 seconds of inactivity
- Auto-restore last reading position on page load (respects URL parameters)
- Visual progress bar showing completion percentage based on chapters read
- Calculate progress across entire Bible (current chapter / total chapters)
- Client-side only loading to prevent hydration mismatches
Bug Fixes:
- Remove 200 version limit when loading "all versions" - now loads ALL versions
- Fix version selection resetting to favorite when user manually selects different version
- Transform books API response to include chaptersCount property
- Update service worker cache version to force client updates
- Add comprehensive SEO URL logging for debugging 404 issues
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add favoriteBibleVersion field to User schema in Prisma
- Create API endpoint (/api/user/favorite-version) to get/set favorite version
- GET: retrieve user's favorite Bible version
- POST: save/update user's favorite Bible version
- Enhance Bible reader functionality
- Automatically load user's favorite version on mount (logged-in users)
- Add star button (⭐) next to version selector to set current version as default
- Display success message when favorite version is saved
- Fall back to default version if no favorite is set
- Add Bible Preferences section to Settings page
- Display user's current favorite Bible version in dropdown
- Allow users to view and change favorite version
- Load all Bible versions (removed 200 limit) to ensure favorite is found
- Show confirmation message when version is selected
- Add loading state while fetching versions
- Fix renderValue in Select component to properly display version names
- Add comprehensive debug logging for troubleshooting
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Replace placeholder implementation with proper API integration:
- Create /api/user/profile PUT endpoint with JWT validation
- Update profile page to call actual API instead of setTimeout
- Use refreshUser() to update UI immediately after changes
- Ensure name changes persist to database and across page refreshes
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>