Commit Graph

1172 Commits

Author SHA1 Message Date
kennethreitz d19074e2bb Remove About link from side nav
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 16:41:27 -05:00
kennethreitz 16d699c969 Show header on stars page only when stars exist
The heading "Starred Pages" now appears dynamically when there are
starred items, but is hidden when the page is empty (showing the
empty state with instructions instead).

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 15:52:46 -05:00
kennethreitz ea8cbacc6e Fix stars page UX and reading plans progress display
- Remove heading from stars page
- Left arrow key now collapses expanded item instead of navigating back
- Only navigate back with left key if nothing is selected
- Fix reading plans progress: correct ID from 'your-plans' to 'your-reading-plans'
- Change section to div for reading plans wrapper

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 15:50:06 -05:00
kennethreitz 4819ef36ec Add Stars page for bookmarking with notes and navigation badges
- Create /stars page with collapsible groups, notes, and keyboard nav
- Add yellow star bookmark button in breadcrumb (☆/★)
- Add nav badges showing star count and reading plan % complete
- Change 's' shortcut from Stories to Stars
- Update toast to say "Added to Starred Pages"
- Persist group collapse state in localStorage
- Support notes with monospace font and edit/add functionality
- Update accessibility page and ? help modal

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 15:39:01 -05:00
kennethreitz c4d02d75ed Add 84 more tests for resources, search, and API coverage
New tests target:
- routes/resources.py: biblical maps, angels, prophets, parables, etc.
- Resource detail and PDF routes
- utils/search_index.py: search with filters, highlighting
- Bible PDF routes (book, chapter, verse, interlinear)
- Commentary API endpoints
- Extended API tests for cross-references, topics, reading plans

Total tests: 939 (all passing)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 14:52:35 -05:00
kennethreitz d09c3c6bb7 Remove copy button from breadcrumb actions
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 14:45:31 -05:00
kennethreitz de12fbbeb2 Add copy and bookmark buttons to sticky breadcrumb
Copy button (⎘):
- Copies page content to clipboard
- Shows ✓ checkmark briefly when copied

Bookmark button (☆/★):
- Toggle bookmark for current page
- Stored in localStorage as kjvBookmarks
- Star fills in (★) when page is bookmarked

Bookmarks page (/bookmarks):
- View all saved bookmarks
- Shows title and date saved
- Remove individual bookmarks or clear all
- Reads from localStorage on client side

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 14:44:19 -05:00
kennethreitz 2ab98c08a3 Use play triangle ▶ for speech button
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 14:41:28 -05:00
kennethreitz 104ac17f24 Simplify font size to single toggle (normal/large)
- One button toggles between normal and large text
- Button shows larger A when large mode is active
- Removed small and x-large sizes

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 14:40:56 -05:00
kennethreitz e8d174cd80 Reuse existing spacebar speech system for breadcrumb button
- Button now triggers same speech as spacebar
- Button state syncs with KJVResourceSpeech.speaking
- Removes duplicate speech code

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 14:39:29 -05:00
kennethreitz 5ae3f9292a Use unicode glyphs for speech button (♪ and ■)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 14:38:47 -05:00
kennethreitz 953ceb4ff4 Add speech button to sticky breadcrumb actions
- Click 🔊 to read page content aloud
- Button changes to ⏹ while speaking
- Click again to stop
- Strips out navigation, buttons, and other non-content elements

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 14:38:31 -05:00
kennethreitz 8ffd60db2a Make font size buttons more visually distinct (smaller A vs larger A)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 14:37:41 -05:00
kennethreitz 70d2e48ca9 Fix duplicate dark mode button, add breadcrumbs to search page
- Only show fixed dark mode toggle on pages without breadcrumbs
- Pages with breadcrumbs get dark mode in the sticky breadcrumb actions
- Add breadcrumbs to search page

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 14:34:10 -05:00
kennethreitz 063bbabab1 Increase pytest workers to 8
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 14:32:44 -05:00
kennethreitz 4a6171160e Increase pytest workers to 6
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 14:32:33 -05:00
kennethreitz f7a93ab5fc Increase pytest parallelism to 4 workers
Use 4 workers instead of auto (2) for faster test runs.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 14:32:19 -05:00
kennethreitz 091f579765 Add breadcrumbs to study guides index page
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 14:32:10 -05:00
kennethreitz 4bcbe9e863 Add fail-fast (-x) to pytest in CI
Stop test run on first failure to save CI time.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 14:30:07 -05:00
kennethreitz 94fc18cc2e Replace separate sticky header with sticky breadcrumb
- Breadcrumb now sticks to top when scrolling (position: sticky)
- Action buttons (font size, dark mode) appear in breadcrumb when stuck
- Remove old separate sticky header element
- Remove fixed font size controls (now in breadcrumb)
- Cleaner, simpler approach using native CSS sticky

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 14:30:06 -05:00
kennethreitz ea4d8bd1d7 Replace › with / in sticky header breadcrumb
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 14:28:08 -05:00
kennethreitz c42d01d4f4 Add sticky header, font size controls, and page prefetch
1. Sticky header on scroll
   - Shows current page title and breadcrumb navigation
   - Appears when scrolling past the main breadcrumb
   - Smooth slide-down animation

