Channing Walton1 downloadsStretchtext: a nested bullet list reads as a paragraph in reading view, each sentence opening one level in place when clicked.
Stretchtext for Obsidian. A nested bullet list reads as a paragraph in reading view. Top-level
bullets are what you see first. Click a sentence that can open, or the » after it, and its
children appear after it, in place; click « to close them again. Each click opens one level.
The marks are buttons, so Tab reaches them and Enter or Space works them.

The idea is Ted Nelson's (1967). The markup is just an outline, so a note stays an ordinary nested list everywhere else, including Live Preview.
Add the class to a note's frontmatter:
---
cssclasses:
- stretch
---
Then write nested bullets where every bullet is a sentence that stands on its own:
- The build fails on a stale cache.
- The CI cache is keyed only by `package.json`, so a lockfile change leaves it stale.
- About one run in five hits it.
- The fix is to key the cache on the lockfile.
In reading view that renders as "The build fails on a stale cache. The fix is to key the cache on the lockfile." with the first sentence underlined. Click it and the second level opens after it.
What the reader has opened is remembered for the session, per note, not saved. It is kept by the list's position in the note, so editing the list while reading it may move or drop what was open.
npm test # vitest: the core and the DOM adapter, under jsdom
npm run typecheck
npm run build # main.js
npm run install:vault # copy into ~/Documents/Notes/.obsidian/plugins/stretch (or $VAULT)
src/stretch.ts is the core: which nodes show, given what is open. src/dom.ts reads Obsidian's
rendered list and draws the paragraph. src/main.ts is the Obsidian plugin, kept thin.