Commit Graph

221 Commits

Author SHA1 Message Date
kennethreitz d200030361 Refactor server.py: extract routes into modular route files
Move routes from monolithic server.py (2716 lines) to dedicated route modules (788 lines remaining):
- routes/main.py: Homepage, books browser, resources page
- routes/misc.py: Search, interlinear landing, random-verse, verse-of-the-day
- routes/timeline.py: Biblical timeline page and PDF
- routes/about.py: Stats, cross-references index, about page
- routes/reading_plans.py: Reading plans index, detail, PDF
- routes/topics.py: Topics index and detail
- routes/strongs.py: Strong's concordance search and entries

This reduces server.py by 71% and improves code organization.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 17:00:44 -05:00
kennethreitz de5337e200 Enhance reading plans with progress display and UI improvements
- Add "Your Reading Plans" section showing plans with saved progress
- Display progress bars and percentage on plan cards
- Show "Up next: Day X" for in-progress plans
- Include full Scripture text in all PDFs (including 365-day plans)
- Show Scripture references in collapsed day headers
- Arrow points right when collapsed, down when expanded
- Use green (#4a7c59) for completed days instead of dark color
- Enhanced keyboard navigation for chapter sections when expanded

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 16:23:17 -05:00
kennethreitz 9f999faf46 Add lazy loading for reading plan Scripture text with cascading progress
- Add API endpoint /api/reading-plans/{plan_id}/day/{day_num} for fetching
  Scripture text on demand
- Update template to load text via API when days are expanded (not upfront)
- Implement cascading progress: checking a day marks all previous days
  as complete, unchecking removes all subsequent days

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 16:09:33 -05:00
kennethreitz 9a54a15415 Add reading progress tracking with collapsible days
Features:
- Full Scripture text now available for ALL plans (including 365-day)
- Collapsible day sections - click to expand/collapse
- "Mark as Read" checkboxes with localStorage persistence
- Progress bar showing completion percentage
- Day navigation with completed days highlighted
- Expand All / Collapse All / Reset Progress buttons
- Keyboard shortcuts: j/k navigate, Enter/Space expand, x mark complete
- PDF verses now display one per line

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 16:04:13 -05:00
kennethreitz 3793991032 Add 6 new reading plans with full Scripture text in web/PDF
New reading plans:
- Books of Moses in 40 Days (pentateuch_40)
- Major Prophets in 60 Days (prophets_60)
- Minor Prophets in 14 Days (minor_prophets_14)
- Wisdom Literature in 30 Days (wisdom_30)
- Historical Books in 45 Days (historical_45)
- General Epistles in 14 Days (general_epistles_14)

Features:
- Reading plan pages now show full Scripture text for plans 90 days or less
- Day navigation bar for quick jumping between days
- PDF exports include full Bible text for shorter plans
- Refactored Jinja filters into separate jinja_filters.py module
- Added parse_reading_reference() and get_reading_text() helpers

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 16:00:24 -05:00
kennethreitz e66112ced2 Fix verse reference links to use chapter anchors
Updated link_verse_references_in_text() and verse_reference_to_url()
to link to chapter view with anchors instead of dedicated verse pages.

This keeps users in the reading flow when clicking cross-references.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 12:15:55 -05:00
kennethreitz b756fc930a Change cross-reference links to use chapter view with anchors
- Same chapter refs: use anchor (#verse-X)
- Different chapter/book refs: link to chapter view with anchor
- Keeps users in reading flow instead of jumping to dedicated verse page

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 12:05:28 -05:00
kennethreitz 6a9cebae22 Improve keyboard navigation, PDFs, and add non-writing prophets
- Add KJVNav.initSimpleNav() for DRY keyboard navigation across site
- Fix broken keyboard nav on 10+ resource pages (orphaned JS code)
- Left arrow on chapters now does browser back
- Add non-writing prophets: Moses, Samuel, Nathan, Elijah, Elisha
- Redesign chapter PDFs with glossary, cross-refs, book intro
- Style sidenotes as inline notes in all PDFs (fix checkbox squares)
- More liberal word studies in PDF output (for_pdf parameter)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 00:28:25 -05:00
kennethreitz b520698453 Pass books to about page templates for sidebar rendering
- Add books to /about route
- Add books to /about/stats route
- Add books to /about/cross-references route

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 19:30:14 -05:00
kennethreitz 2ba1d28efd Add About link to navigation and breadcrumbs to all about pages
- Added About link at bottom of sidebar navigation
- Added breadcrumbs to /about, /about/stats, /about/commentary, /about/cross-references
- Removed emoji from "Open Source & Free" heading on about page

All about-related pages now have proper navigation structure.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 18:13:45 -05:00
kennethreitz feb40f5ce8 Reorganize stats and indexes under /about/ namespace
Changed URLs:
- /stats → /about/stats
- /indexes/commentary → /about/commentary
- /indexes/cross-references → /about/cross-references

Creates a cleaner URL structure with all informational/meta pages
grouped under /about/.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 18:08:31 -05:00
kennethreitz 2343fcf923 Move commentary and cross-references indexes to /indexes/ namespace
Changed URLs from:
- /commentary → /indexes/commentary
- /cross-references → /indexes/cross-references

Updated stats page links to use new URLs. Old routes removed.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 18:06:58 -05:00
kennethreitz edbe4a2624 Sort commentary and cross-references indexes in biblical order
Changed both index pages to display books in biblical order (OT then NT)
instead of alphabetical order. Now starts with Genesis and ends with
Revelation, matching the order readers expect.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 17:56:19 -05:00
kennethreitz cbe1ec7f0d Add cross-references index page at /cross-references
New browseable index showing all 24,900 verses with cross-references:

Features:
- Organized by book and chapter
- Shows reference count per verse (blue badge)
- Links to individual verse pages
- Coverage statistics (80% of Bible)
- 120,858 total cross-references
- Clean, scannable interface

Route: GET /cross-references
Template: cross_references_index.html

Updates to stats page:
- Link to /commentary index
- Link to /cross-references index
- Link to /strongs concordance

This completes the major indexes for discovering
content - users can now browse all commentary,
cross-references, and Strong's entries systematically.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 17:50:08 -05:00
kennethreitz 5e650890c7 Add comprehensive /about page
Detailed information about KJV Study including:

- What KJV Study is and key statistics
- Open source section (prominent) with GitHub link
- Creator information
- Theological approach and convictions
- Data sources and attributions
- Technical architecture details
- Contributing guidelines
- Privacy policy and analytics opt-out
- Resource links including /stats page

Highlights:
- Emphasizes free and open source nature
- Links to GitHub repository
- Explains conservative evangelical theological stance
- Credits all data sources (TSK, Strong's, etc.)
- Clear privacy commitments
- Encourages community contributions

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 17:41:18 -05:00
kennethreitz 90abb8347f Add comprehensive /stats page with site metrics
Hidden statistics page (not linked in navigation) displaying:

Bible Text Statistics:
- 31,102 verses across 66 books
- 1,189 chapters
- 783,137 words total
- Averages per verse and chapter

Verse Commentary:
- 66 books with commentary files
- 12,330 verses covered (39.6% of Bible)
- 3.4M words of theological analysis
- Avg 278 words per commented verse

Cross-References:
- 66 book files
- 24,900 verses with cross-references (80% coverage)
- 120,858 total references
- Avg 4.9 references per verse

Language Tools:
- 8,674 Hebrew Strong's entries
- 5,624 Greek Strong's entries
- 14,298 total concordance entries
- 12 MB interlinear data (compressed)

Study Resources:
- 36 study guides
- 36 topics
- 39 resource files
- 24 Bible stories
- 127 biographies
- 6 reading plans

Technical Data:
- 361 total JSON files
- 58.1 MB total data size
- 150+ book abbreviations

Access via /stats (hidden, not linked in nav)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 17:37:40 -05:00
kennethreitz 3f01bb2352 Enrich topic pages with verse text 2025-12-01 13:48:47 -05:00
kennethreitz 2d7e9843b0 updates to data storage 2025-11-30 21:26:59 -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 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 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 69be068188 Fix service worker registration by serving from root path
Service workers can only control URLs within their scope. A service worker
at /static/sw.js couldn't control the root scope (/) without special headers.

- Add /sw.js route that serves the service worker with Service-Worker-Allowed: /
- Update registration to use /sw.js instead of /static/sw.js

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 01:20:50 -05:00
kennethreitz 87926fa83c Add offline Bible reader with full 31,102 verses
- Created /offline route with client-side Bible renderer
- Loads verses from cached JSON (verses-1769.json)
- Full book/chapter navigation with dropdowns
- Keyboard navigation (← → for chapters)
- Service worker redirects to offline reader when Bible pages fail
- Pre-caches offline reader page on install
- Auto-parses URL params (?book=Genesis&chapter=1)

When offline, users can read any chapter of the Bible using
the cached JSON data - no need to have visited the page before.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 01:04:32 -05:00
kennethreitz 8634e8ad7f Add print CSS to all resource pages and PDF for verse view
Print CSS added to:
- biblical_angels.html
- biblical_covenants.html
- biblical_festivals.html
- biblical_prophets.html
- fruits_of_spirit.html
- names_of_god.html
- parables.html
- resource_index.html
- tetragrammaton.html
- twelve_apostles.html
- women_of_the_bible.html
- verse.html

Verse PDF feature:
- New verse_pdf.html template with commentary, cross-refs, interlinear
- New /book/{book}/chapter/{chapter}/verse/{verse_num}/pdf route
- Download PDF button on verse pages

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 23:40:16 -05:00
kennethreitz d829041796 Add PDF download for interlinear chapter pages
- Create chapter_interlinear_pdf.html template for PDF export
- Add /book/{book}/chapter/{chapter}/interlinear/pdf route
- Add PDF download button to interlinear page alongside print
- Include Hebrew/Greek text, English translations, and Strong's numbers

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 23:33:17 -05:00
kennethreitz 408f5edf6a Enhance interactive family tree and Strong's derivation display
Interactive family tree improvements:
- Add hamburger menu toggle for sidebar with localStorage persistence
- Smooth tween animation when navigating between people
- Preserve zoom level during navigation
- Narrower node cards (120px) with adjusted font sizes
- Remove minus indicators, keep only + for expandable nodes
- Add info button (i) on each node to open sidebar
- Enhanced info panel with more fields: title, Kekulé number,
  siblings, children links, scripture references
- Add View Ancestors/Descendants links in sidebar
- Make ancestor nodes semi-transparent (60% opacity)
- Fix search input width with box-sizing

Strong's Concordance:
- Embed related Strong's entries in derivation section
- Show preview cards for referenced entries (e.g., H1 on H2 page)
- Display word, transliteration, and definition excerpt

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 18:25:42 -05:00
kennethreitz 340901d7de Add paginated Hebrew and Greek Strong's indexes
- Add get_all_strongs() function for paginated entry listing
- Create /strongs/hebrew and /strongs/greek routes with pagination
- Add strongs_language_index.html template with entry cards
- Update main Strong's page with browse cards for each language
- Hebrew: 8,674 entries across 87 pages
- Greek: 5,523 entries across 56 pages

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 17:03:15 -05:00
kennethreitz 763874d5f9 Add verse occurrences with full text to Strong's entry pages
- Show all verses containing a Strong's number from interlinear data
- Display each verse as a card with reference, original word, and full text
- Highlight the translated English word in yellow
- Add dark mode support for highlighted text

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 17:00:27 -05:00
kennethreitz 202c88e6d9 Replace old concordance with Strong's Concordance
- Update sidebar link to point to /strongs
- Remove old /concordance route and template
- Update cache control settings

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 16:53:54 -05:00
kennethreitz eca61cb1f3 Fix bible.books -> bible.get_books() in Strong's routes
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 16:51:21 -05:00
kennethreitz fc9045fd73 Fix Strong's derivation linkification
- Replace naive string replace with regex-based filter
- Only linkify actual Strong's references (G/H followed by digits)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 16:50:35 -05:00
kennethreitz 9088226ee3 Add Strong's Concordance lookup system
- Add Hebrew (8674 entries) and Greek (5523 entries) dictionaries from openscriptures/strongs
- Create strongs.py module for lookups and search
- Add /strongs web page for search and browsing
- Add /strongs/{number} page for individual entries
- Add /api/strongs and /api/strongs/{number} API endpoints
- Update interlinear templates to link to our Strong's pages instead of BibleHub

Data source: https://github.com/openscriptures/strongs (CC-BY-SA)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 16:49:47 -05:00
kennethreitz 796152151a Improve interlinear readability for native Hebrew/Greek readers
- Increase font sizes for Hebrew (2.2rem) and Greek (2rem) text
- Add proper RTL direction and font families for Hebrew
- Tighten word spacing for more natural reading flow
- Remove hover tooltips, keep click-to-expand details
- Increase English verse text size in chapter interlinear view
- Add is_old_testament to verse template context

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 16:25:46 -05:00
kennethreitz 56e0030440 Add chapter interlinear view
New route: /book/{book}/chapter/{chapter}/interlinear

Shows all verses with word-by-word Hebrew/Greek analysis:
- Hebrew badge for OT, Greek badge for NT
- Same polished UI as verse page interlinear
- Click words for details, hover for definition preview
- Chapter navigation links
- Dark mode support
- Mobile bottom sheet for word details

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 16:10:54 -05:00
kennethreitz ce0324403d Add Interactive badge to Biblical Geography resource
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 15:11:56 -05:00
kennethreitz 4bf8e8fe95 Redesign family tree pages with card-based UI
- Fix interactive tree deep linking via query parameter
- Redesign /family-tree main page with card-based layout
- Add feature cards, stats card, generation cards, notable figures
- Highlight Family Tree on /resources with Interactive badge

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 15:11:20 -05:00
kennethreitz a3e7d5c346 Add analytics disable via DISABLE_ANALYTICS env var
- Add DISABLE_ANALYTICS=true to docker-compose.yml for local dev
- Pass disable_analytics to Jinja2 templates as global
- Wrap Gauges analytics in conditional block
- Add blue/pink gender-based coloring to generation cards

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 15:03:41 -05:00
kennethreitz 42999e4504 Add --limit parameter to PDF script and fix compound name linking
PDF Script:
- Added --limit N parameter to process only first N books (for testing)
- Added --output FILE parameter for custom output filename
- Updated help text and examples
- Example: --limit 1 --output genesis.pdf to test with just Genesis

Name Linking:
- Fixed compound names like "Sarai or Sarah" not linking properly
- Now splits names on " or " and creates separate mappings for each variant
- Both "Sarai" and "Sarah" in Bible text will link to same person entry
- Preserves full compound name as well for exact matches

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 19:25:27 -05:00
kennethreitz 4baf0dc04f Fix random verse always going to same verse
The random verse endpoint was being cached by browsers, causing it to
always redirect to the same verse instead of selecting a new random
verse each time.

Changes:
- Added /random-verse to the no-cache path list in CacheControlMiddleware
- Set explicit cache control headers on the redirect response
- Changed status code to 302 (Found) for temporary redirect
- Added Pragma and Expires headers for better cache prevention

Tested with 5 consecutive requests, all returned unique verses.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 18:56:28 -05:00
kennethreitz 5258d59917 Fix word study sidenotes breaking up possessive forms
- Use negative lookahead to prevent matching words followed by 's
- Fixes issue where "LORD'S" was being split into "LORD" + "'S"
- Sidenotes now appear after complete words only
2025-11-28 17:32:51 -05:00
kennethreitz 72f1328b70 Convert Bible PDF to offline generation script
Removed the /bible/pdf endpoint (too resource-intensive for live requests)
and created a standalone script for offline PDF generation.

New script: scripts/generate_bible_pdf.py
- Generates complete KJV Bible PDF with all footnotes
- ~1000 pages with cross-references and word studies
- Progress tracking during generation
- Saves to kjv-complete-bible.pdf

Usage:
  uv run python scripts/generate_bible_pdf.py

This is more efficient - generate once, serve as static file if needed,
rather than regenerating on every request.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 16:38:17 -05:00
kennethreitz b3fd909b55 Fix Bible PDF import error
Corrected import to use OT_BOOKS and NT_BOOKS from utils.books
instead of non-existent bible_metadata module.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 16:29:00 -05:00
kennethreitz 2f1d192d7e Add complete Bible PDF export feature
New endpoint /bible/pdf generates a comprehensive PDF of the entire
King James Bible with all cross-references and word studies.

Features:
- Title page with edition information
- Table of contents (Old Testament & New Testament)
- All 66 books with proper page breaks
- All 31,102 verses with footnotes
- Cross-references grouped by description
- Word studies with Greek/Hebrew terms
- Running headers with book names
- Page numbers
- Professional typography

PDF structure:
- Title page
- Table of contents (2 columns)
- Genesis through Malachi (Old Testament)
- Matthew through Revelation (New Testament)
- Footer page

This will generate a substantial PDF (likely 1000+ pages) with
complete study content suitable for printing or offline study.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 16:27:36 -05:00
kennethreitz b1dff9f2fb Include sidenotes as footnotes in chapter PDF exports
Cross-references and word studies now appear as proper footnotes
in PDF exports using WeasyPrint's CSS footnote support.

Features:
- Cross-references grouped by description (e.g., "References God")
- Word studies with Greek/Hebrew terms and meanings
- Automatic footnote numbering
- Footnote markers (* and †) in verse text
- Clean footnote formatting at bottom of pages

PDF now includes all the study content from the web view in a
print-friendly format.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 16:25:00 -05:00
kennethreitz 46fb97dd97 Group cross-references by description
Cross-references are now organized by their thematic description
instead of being listed individually. This creates a cleaner display:

Before:
Colossians 3:10 — Parallel theme; Ephesians 4:24 — References God;
Genesis 3:22 — References God; Psalms 100:3 — References God...

After:
**References God:** Ephesians 4:24; Genesis 3:22; Psalms 100:3
**Parallel theme:** Colossians 3:10; 2 Corinthians 3:18

Much more readable and scannable!

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 16:21:05 -05:00
kennethreitz ab01f24f36 Avoid repeating word studies in chapter view
Track which words have already been shown in a chapter and exclude
them from subsequent verses. This prevents the same word study
from appearing multiple times throughout a single chapter.

Changes:
- Add shown_words set to track displayed word studies per chapter
- Pass shown_words to generate_word_study_sidenotes()
- Filter out already-shown words from potential sidenotes
- Update function signature with shown_words parameter

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 16:13:32 -05:00
kennethreitz 1a4f6150e4 Improve red letter edition to highlight only Christ's spoken words
Updated the red letter functionality to wrap only the specific words
Jesus spoke within each verse, rather than entire verses. This provides
more accurate red letter highlighting similar to traditional red letter Bibles.

Changes:
- Modified red_letter.py to search for and wrap only Christ's words
- Updated JSON structure to store actual quoted text
- Changed filter to handle both full verses and partial quotes
- Improved accuracy of red letter highlighting

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 15:00:41 -05:00
kennethreitz 099dc253e0 Add comprehensive Revelation commentary and red letter edition support
Expanded Revelation commentary from 45 to 335 verses (83% coverage),
providing detailed apocalyptic interpretation, Greek word studies, and
encouragement for persecuted believers. Also added red letter edition
support to highlight words of Christ throughout the Bible.

Revelation commentary additions:
- 290 new verses with comprehensive analysis
- All 22 chapters now have rich commentary coverage
- Apocalyptic imagery and symbolism explained
- First-century persecution context provided
- Multiple interpretive approaches acknowledged
- Christ-centered application for modern believers

Red letter edition features:
- Words of Christ highlighted in red in verse and chapter displays
- Complete database of Jesus' spoken words across all four Gospels
- Dark mode compatible color scheme
- Enhances readability and focus on Christ's teachings

Total verse commentary database now contains 14,827 verses across
all 66 books of the Bible with theological depth, practical application,
and reflection questions.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 14:58:19 -05:00
kennethreitz b7b584d9ea Remove orphaned commentary routes and sitemap entries
Converted orphaned commentary pages to 301 redirects:
- /book/{book}/commentary → /book/{book}
- /commentary/{book}/{chapter} → /book/{book}/chapter/{chapter}

Removed commentary URLs from sitemap since content is now integrated into regular verse pages. Commentary data and functions preserved as they're actively used on verse pages.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 12:40:39 -05:00
kennethreitz 723b90f521 Simplify bot logging to just show bot name
Changed from "[BOT] googlebot - GET /path" to just "[BOT] googlebot"
for cleaner, more concise logs.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 01:43:32 -05:00