2. Font size controls (A/A buttons)
   - Small, normal, large, x-large sizes
   - Persisted to localStorage
   - Positioned next to dark mode toggle

3. Prefetch next/prev pages
   - Uses requestIdleCallback for non-blocking prefetch
   - Prefetches chapter/verse/book navigation links
   - Makes page-to-page navigation feel instant

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 14:26:39 -05:00
kennethreitz 01bd78b9cb Remove unused verse_collections tests and docs
The verse_collections module is not tracked in git and unused.
Removes tests that were failing in CI due to missing module.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 14:26:33 -05:00
kennethreitz 9eefad85f8 Add 84 more tests to improve coverage to 84%
New tests target:
- routes/stories.py (54% -> 80%): story index, detail, kids, PDF endpoints
- routes/bible.py: book, chapter, verse, interlinear routes
- routes/topics.py (74% -> 80%): topics index and detail
- utils/search.py (70% -> 90%): full-text search, relevance scoring
- utils/commentary_loader.py: normalize_entry, slugify functions
- utils/pdf.py: PDF rendering functions

Total tests: 858 (all passing)
Coverage: 83% -> 84%

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 14:19:24 -05:00
kennethreitz 789fd68ad2 Make sidebar always visible on desktop, toggle only on mobile
- Remove sidebar toggle button on desktop (>1200px)
- Sidebar now always visible on desktop for better navigation
- Keep hamburger menu toggle on mobile/tablet (<1200px)
- Remove backtick keyboard shortcut for sidebar toggle
- Update accessibility page to remove backtick reference

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 14:18:05 -05:00
kennethreitz 9adcb64dfb Make Hebrew/Greek word the h1 heading on Strong's pages
Remove redundant "Strong's Concordance: Hxxx" heading - the Strong's
number is already displayed in the card. The original word itself
is now the h1, which is better for SEO and visual hierarchy.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 14:11:37 -05:00
kennethreitz ca9906e100 Fix show-more button text color in light mode
Button elements don't inherit color by default - added appearance reset
and font-family inherit to ensure consistent styling.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 14:10:06 -05:00
kennethreitz f3a65a48eb Add 64 more tests to improve coverage from 81% to 83%
New tests cover:
- Reading plan helper functions (parse_reading_reference, get_reading_text)
- Search index direct testing (search_verses, highlight_matches)
- Interlinear loader (find_verses_by_strongs, count_strongs_occurrences)
- Verse collections module (0% -> 100%)
- Topics module improvements (77% -> 89%)
- Main module entry point (0% -> 62%)

