fix: redesign the multi-note popover as calm preview cards (#116)#117
Merged
Conversation
The list of notes on a verse (shipped in #114) rendered each note's full raw Markdown in one run-together scroll, separated only by a divider with no dark-mode variant — it scrolled forever, the breaks were invisible in dark mode, and it read as a scary wall of `#`/`*` to a non-technical user (#116). Each note is now a distinct bordered card showing a one-line plain-text preview (reusing notePreview(), which strips Markdown and truncates), its tags, and a chevron — the whole card tappable to open the full note (editor in the reader, reader deep-link in compare). Mirrors the Search/Browse note-card pattern. The props contract is unchanged, so ReaderView/CompareView need no changes. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #116.
What landed
The multi-note popover shipped in #114 drew direct feedback: "It scrolls forever, it's not clear where the break between notes lies, and most importantly this is a very scary UI for a non-technical user." Causes:
whitespace-pre-wrap) — a wall of#/*/>that grew without bound.border-t border-gray-100, which has nodark:variant, so in dark mode (the reported screenshot) the breaks were nearly invisible.The list is now a stack of distinct bordered preview cards, mirroring the existing Search/Browse note-card pattern:
notePreview()helper (strips Markdown, truncates to 120 chars) — no scary raw syntax, naturally short.rounded border border-gray-200 dark:border-gray-700 …) with clear gaps — obvious breaks in light and dark alike.›chevron signals tappability.onOpen), or a reader deep-link in compare.The component's props contract is unchanged, so ReaderView and CompareView needed no changes.
How it was verified
AnnotationsPopover.test.tsxfor the card markup and added a preview/clamp test (long Markdown → stripped, ≤121-char preview ending in "…", raw note never dumped) and an empty-note test; updated the reader multi-note test's selector. Full suite green: 233 tests. ESLint + TS-strict clean; production build clean.Before → after
🤖 Generated with Claude Code