diff --git a/CLAUDE.md b/CLAUDE.md index dc20a45..e8308cd 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -138,11 +138,11 @@ Required environment variables: - [x] [LIMIT] can setting in use profile - [ ] [LIMIT] max is by Subscribe - [ ] Delete Version Button - - [x] Prompt Debugger run - - [x] Select AI Model - - [x] Input Prompt Content - - [x] Show Test Result - - [x] Need to User Credit + - [ ] Prompt Debugger run + - [ ] Select AI Model + - [ ] Input Prompt Content + - [ ] Show Test Result + - [ ] Need to User Credit - [ ] Subscribe - [ ] Free - [ ] 20 Prompt Limit diff --git a/src/app/studio/[id]/page.tsx b/src/app/studio/[id]/page.tsx index 99007b1..f7a6918 100644 --- a/src/app/studio/[id]/page.tsx +++ b/src/app/studio/[id]/page.tsx @@ -13,10 +13,8 @@ import { LoadingSpinner } from '@/components/ui/loading-spinner' import { FullScreenLoading } from '@/components/ui/full-screen-loading' import { VersionTimeline, VersionTimelineRef } from '@/components/studio/VersionTimeline' import { - Play, Save, Copy, - Zap, ArrowLeft, FileText, Clock @@ -62,8 +60,6 @@ export default function PromptPage({ params }: PromptPageProps) { const [prompt, setPrompt] = useState(null) const [promptContent, setPromptContent] = useState('') const [promptTitle, setPromptTitle] = useState('') - const [testResult, setTestResult] = useState('') - const [isRunning, setIsRunning] = useState(false) const [isSaving, setIsSaving] = useState(false) const [isLoading, setIsLoading] = useState(true) const [currentVersion, setCurrentVersion] = useState(null) @@ -134,35 +130,6 @@ export default function PromptPage({ params }: PromptPageProps) { - const handleRunTest = async () => { - if (!promptContent.trim() || !user || !promptId) return - - setIsRunning(true) - setTestResult('') - - try { - const response = await fetch(`/api/prompts/${promptId}/test`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - content: promptContent, - userId: user.id - }) - }) - - if (response.ok) { - const data = await response.json() - setTestResult(data.result.output || data.result.error || 'No output received') - } else { - setTestResult('Error: Failed to run prompt test. Please try again.') - } - } catch (error) { - console.error('Error running test:', error) - setTestResult('Error: Network error occurred. Please try again.') - } finally { - setIsRunning(false) - } - } const handleSavePrompt = async () => { if (!user || !promptId) return @@ -224,7 +191,6 @@ export default function PromptPage({ params }: PromptPageProps) { setPromptContent(version.content) setOriginalContent(version.content) setCurrentVersion(version) - setTestResult('') // 清除测试结果 // 重置保存状态 setHasUnsavedChanges(false) @@ -246,7 +212,6 @@ export default function PromptPage({ params }: PromptPageProps) { setPromptContent(version.content) setOriginalContent(version.content) setCurrentVersion(version) - setTestResult('') // 刷新版本历史列表 if (versionTimelineRef.current) { @@ -374,131 +339,199 @@ export default function PromptPage({ params }: PromptPageProps) {
-
- {/* Left Sidebar - Version Timeline */} -
-
- + {/* Mobile Layout (stacked) */} +
+ {/* 1. Prompt Editor (Mobile First) */} +
+
+
+

{t('promptEditor')}

+
+ {promptContent.length} characters +
+
- - {/* Prompt Info */} -
-

Prompt Info

-
-
- Created - {prompt?.createdAt ? new Date(prompt.createdAt).toLocaleDateString() : '-'} +
+
+
+ + setPromptTitle(e.target.value)} + className="mt-1" + />
-
- Updated - {prompt?.updatedAt ? new Date(prompt.updatedAt).toLocaleDateString() : '-'} -
-
- Last used - {prompt?.lastUsed ? new Date(prompt.lastUsed).toLocaleDateString() : 'Never'} -
-
- Usage count - {prompt?.usage || 0} -
-
-
- {prompt?.tags?.map((tag: string | { name: string }) => { - const tagName = typeof tag === 'string' ? tag : tag?.name || ''; - return ( - - {tagName} - - ); - })} -
+
+ +