Commit Graph

920 Commits

Author SHA1 Message Date
kennethreitz a3ca2c6c48 Mark selected resource detail items for spacebar reading 2025-11-30 11:58:24 -05:00
kennethreitz 0168e9fdba Make resource reader respect selected elements and body descriptions 2025-11-30 11:53:08 -05:00
kennethreitz 5deca15718 Wrap resource descriptions in paragraphs 2025-11-30 11:51:23 -05:00
kennethreitz cfc7d46f7c Read article-scoped content for resource spacebar 2025-11-30 11:50:36 -05:00
kennethreitz 37ccdc0f55 Enable resource reader flag on detail pages 2025-11-30 11:49:59 -05:00
kennethreitz d358e3a832 Broaden resource reader selectors for div descriptions 2025-11-30 11:48:45 -05:00
kennethreitz a7cb9aee9f Expand resource reader to description divs 2025-11-30 11:48:12 -05:00
kennethreitz e88ef39a82 Include headings with content when reading resource pages 2025-11-30 11:46:45 -05:00
kennethreitz a4373efa58 Prepend page headings to resource spacebar reading 2025-11-30 11:44:46 -05:00
kennethreitz 619eaf8070 Make resource spacebar read full page when unselected 2025-11-30 11:43:30 -05:00
kennethreitz 04a693870b Add resource reader spacebar support on reference pages 2025-11-30 11:42:44 -05:00
kennethreitz 93c5c70cb9 Update spacebar reading behavior for chapters 2025-11-30 11:36:19 -05:00
kennethreitz d0a74673cd Add '=' shortcut to read chapters with auto-advance 2025-11-30 11:34:45 -05:00
kennethreitz 4caaa7394f Expand end-times study guide content 2025-11-30 11:20:30 -05:00
kennethreitz 6fba0707cc data 2025-11-30 11:09:57 -05:00
kennethreitz cde67c3a51 Add left/right chapter navigation in book drilldown 2025-11-30 10:56:49 -05:00
kennethreitz ee17b5dbdf Fix interlinear tooltip toggles and align theme colors 2025-11-30 10:53:21 -05:00
kennethreitz 1f892978f8 Enhance theming support by updating color variables and ensuring consistent styling across sidenotes and marginnotes 2025-11-30 10:38:29 -05:00
kennethreitz 77ffc9ccbf Update sidenote and marginnote styles for improved theming support 2025-11-30 10:24:28 -05:00
kennethreitz fe28decc7f study_guides 2025-11-30 10:18:58 -05:00
kennethreitz 95382e79d3 Refactor section content rendering to improve accessibility and navigation 2025-11-30 10:18:53 -05:00
kennethreitz f9b2778ec5 updated study guides 2025-11-30 10:16:17 -05:00
kennethreitz 29046647e5 update study guides 2025-11-30 10:12:30 -05:00
kennethreitz 768e000870 update study_guides.json 2025-11-30 09:57:25 -05:00
kennethreitz 6d44f647fe Add 11 comprehensive study guides covering major topics
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>
2025-11-30 09:39:52 -05:00
kennethreitz bcb9617d84 Fix stuttering in chapter view keyboard navigation
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>
2025-11-30 09:08:59 -05:00
kennethreitz 84fb89f806 Revert chapter.html to working state before navigation changes
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>
2025-11-30 09:07:33 -05:00
kennethreitz 1d7bd64600 Make keyboard navigation viewport-aware on initial keypress
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>
2025-11-30 09:06:26 -05:00
kennethreitz 0a2931030a Revert "Add viewport-aware scroll behavior to book view navigation"
This reverts commit 3fc86a09c0.
2025-11-30 09:05:43 -05:00
kennethreitz 3fc86a09c0 Add viewport-aware scroll behavior to book view navigation
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>
2025-11-30 09:05:38 -05:00
kennethreitz 314fe21577 Fix duplicate selection items for blockquotes in book view
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>
2025-11-30 09:04:32 -05:00
kennethreitz 2a94971a38 Refactor book view to use drilldown navigation with green box styling
**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>
2025-11-30 09:03:33 -05:00
kennethreitz 18c4359e10 Add two-zone keyboard navigation to book and chapter views
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>
2025-11-30 09:00:07 -05:00
kennethreitz 8537fb548f Remove offline functionality and PWA features
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>
2025-11-30 08:51:54 -05:00
kennethreitz fb4e970567 Refactor API and route functions to be asynchronous
- 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.
2025-11-30 02:41:53 -05:00
kennethreitz 6a5414a1c8 Convert main route handlers to async for better concurrency
Converted 20 synchronous route handlers to async:
- search_page, interlinear_landing_page, random_verse
- verse_of_the_day_page, offline_reader, read_root
- books_page, reading_plans_page, reading_plan_detail
- topics_page, resources_page, topic_detail
- read_book, read_chapter, read_chapter_interlinear
- read_verse, strongs_index, strongs_hebrew_index
- strongs_greek_index, strongs_entry

This allows FastAPI to handle these routes asynchronously,
improving performance under high concurrency.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 02:36:38 -05:00
kennethreitz e86c458e17 Add cached pages navigation with 'c' key
- 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>
2025-11-30 02:30:02 -05:00
kennethreitz 05dd28258a Add verse selection with speech and drilldown to offline page
- 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>
2025-11-30 02:29:17 -05:00
kennethreitz e3605036ac Add keyboard navigation with drilldown to offline page
- 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>
2025-11-30 02:26:11 -05:00
kennethreitz 1722c20445 Fix offline page JS not loading - remove extra_js block
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>
2025-11-30 02:23:08 -05:00
kennethreitz e961cd0a60 Move technical status front and center, fix SW caching
- 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>
2025-11-30 02:22:13 -05:00
kennethreitz e563218f75 Redesign offline page with breadcrumbs and cleaner card layout
- Add proper breadcrumb navigation (Home > Offline Access)
- Use consistent card-based design matching resources page
- Add italic category titles with underline styling
- Cleaner status card with connection badge
- Simplified download section with card container
- Quick access grid with icon cards
- Bible reader in bordered card
- Technical details in collapsible section
- Better dark mode support
- Responsive mobile layout

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 02:18:55 -05:00
kennethreitz 2cdfaa52cd Redesign offline page with cleaner layout
- 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>
2025-11-30 02:15:36 -05:00
kennethreitz 9a1dc7a7af Disable nginx access logs (uvicorn handles logging)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 02:12:43 -05:00
kennethreitz c5712d06f8 Reduce service worker concurrency to 80
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 02:10:35 -05:00
kennethreitz a66f457747 Revert docker-compose to direct uvicorn (no nginx)
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>
2025-11-30 02:08:14 -05:00
kennethreitz ad5a1e6c64 Add /health endpoint directly in nginx
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>
2025-11-30 02:07:20 -05:00
kennethreitz 6a65793579 Enable nginx request logging
- Changed error_log level from warn to info
- Removed access_log off from static files

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 02:03:59 -05:00
kennethreitz 0505a9e196 Add healthcheck to ensure nginx waits for uvicorn
- 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>
2025-11-30 02:02:59 -05:00
kennethreitz d630e629bd Add nginx to docker-compose setup
- 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>
2025-11-30 02:01:00 -05:00