Used 12 parallel agents to systematically add comprehensive commentary for
top Bible verses missing substantive content.
Verses added:
Gospel & Salvation:
- Matthew 19:26 - With God all things are possible
- Luke 1:37 - Nothing shall be impossible with God
Comfort & Trust:
- Isaiah 40:31 - Renew their strength, mount up with wings as eagles
- Isaiah 41:10 - Fear not, for I am with thee
- Psalm 27:1 - The LORD is my light and salvation
- Psalm 37:4 - Delight thyself in the LORD
- Psalm 56:3 - What time I am afraid, I will trust in thee
- Psalm 103:12 - As far as east from west, removed our transgressions
- Psalm 118:24 - This is the day the LORD hath made
- Psalm 119:105 - Thy word is a lamp unto my feet
- Psalm 121:1-2 - I will lift up mine eyes unto the hills
- 1 Peter 5:7 - Casting all your care upon him
Guidance & Obedience:
- Proverbs 16:3 - Commit thy works unto the LORD
- Proverbs 22:6 - Train up a child in the way he should go
- Isaiah 26:3 - Thou wilt keep him in perfect peace
- Isaiah 53:6 - All we like sheep have gone astray
Prayer & Faith:
- Matthew 7:7 - Ask, seek, knock
- 1 Thessalonians 5:16-18 - Rejoice, pray, give thanks
Discipleship & Mission:
- Matthew 5:14 - Ye are the light of the world
- Matthew 22:37 - Greatest commandment (love God)
- Matthew 28:19 - Great Commission
- John 10:10 - I am come that they might have life abundantly
- John 14:27 - My peace I give unto you
- John 15:13 - Greater love hath no man than this
Total verses with commentary: 11,989 (up from 11,965)
Coverage of top 100 verses: 71% (71/100)
Each commentary includes deep theological analysis with original language
studies, historical/cultural context, and 5 reflection questions.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
These 3 verses were not saved in the previous commit due to encoding error.
Now all 15 top Bible verses have comprehensive commentary.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added deep theological commentary with Greek/Hebrew word studies for:
Gospel & Salvation:
- Jeremiah 29:11 - God's plans for peace and hope
- John 14:6 - The way, truth, and life
- John 1:1 - The eternal Word made flesh
- John 3:3 - You must be born again
- Isaiah 53:5 - Suffering servant, wounded for our transgressions
- 1 John 1:9 - Confession and forgiveness
Psalms (Comfort & Trust):
- Psalm 23:1 - The LORD is my shepherd
- Psalm 46:1 - God our refuge and strength
- Psalm 91:1 - Dwelling in the secret place
- Psalm 139:14 - Fearfully and wonderfully made
Christian Living:
- Proverbs 3:5-6 - Trust in the LORD, not your own understanding
- Matthew 6:33 - Seek first the kingdom of God
- Matthew 11:28 - Come unto me, all who are weary
- Hebrews 11:1 - Definition of faith
Each commentary includes:
- Detailed analysis with original language study
- Historical and cultural context
- 5 reflection questions for application
Total verses with commentary now: 11,965 (up from 11,950)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update Pydantic model to match nested JSON structure (Book → Chapter → Verse)
- Rename field: historical_context → historical (11,950 entries)
- Remove unused application field
- Update VerseCommentary schema with nested VersesDict and ChaptersDict
- All 18 data validation tests now passing
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Provides comprehensive statistics and filtering options:
- Shows overall stats: 31,102 verses, 11,917 with commentary (38.3%)
- Filter by book and/or chapter
- Show random verses without commentary
- Breakdown by book showing where commentary is needed
Usage examples:
python scripts/list_unwritten_commentary.py --stats
python scripts/list_unwritten_commentary.py --book John --chapter 3
python scripts/list_unwritten_commentary.py --random 10
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove 2,871 verses with generic template commentary
- Keep 11,950 verses with substantive content
- Restructure JSON from flat to nested format (Book → Chapter → Verse)
- Update schema to reflect nested structure
- Add comprehensive commentary for John 3:16 with Greek word studies
- Update commentary.py to handle both flat and nested JSON formats
- Add *.backup to .gitignore
File size reduced from 47MB to 36MB after removing generic content.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Verses without verse-specific commentary now return None for analysis,
historical context, and questions sections instead of generic template
text that could apply to any verse.
Changes:
- Set analysis, historical, and questions to None for non-enhanced verses
- Template already checks for these values before rendering sections
- Verses with real commentary (like Psalm 1:4, Revelation 1) unaffected
- Reduces clutter and improves signal-to-noise ratio
Result: Verse pages now show only verse text, word-by-word analysis,
and cross-references unless there's genuine verse-specific commentary.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
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>
Cross-reference links were showing both their own CSS tooltip and the
JavaScript verse tooltip simultaneously, creating a cluttered experience.
Changes:
- Added .cross-references-section class to cross-references container
- Updated JavaScript to skip all links inside .cross-references-section
- Cross-ref links now only show their own CSS-based tooltip
This ensures cross-references show only one tooltip with the verse
preview, not multiple overlapping tooltips.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added 'li' to the verse linking selector so that verse references in
list items are automatically converted to clickable links. This fixes
verse references not being linked in sections like "Questions for
Reflection" which use unordered lists.
Now verse references like "1 Peter 5:8" in list items throughout the
site will be automatically linked to their corresponding verse pages.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added font-weight: 600 to give Scripture text more visual weight and
emphasis in both regular verse tooltips and cross-reference tooltips.
The Bible verse text now appears as bold italic, making it stand out
more prominently while maintaining the elegant italic style.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Applied the cleaner, more refined styling from cross-reference tooltips
to all verse tooltips throughout the site for visual consistency.
Changes:
- Reduced border thickness from 2px to 1px for lighter appearance
- Adjusted padding from 1rem to 0.75rem 1rem for more compact look
- Reduced font size from 0.95rem to 0.9rem to match cross-refs
- Added min-width: 300px for consistent tooltip sizing
- Updated dark mode border color from #555 to #444 to match
The result is a cleaner, more consistent tooltip experience across the
entire site that matches the superior cross-reference tooltip design.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
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>
Replace the help cursor (question mark) with a normal pointer cursor
on verse links that show tooltips. This provides a cleaner, more
standard user experience while still showing the verse tooltip on hover.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Concordance pages already display full verse text inline with search
results, so showing tooltips with the same text is redundant. This
change prevents tooltips from appearing on concordance result links
while keeping them active on other verse references throughout the site.
Changes:
- Added JavaScript exclusion for .occurrence-reference and .occurrence elements
- Set cursor: pointer on concordance links to override base cursor: help style
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 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
Script now checks if WeasyPrint is available before attempting
to generate PDF and provides helpful installation instructions
if system libraries are missing.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
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>
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>
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>
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>
Tightened template formatting to ensure no space appears
between the last reference and the period.
Now: Genesis 2:5.
Not: Genesis 2:5 .
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Each grouped cross-reference line now ends with a period for
proper punctuation.
Example:
References God: Hebrews 6:7; Genesis 1:29; Matthew 6:30.
Creation: Genesis 1:1; Hebrews 11:3; Isaiah 45:18.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Instead of creating multiple sidenotes (one per cross-reference),
all cross-references for a verse are now grouped into a single
sidenote with line breaks between them.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
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>
Sidenotes now continue numbering throughout the chapter
instead of resetting to 1 at each verse.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Create DATA_SOURCES.md with detailed attributions
- Update data/README.md with accurate cross-reference info
- Document OpenBible.info CC-BY license for cross-references
- Document interlinear data source (tahmmee/interlinear_bibledata)
- Update cross-reference stats (24,900 verses, 120,858 entries)
- Include all licensing and attribution requirements
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add toggle link at bottom of sidebar (before flourish)
- Use localStorage to persist user preference
- CSS hides .words-of-christ color when disabled
- JavaScript handles toggle and initialization on page load
- Toggle text changes between "Enable" and "Disable"
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed 12 more narrative patterns:
- John 3:3 (Verily, verily, except a man be born again...)
- John 14:23 (If a man love me, he will keep my words...)
- John 1:50, 6:29, 7:21, 8:14, 12:30
- Matthew 11:4, 20:22, 21:21, 21:29, 22:29
Removed 4 verses that were NOT Jesus speaking:
- John 13:37 (Peter speaking)
- John 16:29 (Disciples speaking)
- John 9:40 (Pharisees speaking)
- Luke 10:35 (Good Samaritan in parable)
Fixed 6 verses with embedded quotes (extracted only Jesus' words):
- John 13:36, 18:37, 21:17, 8:39
- Luke 11:39
- Acts 9:6
Final stats:
- Total verses: 2,013 (down from 2,017)
- Full: 1,590 (79.0%)
- Partial: 423 (21.0%)
- Audit: ✅ 0 narrative pattern issues remaining
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed major verses including:
- John 14:6 (I am the way, the truth, and the life)
- John 8:58 (Before Abraham was, I am)
- Matthew 22:37 (Great Commandment)
- Luke 22:42 (Gethsemane prayer)
- Mark 1:15 (Kingdom of God at hand)
Removed narrative patterns:
- 'Jesus saith unto them,' (11 instances)
- 'And he saith unto them,' (5 instances)
- 'Saying,' (9 instances)
- 'Jesus said unto them,' (3 instances)
- Other third-person narrative introductions
Stats after fixes:
- Full verses: 1,612 (79.9%, down from 1,651)
- Partial verses: 405 (20.1%, up from 366)
- Audit shows 0 remaining issues
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Revelation 1:11: Remove 'Saying,' prefix
- Revelation 21:6: Remove 'And he said unto me,' prefix
Only Jesus' spoken words should be highlighted in red.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix 98 verses with narrative introductions (e.g., 'And he said unto them')
Only the spoken words of Jesus are now marked, not narrative text
- Add JSON Schema for red_letter_verses.json validation
- Add RedLetterVerses Pydantic model to validate_data.py
- Add test_red_letter_verses_structure test
- Update data directory README with red letter section
Changes ensure accurate red letter edition rendering where only
Jesus' actual words appear in red, not narrative introductions.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Replace 'color: inherit' with explicit color values to prevent sidenotes and word definitions from inheriting red color. Using #111 for light theme and #ddd for dark theme ensures proper contrast and readability.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Ensure all sidenote number elements are excluded from inheriting red letter color by adding .sidenote-number selector in addition to label.sidenote-number.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add CSS rules to prevent interlinear word analysis elements (original text, transliteration, Strong's numbers, English, parsing, and definitions) from inheriting red color when nested within red letter text spans.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Prevent sidenotes from inheriting red color from red letter text by adding CSS rules that reset color inheritance for .sidenote, .marginnote, and .sidenote-number elements nested within .words-of-christ spans.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Created comprehensive statistics script for analyzing the red letter
edition data (words of Jesus Christ).
Features:
- Total verse counts (full vs partial)
- Breakdown by book with percentages
- Testament distribution (Gospels vs Acts/Revelation)
- Longest continuous discourses (e.g., Sermon on the Mount)
- Notable discourse references
Usage: uv run python scripts/red_letter_stats.py
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Expanded the red letter verses dataset to include complete coverage
of Jesus' words throughout the New Testament:
- Matthew: 638 verses (Sermon on the Mount, parables, Olivet Discourse)
- Mark: 290 verses (ministry, teachings, passion narrative)
- Luke: 578 verses (parables, Sermon on the Plain, passion)
- John: 427 verses (I AM statements, Upper Room Discourse)
- Acts: 17 verses (appearances to Paul)
- Revelation: 67 verses (letters to churches, final words)
Total: 2,017 verses where Jesus speaks, providing comprehensive
red letter Bible coverage.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>