Commit Graph

1193 Commits

Author SHA1 Message Date
kennethreitz 1f4bf35e20 Add automatic cache-busting for static files
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>
2025-12-03 23:21:57 -05:00
kennethreitz bc1a70dd3b Add cache-busting version to base.js
Force browsers to load fresh base.js with sidebar close fix.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 23:19:54 -05:00
kennethreitz 859d6fbc31 Fix keyboard navigation on books page
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>
2025-12-03 23:18:38 -05:00
kennethreitz f57047b9e7 Show font size toggle button on mobile
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>
2025-12-03 23:11:57 -05:00
kennethreitz 41b40994b7 Close mobile sidebar when clicking navigation links
- 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>
2025-12-03 23:10:39 -05:00
kennethreitz 1233847d9f Fix redirect loop for self-referential book abbreviations
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>
2025-12-03 23:08:44 -05:00
kennethreitz ee4a890d87 Add redirects for old Solomon's Song URLs
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>
2025-12-03 23:07:01 -05:00
kennethreitz d7a2b8ba2a Rename Solomon's Song to Song of Solomon throughout codebase
- 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>
2025-12-03 23:05:30 -05:00
kennethreitz 11a1834e03 Collapse mobile sidebar by default on page load
Remove checked attribute so hamburger menu starts closed on mobile.
Desktop sidebar is always visible via CSS regardless of checkbox state.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 22:47:20 -05:00
kennethreitz c5ccc1ed28 Fix search tips box dark mode styling
Use CSS variables and add dark mode overrides for proper contrast.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 22:36:19 -05:00
kennethreitz c7d28e8a5a Fix missing space in John 1:1 commentary
Add quotes around 'In the beginning' phrase for clarity.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 21:53:33 -05:00
kennethreitz 0df37de19d Add #interlinear anchor to featured verses on interlinear page
Links now jump directly to the interlinear section on verse pages.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 21:45:20 -05:00
kennethreitz fc8bb7f197 Fix stars page grouping to keep book items together
Group by first two breadcrumbs (e.g., "Books / 1 Corinthians") so that
chapters and verses from the same book appear in the same group instead
of being split across different groups.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 21:42:51 -05:00
kennethreitz 0738823b3f Use proper stop button symbol for speech toggle
Change from ■ (black square) to ⏹ (stop button) to better match ▶ (play)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 21:38:26 -05:00
kennethreitz 671c084e3f Increase large font mode sizes slightly
- Base article: 1.1rem → 1.2rem
- Paragraphs/list items: 1.5rem → 1.7rem
- H1: 3rem → 3.2rem
- H2: 2.2rem → 2.4rem

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 21:34:21 -05:00
kennethreitz 2c5931716c Add Strong's number search support in search box
- Detect when query looks like a Strong's number (H123, G456)
- Redirect directly to entry page instead of showing search results
- Handle case insensitivity and leading zeros (h0026 -> H26)
- Update placeholder text to show both number and definition search

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 21:32:32 -05:00
kennethreitz 6084a347c8 Fix Strong's entry page button styling and tooltip selector
- Change primary nav button to explicit green (#4a7c59) instead of
  var(--link-color) which is dark gray in light mode
- Ensure button text is white with !important and :link/:visited states
- Make verse-tooltip selector more specific to avoid styling conflicts

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 21:30:17 -05:00
kennethreitz 387fd0203d Make Strong's index cards fully clickable
- Convert entry cards and search results to anchor tags
- Whole card is now clickable, not just the small Strong's number
- Add hover effects with border highlight and subtle shadow
- Update keyboard navigation to work with new structure

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 21:23:55 -05:00
kennethreitz 75c83a0016 Fix Strong's cross-language derivation links
Hebrew numbers in Greek derivations often have leading zeros (H04566)
which caused lookups to fail. Now normalize all Strong's numbers by
stripping leading zeros before lookup and link generation.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 21:21:14 -05:00
kennethreitz c861a671d2 Fix speech toggle button state and font size toggle display
- Show lowercase 'a' for normal mode, uppercase 'A' for large text mode
- Fix speech button not showing stop icon while playing
- Check all speech sources (KJVResourceSpeech, KJVSpeech, speechSynthesis)
- Clear suppressSpace flag on button click to fix toggle behavior

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 21:17:31 -05:00
kennethreitz cb49f5e130 Comprehensive mobile experience improvements
- 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>
2025-12-03 21:03:35 -05:00
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