[], 'total' => 0, 'cache_age_s' => -1, 'message' => 'News feed warming up — available within 5 minutes.', ]; } // Prepend custom/pinned news items added via admin portal $custom = JarvisDB::query( "SELECT fact_key as title, fact_value as url, updated_at FROM kb_facts WHERE category='custom_news' ORDER BY id DESC" ); if (!empty($custom)) { $pinned = array_map(fn($r) => [ 'title' => $r['title'], 'url' => $r['url'] ?: null, 'source' => 'JARVIS', 'published' => $r['updated_at'], 'pinned' => true, ], $custom); // Insert pinned as first category $out['categories'] = array_merge(['pinned' => $pinned], $out['categories'] ?? []); } echo json_encode($out);