prepare("SELECT e.id, e.pubkey, e.kind, e.created_at, e.first_seen, e.content, p.name, p.display_name FROM events e LEFT JOIN profiles p ON p.pubkey = e.pubkey $where_sql ORDER BY e.first_seen DESC LIMIT $limit OFFSET $offset"); $rows->execute($params); $events = $rows->fetchAll(); foreach ($events as &$e) { $e['created_at'] = date('Y-m-d H:i:s', intval($e['created_at'])); $e['first_seen'] = date('Y-m-d H:i:s', intval($e['first_seen'])); $e['content'] = substr($e['content'] ?? '', 0, 200); // Resolve display name from profiles cache; fall back to truncated pubkey. $best = profile_display_name($e); $e['display_name'] = $best !== '' ? $best : substr($e['pubkey'] ?? '', 0, 16) . '…'; } json_response(['events' => $events]);