- Set explicit #ffffff background for family tree search dropdown
- Darken border slightly for better definition
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add 30px margin-left to article when sidebar visible (above 768px)
- Reset margin on mobile when sidebar hidden
- Adjust breadcrumb to align with sidebar edge
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace bare except with specific exceptions in helpers.py
- Use context managers for all JSON file operations in about.py and api.py
to ensure proper file handle cleanup
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added pattern to parseVerseReference() to handle "Book Chapter Verse"
format in addition to "Book Chapter:Verse".
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
CSS cascade order means template <style> blocks load after style.css,
so dark mode overrides for template-specific classes must stay inline.
Restored .section-card and .person-card-* rules to family_tree templates.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Template inline styles have higher specificity than external CSS,
so dark mode overrides need !important to take precedence.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Relocate shared large font mode and dark mode rules to style.css
for proper separation of concerns. Includes rules for:
- Large font: .intro-text, .verse-ref, .verse-text, .print-btn, etc.
- Dark mode: .words-of-christ, .section-card, .person-card-*, .nav-paragraph.selected
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Move common large font mode CSS rules (.intro-text, .verse-ref,
.verse-text, .print-btn, etc.) to base.html to reduce duplication
across templates.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Enlarge text in story cards (stories index, kids stories) and
occurrence cards (Strong's concordance) when big font mode is enabled.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Arrow keys now navigate words in a 2D grid pattern:
- Left/Right: move to adjacent words in same row
- Up/Down: move to closest word in row above/below
- Enter: expand word details
- Escape: exit word mode
🤖 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>
- Inline horizontal layout for interlinear words (original + English + Strong's)
- Larger font for Hebrew/Greek text (1.6-1.8rem)
- Remove expand/collapse from interlinear section (always visible)
- Rename 'Analysis' to 'Analysis & Commentary'
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Cross-references now display as compact pills (always visible, no collapse)
- Hover tooltip shows verse text
- Sidebar current selection is now bold (font-weight: 700)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update VerseReference.from_string to parse 'Book Chapter Verse' format
- Update is_verse_reference regex to match space format
- Add book name normalization to parse_verse_reference
- Update quick lookup JS to handle space format
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added missing verse 14:17 with Hebrew word studies (shēm, pachad)
and theological analysis connecting to Messianic kingdom.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Transparent background instead of gray
- Rounded pill shape (border-radius: 20px)
- Subtler text color
- Light red tint on hover
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- New /red-letter route with filterable, paginated verse list
- Stats showing total verses, full/partial breakdown
- Red letter text rendering with highlighting
- Keyboard navigation support
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Streamlined structure, added AI commentary, Strong's Concordance details,
family tree explorer, PDF export, accessibility features, and API docs.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Use consistent green color instead of --link-color which had poor
contrast (light gray background with white text) in dark mode.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Use file modification time hash for base.js and tufte.css to
automatically bust browser cache when files are updated.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Wrap KJVNav.initGridNav call in DOMContentLoaded to ensure
base.js has loaded before accessing the function.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Keep the font toggle (A) visible on mobile while hiding other
breadcrumb action buttons (speech, bookmark).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove localStorage persistence for sidebar state on mobile
- Always start with sidebar closed on mobile
- Close sidebar when clicking any link inside it
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
normalize_book_name() was returning the canonical name even when the
input was already canonical, causing infinite redirect loops.
Now only returns a value when the canonical name differs from input.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add "Solomon's Song" and "Solomons Song" as aliases that redirect
to "Song of Solomon" for backwards compatibility with old links.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update verse references in verses-1769.json
- Rename data files (solomons_song.json -> song_of_solomon.json)
- Update book mappings in books.py
- Fix VerseReference.from_string() to handle multi-word book names
like "Song of Solomon" (was only handling 2-word names)
- Update sitemap and metadata files
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>