From 6cbb1b0c3665191ad486dc43d70dfbd264780f19 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Sat, 12 Sep 2026 22:01:14 -0700 Subject: A quoted note shows up as the note, not as "view note". MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A nostr:note1/nevent1 in someone's post IS a post, and making the reader tap a link to see it — losing their place in the feed — was the wrong shape. It renders inside the post now: whose it is, when, and what it said, in a card of its own so the two voices don't run together. Tapping it opens the note properly. Deliberately not a noteRow: a quote is context, not a second post to act on, so it carries no reply, boost or zap of its own. The action row stops at the post that did the quoting. Fetched once per id and remembered, so a feed quoting the same note ten times asks for it once. One level deep only — a quote of a quote of a quote is a rabbit hole, and the inner one stays a link you can follow. tools/quote-card-test.js quotes a real note off the relays and checks it arrives with its author, its text, and none of the outer post's buttons. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_019mrt228Upn9nNCwGixzSLx --- src/style.css | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/style.css') diff --git a/src/style.css b/src/style.css index a03d25e..32e30d9 100644 --- a/src/style.css +++ b/src/style.css @@ -581,6 +581,20 @@ html.no-scroll { overflow: hidden; scrollbar-gutter: auto; } .lightbox-x:hover { background: rgba(255, 255, 255, .24); } @keyframes lightbox-in { from { opacity: 0; } to { opacity: 1; } } .note-video { display: block; max-width: 100%; max-height: 360px; border-radius: 10px; margin-top: 6px; background: #000; } +/* A quoted note, inside the post that quotes it: its own little card, so the + two voices don't run together. Context, not another post to act on — the + action row stops at the outer post. */ +.quote-card { + margin-top: 8px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 10px; + background: var(--surface2); display: flex; flex-direction: column; gap: 4px; +} +.quote-card.clickable { cursor: pointer; } +.quote-card.clickable:hover { border-color: var(--line-strong); } +.quote-loading { flex-direction: row; align-items: center; gap: 8px; } +.quote-name { font-weight: 600; font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.quote-card .note-img { max-height: 220px; } +.quote-card .yt-embed { margin-top: 4px; } + /* A YouTube link, shown as the video it is: the still, a play button, and a corner link out. The player replaces all of it on the first tap — see youtubeEmbed for why it isn't there from the start. */ -- cgit v1.2.3