Total tests: 774 (all passing)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 14:06:27 -05:00
kennethreitz 4dd606e4a0 Add PWA manifest and improve Strong's keyboard navigation
- Add manifest.json for PWA support (stops 404 requests)
- Add [ and ] keys to navigate between Strong's numbers
- Add info-card selection styles for keyboard nav
- Update accessibility page with Strong's shortcuts

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 13:52:16 -05:00
kennethreitz 45cca004f3 Improve test coverage from 76% to 81% with 213 new tests
- Add test_coverage_improvements.py (77 tests): reading plans, stories,
  bible routes, search, interlinear, topics, edge cases
- Add test_coverage_part2.py (77 tests): cross_references, jinja_filters,
  commentary_loader, topics, search_index, kjv, books, strongs modules
- Add test_coverage_part3.py (59 tests): API endpoints, web routes,
  Strong's, family tree, timeline, study guides, misc routes

Fix exodus.json commentary data:
- Fix 72 verses in chapters 29-31 with malformed questions arrays
- Questions were nested arrays [["q"]] instead of strings ["q"]

Test results: 710 passed, 1 skipped, 81% coverage

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 13:47:28 -05:00
kennethreitz ae8eaa6484 SEO optimize Strong's Concordance page
- Improved title: "Strong's H7969 - שָׁלוֹשׁ (shâlôwsh) - Hebrew Definition"
- Rich meta description with definition preview
- JSON-LD structured data (Schema.org DefinedTerm)
- Semantic HTML: article, section, nav elements
- H2 headings include Strong's number for keyword relevance
- lang attributes on Hebrew/Greek text
- rel="prev/next" on navigation links
- aria-label for accessibility
- title attributes on nav links

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 13:45:10 -05:00
kennethreitz 26ecd75b5c Add Strong's number to H1 heading for SEO
H1 now reads "Strong's Concordance: H7969" etc.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 13:43:39 -05:00
kennethreitz 049127314c Use regular background for Strong's word card
- Remove dark gradient hero background
- Use site's standard background with border
- Make Strong's number larger and bolder (1.5rem)
- Keep colored language badges (brown Hebrew, blue Greek)
- Proper dark mode support

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 13:42:58 -05:00
kennethreitz cb5f77b95b Increase text size for KJV Translations and Derivation sections
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 13:41:52 -05:00
kennethreitz 5edc829955 Revert Strong's page to original design 2025-12-03 13:40:30 -05:00
kennethreitz 9e1a70e7ee Simplify Strong's page - keep H1 and title improvements only
Reverted semantic HTML changes (article/section tags) but kept:
- Prominent H1 with "Strong's H7969" format
- Improved title and meta description
- Show more button for occurrences
- Hero word card design

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 13:40:11 -05:00
kennethreitz f26ec0eab7 Improve Strong's page SEO and semantic structure
- Add prominent H1 with "Strong's H7969" format
- Use article/section/nav semantic HTML elements
- Add Schema.org DefinedTerm microdata
- Include Strong's number in all H2 headings for SEO
- Add rel="prev/next" for navigation links
- Add aria-label for accessibility
- Improve title and meta description format
- Add lang attributes for Hebrew/Greek text

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 13:37:55 -05:00
kennethreitz cb89a80f76 Improve Strong's Concordance page design
- Hero card with gradient background (brown for Hebrew, blue for Greek)
- Definition displayed in hero card for quick scanning
- Show only 10 occurrences initially with "Show more" button
- Load 20 more at a time for performance with large word lists
- Underline-style highlighting for matched words
- Improved dark mode support
- Better responsive design for mobile

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 13:33:50 -05:00
kennethreitz 245c25cea1 Fix 1 Kings 22 interlinear format to match schema
- Rename 'hebrew' field to 'original'
- Add 'H' prefix to Strong's numbers
- Add position, parsing, and definition fields

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 13:26:19 -05:00
kennethreitz 07e07a865d Add complete 1 Kings 22 interlinear data (53 verses)
Achieves 100% interlinear coverage for all 31,102 verses in the KJV Bible.
Hebrew word-by-word data with transliterations, Strong's numbers, and
English translations fetched from Bible Hub.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 13:24:06 -05:00
kennethreitz 77f084417f Fix Solomon's Song interlinear - rename keys to match KJV
The interlinear data used "Song of Solomon" but KJV uses "Solomon's Song".
Renamed 117 verse keys to match.

