- npm run test:e2e builds the app, runs it on port 3101 with an empty throwaway
database and drives Chrome (the installed one; no browser download) through
notes and the paste check, the daily five minutes and weekly recall,
translation compare (Bible text faked), and two-screen presenting.
- Vitest skips e2e/; ESLint knows the e2e folder and playwright.config.js.
- .gitignore: the local demo video, Playwright output and sign-in file.
- README and TODO describe the browser tests and what CI still needs.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Home: "Your five minutes": a rotating Observe/Interpret/Apply prompt on the
passage whose matching note is thinnest in your own words, a 5:00 clock and a
box that appends to that note. Pasting is blocked; sessions show in Insights.
- Study: a Reading list tab (R) for the study: books and articles to consult,
with a note and a tick; merges across devices.
- Starting a study from a reading-plan day now uses the notes template you last
picked when starting a study by hand (logic moved to utils/planStudy.js).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Speaker notes are hidden on the presenting screen by default (N / "Show notes"
turns them on for one-screen use), so a mirrored display never shows them.
- "Audience window" opens a second window for a projector (?audience=1, no sign-in)
that shows only the point, its passage and quoted verse. Notes, minutes, the
script and the timer are never sent to it.
- With it connected this screen becomes a presenter view: what the audience sees,
your notes, the next point, plus Blank audience (B) and audience text size.
- Script mode sends the audience only the title.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
It now holds files, sharing, handouts, slides, importing notes, schedule,
co-teachers and earlier versions, not just exports.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- A study share link can hide the owner's notes until a chosen time: the server
sends only passages and discussion questions until then, with a banner in the
shared view (new share_reveal column, migrated on start).
- Outline: a session length with "N of M min planned, X min over" and a marker
on the point where the plan runs past it.
- Export > Slides: printable 16:9 slides (title, passage, outline points with
their verse, discussion questions) for one session or all; light or dark.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Study cards say whether the Bible text works offline, with a button to save
the missing book (notes are always kept on the device).
- Each note keeps its last 12 versions with Restore (History under each note).
- Keyboard-only study: 1/2/3 write in Observe/Interpret/Apply, C/W/X/P switch
resource tabs, V compares, Esc leaves a note box; listed under "?".
- Export > Import notes: bring Word/Markdown/text notes into the matching
chunks without overwriting anything; can mark them as not your own.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Compare translations can highlight the words that differ from the first
translation (toggle remembered).
- A copy of your notes is kept the first time commentary is shown; "First draft,
before commentary" under More shows what changed since. Saving it doesn't
count as editing the chunk.
- Notes on single verses: a pencil next to each verse in Study, and a note line
under each verse in Compare. They merge per verse across devices.
- Pasting 15+ words into a note asks "Is this from AI?"; "I wrote it" counts the
words as yours again.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The same notes as the Study page, editable beside the translations; long
pastes are tagged as pasted the same way.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Your notes and Commentary & resources can each be folded so the other
fills the right column (remembered on this device; never both folded).
- Compare has a Translations view: pick BSB/ESV/NET/NLT/CSB/NASB and read the
chunk verse by verse, with each translation's notice.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Commentary and study aids wait for 15 words of your own Observe notes.
- Insights page: this week's own work, themes across studies, words you keep
studying, what slipped in recalls, open follow-ups.
- Recall can record what slipped; session notes (teach it back, who came,
group notes, follow-ups); "Pray about this" from Apply.
- Compare any two passages side by side.
- Handout layouts: standard, questions only, large print, note-taking.
- Search understands "in <book>", "last week/month/year" and a year.
- Home shows the last backup age and nudges after two weeks.
- Phone: the stage bar scrolls instead of clipping Script and Export.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Long pastes into Observe/Interpret/Apply are tagged as pasted; notes show
Mine / N pasted and an own-words share. Pastes follow text through merges.
- The "-> Claude" buttons on the Script stage ask first when a chunk lacks
enough of the user's own (non-pasted) words.
- Weekly recall card on Home: write a passage from memory, compare with notes,
self-rate; recalls are saved on the chunk and synced.
- Recall history on Home with an eight-week strip and the full list.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Fall back to a built-in verse (one a day, same for everyone) in the reader's own translation
- No translation picker in fallback mode; card shows even with no IQ Bible key
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Settings > Preferences: typeface, line spacing, verse numbers, highlight colour names,
My Studies grid/list and sort, verse-of-the-day Bible and picture, commentary sources, study templates
- Header uses one fixed width and reserves scrollbar space so the nav sits in the same place on every page
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Phones get a bottom tab bar (Studies, Bible, Plans, Prayer, Account); wider screens keep the header nav
- The Account menu opens upward from the bar; toasts sit above it
- Reader and study pages get a labelled Home button instead of a small arrow
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Routes move to server/routes/ (auth, account, projects, reader, sharing, admin);
index.js keeps setup only. A smoke test walks 90 API calls against the real
server and compares every status with the pre-split behaviour.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Load the narrator list only when the audio dropdown is opened
- Keep today's verse and devotional in memory for an hour (not saved)
- Back off for a minute after 'allowance used up' or unreachable; keep 'nothing here' answers
- Server shares one upstream call between identical simultaneous requests (nothing stored)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Text fields are at least 16px on touch screens (stops iOS zooming on focus)
- Chapter swipe ignores sheets, fields, sliders, sideways-scrolling rows and text selection
- vh -> dvh for sheets, palette and dialogs
- Bigger tap targets for small links, chips and the logo; no double-tap delay
- No tap flash or landscape text inflation
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Reader: chapter cross-reference map (M) from IQ Bible's reference graph
- Admin: Health tab with disk use, snapshots (back up, download, restore), failure logs
- Passkey sign-in (WebAuthn), signed-in device list, sign out others, optional sign-in alerts
- Settings split into Account, Preferences, Notifications, Security, Your data tabs
- ntfy server field: catch a topic typed into the server box
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Earlier versions of a study: the server keeps compressed copies (about one per ten minutes of
editing, the latest 30); Export shows what differs and puts one back (the replaced copy is kept)
- Notes on highlights and bookmarks: synced, merged without loss, in exports and backups
- Reader verse panel lists your studies and chunks that cover the verse, and opens them
- Prayer journal: requests, who for, linked verses, days prayed, answers; synced, in backups
and the account export; daily prayer reminder through ntfy
- TODO.md lists the ideas not built yet
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Admin: sign-up Open / Invite only / Closed with single-use invite links
- Present mode for scripts (auto-scroll) and outlines (step through, pace vs planned minutes)
- Series: group studies on the dashboard, filter by series, calendar file for a study's sessions
- Lesson handout: printable page per session (passage, outline, questions, writing lines)
- Save a chunk's notes as your own study template (synced)
- Voice dictation for notes and scripts (browser speech recognition)
- Reading progress: map of the 66 books and a calendar of days read, synced and merged across devices
- Export highlights and bookmarks as Markdown or Word, grouped by named colour
- Verse of the day push to the ntfy topic (needs IQBIBLE_API_KEY)
- Sharing: co-teacher editing via single-use invite links; read-only links can expire and take a passcode
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- The search box matches tags as well as title and passage; "#tag" searches
tags only
- Tag chips (with counts) replace the Tag dropdown; several can be on at
once and a study must have all of them
- Tags on each study card are clickable filters
- "No studies match" message with a Clear filters link
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
A Grid / List toggle beside the sort and tag filters. List is one compact
row per study (small book cover, title with Rename, passage, tags, date,
Resume and Delete). The choice is remembered on the device.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Selection
- Selected text uses a per-theme colour (it was nearly invisible on Dark)
- The colour picker also appears on touch screens after dragging the selection
handles, and sits below the selection there so the system menu doesn't cover it
Highlights
- Each highlight remembers its translation and whether it covers the whole verse
- In another translation the same words are found again (ignoring case and
punctuation); whole-verse highlights cover the whole verse; when the wording
differs, the verse gets a small colour dot instead of marking the wrong words
- Older highlights are checked against their saved words instead of trusted
- Server keeps the new fields
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Verse of the day: card over a picture (a different one each day, or chosen),
12 drawn scenes plus photos from public/verse-backgrounds, and "Share as
image" (also on the Reader's verse panel) that saves or shares a PNG with the
same background, a theme look, or a photo from the device
- Study cards get a cover banner named for the book, coloured by kind of book
- Outline "Build from my notes": abbreviations like "A.D. 63." no longer end a
sentence
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
New "Build from my notes" on the Outline page: a main point per chunk with
Background, What the text says, What it means and How we respond under it
(a point per note line, long lines become a headline plus a note), with the
chunk's cross-references and words attached. Also builds a single chunk's
sections. Only adds what's missing; Undo offered.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Commentary tab: "More sources" switch with notes for the whole chunk and
"Add to notes" quoting
- Word study: Lexicons button for words with a Strong's number
- New "Study aids" tab (any verse of the chunk; topics add as tags)
- Outline points: "Add from IQ Bible" attaches topics, Gospel parallels,
manuscript notes and places
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
IQ Bible picks the verse; its words come from BSB, NET, ESV, NLT, CSB or
NASB (default: your reading translation, remembered per device), with the
KJV as a fallback if that Bible can't load.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
setup.sh starts the production server without SESSION_SECRET, so the new
"refuse to start" check stopped the app after an update. When the variable
is unset in production the server now makes a random secret once and keeps
it in DATA_DIR/.session-secret (mode 600, git-ignored).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Sync and data safety
- Autosave flushes on leaving a study or the tab; storage-full errors are reported
- Unsynced studies, deletes and ink are queued and retried when back online
- Deletes propagate across devices (with a "Keep it" undo) and no longer resurrect
- Server assigns study versions (no client-clock conflicts); "Combine both"
merges a conflicted study chunk by chunk
- Reading-plan progress made offline is merged, not overwritten; plans, ink and
marks are cleared from the device on sign-out
Security
- Block SSRF through the ntfy reminder URL; failure-only rate limiting per IP and
account; constant-time login; TOTP replay protection; input validation;
SESSION_SECRET required in production; admin user delete fixed
- Forgot password: one-time code sent to the account's ntfy topic
Features
- IQ Bible proxy (route allow-list, text-only caching per its terms): more
commentaries, lexicons, study aids, daily verse and devotional, plan calendar
export, narrations, podcast background
- Study templates, reading-plan catch-up, account export, daily database snapshots
Tests and tooling
- ESLint config; App tests split into src/test; tests for sync queues, library
hook, merge, templates, IQ Bible UI and reset form
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Drag the left edge of the verse side panel to resize it (arrow keys too,
Shift for bigger steps; double-click resets). The text reflows to make room,
and the width is remembered on this device. Reuses the Study page's resize
handle; the hook now takes the CSS variable to drive.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
A highlighter button beside Bookmarks opens your highlights (by colour);
Bookmarks now opens the bookmarks. Each shows in the accent colour when you
have some. "H" opens the highlights.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Tooltips on hover and keyboard focus across the app: icon-only buttons show
their label, existing titles show in the app's style without the browser's
delay, and the reader's main buttons show shortcut hints ("Search (/)").
Touch screens are unaffected.
- Reader: cross-references (under verses and in the Cross-refs tab) open the
passage's text in the side panel without leaving the chapter; "Open chapter"
goes there when wanted
- Reader: the verse panel now has a Highlight row of colours for one-tap
whole-verse highlighting (tap again to remove, Clear for all, with Undo);
selecting words still highlights just those
- Fix: a cross-reference preview was cleared when React ran the panel's
effect twice (development builds)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Hero ("Read it. Study it. Teach it.") with small previews of the outline
and the translation comparison
- Four groups of features (Read, Study, Teach, Everywhere), all things the
app really does
- Sign-in / create-account card stays in view beside the tour on wide
screens and comes first on a phone; theme switcher before signing in
- Sign-in, account creation, 2FA and error handling unchanged
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Read-only share page: a calm paper-toned page rendered natively (no
iframe), with outline tabs, Print / PDF, numbered points with accent
numerals, type tags, notes and verse quotes; works on phones
- Printable / PDF page restyled to match (serif, hanging numerals, tidy
spacing, footer)
- Word outline restyled: eyebrow + title block, bold main points, accent
numerals, set-off verse quotes, tidy margins
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Share on the Outline page opens a sheet: create / copy / turn off a
read-only link, share the link with the system share sheet, or send the
outline as text
- The link has its own token (separate from the whole-study share link) and
the public endpoint returns only the outlines, rebuilt field by field:
no observations, interpretations, applications, scripts or word notes
- Opening the link shows the outline(s) with no sign-in, a switcher between
the whole-study and per-chunk outlines, and Print / PDF
- New outline_share_token column (added automatically on start)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
A button beside Aa in the reader's top bar opens a Compare translations
sheet (pick the Bible to compare with, show/hide the differing-word
highlights). It shows as active while a comparison is on. The controls
moved out of the Aa sheet; "C" opens it from the keyboard.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Word-level comparison (ignores case and punctuation): differing words are
marked in both columns of the side-by-side view
- Chapter summary ("NET is 18% different from BSB · 37 of 39 verses differ")
with links to the most different verses, and a percentage on each verse
- Compare tab on a verse shows each translation's difference from the one
being read, with the differing words marked
- "Highlight differences" setting; your own highlights and search matches
always win where they overlap a difference mark
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- One outline for the whole study plus one per chunk (picker at the top);
chunk outlines can start from the chunk's verses, each carrying its words
- Points can have a type (illustration, application, quote, question,
transition), minutes (with a running total), a longer note, verse text
fetched from a passage, and cross-references / word studies attached from
the chunk
- Share (system share sheet, or copy), Print / PDF, Copy as text, Word and
Markdown downloads for any one outline
- All of it included in the Markdown, HTML/PDF and Word study exports,
with each chunk's outline under that chunk
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>