Commit Graph

676 Commits

Author SHA1 Message Date
kennethreitz 0a3edf9df2 Change verse tooltip cursor from help to pointer
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>
2025-11-28 18:53:20 -05:00
kennethreitz 3253878420 Disable verse tooltips on concordance search results
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>
2025-11-28 18:52:37 -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 549bde35f7 Add WeasyPrint availability check to Bible PDF script
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>
2025-11-28 16:41:29 -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 3ac3498d33 Remove space before period in cross-reference groups
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>
2025-11-28 16:22:53 -05:00
kennethreitz 86d111942d Add period at end of each cross-reference group line
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>
2025-11-28 16:22:02 -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 0618c71b66 Add thoughtful descriptions to all cross-references
Generated concise 2-5 word descriptions for 120,314 cross-references
explaining the thematic or narrative connection between verse pairs.

Descriptions identify common themes like:
- Theological concepts (salvation, faith, grace, love, etc.)
- Shared references (Jesus, God, Moses, David, etc.)
- Narrative connections (prophecy, covenant, judgment, etc.)

Examples:
- Genesis 1:1 → Revelation 4:11: "Creation"
- John 3:16 → Romans 5:8: "Love"
- Isaiah 7:14 → Matthew 1:23: "Prophecy"

File size: 7.4M → 8.8M (+1.4M for descriptions)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 16:19:16 -05:00
kennethreitz 4b97e8e959 Use semicolons to separate cross-references
Changed from line breaks to semicolons for more compact
cross-reference display in sidenotes.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 16:17:04 -05:00
kennethreitz d2bfbfd6a3 Group cross-references into single sidenote per verse
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>
2025-11-28 16:16:32 -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 4ed7706577 Remove sidenote counter reset per verse
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>
2025-11-28 16:09:55 -05:00
kennethreitz b432f6d172 Add comprehensive data source documentation
- 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>
2025-11-28 16:08:08 -05:00
kennethreitz 68864905cb Import Treasury of Scripture Knowledge cross-references
- Add 120,858 cross-references covering 24,900 verses (80% of Bible)
- Source: OpenBible.info TSK dataset
- Filtered to minimum 3 votes for quality
- Top 10 cross-references per verse (by vote count)
- Replaces previous dataset of 257 verses

Coverage increased from 0.8% to 80%

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 16:05:54 -05:00
kennethreitz 7c96257886 Remove "View Source Code" link from sidebar
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 15:58:08 -05:00
kennethreitz 8d17d9ea23 Add red letter toggle to sidebar
- 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>
2025-11-28 15:54:16 -05:00
kennethreitz f076cac730 Ultra-comprehensive audit: Fix 12 more verses + remove 4 incorrect entries
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>
2025-11-28 15:39:23 -05:00
kennethreitz de015aa4bf Comprehensive audit: Fix 39 more verses with narrative introductions
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>
2025-11-28 15:34:29 -05:00
kennethreitz 9d41e9421e Fix Revelation verses with narrative introductions
- 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>
2025-11-28 15:29:45 -05:00
kennethreitz f46f51b8f4 Fix red letter verses and add validation
- 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>
2025-11-28 15:26:03 -05:00
kennethreitz c4485423cf Fix red letter color inheritance by using explicit colors
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>
2025-11-28 15:17:40 -05:00
kennethreitz 6cc7c3f5e0 Add .sidenote-number to red letter color exclusions
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>
2025-11-28 15:16:16 -05:00
kennethreitz 9107adbfac Prevent word definitions from inheriting red letter color
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>
2025-11-28 15:14:39 -05:00
kennethreitz f0b3dc5d27 Fix sidenote markers appearing over verse numbers
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>
2025-11-28 15:14:00 -05:00
kennethreitz 0132efbfbc Add red letter statistics script
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>
2025-11-28 15:11:24 -05:00
kennethreitz cd98795c58 Add comprehensive red letter edition with 2,017 verses
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>
2025-11-28 15:07:51 -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 2806e1967d Remove Search link from family tree person page
Removed redundant Search link from the navigation section at the bottom
of individual person pages in the family tree.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 14:50:05 -05:00
kennethreitz 54e3b932d4 Fix verse commentary validator to allow apostrophes and verse ranges
Updated the VerseCommentary validation regex pattern to support:
- Apostrophes in book names (e.g., "Solomon's Song")
- Verse ranges (e.g., "Genesis 1:4-5")

This brings the validator in line with other validators in the codebase
and fixes failing data validation tests.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 14:48:32 -05:00
kennethreitz bcce224700 Add comprehensive verse commentary covering all 66 books
Expanded verse commentary database from 2,076 to 14,537 verses with
enhanced theological content. Commentary now covers all 66 books of the
Bible with detailed analysis, historical context, practical application,
and reflection questions.

Key additions:
- Complete coverage: All 66 books now have commentary (was 45 books)
- 12,461 new verses with comprehensive commentary
- Key verses from Gospels, Psalms, Prophets, and Wisdom literature
- All missing books now covered (Acts, Revelation, minor prophets, etc.)

