Commit graph

138 commits

Author SHA1 Message Date
Scott Tomaszewski
4bd1e4558b Docs update 2026-06-04 13:06:06 -04:00
Scott Tomaszewski
f47e3177d4 Updating release recipe to update changelog 2026-06-04 12:58:33 -04:00
Scott Tomaszewski
dadcef7bc1 Comamnd to open the bible now does so in a new tab 2026-06-04 12:55:08 -04:00
Scott Tomaszewski
3bfd78d90c Doc updates 2026-06-02 23:15:56 -04:00
Scott Tomaszewski
08723df2f5 Prepares for release '1.14.0' 2026-06-02 22:57:19 -04:00
Scott Tomaszewski
e661205654 Merge insert-notice wording tweak 2026-06-02 22:56:06 -04:00
Scott Tomaszewski
8df899b6ed Reword insert notice to 'Passage <ref> inserted into note <name>' 2026-06-02 22:56:06 -04:00
Scott Tomaszewski
b3d215c4e3 Merge verse selection follow-up fixes (action bar, multi-verse inline, insert target) 2026-06-02 22:54:33 -04:00
Scott Tomaszewski
8ddcc59be5 docs: changelog for verse selection final behavior 2026-06-02 22:54:05 -04:00
Scott Tomaszewski
2bc00828a4 fix: Insert targets last active non-generated note, not the passage pane
The action bar / command 'Insert' used the active pane, which is the (generated)
passage note the user just clicked in. Track the last active editable, non-generated
markdown note via active-leaf-change and insert there instead (no focus steal; notifies
which note). Right-click 'Insert here' is unchanged.
2026-06-02 22:50:44 -04:00
Scott Tomaszewski
2ea9bc7f0f fix: dock action bar bottom-center; support comma-list refs in inline + live preview
- Action bar anchored to passage bottom rendered off-screen for tall (full-chapter)
  passages; dock it bottom-center of the viewport via CSS instead.
- Inline reading-mode processor and the Live Preview extension used single-range
  parse(), so non-contiguous refs like 'Genesis 1:2, 4, 8' weren't recognized; route
  both through parseList()/getBibleContentList().
2026-06-02 22:36:41 -04:00
Scott Tomaszewski
f42759c0e2 Merge verse selection & insert-into-note feature 2026-06-02 22:25:46 -04:00
Scott Tomaszewski
a8442d2a39 fix: select pressed verse on mobile long-press for immediate feedback 2026-06-02 22:22:55 -04:00
Scott Tomaszewski
ab12b922f2 docs: design ethos, verse selection architecture, reference formats, changelog 2026-06-02 22:22:04 -04:00
Scott Tomaszewski
973c9435f1 feat: render non-contiguous (comma-list) references 2026-06-02 22:20:05 -04:00
Scott Tomaszewski
4304baa175 feat: commands and editor 'Insert here' for verse selection 2026-06-02 22:19:27 -04:00
Scott Tomaszewski
1be2f41afc feat: styles for verse highlight and action bar 2026-06-02 22:18:44 -04:00
Scott Tomaszewski
4cab57f53e feat: wrap verses and attach selection controller on passage render 2026-06-02 22:17:55 -04:00
Scott Tomaszewski
fb34d464d8 feat: verse selection controller, action bar, actions, note picker 2026-06-02 22:16:45 -04:00
Scott Tomaszewski
6fb1b08ea3 feat: wrapPassageVerses wraps each verse in a .dj-verse span 2026-06-02 22:13:53 -04:00
Scott Tomaszewski
48d714f776 feat: VerseSelectionService holding the single active selection 2026-06-02 22:13:15 -04:00
Scott Tomaszewski
2e9dd5f525 feat: verse-selection settings + Verse selection settings section 2026-06-02 22:12:55 -04:00
Scott Tomaszewski
d0c3af1303 feat: VerseFormatter for the three insert formats 2026-06-02 22:12:16 -04:00
Scott Tomaszewski
edb18749da feat: BibleReference.parseList for non-contiguous references 2026-06-02 22:11:34 -04:00
Scott Tomaszewski
31ee9aeaa0 feat: VerseSelection value object (runs + label) 2026-06-02 22:11:01 -04:00
Scott Tomaszewski
7d6b3c5b40 feat: parseVerseId for ESV verse markers 2026-06-02 22:10:24 -04:00
Scott Tomaszewski
3ec0418e70 Add verse selection implementation plan 2026-06-02 22:08:28 -04:00
Scott Tomaszewski
9167f0cc10 Spec: drop default Add-to-note (optional Append-to-note); reorganize settings 2026-06-02 22:02:19 -04:00
Scott Tomaszewski
d92abc4aa9 Add verse selection & insert-into-note design spec 2026-06-02 21:52:17 -04:00
Scott Tomaszewski
ad89a157b4 Doc cleanup 2026-06-02 20:51:32 -04:00
Scott Tomaszewski
aef55d317d Prepares for release '0.13.3' 2026-06-02 20:40:09 -04:00
Scott Tomaszewski
50823e753f Corrects an overly greedy normalization bug 2026-06-02 20:40:04 -04:00
Scott Tomaszewski
44b88292da Building out a test harness 2026-06-02 20:11:38 -04:00
Scott Tomaszewski
6845d37544 Cleanup 2026-06-02 19:17:04 -04:00
Scott Tomaszewski
82005ef582 Prepares for release '0.13.2' 2026-06-02 16:22:17 -04:00
Scott Tomaszewski
0b61c5c1f8 Fix plugin-evaluation styling warnings
Remove all !important declarations (override via selector specificity
instead) and replace the partially-supported text-indent on indented
passage lines with padding-left.
2026-06-02 16:21:31 -04:00
Scott Tomaszewski
ac747f43b4 Docs update 2026-06-01 12:39:40 -04:00
Scott Tomaszewski
1fa7598a83 Documents repo 2026-05-31 21:22:09 -04:00
Scott Tomaszewski
f35a1dbfff Prepares for release '0.13.1' 2026-05-31 12:30:07 -04:00
Scott Tomaszewski
9fabee0520 Clearing out the resolved followups 2026-05-31 12:29:10 -04:00
Scott Tomaszewski
13966cd40e Consolidate Bible file services and unify ESV response conversion
- Add ESVApiService.toBibleApiResponse() as the single ESV-response ->
  BiblePassage converter, used by both downloadFromESVApi and
  BibleContentService (removes the duplicated logic).
