Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ dist/
.DS_Store
.env.*
coverage/
__pycache__/
*.pyc

# GitHub PAT / token files — belt-and-suspenders
*github-pat*
Expand Down
27 changes: 0 additions & 27 deletions apps/web/app/servers/[slug]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@ import {
IconInfoCircle,
IconLink,
IconAlertCircle,
IconRobot,
} from "@tabler/icons-react";
import { ServerOutboundLink } from "@/components/ServerOutboundLink";

Expand Down Expand Up @@ -329,32 +328,6 @@ export default async function ServerDetailPage({
<div className="grid grid-cols-1 lg:grid-cols-3 gap-10">
{/* Left: Main content */}
<div className="lg:col-span-2 space-y-10">
{/* AI Summary — labeled supplement ONLY (migration 006, Slice 3 of the
indexing-recovery plan). Never replaces `description` on-page and
never feeds SoftwareApplication.description in the JSON-LD (see
lib/metadata.ts#generateServerJsonLd, which reads server.description).
Rendered only when a summary has been backfilled. */}
{server.ai_summary && (
<section
aria-labelledby="ai-summary-heading"
className="rounded-xl border border-purple-800/40 bg-purple-950/10 p-5"
>
<h2
id="ai-summary-heading"
className="text-sm font-semibold text-purple-300 uppercase tracking-wider mb-3 flex items-center gap-2"
>
<IconRobot size={16} className="text-purple-400" />
AI Summary
</h2>
<p className="text-neutral-300 text-sm leading-relaxed whitespace-pre-line">
{server.ai_summary}
</p>
<p className="text-neutral-600 text-xs mt-3">
Generated summary — supplements, not a substitute for the README below.
</p>
</section>
)}

{/* Overview / README */}
<ReadmeSection
readmeContent={server.readme_content}
Expand Down
6 changes: 2 additions & 4 deletions apps/web/lib/queries.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,11 @@ import { isIndexable, type IndexableServerInput } from './indexable';
const SERVER_LIST_COLUMNS = 'id,slug,canonical_slug,name,description,version,category,source,package_name,package_type,package_url,has_tools,has_resources,has_prompts,tool_count,github_url,github_stars,github_forks,github_open_issues,github_last_push,github_license,github_language,github_contributors,github_archived,npm_weekly_downloads,registry_status,registry_published_at,registry_updated_at,registry_tags,is_official,featured,created_at,updated_at,last_synced_at';

// Detail-page column set: everything in SERVER_LIST_COLUMNS plus readme_content
// (rendered by ReadmeSection) and the AI summary enrichment columns (migration 006,
// ai_summary + ai_summary_generated_at — rendered as a labeled supplement, see
// apps/web/app/servers/[slug]/page.tsx). Deliberately excludes search_vector — the one
// (rendered by ReadmeSection). Deliberately excludes search_vector — the one
// `servers` column no consumer of getServerBySlug (page JSX, metadata.ts,
// isIndexable, or the /api/servers/[slug] route) ever reads. select('*') was
// pulling it on every detail-page fetch for nothing.
const SERVER_DETAIL_COLUMNS = `${SERVER_LIST_COLUMNS},readme_content,ai_summary,ai_summary_generated_at`;
const SERVER_DETAIL_COLUMNS = `${SERVER_LIST_COLUMNS},readme_content`;

async function _listServers(params: ServerListParams): Promise<ServerListResponse> {
const page = Math.max(1, params.page || 1);
Expand Down
11 changes: 1 addition & 10 deletions packages/shared/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,13 +69,6 @@ export interface Server {
is_official: boolean;
featured: boolean;

// AI summary enrichment (migration 006) — labeled supplement only.
// Never use in place of `description` for SoftwareApplication.description
// in JSON-LD or as primary on-page body copy (see
// specs/stage-6-slices/00-recovery-plan.md, Guardrails section).
ai_summary: string | null;
ai_summary_generated_at: string | null;

// Timestamps
created_at: string;
updated_at: string;
Expand All @@ -91,9 +84,7 @@ export interface ServerTool {
created_at: string;
}

// ai_summary / ai_summary_generated_at are detail-page-only (not selected by
// SERVER_LIST_COLUMNS, same rationale as readme_content — see queries.ts).
export type ServerListItem = Omit<Server, 'readme_content' | 'ai_summary' | 'ai_summary_generated_at'>;
export type ServerListItem = Omit<Server, 'readme_content'>;

export interface ServerWithTools extends Server {
tools: ServerTool[];
Expand Down
Loading
Loading