akhaliq HF Staff commited on
Commit
fe9d88b
·
1 Parent(s): 1397ad0

fix for extra img file

Browse files
Files changed (1) hide show
  1. app.py +28 -124
app.py CHANGED
@@ -1502,23 +1502,20 @@ def validate_and_autofix_files(files: Dict[str, str]) -> Dict[str, str]:
1502
  continue
1503
  asset_refs.add(ref.lstrip('/'))
1504
 
1505
- # Add minimal stubs for missing local references (CSS/JS/images/pages)
1506
  for ref in list(asset_refs):
1507
  if ref not in normalized:
1508
  if ref.lower().endswith('.css'):
1509
  normalized[ref] = "/* generated stub */\n"
1510
  elif ref.lower().endswith('.js'):
1511
  normalized[ref] = "// generated stub\n"
1512
- elif any(ref.lower().endswith(ext) for ext in ['.png', '.jpg', '.jpeg', '.gif', '.svg', '.webp']):
1513
- # Use a tiny inline SVG as placeholder content
1514
- normalized[ref] = (
1515
- "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1\" height=\"1\"></svg>\n"
1516
- )
1517
  elif ref.lower().endswith('.html'):
1518
  normalized[ref] = (
1519
  "<!DOCTYPE html>\n<html lang=\"en\">\n<head><meta charset=\"utf-8\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/><title>Page</title></head>\n"
1520
  "<body><main><h1>Placeholder page</h1><p>This page was auto-created to satisfy an internal link.</p></main></body>\n</html>"
1521
  )
 
 
1522
 
1523
  return normalized
1524
 
