- Add ‹ Prev / Chunk N of M / Next › buttons at top of chunk editor
header so you can navigate without scrolling to the bottom
- Fix speak audio click: only cancel() when speech is active, append a
period for a natural trailing pause, slow rate to 0.85, and chain a
zero-volume tail utterance so the audio session fades out cleanly
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Append trailing spaces so the audio session stays open briefly before
closing, preventing the hardware click/pop on webkit/macOS.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add shortHebrewGloss() helper that strips [idiom]/[phrase] prefixes and
takes the first word before any comma/semicolon/paren, matching the clean
one-word display Greek already had. Full kjv_def is preserved in
shortDefinition; englishGloss and the modal bold label now show one word.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The NT Strong's gloss file only contains G#### keys, so Hebrew lookups
always returned an empty englishGloss. Now falls back to short_definition
(kjv_def from the BDBT API) so Hebrew words match Greek behaviour.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add 🔊 Speak buttons on Greek/Hebrew word cards in both the reader interlinear panel and study-side word entries (Web Speech API, he-IL / el-GR)
- Click verse number to expand inline interlinear panel with original script, transliteration, gloss, parsing, and Strong's number
- Verse bookmarking with 5 highlight colors, persisted to localStorage
- 🔗 Cross-Refs toggle fetches open-cross-ref dataset and shows amber reference chips per verse
- 🔍 In-chapter search filters verses live with yellow keyword highlights
- S/M/L/XL font size controls
- 📋 Copy verse button outputs formatted citation (Book Ch:V BSB — text)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds a "Read Bible" button on the home screen that opens a simple
chapter browser using the existing helloao BSB API, with book/chapter
pickers and prev/next navigation, separate from study projects.
https://claude.ai/code/session_013GXQxSaTF6zeBsSYTeF3fN
- Bridge jsdom localStorage/sessionStorage over Node 22+'s experimental
globals that vitest's jsdom environment doesn't override
- Update Greek lookup tests to mock the OpenScriptures Strong's
dictionary instead of the retired bolls.life path
- Update migrateChunk no-op test for backfilled fields
- Match en-dash verse range labels in chunk creation test
- Untrack .api.log/.api.pid and gitignore them
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adds a collapsible Interlinear section beneath the Scripture text
(stacked and split layouts) showing each original-language word with
its BSB gloss, transliteration, parsing, and Strong's number on hover.
Data is generated offline from the Berean Standard Bible translation
tables via scripts/build-interlinear.mjs into per-book JSON files.
Use antique gold accent, rich black text, Cormorant Garamond
headings, and Lora body text. Remove fill backgrounds, keeping
only the gold left-border scripture callout and section divider.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add background notes, tags, and final script to the export
- Use shaded section labels, accent color, and a callout-style scripture box
- Switch accent color from indigo to teal
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Shows quick-add chips and a datalist of tags already used elsewhere
in this project or across all projects.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Tag chunks with topics; aggregate into project index and add a Home page tag filter
- Persist studyLayout/activeStudyTab in localStorage
- Make the Split View tab bar sticky while scrolling
- Show a hoverable Strong's number badge with gloss on each word study card
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Scripture stays pinned in a sticky left column while Notes,
Cross-Refs, Word Study, Commentary, and Script become tabs in
the right column. Toggle via "Split View" / "Stacked View".
Adds a Commentary section (HelloAO commentaries) and a "Suggest from
passage" cross-reference feature using the open-cross-ref dataset, with
hover popups that show the referenced verse text.
Three bugs fixed:
1. lastEdited mismatch: saveProjectToStorage stamped Date.now() in
localStorage but saveRemoteProject sent the React state's stale
lastEdited — server and localStorage had different timestamps, so
the "Pull latest" stale detection on a second device never fired.
Fix: stamp lastEdited once before both calls so they're identical.
2. saveProjectToStorage now returns the stamped object so callers don't
have to re-compute the timestamp.
3. Sync errors were auto-clearing after 2.5s making failures invisible.
Now the "⚠ Sync failed" badge stays visible until the next successful
sync, and a Retry button lets you force a re-push without making an edit.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- New englishGloss field on every word object (editable input, placeholder "e.g. grace")
- Populated automatically from the macula-greek gloss map on lookup and suggest
- Shows alongside Short definition in the card's second row
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds public/nt-strongs-gloss.json (100 KB) — the most-common per-word
English gloss for each Strong's number, computed from the macula-greek
SBLGNT dataset. This replaces the fragile kjv_def comma-parsing approach:
grace now shows "grace" not "acceptable", God shows "God" not "X exceeding",
will shows "will" not "desire", etc.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Strip Strong's X/+ notation prefixes and take the first meaningful
English word from the comma-separated kjv_def — so G2316 shows
"God" instead of "exceeding", G40 shows "holy" instead of "(most) holy
(one", etc. Falls back to the raw def if all segments are filtered.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Render modal via createPortal(…, document.body) so it's never clipped
or offset by parent overflow/transform CSS — appears as a true centered
overlay regardless of page scroll position
- Reorder word rows: English definition leads (bold), then Greek lexeme,
transliteration, and Strong's number — makes it easy to recognise words
without reading the Greek
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Instead of adding all passage words automatically, the suggest button now
opens a modal listing every Greek word from the verse range as checkboxes.
Content words (nouns, verbs, adjectives) are pre-checked; function words
(articles, prepositions, conjunctions, common pronouns) are pre-unchecked.
Select all / Select none shortcuts included. Words already in the chunk
are excluded from the list entirely.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The previous implementation fetched SBLGNT from bible.helloao.org using
the wrong translation ID and an API that returns raw text strings, not
per-word Strong's data — so it always silently returned nothing.
Now uses a bundled NT Strong's concordance (public/nt-strongs-concordance.json,
~908 KB) derived from the Clear-Bible macula-greek SBLGNT dataset. This maps
each verse (book/chapter/verse) to the exact Strong's numbers that appear in it,
making the suggest feature accurate and offline-capable after first load.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- NT_BOOK_NUMBER map + suggestGreekWordsForChunk: fetches SBLGNT interlinear
from bible.helloao.org, extracts Strong's numbers for the exact verse range,
and auto-populates Greek word rows — fixes wrong/unrelated words from manual entry
- staleLocalProjects detection on startup: compares lastEdited timestamps so the
app knows when the server has a newer version of a project you already have locally
- pullLatestFromServer + amber banner on home page for one-click sync pull
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>