From 3a28ffa51a76ff8a1ac368be5e27af3c09dab0e0 Mon Sep 17 00:00:00 2001 From: nmemmert <67961292+nmemmert@users.noreply.github.com> Date: Wed, 14 Oct 2026 12:50:26 -0400 Subject: [PATCH] Add Observe/Interpret/Apply boxes to the translation compare view 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 --- src/components/study/CompareSheet.jsx | 44 +++++++++++++++++++++++++-- src/test/App.home.test.jsx | 12 ++++++++ 2 files changed, 53 insertions(+), 3 deletions(-) diff --git a/src/components/study/CompareSheet.jsx b/src/components/study/CompareSheet.jsx index eed2fd4..d02226e 100644 --- a/src/components/study/CompareSheet.jsx +++ b/src/components/study/CompareSheet.jsx @@ -6,6 +6,7 @@ import { loadProjectById } from '../../utils/projectStorage.js'; import { formatChunkReference, getChunkVerseEntries } from '../../utils/bibleUtils.jsx'; import { READER_TRANSLATIONS, fetchChapter, translationName } from '../../utils/bibleText.js'; import { alignVerses, translationSpans } from '../../utils/compareTranslations.js'; +import { ownShare, pastedWords, withPaste } from '../../utils/ownWork.js'; const FIELDS = [['observation', 'Observe'], ['interpretation', 'Interpret'], ['application', 'Apply']]; @@ -37,6 +38,37 @@ function Column({ entry }) { ); } +const OIA = [ + ['observation', 'Observe', 'What does the text say?'], + ['interpretation', 'Interpret', 'What does it mean?'], + ['application', 'Apply', 'What do I do with it?'], +]; + +// The chunk's own Observe / Interpret / Apply notes, editable right here while the translations are side by side. +// They are the same notes as on the Study page, and long pastes are tagged the same way. +function OiaBoxes({ chunk, updateChunk }) { + const share = ownShare(chunk); + return ( +
+

Your notes{share !== null ? ` · ${share}% your own words` : ''}

+
+ {OIA.map(([field, label, hint]) => { + const pasted = pastedWords(chunk, field); + return ( +