Coverage now 99.8% (31049/31102 verses).
Only 1 Kings 22 (53 verses) remains missing - this is a known gap in the
upstream source data (tahmmee/interlinear_bibledata).

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 13:12:59 -05:00
kennethreitz 835b007f3c Complete Exodus commentary rewrite - 1144 verses done
All template filler ("The Hebrew text contains linguistic
nuances...") has been replaced with substantive commentary:

- Hebrew word studies throughout
- Egyptian gods targeted by plagues
- Passover/exodus typology pointing to Christ
- Tabernacle typology (each element = Christ)
- Golden calf crisis and covenant renewal
- God's 13 attributes (Exodus 34:6-7)

Every verse now has real theological analysis instead of
generic templates.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 13:10:54 -05:00
kennethreitz 4d1dfe5a7a Add missing interlinear data for 14 NT/OT verses
- Mark 7:37, 9:49, 9:50, 11:33, 15:47
- Acts 8:40, 15:41, 24:27, 28:31
- Luke 17:37, 23:56
- John 5:47
- Romans 16:27
- Psalms 119:176

Coverage now at 99.8% (31049/31102 verses)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 13:10:10 -05:00
kennethreitz e8e5169b2c Add missing interlinear data for Matthew 12:50, 17:27, 18:35, 23:39
Sourced Greek text with Strong's numbers from Bible Hub interlinear.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 12:58:33 -05:00
kennethreitz 54361495b5 Rewrite 642 more Exodus verses - 85% complete
Replaced template filler with substantive Hebrew commentary:
- Ch 5-11: Plagues narrative with Egyptian gods targeted
- Ch 16-18: Manna, rock, Jethro (Christ typology)
- Ch 25-31: Tabernacle instructions (typology)
- Ch 35-40: Tabernacle construction (partial)

Remaining: 171 verses (mostly chapters 32-34, 39-40)
Total fixed: 973 of 1144 verses (85%)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 12:52:06 -05:00
kennethreitz d1fc66291a Make cross references collapsed by default on verse pages
User preference is still saved in localStorage - if expanded, stays expanded on subsequent visits.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 12:40:02 -05:00
kennethreitz 89ac1ba37e Add 100 verse commentaries across 10 books
- Psalms 37:21-30 (10 verses)
- Luke 1:15,27; 2:3,27-28,31-33,36-37 (10 verses)
- Jeremiah 6:3; 21:1-7,11,13; 22:1 (10 verses)
- Numbers 4:34-44 (10 verses)
- Matthew 12:41-50 (10 verses)
- Deuteronomy 9:29; 10:11-21 (10 verses)
- Joshua 2:9; 6:1,25-27; 8:8,23-26 (10 verses)
- Job 9:24-31,35; 12:6 (10 verses)
- Ezekiel 16:18-28 (10 verses)
- Acts 13:1,5-8,12-16 (10 verses)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 12:37:17 -05:00
kennethreitz 6e43d92baf Rewrite 331 Exodus verses with real Hebrew commentary
Replaced template filler ("The Hebrew text contains linguistic
nuances...") with verse-specific analysis including:
- Hebrew words with transliteration
- Passover typology pointing to Christ
- Sinai covenant theology
- Historical Egyptian context

Chapters fixed: 1-4, 12-15, 19-24
Remaining: 813 verses in other chapters

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 12:28:41 -05:00
kennethreitz 9b3f43cd23 Improve commentary-generator agent with anti-filler guidelines
Added:
- CRITICAL section warning against generic filler text patterns
- Example BAD commentary showing what NOT to do
- Better GOOD example with Hebrew transliterations
- Key Hebrew/Greek vocabulary reference
- Explicit requirements for verse-specific content

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 12:22:51 -05:00
kennethreitz b82171fc93 Complete 1 Samuel commentary - fill all 572 incomplete verses
Added full theological analysis for all verses that previously only
contained the verse text without actual commentary. Includes Hebrew
word studies, historical context, and reflection questions.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 12:07:54 -05:00