From 9fb2154236a3f9d7ede5344cfcc4fa56ff3ada0c Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Sun, 13 Sep 2026 08:10:02 -0700 Subject: Posts and messages get a reading size. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A feed of posts was set in .small — 13px, the size used for captions and row subtitles. On a phone it read like footnotes. Measured against Amethyst on the same Pixel 9, side by side: its note body renders a line pitch of 62 device pixels, ours 50. Post bodies get their own class at 16px, which is Amethyst's own default for a note body, and chat and DM bubbles move 15 → 16 to match; the names and inbox previews above them keep pace. New line pitch measured on the phone: 60 against Amethyst's 62. A quoted note inside a post stays a step smaller, since it's context rather than the post you're reading. Worth recording for whoever reads this next: this phone has the Android font scale at 1.15. Amethyst uses sp and honours that automatically; CSS px in a TWA does not, and there's no way for a page to read that setting. So Amethyst will still render about 15% larger than us on this device no matter what we pick. Matching its DEFAULT is the target that makes sense for everyone else. chat-layout-test had rotted (onboarding copy, .header-msgs now matching the settings button, a screenshot path from another machine's scratch dir) — repaired, and it's what proves the composer still fits at the larger size, on all three viewports. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_019mrt228Upn9nNCwGixzSLx --- src/features/messages.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/features') diff --git a/src/features/messages.js b/src/features/messages.js index 715400e..ae310a6 100644 --- a/src/features/messages.js +++ b/src/features/messages.js @@ -2859,7 +2859,7 @@ export function messagesFeature(ctx) { avatar(ev.pubkey, 'chat-avatar mini', false), h('span', { class: 'quote-name' }, displayName(ev.pubkey)), h('span', { class: 'small faint', style: 'white-space:nowrap' }, timeLabel(ev.created_at * 1000))), - h('div', { class: 'small', style: 'white-space:pre-wrap;overflow-wrap:anywhere' }, + h('div', { class: 'note-text', style: 'white-space:pre-wrap;overflow-wrap:anywhere' }, // 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 ...noteBody(ev.content, depth + 1))); @@ -3244,7 +3244,7 @@ export function messagesFeature(ctx) { h('div', { class: 'row', style: 'gap:7px;align-items:baseline;min-width:0' }, h('span', { // the name, like the avatar, is its own tap-target (profile) - style: 'font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer', + style: 'font-weight:600;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer', onClick: (e) => { e.stopPropagation(); openProfile(pk); }, }, name), h('span', { class: 'small faint', style: 'white-space:nowrap' }, @@ -3257,7 +3257,7 @@ export function messagesFeature(ctx) { style: 'flex-shrink:0', onClick: (e) => { e.stopPropagation(); ui.noteSheet = ev; render(); }, }, '\u22ef')), - h('div', { class: 'small', style: 'white-space:pre-wrap;overflow-wrap:anywhere' }, ...noteBody(ev.content)), + h('div', { class: 'note-text', style: 'white-space:pre-wrap;overflow-wrap:anywhere' }, ...noteBody(ev.content)), pending ? null : noteActions(pk, ev, { canZap }))); } -- cgit v1.2.3