feat(v0.3.1): Navigation & Polish — 6 features#7
Merged
Conversation
Display "~N min read" in the reader header, calculated from actual word count of loaded verses divided by a configurable reading speed (default 200 wpm, adjustable 100-400 in Settings).
…ebuild On repeat visits, the full-text search index (~31K verses per translation) is deserialized from IndexedDB via MiniSearch.loadJSON() instead of being rebuilt from scratch. Cache is keyed by translation ID + verse count so it auto-invalidates when data changes. Also clears cache after seeding. - Add SearchIndexCache type to @codex-scriptura/core - Add searchIndexes table (Dexie v8) with get/save/clear helpers - Extract shared STOP_WORDS and MiniSearch options to src/lib/search-config.ts - Update search page and CommandPalette to use cache-first index loading - Invalidate cached indexes in seed.ts after translation seeding
…isplay Add a `paragraphMode` boolean to ReaderOptions that controls whether verses flow as inline prose paragraphs (paragraph mode on) or display one verse per line (paragraph mode off, the default). The toggle is accessible from the reader toolbar header (pilcrow icon) and the Settings page. The preference is persisted in UserPreferences via Dexie.
…board shortcut
Store reading history as {book, chapter, scrollTop} tuples persisted to
Dexie Settings under 'navHistory' key. Display as a breadcrumb strip at
the bottom of the reader showing the last 5 visited locations. Support
Alt+ArrowLeft shortcut to pop the stack and restore previous position
including scroll offset. History is capped at 50 entries and cleared on
tab close via beforeunload.
Double-clicking (or double-tapping on mobile) any word in verse text opens the entity detail panel with the best available match using a three-tier lookup cascade: 1. Theographic entity (person, place, event) -> rich entity card 2. Easton's Bible Dictionary -> definition card 3. Fallback -> minimal card with "Search in Bible" link Word normalization strips common suffixes (-ed, -ing, -s, -tion, etc.) to match inflected forms against dictionary entries.
Extract <wj> markup from WEB USFX source as character offset ranges stored in a new VerseRecord.wj field. Render those ranges in red when showRedLetters is enabled (default true). Add settings toggle for the feature with a "WEB only" hint. Gracefully degrades for KJV/OEB where no wj data exists.
- Add paragraphMode to v4 migration reader object (missing required field) - Restructure onMount in ReaderWorkspace to register keyboard listener synchronously so the cleanup can be returned (async onMount can't return a cleanup function in Svelte)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
v0.3.1 "Navigation & Polish" patch release implementing all 6 remaining features from the roadmap:
wjoffset extraction to USFX importer, patched WEB verse data (2,059 verses), wired to existingshowRedLetterspreferenceNew files
src/lib/search-config.ts— Shared MiniSearch config (extracted from search page + command palette)src/lib/stores/navHistory.svelte.ts— Navigation history store (Svelte 5 runes)packages/data-pipeline/src/add-wj-to-web.ts— Standalone script to patch WEB verses with wj dataTest plan
pnpm run build— passes clean