Each verse includes:
- Hebrew/Greek word studies with transliterations
- Historical and cultural context
- Reformed/evangelical theological analysis
- Practical application for modern believers
- 3 thought-provoking reflection questions
- HTML formatting with proper structure

Also fixed commentary display to format numbered lists as proper HTML
ordered lists using the existing format_lists filter.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 14:41:31 -05:00
kennethreitz f6b5cc54bc Fix help cursor (?) appearing on verse numbers
Change verse number links to use pointer cursor instead of help cursor.
The help cursor (?) is now only shown on verse reference links that
have tooltips, not on the verse numbers themselves in chapter view.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 13:10:05 -05:00
kennethreitz e40c60e200 Fix sidenote markers appearing over verse numbers
Add CSS to properly space and reset sidenote counters for each verse.
Prevents sidenote numbers from overlapping or appearing too close to
verse numbers.

Changes:
- Add margin to sidenote labels that follow verse numbers
- Reset sidenote counter for each verse paragraph
- Ensures clean numbering within each verse

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 13:09:20 -05:00
kennethreitz d7b0b118f2 Add comprehensive verse commentary (2,076 verses)
Generated detailed theological commentary for:
- Complete Pauline Epistles (2,033 verses) - Romans through Philemon
- Torah samples (12 verses) - Genesis 1-3 key passages
- Wisdom samples (12 verses) - Psalms 1, 23
- Gospel samples (5 verses) - John, Matthew, Luke

Each entry includes:
- Theological analysis and explanation
- Historical and cultural context
- Practical application for modern readers
- 2-3 reflection questions

Expanded commentary database from 26 to 2,076 verses (79x increase).

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 13:06:26 -05:00
kennethreitz 801c8b93f0 Add script to show verse commentary coverage
Create utility script to track progress on enhanced verse commentary.
Displays statistics about which verses have enhanced JSON commentary
and provides various reporting options.

Features:
- Summary view showing books and verse counts
- Book-specific detail view
- Complete verse listing
- Detailed statistics including field completeness

Usage examples:
  python scripts/show_commentary_coverage.py              # Summary
  python scripts/show_commentary_coverage.py --book Genesis
  python scripts/show_commentary_coverage.py --list       # All verses
  python scripts/show_commentary_coverage.py --stats      # Detailed stats

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 13:05:21 -05:00
kennethreitz 96ccd613fa Add visual indicator for verses with enhanced commentary
Implement red verse numbers to distinguish verses that have detailed
JSON-based commentary from those with generic template commentary.

Changes:
- Add is_enhanced flag to commentary generation logic
- Style verse numbers red when enhanced commentary exists
- Support both light mode (crimson) and dark mode (bright red)

Verses with enhanced commentary in verse_commentary.json now display
with red numbers, making it easy for users to identify which verses
have additional study resources available.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 13:01:32 -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 46268749b1 Add script to generate Open Graph image
Standalone Python script to regenerate og-image.png with consistent Tufte-style branding. Can be run anytime to update the social media preview image.

Usage: python3 scripts/generate-og-image.py

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 12:26:45 -05:00
kennethreitz 1e1d561c26 Add Open Graph image for better social media previews
Created a clean, Tufte-style og-image.png (1200x630) featuring "KJV Study" branding. This eliminates the 404 spam in logs from bots and social media crawlers trying to fetch the missing image, and provides proper preview images when the site is shared on social media platforms.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 12:23:21 -05:00
kennethreitz 7987f9db81 Increase font size of topic subtitle in PDF
The topic description/subtitle now displays at 14pt instead of inheriting the body's 11pt, making it more prominent and easier to read.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 10:15:40 -05:00
kennethreitz 217302c986 Remove overview border, keep verse borders in topic pages
Removed the border from topic overview sections for a cleaner look,
but kept the left border on verse items for visual hierarchy.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 10:10:20 -05:00
kennethreitz 066908d3e3 Remove blockquote-style borders from topic pages
Removed left borders from topic overview and verse items for a
cleaner, less cluttered design.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 09:55:22 -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
kennethreitz 711b3558a8 Add smart bot detection logging
Only logs requests from known bots/crawlers (Googlebot, PerplexityBot,
AmazonBot, etc.) while staying silent for regular user traffic. Helps
track SEO crawler activity without cluttering logs.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 01:37:30 -05:00
kennethreitz 83462bb4a4 Remove User-Agent logging middleware
User-Agent logging served its diagnostic purpose. Removing to
reduce log noise and improve performance.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 01:19:08 -05:00
kennethreitz 87ebece068 Remove og:image meta tags to fix 404 errors
Removed Open Graph and Twitter Card image meta tags that were
referencing a non-existent og-image.png file. This was causing
404 errors on every page load and wasting bandwidth.

Changed Twitter card type from summary_large_image to summary.

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

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