- New og_image.py module generates custom 1200x630 social images
- Images include verse title, subtitle, verse text, and branding
- Caches generated images to disk for performance
- Routes: /og/verse/, /og/chapter/, /og/book/, /og/topic/, /og/story/, /og/guide/
- Updated templates: verse, chapter, book, topic, story, study guide
- Images use Georgia serif font matching site typography
- Cream background (#fffff8) and green accent (#4a7c59)
When shared on social media, pages now show custom preview images
with the actual verse text instead of the generic site image.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add BreadcrumbList JSON-LD schema to verse, chapter, book, topic,
study guide, and story detail pages for rich SERP breadcrumbs
- Add Book schema to book pages with chapter count and authorship
- Add Article schema to topic detail pages
- All key content pages now have proper structured data for search
engines to understand site hierarchy
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Chapter pages: Listen to full chapter text
- Bible stories (adult & kids): Listen button at bottom with PDF
- Resource index pages (Ten Commandments, Beatitudes, etc.)
- Resource detail pages (individual commandments, etc.)
- Twelve Apostles, Biblical Prophets, Names of God
- Parables, Women of the Bible, Fruits of the Spirit
All pages use consistent .action-btn styling and KJVSpeech integration.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Auto-enable large font mode on mobile (base.html)
- Add swipe gestures for chapter navigation
- Improve verse number tap targets with background
- Make family tree pages full width on mobile
- Enhance homepage mobile layout with larger touch targets
- Increase text sizes and line heights for readability
- Remove sidenote tap target styling per user request
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Full width poetry verses on small screens (no 55% constraint)
- Larger verse text on mobile (1.2rem, 1.8 line-height)
- Remove underlines from verse numbers on mobile
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Extract stanza break data from eBible USFX (199 breaks across 127 psalms)
- Add poetry_loader utility to identify poetry books and stanza breaks
- Render Psalms with verse-per-line layout and ❧ ornament at stanza breaks
- Add stanza break styling to chapter and book PDF exports
- Web view: decorative hedera with subtle line divider
- PDF view: simple horizontal rule for stanza breaks
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Sort cross-ref groups by theological priority (Prophecy/Covenant
first, generic "Parallel theme" last)
- Show up to 5 refs without expansion (was 3)
- Show all if 6 or fewer to avoid "+1"
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Adds 2,543 section headings (e.g., "The Sermon on the Mount",
"The Suffering Servant") that display before verses in chapter
pages. Headings are loaded from JSON and rendered as styled h3
elements in the Tufte typography style.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Instead of "Revelation 1:20; Revelation 1:16; Revelation 3:7"
now shows "Revelation 1:20, 1:16, 3:7" - much cleaner.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Keep group descriptions (Prophecy:, Related:, etc.) while still
showing first 3-4 refs collapsed with "+N" expand for more.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
If there are 4 or fewer refs, show them all without expand.
Only use the collapsed "+N" pattern when there are 5+ refs.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Cross-references now show first 3 refs by default with "+N" indicator.
Clicking expands to show all references. Simplifies the template by
flattening grouped refs into a single list.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Word studies now auto-expand when there's room (2+ verses since last
word study), matching cross-ref behavior.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Cross-references now auto-expand when there's room (3+ verses since
last xref), but stay collapsed when verses are close together to
prevent margin overload.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
When verses are close together (within 3 verses), show condensed
"+N refs" instead of full cross-reference groups to prevent
margin overload.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Show +1 or +2 refs expanded inline. Only show the +N collapse
indicator when there are 3 or more hidden refs.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Cross-refs collapsed view now shows:
- First ref from up to 3 theme groups
- Click to expand and see all refs in all groups
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Cross-references now show first 3 verses per theme group in the
collapsed view. Additional refs beyond 3 per group are hidden
until expanded.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Ensure word-study-details is properly hidden by adding !important
to override any conflicting Tufte CSS rules.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Extra refs now appear inline when expanded rather than
swapping between preview/details elements. This prevents
any layout shift when clicking to expand.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Collapsed view now shows one ref per theme/description group
(e.g., "Prophecy: Isa 7:14; Fulfillment: Matt 1:23 +3")
so users see the variety of cross-reference types at a glance.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Cross-reference sidenotes now show just one verse reference by default
with a "+N more" indicator. Click to expand and see all grouped refs.
This reduces sidebar clutter while keeping all cross-refs accessible.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Word study sidenotes now show just the word and Greek/Hebrew term by default.
Click to expand and reveal transliteration and full definition.
Adds a subtle ▸ indicator showing the sidenote can be expanded.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Links inside sidenotes (like "Jesus" or Strong's references) were
inheriting the red color from .words-of-christ styling due to an
!important rule in base.html. Added more specific sidenote link rules
with !important to override.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Convert verse navigation to pill-style buttons
- Extend breadcrumb bar to the left with padding
- Add scroll-margin-top for verse anchors on chapter page
- Rename 'Chapter X' to 'Read in Chapter X'
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Disable sticky breadcrumb on mobile, hide action buttons
- Add mobile styles to chapter page (nav, touch targets)
- Add mobile styles to verse page (share buttons, tooltips)
- Add mobile styles to books page (responsive grid)
- Add mobile styles to book page (chapter links, nav hints)
- Add mobile styles to search page (full-width, iOS zoom fix)
- Add mobile styles to topics and reading plans pages
- Improve touch targets across all pages (44px min)
- Fix max-width containers for mobile (100%)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add KJVNav.initGridNav for standardized 2D grid navigation
- Migrate books.html, topics.html, resources.html to use initGridNav
- Add sidebarActive check to all templates with custom keyboard handlers
- Add [ and ] shortcuts for prev/next chapter on chapter pages
- Add [ and ] shortcuts for prev/next book on book pages
- Update accessibility page with comprehensive keyboard shortcut docs
- Add honest note about keyboard navigation complexity
- Fix sidebar nav conflicting with main content selection
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added sidenote selection styles to style.css instead of
tufte.css to keep third-party CSS unmodified.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Moved sidenote user-select styles to tufte.css so they apply
across all pages, not just chapter pages.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
When selecting multiple verses, each verse is now separated
by a newline in the clipboard. Single verse or partial
selections still get normalized whitespace.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added vendor prefixes for user-select and transparent
selection background to prevent sidenotes from showing
blue highlight when selecting verse text.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
If the selection is entirely within a sidenote or marginnote,
allow normal copy behavior. Only strip sidenotes from copied
text when selecting verse content that includes sidenotes.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added copy event handler that cleans selected text before
copying to clipboard, removing sidenotes, marginnotes, and
verse number links. Also added user-select: none to verse
number links for visual consistency.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Sidenotes, marginnotes, and sidenote number labels are now
excluded from text selection, so selecting verse text only
captures the actual verse content.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>