- Replace all !important declarations with higher-specificity selectors:
- Scope modal overrides under .ref-modal to beat Obsidian defaults
- Scope .mod-cta overrides to .ref-modal .mod-cta
- Add .cm-ref-inline-result parent to inline widget selectors
- Scope .resultItems resets to each result container class
- Add .github/workflows/release.yml that builds from source on tag push,
attests main.js and styles.css with actions/attest-build-provenance@v2,
and uploads main.js, styles.css, manifest.json to the GitHub release
https://claude.ai/code/session_01NwoSBvufhvXrvTcTenDfGE
- Replace document.createElement with createDiv/createSpan/createFragment (Obsidian globals)
- Replace document with activeDocument throughout for popout window compatibility
- Replace setTimeout with activeWindow.setTimeout in ReferenceSidebarView
- Replace inline style.top/style.left with setCssProps + CSS custom properties in ReferencePopover
- Add CSS variables --ref-popover-top/left to styles.css for dynamic popover positioning
- Fix while-loop assignment pattern in ReferenceParser (no-cond-assign)
- Add @codemirror/view and @codemirror/state to dependencies
- Remove unused builtin-modules dev dependency
https://claude.ai/code/session_01NwoSBvufhvXrvTcTenDfGE
- Replace fetch with requestUrl (Obsidian API requirement)
- Remove CSS style injection; Obsidian loads styles.css automatically
- Remove console.log; use only warn/error/debug
- Mark all unhandled promises with void operator
- Remove unnecessary async keywords from methods without await
- Fix rightSplit type cast (any → proper union type)
- Fix querySelector type assertions to use generic form
- Move remaining inline styles to CSS
- Fix sentence case in UI text (Modal dialog, View on wol.jw.org)
- Fix while-loop assignment expression lint warning
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>