When reading commentary, skip the first paragraph if it contains
the verse text (which is commonly quoted at the start of analysis).
This prevents reading the verse twice.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added Listen/Stop button to individual verse pages that reads:
- The verse text
- All commentary sections (analysis, historical, theological, questions)
Button toggles between Listen and Stop states with appropriate icons.
Hidden in print mode.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Changed 64 occurrences of "Psalm" to "Psalms" to match the
canonical book name used by the Bible API. This was causing
verses to fall back to John 3:16 instead of showing the
correct verse with its devotional.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Updated all Listen buttons across resource pages to toggle between
Listen and Stop states when audio is playing. The button changes its
icon and text to indicate current state, and clicking Stop halts the
text-to-speech playback.
Templates updated:
- biblical_prophets.html
- fruits_of_spirit.html
- names_of_god.html
- parables.html
- resource_detail.html
- resource_index.html
- story_kids.html
- topic_detail.html
- twelve_apostles.html
- women_of_the_bible.html
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <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>
Adds a Title column showing each day's devotional title,
making the archive more browsable and giving people a
reason to explore past entries.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- /verse-of-the-day now redirects (302) to /verse-of-the-day/YYYY-MM-DD
- Prevents caching issues since URL changes daily
- Allows bookmarking specific dates
- Archive table dates now link to devotional pages
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- next_date is now None when viewing today (can't go to future)
- ] only navigates when viewing a past date
- Simplified template logic
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Use proper selection pattern with visual highlight
- j/k or arrows now properly select and scroll to sections
- Added .selected CSS class with outline indicator
- Space bar reads selected section aloud
- Escape clears selection and stops audio
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- [ / ] to navigate between days
- j/k or arrows to scroll between sections
- t to jump to today
- Esc to stop audio playback
- Added date query parameter support to route
- Updated accessibility page with new shortcuts
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Changed from hash-based random selection to day-of-year selection
so that monthly themes align with calendar months:
- January shows New Beginnings verses
- February shows Love verses
- December shows Advent/Joy verses
- etc.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add devotional content for all 31 featured verses with title, theme,
opening, meditation, application, and prayer
- Redesign VOTD page with hero layout, centered verse, elegant divider
- Add application card and prayer card with distinct styling
- Add Listen button for text-to-speech of full devotional
- Add collapsible archive for past 30 days
- Consolidate get_daily_verse() function (remove duplicate from main.py)
- Load featured verses from JSON instead of hardcoded list
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Display chapters in responsive grid instead of inline with dots
- Arrow keys navigate 2D grid (up/down by row, left/right within row)
- Vim-style h/j/k/l navigation also supported
- Max-width 500px on desktop, full width on mobile
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add new section for Bible Stories navigation:
- [ for previous story
- ] for next story
- j/k for paragraph navigation
- Space for text-to-speech
- p for PDF download
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- [ navigates to previous story
- ] navigates to next story
- Added to both adult and kids story templates
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Systematically reviewed Psalm stanza break placements and fixed
off-by-one errors where breaks were at section endings rather than
beginnings of new sections.
Fixed Psalms: 35, 38, 56-61, 64, 69-71, 74-76, 79-80, 82-83, 85, 88
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add pytest-xdist to dev dependencies for parallel test execution
- Handle "all" string value in is_poetry_chapter() for fully poetic books
- Update PoetryBookData model to accept "all" or list of ints
- Expand valid poetry books list to include all Bible books with poetic sections
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Luke 2: [14,32,35] → [14,33] - break after Nunc Dimittis ends at v32
- Revelation 7: [12,17] → [13] - v12 is part of angels' hymn, v13 starts elder's question
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix Psalm 119: now breaks every 8 verses for acrostic structure
- Fix Song of Solomon: correct speaker change breaks
- Add scholarly stanza breaks for all 150 Psalms
- Add breaks for Job, Proverbs, Lamentations, Ecclesiastes
- Sidebar search box now recognizes Strong's numbers (H1, G3056, etc.)
and shows a "Go to" option to navigate directly to the concordance
- Main search page redirects Strong's number queries to /strongs/{number}
- Supports both uppercase and lowercase prefixes (H/h, G/g)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>