Commit Graph

125 Commits

Author SHA1 Message Date
kennethreitz 7ce3f6ab89 Add Strong's number support to search
- 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>
2025-12-05 15:46:12 -05:00
kennethreitz 29d2045c09 Disable verse tooltips on chapter pages
Sidenotes already provide cross-reference context on chapter pages,
making tooltips redundant. Tooltips still work on commentary, topic,
and other pages where verse previews are helpful.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 08:09:19 -05:00
kennethreitz 02f2628fb1 Remove Strong's tooltip from word studies
The sidenotes already provide context - tooltips on top were overkill.
Strong's links still work for click-through to the full page.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 08:07:27 -05:00
kennethreitz 1828c1d79b Simplify Strong's tooltip to minimal design
- Left border accent instead of box
- Inline word + transliteration on first line
- Definition below
- Simple "KJV: ..." line at bottom
- Removed derivation and extra chrome

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 08:01:10 -05:00
kennethreitz d945cf93ac Redesign Strong's tooltip with Tufte-inspired card
New layout features:
- Horizontal header with word, transliteration, and Strong's number
- Serif typography (Crimson Text) matching sidenote style
- Meta section with small-caps labels for KJV usage and derivation
- Subtle border and shadow for elegant appearance
- Proper dark mode support

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 07:57:37 -05:00
kennethreitz 5a7a275b2b Add Strong's tooltip on hover for word study links
Hovering over the Greek/Hebrew term in word study sidenotes now shows
a tooltip with the Strong's card: original word, transliteration,
Strong's number, and definition. Uses same positioning logic as verse
tooltips.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 07:54:29 -05:00
kennethreitz 4c8ce4c15d Position verse tooltips relative to link, not cursor
Tooltips now appear centered below the link element (or above if
near bottom edge), similar to cross-reference tooltips. Removed
mouse movement tracking for simpler, more predictable behavior.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 07:50:05 -05:00
kennethreitz fe23aebf5d Fix tooltip right-edge overflow by measuring off-screen first
The tooltip now renders off-screen first to get accurate dimensions
before calculating the final position. This ensures the flip logic
works correctly when the tooltip would overflow the right edge.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 07:47:46 -05:00
kennethreitz a46524fef8 Fix verse tooltip viewport overflow
Tooltips now stay within viewport bounds on all edges (left, right,
top, bottom) with a 10px padding from the edge.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 07:46:22 -05:00
kennethreitz 4b63f9dc6a Improve verse page layout: move cross-refs up, restyle share section
- Move cross-references section above share section
- Convert share buttons to pill style matching cross-refs
- Unify heading styles (1.4rem) for Cross References, Original Language
  Analysis, and Share sections
