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>
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>
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>
- 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>
- 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>
- 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>
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>
- 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>
- 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>
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>
- 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>
- 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>
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>
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>
- 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>
- 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>
- 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>
- 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>
- 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>
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>
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>
- 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>
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>
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>
- 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>