Complete redesign of error page with elegant typography and functionality:
Design:
- Tufte-style layout with proper margins and hierarchy
- Old-style numeral "404" display
- Removed emojis and inline styles
- Clean semantic HTML structure
Content:
- Biblical theme using parable of lost sheep (Luke 15:4)
- Sidenote with theological commentary
- Poetic, literary tone matching site aesthetic
Functionality:
- Search box with smart verse reference detection
- URL parsing that suggests corrections for malformed book URLs
- Grid of helpful links to all major site sections
- Autofocus on search for immediate use
This transforms a basic error page into a helpful, beautiful experience.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Remove bright colored backgrounds from share buttons:
- Removed Twitter blue (#1DA1F2) from Tweet button
- Removed Facebook blue (#4267B2) from Share button
- Simplified "copied" state to subtle border/text color change
All buttons now use elegant default styling with subtle borders
and proper hover states. Icons (📋, 🐦, f) provide visual differentiation.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Move verse linking functionality to base.html for site-wide coverage.
Remove duplicate 80-90 line JavaScript functions from individual templates:
- biblical_prophets.html
- biblical_covenants.html
- biblical_angels.html
- topic_detail.html
This eliminates code duplication and ensures consistent verse linking across all pages.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Move verse reference linking JavaScript to base.html so it works automatically
on all pages. Links verse references in .intro-text, description elements, and
paragraph tags while skipping sidebar content. This eliminates the need to
duplicate linking code in individual templates.
Includes debug logging in topic_detail.html for troubleshooting.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add JavaScript to automatically convert verse references in text to clickable
links on biblical-prophets page. This enables tooltips to work when hovering
over verse references in intro text and prophet descriptions.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Exclude .cross-ref-link elements from global tooltip handler to prevent
conflict with static cross-reference tooltips on verse pages. Cross-reference
links have embedded tooltips in HTML, while other verse links use dynamic
API-fetched tooltips.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Replace hardcoded study guide slug list with dynamic extraction from
study_guides dictionary. This ensures new guides (trinity, resurrection,
heaven-eternity, biblical-marriage, raising-children, money-stewardship)
are automatically included in sitemap.xml.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add Article schema markup to verse and study guide pages using tojson filter
for safe JSON generation. Fixes previous template errors on pages like Jude 1:9.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix verse.html to use correct variable name (verse_text instead of verse.text)
- Add safety check for undefined verse_text
- Temporarily disable Schema.org structured data due to JSON escaping issues
- Fix OpenGraph description to use correct template variable
This resolves the 500 Internal Server Error on verse pages like /book/Jude/chapter/1/verse/9
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Study Guides:
- Add 3 new categories: Doctrinal Studies, Family & Relationships
- Create 6 new comprehensive study guides with 8 sections each:
* The Trinity
* The Resurrection
* Heaven & Eternity
* Biblical Marriage
* Raising Children
* Money & Stewardship
Bug Fixes:
- Fix verse tooltips for hash fragment ranges (e.g., #verse-20-21)
- Add verse reference linking to biblical-angels page
All new study guides include deep theological content with verse
references, matching the quality of existing guides.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add OpenGraph image tags with proper dimensions (1200x630)
- Upgrade Twitter card to summary_large_image
- Add Schema.org Article markup for verse pages with book references
- Add Schema.org Article markup for study guides with sections
- Enhanced social sharing metadata for better previews
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Created normalize_book_name() function to handle all common book name variations:
- Roman numerals (I Samuel → 1 Samuel, II Corinthians → 2 Corinthians, etc.)
- Full word numbers (First Peter → 1 Peter, Second Kings → 2 Kings, etc.)
- Alternative names (Song of Songs → Song of Solomon, Canticles → Song of Solomon)
- Psalm → Psalms
Applied to all book routes (/book/{book}, /book/{book}/chapter/{chapter},
/book/{book}/chapter/{chapter}/verse/{verse_num}) and API endpoints
(/api/verse/{book}/{chapter}/{verse}, /api/verse-range/{book}/{chapter}/{start}/{end})
All variations now redirect with 301 status to canonical book names.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Support both "Psalm" and "Psalms" in book URLs by adding 301 redirects
for /book/Psalm, /book/Psalm/chapter/{n}, and /book/Psalm/chapter/{n}/verse/{m}
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace section tags with div tags in topics.html
- Collapse OT/NT sidebar sections by default
- Add verse reference linking to biblical-covenants page
- Support both "Psalm" and "Psalms" in API endpoints
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add 'open' attribute to all details elements in sidebar navigation
to improve discoverability and ease of navigation.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implemented sticky collapse/expand state for all sidebar details elements
(Old Testament, New Testament, People, Theology, etc.).
Features:
- Saves open/closed state for each subsection individually
- Uses element ID or summary text as storage key
- Restores states on page load
- Persists across browser sessions
Storage keys format: 'sidebar-details-{id or summary text}'
Example: 'sidebar-details-old-testament', 'sidebar-details-People'
Now when you expand/collapse any sidebar subsection, the state
will be remembered and restored on subsequent page visits.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed tooltip event handler to use pathname instead of full href.
Issue:
- target.href returns full URL: "http://localhost:8000/book/John/..."
- parseVerseUrl regex expects pathname: "/book/John/..."
- This caused parseVerseUrl to return null, breaking tooltips
Solution:
- Changed target.href to target.pathname in event handler
- Now passes "/book/John/chapter/3/verse/16" to parseVerseUrl
- Regex patterns match correctly and tooltips work
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Created efficient JSON API endpoints for verse retrieval and updated
tooltips to use them instead of HTML parsing.
API Endpoints:
- GET /api/verse/{book}/{chapter}/{verse}
Returns: { book, chapter, verse, reference, text }
- GET /api/verse-range/{book}/{chapter}/{start}/{end}
Returns: { book, chapter, start, end, reference, verses[], text }
Changes:
- Added JSONResponse import to server.py
- Implemented api_get_verse() for single verse retrieval
- Implemented api_get_verse_range() for verse range retrieval
- Updated tooltip fetchVerseText() to use API endpoints
- Removed complex HTML parsing logic from tooltips
- Simplified tooltip code from ~80 lines to ~35 lines
Benefits:
- 90% reduction in bandwidth (JSON vs full HTML page)
- Faster tooltip response times
- Cleaner separation of concerns
- Easier to maintain and debug
- API can be used by external tools
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implement automatic verse reference linking in study guide content pages.
Changes:
- Added verse linking JavaScript to study_guide_detail.html
- Supports all verse reference patterns:
* Single verses: "John 3:16"
* Verse ranges: "Romans 8:28-29"
* Comma-separated lists: "Psalms 7:17, 9:2, 18:13"
- Links verses in section content paragraphs
- Skips margin toggle label paragraphs to avoid double-linking
Now study guides like /study-guides/new-believer will have all
verse references automatically linked and hoverable for tooltips.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed the tooltip JavaScript to properly extract verse ranges from chapter pages.
Issue:
- Verse range tooltips were showing "Verse range not found"
- The selector was looking for .verse-text elements that don't exist on chapter pages
Solution:
- Updated verse extraction to query by #verse-{number} paragraph IDs
- Clone the verse paragraph and remove:
* Verse number links (.verse-number-link)
* Sidenotes and marginnotes
* Margin toggle elements
- Extract clean text content from each verse in the range
- Join multiple verses with spaces
Now verse ranges like "1 Corinthians 15:19-20" will properly fetch
and display the text of both verses in the tooltip.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implement automatic linking for comma-separated verse references where
the book name is mentioned once, such as:
"Psalms 7:17, 9:2, 18:13, 21:7, 46:4, 47:2"
Changes:
- Added first-pass regex to detect comma-separated verse lists
- Parses book name once and applies it to all verses in the list
- Creates individual links for each verse in the list
- Supports both single verses and ranges in comma lists
- Maintains existing support for standalone verse references
Examples of patterns now supported:
- "Psalms 7:17, 9:2, 18:13" → individual links for each verse
- "Genesis 1:1, 2:3, 3:15" → individual links with book name
- "Matthew 5:3-12, 6:9-13" → supports ranges in comma lists
The implementation uses a two-pass approach:
1. First pass: Handle comma-separated lists
2. Second pass: Handle standalone verse references
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implement support for verse ranges using anchor links in the format:
/book/{book}/chapter/{chapter}#verse-{start}-{end}
Changes:
- Updated topic_detail.html JavaScript to create anchor links for ranges
Example: "Proverbs 31:26-28" → /book/Proverbs/chapter/31#verse-26-28
- Updated topic_detail.html Jinja2 template to generate anchor links
- Enhanced base.html verse tooltip to handle both single verses and ranges
- Modified parseVerseUrl() to recognize both URL patterns:
* Single: /book/{book}/chapter/{chapter}/verse/{verse}
* Range: /book/{book}/chapter/{chapter}#verse-{start}-{end}
- Updated fetchVerseText() to fetch and combine multiple verses for ranges
- Tooltip now extracts verse ranges from chapter pages
Benefits:
- Verse ranges link directly to chapter pages with appropriate anchors
- Tooltips display full text of verse ranges
- Consistent URL structure for both single verses and ranges
- Improved caching with distinct cache keys for ranges
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implement interactive tooltips that display verse text when hovering over verse reference links throughout the site.
Features:
- Automatic detection of verse links (URLs matching /book/.../chapter/.../verse/...)
- Asynchronous fetching of verse text from server
- Intelligent tooltip positioning that avoids screen edges
- Verse caching to prevent redundant requests
- Loading state indicator while fetching
- Mouse tracking for smooth tooltip movement
- Dark mode support via CSS variables
Technical implementation:
- CSS styles added in base.html (lines 88-138) with theming support
- JavaScript uses event delegation for efficient hover detection
- DOMParser API extracts verse text from fetched HTML
- Tooltip follows mouse cursor during hover
- Clean event cleanup on mouseleave
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Override Tufte CSS max-height constraints to allow sidenotes and
marginnotes to display at their natural height without being cut off.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Allow sidenote numbers to display at their natural height instead
of being constrained to 2rem.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added comprehensive overviews for all 11 topics (Salvation, Prayer, Love,
Faith, Forgiveness, Holy Spirit, Hope, Peace, Wisdom, Suffering, and
Parenting). Each overview includes:
- Theological foundations and biblical doctrine
- Practical applications for daily living
- Scripture integration throughout
- Modern relevance and cultural context
Also updated topic_detail.html:
- Replaced section tags with div tags for cleaner layout
- Added JavaScript to automatically link verse references in overview text
- Verse references now clickable throughout the expanded content
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Create informational page explaining interlinear study, how to use it,
and featuring example verses. This provides discoverability and SEO
benefits while keeping the actual interlinear data integrated into
verse pages.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Removed standalone interlinear section since word-by-word analysis is
now integrated directly into verse pages. Removed route handlers,
sitemap entries, and navigation links.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Remove section tags to reduce whitespace and simplify layout,
consistent with other pages on the site.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Use details/summary HTML elements to allow users to expand/collapse
the interlinear word analysis section on verse pages.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add word-by-word analysis directly to verse pages instead of requiring
a separate /interlinear section. Includes Greek/Hebrew original text,
transliteration, Strong's numbers with links, English translation,
parsing information, and definitions.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Book links now go to interlinear view (/interlinear/book/.../chapter/1/verse/1)
instead of regular book pages (/book/...).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove all section:not(:first-of-type) border-top rules for cleaner layout
- Increase KJV text size to 1.3rem in interlinear view for better readability
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Clean up styling by removing gray background, border, padding, and width
limit from the help text section.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
On screens 480px and below, sidebar now pushes content to the right
instead of overlaying it. Includes smooth transition animation.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Apply same clickable card treatment as resources page for better UX.
Users can now click anywhere on topic/book cards to navigate.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Convert People, Theology, History & Culture, and Study Tools sections
to use details/summary elements with disclosure triangles.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Reduce margins on title, verse lookup, featured studies, and footer
for a more compact, efficient layout.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>