- Merge BibleChapterFiles into BibleFiles: BibleFiles now owns the static
  path/file lookups plus instance openChapterNote/createChapterNote/
  scrollToVerse. Keeping lookups static avoids a circular dependency.
- openChapterNote now takes a BibleReference instead of a string, so call
  sites pass references directly with no toString()/re-parse round-trip.
- Drop dead getFullContentPath() and stale TODOs; mark FOLLOWUP #5 resolved.
2026-05-31 12:18:00 -04:00
Scott Tomaszewski
c71a798182 Scroll to verse on render instead of fixed delay
Resolves FOLLOWUP.md #4. openChapterNote delegated scroll-to-verse to a
scrollToVerse helper that scrolls immediately when the verse element is
already present and otherwise observes the view container with a
MutationObserver, scrolling the instant .verse-N renders, then
disconnecting. A 5s win.setTimeout fallback (using the leaf's
WorkspaceContainer.win for pop-out correctness) disconnects the observer
if the verse never appears, replacing the magic 300ms setTimeout.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 11:50:04 -04:00
Scott Tomaszewski
5813205586 Render ESV HTML via sanitizeHTMLToDom instead of innerHTML
Resolves FOLLOWUP.md #3. All four sites in BibleReferenceRenderer that
assigned the ESV API response to innerHTML now run it through Obsidian's
sanitizeHTMLToDom() and append the resulting DocumentFragment, dropping
the inline no-unsanitized/property and no-inner-html eslint-disable
comments. The verse-preview extraction queries/clones paragraphs off the
sanitized fragment instead of a temporary innerHTML div.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 11:47:41 -04:00
Scott Tomaszewski
d01fc5f202 Prepares for release '1.13.0' 2026-05-31 09:07:23 -04:00
Scott Tomaszewski
4d84a5ae02 Reuses token from outside of devbox 2026-05-31 09:07:18 -04:00
Scott Tomaszewski
fbc4cc1e5e Prepares for release '1.13.0' 2026-05-31 08:54:35 -04:00
Scott Tomaszewski
74fcefc76f Updates lock 2026-05-31 08:54:31 -04:00
Scott Tomaszewski
f17b6f6071 Note vault.adapter migration in 0.13.0 changelog
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 08:53:27 -04:00
Scott Tomaszewski
c10c3d8902 Migrate file access from vault.adapter to Vault/FileManager APIs
Resolves FOLLOWUP.md #2. Replaces vault.adapter.* usage with the
intended Obsidian APIs:

- ESVApiService.saveESVApiResponseAsMdNote: Vault.create() for the note
  body + FileManager.processFrontMatter() for frontmatter; folder
  creation via getAbstractFileByPath/createFolder.
- DisciplesJournalPlugin.updateAllBibleNoteFrontmatter: reads canonical
  from metadataCache and updates via processFrontMatter.
- FrontmatterUtil: buildFrontmatterString/mergeCustomFrontmatterIntoExisting
  replaced by applyCustomFrontmatter, which mutates the frontmatter object
  directly (drops stringifyYaml round-tripping).
- BibleFiles.fileExistsForPassage uses getAbstractFileByPath (now sync);
  clearData deletes via FileManager.trashFile() to respect trash settings.
- All passage/content paths run through normalizePath().
- eslint config ignores .devbox/ tooling artifacts.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 08:53:07 -04:00
Scott Tomaszewski
0302a6b80c Better notifications when api key isnt set 2026-05-31 08:22:12 -04:00