Spaces:
Running
Running
update upload image
Browse files
frontend/src/app/page.tsx
CHANGED
|
@@ -301,6 +301,9 @@ export default function Home() {
|
|
| 301 |
}
|
| 302 |
|
| 303 |
// Add user message (show original message to user, but send enhanced to API)
|
|
|
|
|
|
|
|
|
|
| 304 |
const userMessage: Message = {
|
| 305 |
role: 'user',
|
| 306 |
content: message,
|
|
@@ -323,6 +326,9 @@ export default function Home() {
|
|
| 323 |
console.log('[SendMessage] effectiveRepoId (will use):', effectiveRepoId);
|
| 324 |
console.log('[SendMessage] ==========================================');
|
| 325 |
|
|
|
|
|
|
|
|
|
|
| 326 |
const request: CodeGenerationRequest = {
|
| 327 |
query: enhancedMessage,
|
| 328 |
language: language,
|
|
@@ -814,7 +820,10 @@ export default function Home() {
|
|
| 814 |
};
|
| 815 |
|
| 816 |
// Handle landing page prompt submission
|
| 817 |
-
const handleLandingPageStart = async (prompt: string, language: Language, modelId: string, repoId?: string, shouldCreatePR?: boolean) => {
|
|
|
|
|
|
|
|
|
|
| 818 |
// Hide landing page immediately for smooth transition
|
| 819 |
setShowLandingPage(false);
|
| 820 |
|
|
@@ -826,9 +835,9 @@ export default function Home() {
|
|
| 826 |
pendingPRRef.current = prInfo; // Set ref immediately for synchronous access
|
| 827 |
}
|
| 828 |
|
| 829 |
-
// Send the message with the selected language and
|
| 830 |
// Don't pass repoId to handleSendMessage when creating PR (we want to generate code first, then create PR)
|
| 831 |
-
await handleSendMessage(prompt,
|
| 832 |
};
|
| 833 |
|
| 834 |
// Resize handlers for chat sidebar (desktop only)
|
|
|
|
| 301 |
}
|
| 302 |
|
| 303 |
// Add user message (show original message to user, but send enhanced to API)
|
| 304 |
+
console.log('[handleSendMessage] Received imageUrl:', imageUrl ? 'Yes' : 'No');
|
| 305 |
+
console.log('[handleSendMessage] Image URL length:', imageUrl?.length || 0);
|
| 306 |
+
|
| 307 |
const userMessage: Message = {
|
| 308 |
role: 'user',
|
| 309 |
content: message,
|
|
|
|
| 326 |
console.log('[SendMessage] effectiveRepoId (will use):', effectiveRepoId);
|
| 327 |
console.log('[SendMessage] ==========================================');
|
| 328 |
|
| 329 |
+
console.log('[Request] Building request with imageUrl:', imageUrl ? 'Yes' : 'No');
|
| 330 |
+
console.log('[Request] Image URL:', imageUrl?.substring(0, 50) + '...');
|
| 331 |
+
|
| 332 |
const request: CodeGenerationRequest = {
|
| 333 |
query: enhancedMessage,
|
| 334 |
language: language,
|
|
|
|
| 820 |
};
|
| 821 |
|
| 822 |
// Handle landing page prompt submission
|
| 823 |
+
const handleLandingPageStart = async (prompt: string, language: Language, modelId: string, imageUrl?: string, repoId?: string, shouldCreatePR?: boolean) => {
|
| 824 |
+
console.log('[LandingPageStart] Received imageUrl:', imageUrl ? 'Yes' : 'No');
|
| 825 |
+
console.log('[LandingPageStart] Image URL length:', imageUrl?.length || 0);
|
| 826 |
+
|
| 827 |
// Hide landing page immediately for smooth transition
|
| 828 |
setShowLandingPage(false);
|
| 829 |
|
|
|
|
| 835 |
pendingPRRef.current = prInfo; // Set ref immediately for synchronous access
|
| 836 |
}
|
| 837 |
|
| 838 |
+
// Send the message with the selected language, model, and image
|
| 839 |
// Don't pass repoId to handleSendMessage when creating PR (we want to generate code first, then create PR)
|
| 840 |
+
await handleSendMessage(prompt, imageUrl, language, modelId, shouldCreatePR ? undefined : repoId, shouldCreatePR);
|
| 841 |
};
|
| 842 |
|
| 843 |
// Resize handlers for chat sidebar (desktop only)
|
frontend/src/components/LandingPage.tsx
CHANGED
|
@@ -16,7 +16,7 @@ import type { Model, Language } from '@/types';
|
|
| 16 |
import type { OAuthUserInfo } from '@/lib/auth';
|
| 17 |
|
| 18 |
interface LandingPageProps {
|
| 19 |
-
onStart: (prompt: string, language: Language, modelId: string, repoId?: string, shouldCreatePR?: boolean) => void;
|
| 20 |
onImport?: (code: string, language: Language, importUrl?: string) => void;
|
| 21 |
isAuthenticated: boolean;
|
| 22 |
initialLanguage?: Language;
|
|
@@ -243,8 +243,11 @@ export default function LandingPage({
|
|
| 243 |
const handleSubmit = (e: React.FormEvent) => {
|
| 244 |
e.preventDefault();
|
| 245 |
if (prompt.trim() && isAuthenticated) {
|
| 246 |
-
|
| 247 |
-
|
|
|
|
|
|
|
|
|
|
| 248 |
setUploadedImageUrl(null);
|
| 249 |
} else if (!isAuthenticated) {
|
| 250 |
alert('Please sign in with HuggingFace first!');
|
|
@@ -414,7 +417,7 @@ export default function LandingPage({
|
|
| 414 |
onImport(result.code, result.language || 'html', importUrl);
|
| 415 |
} else {
|
| 416 |
const importMessage = `Imported from ${importUrl}`;
|
| 417 |
-
onStart(importMessage, result.language || 'html', selectedModel);
|
| 418 |
}
|
| 419 |
|
| 420 |
setShowImportDialog(false);
|
|
@@ -511,7 +514,7 @@ ${isGradio ? '\n\nIMPORTANT: Only output app.py with the redesigned UI (themes,
|
|
| 511 |
// Pass duplicated space ID so auto-deploy updates it
|
| 512 |
console.log('[Redesign] Calling onStart with duplicated repo ID:', duplicatedRepoId);
|
| 513 |
console.log('[Redesign] Using Claude-Sonnet-4.5 for redesign');
|
| 514 |
-
onStart(redesignPrompt, result.language || 'html', 'claude-sonnet-4.5', duplicatedRepoId);
|
| 515 |
}
|
| 516 |
}, 100);
|
| 517 |
|
|
@@ -556,7 +559,7 @@ Note: After generating the redesign, I will create a Pull Request on the origina
|
|
| 556 |
if (onStart) {
|
| 557 |
console.log('[Redesign] Will create PR - not passing repo ID');
|
| 558 |
console.log('[Redesign] Using Claude-Sonnet-4.5 for redesign');
|
| 559 |
-
onStart(redesignPrompt, result.language || 'html', 'claude-sonnet-4.5', repoId, true); // Pass true for shouldCreatePR
|
| 560 |
}
|
| 561 |
|
| 562 |
console.log('[Redesign] Will create PR after code generation completes');
|
|
|
|
| 16 |
import type { OAuthUserInfo } from '@/lib/auth';
|
| 17 |
|
| 18 |
interface LandingPageProps {
|
| 19 |
+
onStart: (prompt: string, language: Language, modelId: string, imageUrl?: string, repoId?: string, shouldCreatePR?: boolean) => void;
|
| 20 |
onImport?: (code: string, language: Language, importUrl?: string) => void;
|
| 21 |
isAuthenticated: boolean;
|
| 22 |
initialLanguage?: Language;
|
|
|
|
| 243 |
const handleSubmit = (e: React.FormEvent) => {
|
| 244 |
e.preventDefault();
|
| 245 |
if (prompt.trim() && isAuthenticated) {
|
| 246 |
+
console.log('[LandingPage Submit] Sending with image:', uploadedImageUrl ? 'Yes' : 'No');
|
| 247 |
+
console.log('[LandingPage Submit] Image URL length:', uploadedImageUrl?.length || 0);
|
| 248 |
+
onStart(prompt.trim(), selectedLanguage, selectedModel, uploadedImageUrl || undefined);
|
| 249 |
+
// Clear prompt and image after sending
|
| 250 |
+
setPrompt('');
|
| 251 |
setUploadedImageUrl(null);
|
| 252 |
} else if (!isAuthenticated) {
|
| 253 |
alert('Please sign in with HuggingFace first!');
|
|
|
|
| 417 |
onImport(result.code, result.language || 'html', importUrl);
|
| 418 |
} else {
|
| 419 |
const importMessage = `Imported from ${importUrl}`;
|
| 420 |
+
onStart(importMessage, result.language || 'html', selectedModel, undefined);
|
| 421 |
}
|
| 422 |
|
| 423 |
setShowImportDialog(false);
|
|
|
|
| 514 |
// Pass duplicated space ID so auto-deploy updates it
|
| 515 |
console.log('[Redesign] Calling onStart with duplicated repo ID:', duplicatedRepoId);
|
| 516 |
console.log('[Redesign] Using Claude-Sonnet-4.5 for redesign');
|
| 517 |
+
onStart(redesignPrompt, result.language || 'html', 'claude-sonnet-4.5', undefined, duplicatedRepoId);
|
| 518 |
}
|
| 519 |
}, 100);
|
| 520 |
|
|
|
|
| 559 |
if (onStart) {
|
| 560 |
console.log('[Redesign] Will create PR - not passing repo ID');
|
| 561 |
console.log('[Redesign] Using Claude-Sonnet-4.5 for redesign');
|
| 562 |
+
onStart(redesignPrompt, result.language || 'html', 'claude-sonnet-4.5', undefined, repoId, true); // Pass true for shouldCreatePR
|
| 563 |
}
|
| 564 |
|
| 565 |
console.log('[Redesign] Will create PR after code generation completes');
|