diff --git a/app/[locale]/globals.css b/app/[locale]/globals.css index 0e85ee4..9e8a3a0 100644 --- a/app/[locale]/globals.css +++ b/app/[locale]/globals.css @@ -2186,6 +2186,29 @@ html[data-theme="dark"] .ai-reasoning-card { } .post-row:hover { border-color: var(--line-2); } .post-row.selected { border-color: var(--amber-ring); background: oklch(99% 0.02 85); } + +/* Off-topic / noise posts: compact, recessed, low-emphasis. They're the bulk + of the Trump feed but carry no signal — make them read as skippable filler + so the eye lands on the real signals. */ +.post-row.noise { + background: var(--bg-sunk); + border-color: transparent; +} +.post-row.noise:hover { border-color: var(--line); } +.post-row.noise .post-row-main { + grid-template-columns: 22px 1fr; /* drop the aside column */ + gap: 10px; + padding: 8px 14px; + align-items: center; +} +.post-row.noise .src-ico { + width: 22px; height: 22px; + font-size: 11px; border-radius: 6px; + opacity: 0.45; + align-self: center; +} +.post-row.noise .post-body .meta { margin-bottom: 2px; } +.post-row.noise .post-body .text { margin: 0; font-size: 13px; } .post-row-main { display: grid; grid-template-columns: 36px 1fr auto; diff --git a/components/dashboard/PostCards.tsx b/components/dashboard/PostCards.tsx index 5475c80..be047e9 100644 --- a/components/dashboard/PostCards.tsx +++ b/components/dashboard/PostCards.tsx @@ -119,7 +119,7 @@ const PostRow = memo(function PostRow({ post, selected, onClick }: PostRowProps) return (
{/* ── main row ── */} @@ -164,54 +164,45 @@ const PostRow = memo(function PostRow({ post, selected, onClick }: PostRowProps) : (post.text.slice(0, aiScored ? 180 : 90) + (post.text.length > (aiScored ? 180 : 90) ? '…' : ''))}

-
- {aiScored ? ( - <> - - {/* Target asset chip for actionable signals */} - {post.target_asset && (post.signal === 'buy' || post.signal === 'short') && ( - - {post.target_asset} - {post.expected_move_pct ? ` +${post.expected_move_pct}%` : ''} - + {/* Aside (signal pill / target / impact / AI%) only for scored posts. + Noise posts render as a compact two-column row (no aside) — the + 'off-topic · not crypto' tag in the meta line is enough. */} + {aiScored && ( +
+ + {/* Target asset chip for actionable signals */} + {post.target_asset && (post.signal === 'buy' || post.signal === 'short') && ( + + {post.target_asset} + {post.expected_move_pct ? ` +${post.expected_move_pct}%` : ''} + + )} +
+ {impact ? ( + <> + 1h peak + = 0 ? 'up' : 'down'}`}> + {impact.m1h == null ? '…' : fmtPct(impact.m1h)} + + + ) : ( + no data )} -
- {impact ? ( - <> - 1h peak - = 0 ? 'up' : 'down'}`}> - {impact.m1h == null ? '…' : fmtPct(impact.m1h)} - - - ) : ( - no data - )} -
-
- AI - - {post.ai_confidence}% - -
- - ) : ( - // Noise post: no signal, no AI score. Show a single muted SKIPPED - // tag instead of HOLD pill + empty AI metric, so the row reads as - // "ignore this" at a glance. - - skipped - - )} -
+
+
+ AI + + {post.ai_confidence}% + +
+
+ )} {/* ── expanded detail ── */}