diff options
| -rw-r--r-- | AGENTS.md | 5 | ||||
| -rw-r--r-- | src/features/messages.js | 8 | ||||
| -rw-r--r-- | src/style.css | 5 |
3 files changed, 14 insertions, 4 deletions
diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..7d500e6 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,5 @@ +# User preferences + +- After completing and validating a requested change in this project, deploy it to production automatically. Do not stop at a local implementation or ask for deployment confirmation unless the user explicitly requests otherwise. This is the user's standing instruction from 2026-09-28. +- Deploy only the requested changes; preserve unrelated work in the shared workspace. Use an isolated release worktree when necessary. +- Production deploys through `git push prod HEAD:prod` (`prod` points to `cs:coinosv3.git`). The remote post-receive hook builds and publishes the site at https://v3.coinos.io. Verify the live assets and matching service-worker version after deployment. diff --git a/src/features/messages.js b/src/features/messages.js index fb2986f..31a3e4d 100644 --- a/src/features/messages.js +++ b/src/features/messages.js @@ -6403,10 +6403,10 @@ export function messagesFeature(ctx) { const openable = open && !pending; if (!pending) watchZaps([ev.id]); return h('div', { - class: 'row', + class: 'row note-post', 'data-zap-post': ev.id, 'data-focus-note': focus ? '1' : undefined, - style: 'gap:10px;align-items:flex-start;padding:10px 0' + style: 'padding:10px 0' + (openable ? ';cursor:pointer' : '') + (pending ? ';opacity:.55' : '') // joined: the reply box continues this highlight below, so the @@ -6419,8 +6419,8 @@ export function messagesFeature(ctx) { // the avatar is its own tap-target (profile), even inside an openable // row — its handler stops propagation, so the row still opens the thread avatar(pk, 'chat-avatar note-avatar'), - h('div', { class: 'col grow', style: 'min-width:0;gap:3px' }, - h('div', { class: 'row between', style: 'align-items:center;gap:8px' }, + h('div', { class: 'note-content' }, + h('div', { class: 'row between note-header', style: 'align-items:center;gap:8px' }, 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) diff --git a/src/style.css b/src/style.css index 2facddc..6507ba5 100644 --- a/src/style.css +++ b/src/style.css @@ -626,6 +626,11 @@ html:has(#app .chat-card), body:has(#app .chat-card) { overflow: hidden; } /* The row under a post: reply, boost, quote, react, zap — spread across the post's full width so each is a comfortable target, quiet until one carries a count or you've used it. */ +.note-post { display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 8px 10px; align-items: center; } +.note-content { display: contents; } +.note-content > * { grid-column: 1 / -1; min-width: 0; } +.note-content > .note-header { grid-column: 2; grid-row: 1; } +.note-content > .note-text { font-size: 18px; line-height: 1.5; } .note-acts { margin-top: 8px; gap: 4px; width: min(100%, 340px); } .note-acts > .note-act { flex: 1 1 0; min-width: 0; justify-content: center; padding-inline: 2px; } /* server comparison table (Settings → Advanced → Ark server) */ |
