From 51ab7ebf4be87041fcd25f55614e1c9837395092 Mon Sep 17 00:00:00 2001 From: Murat Aslan Date: Wed, 1 Apr 2026 23:33:44 +0300 Subject: [PATCH] fix(cli): add missing full_content param to API URL The CLI was fetching prompts.json without ?full_content=true, so the API returned contentPreview instead of the full content field. This caused a crash when accessing prompt.content in PromptDetail. Also added defensive null checks on prompt.content accesses in case the API response is incomplete. Closes #1107 --- packages/prompts.chat/src/cli/api.ts | 2 +- packages/prompts.chat/src/cli/components/PromptDetail.tsx | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/prompts.chat/src/cli/api.ts b/packages/prompts.chat/src/cli/api.ts index d4768e79..9b593138 100644 --- a/packages/prompts.chat/src/cli/api.ts +++ b/packages/prompts.chat/src/cli/api.ts @@ -2,7 +2,7 @@ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs'; import { homedir } from 'os'; import { join } from 'path'; -const PROMPTS_URL = 'https://prompts.chat/prompts.json'; +const PROMPTS_URL = 'https://prompts.chat/prompts.json?full_content=true'; const CACHE_DIR = join(homedir(), '.prompts-chat'); const CACHE_FILE = join(CACHE_DIR, 'prompts.json'); diff --git a/packages/prompts.chat/src/cli/components/PromptDetail.tsx b/packages/prompts.chat/src/cli/components/PromptDetail.tsx index 8ff7312e..57353ed3 100644 --- a/packages/prompts.chat/src/cli/components/PromptDetail.tsx +++ b/packages/prompts.chat/src/cli/components/PromptDetail.tsx @@ -77,7 +77,7 @@ export function PromptDetail({ prompt, onBack, onCopy }: PromptDetailProps) { const contentHeight = Math.max(terminalHeight - headerLines - footerLines, 5); useEffect(() => { - const vars = extractVariables(prompt.content); + const vars = extractVariables(prompt.content ?? ''); setVariables(vars); const defaults: Record = {}; @@ -90,7 +90,7 @@ export function PromptDetail({ prompt, onBack, onCopy }: PromptDetailProps) { const contentLines = useMemo(() => { if (!prompt) return []; // Parse escape sequences like \n - const parsedContent = prompt.content.replace(/\\n/g, '\n'); + const parsedContent = (prompt.content ?? '').replace(/\\n/g, '\n'); return wrapText(parsedContent, terminalWidth - 6); }, [prompt, terminalWidth]); @@ -200,12 +200,12 @@ export function PromptDetail({ prompt, onBack, onCopy }: PromptDetailProps) { setCurrentVarIndex(0); setCurrentInput(variableValues[variables[0].name] || ''); } else { - handleCopy(prompt.content); + handleCopy(prompt.content ?? ''); } } if (input === 'C' && prompt) { - handleCopy(prompt.content); + handleCopy(prompt.content ?? ''); } if (input === 'o' && prompt) {