53b11124d5
Category priority admin pane gains a "No AI" checkbox alongside Private/More. When set, items whose source falls under that category skip embedding, clustering, and LLM synthesis entirely — each publishes on its own, verbatim from its source (title + body/summary), the same direct-publish path YouTube/Nitter/Telegram items always use. Backend: new categories.disable_ai column (default off, migrated in for existing installs), threaded through categories.ts CRUD and the POST /api/admin/categories + PATCH /api/admin/settings routes. priorityQueue.ts's runSynthesisCycle now partitions items three ways before clustering: source-type direct (youtube/nitter/telegram), category-disabled direct (new), then whatever's left goes through the normal embed/cluster/synthesize pipeline. Tracked-event recaps are a separate, already-existing per-event toggle (TrackedEvent.recapIntervalHours) since events aren't tied to a single category — unaffected by this change.