@@ -4418,106 +4415,8 @@ This will help me create a better design for you."""
4418
  elif language == "svelte":
4419
  files = parse_svelte_output(clean_code)
4420
  if files['src/App.svelte'] and files['src/app.css']:
4421
- # Apply image generation if enabled (add image generation logic to Svelte)
4422
- if enable_image_generation:
4423
- # For Svelte, we'll add a script section that generates images dynamically
4424
- # This is more appropriate for Svelte than trying to inject static images
4425
- image_generation_script = """
4426
- <script>
4427
- import { onMount } from 'svelte';
4428
-
4429
- let generatedImages = [];
4430
-
4431
- onMount(async () => {
4432
- // Generate images using Qwen API based on the user prompt
4433
- const userPrompt = """ + repr(query) + """;
4434
-
4435
- // Create variations for multiple images
4436
- const imagePrompts = [
4437
- userPrompt,
4438
- `Visual representation of ${userPrompt}`,
4439
- `Illustration of ${userPrompt}`
4440
- ];
4441
-
4442
- for (const prompt of imagePrompts) {
4443
- try {
4444
- // This would need to be implemented with actual API calls
4445
- // For now, we'll create placeholder elements
4446
- generatedImages = [...generatedImages, {
4447
- prompt: prompt,
4448
- src: `data:image/svg+xml;base64,${btoa('<svg xmlns="http://www.w3.org/2000/svg" width="300" height="200"><rect width="100%" height="100%" fill="#f0f0f0"/><text x="50%" y="50%" text-anchor="middle" dy=".3em" fill="#666">Generated: ${prompt}</text></svg>')}`,
4449
- alt: prompt
4450
- }];
4451
- } catch (error) {
4452
- console.error('Error generating image:', error);
4453
- }
4454
- }
4455
- });
4456
- </script>
4457
-
4458
- <!-- Generated Images Section -->
4459
- {#if generatedImages.length > 0}
4460
- <div class="generated-images">
4461
- <h3>Generated Images</h3>
4462
- <div class="image-grid">
4463
- {#each generatedImages as image}
4464
- <img src={image.src} alt={image.alt} style="max-width: 100%; height: auto; border-radius: 8px; margin: 10px 0;" />
4465
- {/each}
4466
- </div>
4467
- </div>
4468
- {/if}"""
4469
-
4470
- # Add the image generation script to App.svelte
4471
- if '<script>' in files['src/App.svelte']:
4472
- # Find the end of the script section and add after it
4473
- script_end = files['src/App.svelte'].find('</script>') + 8
4474
- files['src/App.svelte'] = files['src/App.svelte'][:script_end] + '\n' + image_generation_script + files['src/App.svelte'][script_end:]
4475
- else:
4476
- # Add script section at the beginning
4477
- files['src/App.svelte'] = image_generation_script + '\n\n' + files['src/App.svelte']
4478
-
4479
- # Add CSS for generated images
4480
- image_css = """
4481
- /* Generated Images Styling */
4482
- .generated-images {
4483
- margin: 20px 0;
4484
- padding: 20px;
4485
- background: #f8f9fa;
4486
- border-radius: 8px;
4487
- border: 1px solid #e9ecef;
4488
- }
4489
-
4490
- .generated-images h3 {
4491
- margin: 0 0 15px 0;
4492
- color: #495057;
4493
- font-size: 1.2em;
4494
- }
4495
-
4496
- .image-grid {
4497
- display: grid;
4498
- grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
4499
- gap: 15px;
4500
- align-items: start;
4501
- }
4502
-
4503
- .image-grid img {
4504
- width: 100%;
4505
- height: auto;
4506
- border-radius: 8px;
4507
- box-shadow: 0 2px 8px rgba(0,0,0,0.1);
4508
- transition: transform 0.2s ease;
4509
- }
4510
-
4511
- .image-grid img:hover {
4512
- transform: scale(1.02);
4513
- }
4514
- """
4515
-
4516
- # Add CSS to app.css
4517
- if files['src/app.css']:
4518
- files['src/app.css'] += '\n' + image_css
4519
- else:
4520
- files['src/app.css'] = image_css
4521
 
4522
  formatted_output = format_svelte_output(files)
4523
  yield {
@@ -4566,24 +4465,29 @@ This will help me create a better design for you."""
4566
  }
4567
  else:
4568
  # Apply media generation (images/video/music)
4569
- print("[Generate] Applying post-generation media to new HTML content")
4570
- final_content = apply_generated_media_to_html(
4571
- clean_code,
4572
- query,
4573
- enable_text_to_image=enable_image_generation,
4574
- enable_image_to_image=enable_image_to_image,
4575
- input_image_data=gen_image,
4576
- image_to_image_prompt=image_to_image_prompt,
4577
- text_to_image_prompt=text_to_image_prompt,
4578
- enable_image_to_video=enable_image_to_video,
4579
- image_to_video_prompt=image_to_video_prompt,
4580
- session_id=session_id,
4581
- enable_text_to_video=enable_text_to_video,
4582
- text_to_video_prompt=text_to_video_prompt,
4583
- enable_text_to_music=enable_text_to_music,
4584
- text_to_music_prompt=text_to_music_prompt,
4585
- token=None,
4586
- )
 
 
 
 
 
4587
 
4588
  preview_val = None
4589
  if language == "html":
 
1502
  continue
1503
  asset_refs.add(ref.lstrip('/'))
1504
 
1505
+ # Add minimal stubs for missing local references (CSS/JS/pages only, not images)
1506
  for ref in list(asset_refs):
1507
  if ref not in normalized:
1508
  if ref.lower().endswith('.css'):
1509
  normalized[ref] = "/* generated stub */\n"
1510
  elif ref.lower().endswith('.js'):
1511
  normalized[ref] = "// generated stub\n"
 
 
 
 
 
1512
  elif ref.lower().endswith('.html'):
1513
  normalized[ref] = (
1514
  "<!DOCTYPE html>\n<html lang=\"en\">\n<head><meta charset=\"utf-8\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/><title>Page</title></head>\n"
1515
  "<body><main><h1>Placeholder page</h1><p>This page was auto-created to satisfy an internal link.</p></main></body>\n</html>"
1516
  )
1517
+ # Note: We no longer create placeholder image files automatically
1518
+ # This prevents unwanted SVG stub files from being generated during image generation
1519
 
1520
  return normalized
1521
 
 
4415
  elif language == "svelte":
4416
  files = parse_svelte_output(clean_code)
4417
  if files['src/App.svelte'] and files['src/app.css']:
4418
+ # Note: Media generation (text-to-image, image-to-image, etc.) is not supported for Svelte apps
4419
+ # Only static HTML apps support automatic image/video/audio generation
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4420
 
4421
  formatted_output = format_svelte_output(files)
4422
  yield {
 
4465
  }
4466
  else:
4467
  # Apply media generation (images/video/music)
4468
+ # Only apply media generation to static HTML apps, not Svelte/React/other frameworks
4469
+ if language == "html":
4470
+ print("[Generate] Applying post-generation media to static HTML content")
4471
+ final_content = apply_generated_media_to_html(
4472
+ clean_code,
4473
+ query,
4474
+ enable_text_to_image=enable_image_generation,
4475
+ enable_image_to_image=enable_image_to_image,
4476
+ input_image_data=gen_image,
4477
+ image_to_image_prompt=image_to_image_prompt,
4478
+ text_to_image_prompt=text_to_image_prompt,
4479
+ enable_image_to_video=enable_image_to_video,
4480
+ image_to_video_prompt=image_to_video_prompt,
4481
+ session_id=session_id,
4482
+ enable_text_to_video=enable_text_to_video,
4483
+ text_to_video_prompt=text_to_video_prompt,
4484
+ enable_text_to_music=enable_text_to_music,
4485
+ text_to_music_prompt=text_to_music_prompt,
4486
+ token=None,
4487
+ )
4488
+ else:
4489
+ print(f"[Generate] Skipping media generation for {language} apps (only supported for static HTML)")
4490
+ final_content = clean_code
4491
 
4492
  preview_val = None
4493
  if language == "html":