Added study guides:
- Foundational Studies: Baptism, Holy Communion
- Character & Living: Discipleship, Evangelism, Suffering & Persecution
- Biblical Themes: Parables of Jesus, Miracles of Jesus
- Doctrinal Studies: End Times & Eschatology, Spiritual Warfare, Spiritual Gifts, The Church
Each guide includes 8 detailed sections with verse references and comprehensive theological content.
Total study guides: 36 (up from 25)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Changed scrollIntoView behavior from 'smooth' to 'auto' to prevent overlapping scroll animations when holding down arrow keys. This eliminates stuttering and makes rapid navigation smooth.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Restored chapter.html to the version from commit fb4e970 which had the perfect working keyboard navigation. The recent changes to chapter view were not needed.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
When you scroll the page and then press ↑ or ↓ for the first time, the selection now intelligently starts from what's currently visible in the viewport instead of always starting at the top.
**Behavior:**
- If chapter section is visible → starts there
- If scrolled past chapters → starts at first visible paragraph
- Selection only moves when you press a key (not automatically on scroll)
This makes navigation feel natural when combined with mouse/trackpad scrolling.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Selection now automatically updates when scrolling to match what's visible in the viewport:
- When in chapter drilldown mode, scrolling updates to the first visible chapter
- When viewing paragraphs, scrolling updates to the first visible paragraph
- When chapter section is selected and scrolled off-screen, switches to paragraphs
- Debounced for smooth performance (150ms)
This makes keyboard navigation feel natural when combined with mouse/trackpad scrolling.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Changed selector from selecting all paragraphs to only selecting direct children paragraphs, which prevents selecting both the blockquote and the paragraph inside it.
Before: `section:not(.chapters-section) p` selected p inside blockquotes
After: `section:not(.chapters-section) > p` only selects direct p children
This fixes the issue where Key Verses blockquotes had two selection items.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
**Book View Changes:**
- Chapter section is now a single item with green box outline
- Press ↓ to select chapter section
- Press Enter to drill down into individual chapters
- Press Esc to exit drilldown mode
- All paragraphs now use green box outline styling (consistent UX)
**Chapter View Changes:**
- Removed 'c' keyboard shortcut (reserved keyword)
- Updated help text
**Navigation Flow:**
1. Start: Press ↓ → selects chapter section (green box)
2. Press Enter → drills into first chapter number
3. Navigate ↑/↓ through chapter numbers
4. Press Enter on a chapter → navigate to that chapter
5. Press Esc → exit back to chapter section
6. Press ↓ from chapter section → move to paragraphs below
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Book view now supports navigating both chapter links and introduction paragraphs. Chapter view supports navigating action buttons, verses, and chapter selector controls.
**Book View:**
- Navigate through chapter numbers with ↑/↓
- Continue down to navigate through introduction paragraphs
- Press Enter on chapters to read them
- Visual feedback with green highlights for both zones
**Chapter View:**
- Three-zone navigation: actions, verses, chapter selector
- Press 'c' to jump to chapter selector
- Press Enter in chapter selector to focus dropdown
- Escape to clear selections
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Removed service worker, PWA manifest, offline page, and all related UI components to simplify the application and reduce bloat.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Updated all route handler functions in the API to be asynchronous by adding 'async' keyword.
- This change enhances performance and allows for better handling of concurrent requests.
- Adjusted related documentation comments to reflect the changes in function signatures.
- Press 'c' to switch to cached pages navigation mode
- j/k navigate through cached URLs
- Enter opens the selected cached page
- Esc or h returns to cards mode
- Auto-expands categories when entering cached mode
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Verses are selectable with j/k navigation
- Space speaks selected verse using Web Speech API
- Enter drills down to verse commentary page
- s stops speech
- v switches to verse mode from cards
- Clicking verses also selects them
- Visual feedback for selected and speaking verses
- Removed cached pages navigation (simplified)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- j/↓ move down through quick access cards
- k/↑ move up through cards
- l/→ move right / next chapter in reader
- h/← move left / previous chapter / go back
- Enter opens selected card
- Esc clears selection
- g goes to Genesis 1
- ? shows help
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
The base.html template doesn't have an extra_js block defined,
so the JavaScript was being silently dropped. Moved the script
tag inside the content block where it will be rendered.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add no-cache headers to sw.js endpoint to prevent aggressive caching
- Move system status grid to top of offline page for debugging
- Show connection status, SW version, cache storage, bible data, pages cached
- Add SW version check that reads from actual sw.js file
- Keep download progress indicator in download section
- Move cached pages list to collapsible details
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Centered hero section with status badge
- Prominent status card with icon
- Clean download section with gradient background
- Quick access grid with larger icon cards
- Improved Bible reader section with styled controls
- Technical details collapsed by default
- Simplified cached URL list (limit 500 per category)
- Cleaner, more modern styling throughout
- Better dark mode support
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Keep nginx only for production (Fly.io). Local dev uses uvicorn
directly for simpler hot-reloading.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fly.io's Consul health checks hit /health. Now nginx responds
directly with 200 OK without proxying to uvicorn, so health
checks won't fail under heavy load.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Web service has healthcheck on /api/health
- nginx depends on web being healthy before starting
- Added curl to Dockerfile for healthcheck
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- nginx.conf: docker-compose version (uses 'web:8001')
- nginx-prod.conf: production version (uses '127.0.0.1:8001')
- Separate nginx service in docker-compose
- uvicorn runs on port 8001, nginx exposes 8000
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>