diff --git a/components/dashboard/PostCards.tsx b/components/dashboard/PostCards.tsx index 17ee5b3..810231a 100644 --- a/components/dashboard/PostCards.tsx +++ b/components/dashboard/PostCards.tsx @@ -129,47 +129,82 @@ const PostRow = memo(function PostRow({ post, selected, onClick }: PostRowProps) · · - - {post.sentiment} - + {aiScored ? ( + + {post.sentiment} + + ) : ( + + off-topic · not crypto + + )} -

- {expanded ? post.text : (post.text.slice(0, 180) + (post.text.length > 180 ? '…' : ''))} +

+ {expanded + ? post.text + : (post.text.slice(0, aiScored ? 180 : 90) + (post.text.length > (aiScored ? 180 : 90) ? '…' : ''))}

- - {/* Target asset chip for actionable signals */} - {post.target_asset && (post.signal === 'buy' || post.signal === 'short') && ( + {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 + )} +
+
+ 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. - {post.target_asset} - {post.expected_move_pct ? ` +${post.expected_move_pct}%` : ''} + skipped )} -
- {impact ? ( - <> - 1h peak - = 0 ? 'up' : 'down'}`}> - {impact.m1h == null ? '…' : fmtPct(impact.m1h)} - - - ) : ( - no data - )} -
-
- AI - - {aiScored ? `${post.ai_confidence}%` : '—'} - -