- Fix tooltip exclusion for share section links

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 10:28:05 -05:00
kennethreitz ad4f611370 Fix: support space-separated verse refs in nav search (e.g., "rev 22 20")
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>
2025-12-04 10:21:07 -05:00
kennethreitz bed94494ff Fix: restore dark mode rules to templates where needed
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>
2025-12-04 10:15:32 -05:00
kennethreitz 09c943e795 Fix: add !important to section-card dark mode rules
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>
2025-12-04 10:14:26 -05:00
kennethreitz b7d9ccc859 Move shared CSS rules from base.html to style.css
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>
2025-12-04 10:13:30 -05:00
kennethreitz 0800e9de94 Support space-separated verse references (e.g., 'Rev 22 20')
- 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>
2025-12-04 09:17:52 -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 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 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 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 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 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 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 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 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 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 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 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 8748e10f8f Document backtick key for sidebar toggle in accessibility page
Added ` key to Global Shortcuts table and keyboard help modal.
Also added 'n' key to help modal for sidebar navigation.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 01:40:11 -05:00
kennethreitz 2628e1bb50 Fix sidebar nav interfering with content nav
Add stopPropagation() and return statements to sidebar keyboard
handlers to prevent events from reaching content navigation handlers.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 01:36:25 -05:00
kennethreitz 6de1bcdcb5 Make 'n' key open sidebar if not visible
- Opens the sidebar (on mobile/collapsed) when pressing 'n'
- Closes sidebar when exiting nav mode with Escape

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 01:35:21 -05:00
kennethreitz 3336863a4d Improve keyboard navigation consistency across site
- Add KJVNav.initGridNav for standardized 2D grid navigation
- Migrate books.html, topics.html, resources.html to use initGridNav
- Add sidebarActive check to all templates with custom keyboard handlers
- Add [ and ] shortcuts for prev/next chapter on chapter pages
- Add [ and ] shortcuts for prev/next book on book pages
- Update accessibility page with comprehensive keyboard shortcut docs
- Add honest note about keyboard navigation complexity
- Fix sidebar nav conflicting with main content selection

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 01:26:09 -05:00
kennethreitz 42a709a236 Fix tooltip stuck on back button and clean up family tree UI
- Fix verse tooltip getting stuck after browser back (Safari bfcache)
- Remove kekule number badges from ancestors/descendants pages
- Keep gold border lines for Christ's lineage highlighting
- Fix Interactive Tree button text color in light mode

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 23:10:47 -05:00
kennethreitz 9a1657558c Make sidenotes unselectable site-wide via style.css
Added sidenote selection styles to style.css instead of
tufte.css to keep third-party CSS unmodified.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 20:32:59 -05:00
kennethreitz cfe5327785 Revert "Make sidenotes unselectable site-wide"
This reverts commit 31541c9b4b.
2025-12-02 20:32:30 -05:00
kennethreitz 31541c9b4b Make sidenotes unselectable site-wide
Moved sidenote user-select styles to tufte.css so they apply
across all pages, not just chapter pages.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 20:32:20 -05:00
kennethreitz e89ec1ebd6 Add keyboard shortcuts: 3 for John, 4 for Romans
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 19:51:20 -05:00
kennethreitz 6051b0c511 Add keyboard shortcuts: 7 for Psalms, 8 for Proverbs
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 19:49:54 -05:00
kennethreitz b077632503 Add '9' keyboard shortcut to go to Revelation
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 19:49:24 -05:00
kennethreitz 2f1ce518b9 Add '0' keyboard shortcut to go to homepage
Press 0 from anywhere on the site to return to the homepage.
Also updated the keyboard help modal to show this shortcut.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 19:48:52 -05:00
kennethreitz 9139def397 Improve dark mode contrast for verse text
- Increase --text-secondary from #a3a3a3 to #c4c4c4 for better readability
- Update verse text to use text-primary with 0.85 opacity for clearer Scripture
- Change verse item border to accent-color for better visual hierarchy

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 17:03:34 -05:00
kennethreitz faeea81f07 Add keyboard shortcuts for quick navigation to Genesis and Matthew; update help text 2025-12-02 13:20:50 -05:00
kennethreitz c22000287c Simplify chapter nav tip and change 'p' shortcut to PDF
- Shortened nav help to "Tip: ↑/↓ to select verses • ? for more shortcuts"
- Changed 'p' keyboard shortcut from Reading Plans to PDF download

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 13:04:27 -05:00
kennethreitz 8322a88edd Extract base.html inline JS to separate file and update test expectations
- Extracted ~1250 lines of JavaScript from base.html to static/base.js
- Reduced base.html from ~2700 lines to ~1440 lines
- Updated tests to expect 404 (not 500) for invalid resources
- Updated CLAUDE.md to reflect proper error handling

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 12:57:57 -05:00
kennethreitz 28f37f68c3 Fix dark mode conflict when OS is dark but site theme is light
- Wrap prefers-color-scheme dark styles with html:not([data-theme="light"])
- Fixes interlinear text being white on yellowish background
- Updated verse.html, chapter_interlinear.html, tufte.css, base.html,
  and family-tree-expansions.css

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 23:51:57 -05:00
kennethreitz 8537fb548f Remove offline functionality and PWA features
Removed service worker, PWA manifest, offline page, and all related UI components to simplify the application and reduce bloat.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 08:51:54 -05:00
kennethreitz c5712d06f8 Reduce service worker concurrency to 80
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 02:10:35 -05:00
kennethreitz 014fb0b2fa Set progress interval to 200
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 01:52:32 -05:00