dippoo Claude Opus 4.5 commited on
Commit
21323c4
·
1 Parent(s): 1ebf6af

Major UI cleanup and improvements

Browse files

- Fixed duplicate model selector issue in img2video mode
- Replaced width/height with simple Aspect Ratio dropdown
- Collapsed advanced settings (steps, cfg) by default
- Reorganized model dropdowns with clearer categories:
- Recommended, NSFW Friendly, Fast, Other
- Simplified video model selector (removed redundant backend chips)
- Added pricing hints to video models
- Cleaner labels and descriptions throughout
- Added updateDimensions() function for aspect ratio

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

Files changed (1) hide show
  1. src/content_engine/api/ui.html +126 -147
src/content_engine/api/ui.html CHANGED
@@ -876,75 +876,58 @@ select { cursor: pointer; }
876
  </div>
877
 
878
  <div id="cloud-model-select" style="display:none">
879
- <label>Cloud Model (Text-to-Image)</label>
880
  <select id="gen-cloud-model">
881
- <optgroup label="SeeDream (ByteDance) - NSFW OK">
882
- <option value="seedream-4.5">SeeDream v4.5 (Best Quality)</option>
 
 
 
 
883
  <option value="seedream-4">SeeDream v4</option>
884
  <option value="seedream-3.1">SeeDream v3.1</option>
885
  </optgroup>
886
- <optgroup label="GPT Image (OpenAI)">
887
- <option value="gpt-image-1.5">GPT Image 1.5 (Latest)</option>
888
- <option value="gpt-image-1">GPT Image 1</option>
889
- <option value="gpt-image-1-mini">GPT Image 1 Mini (Fast)</option>
890
- </optgroup>
891
- <optgroup label="NanoBanana (Google)">
892
- <option value="nano-banana-pro">NanoBanana Pro</option>
893
  <option value="nano-banana">NanoBanana</option>
894
  </optgroup>
895
- <optgroup label="Kling (Kuaishou)">
896
  <option value="kling-image-o3">Kling Image O3</option>
897
- </optgroup>
898
- <optgroup label="WAN (Alibaba)">
899
- <option value="wan-2.6">WAN 2.6 (Latest)</option>
900
  <option value="wan-2.5">WAN 2.5</option>
901
- </optgroup>
902
- <optgroup label="Other">
903
  <option value="qwen-image">Qwen Image</option>
904
  <option value="dreamina-3.1">Dreamina v3.1</option>
905
- <option value="dreamina-3">Dreamina v3</option>
906
  </optgroup>
907
  </select>
908
  </div>
909
 
910
  <div id="cloud-edit-model-select" style="display:none">
911
- <label>Cloud Edit Model (Image-to-Image)</label>
912
  <select id="gen-cloud-edit-model">
913
- <optgroup label="Higgsfield (Character Consistency)">
914
- <option value="higgsfield-soul">Higgsfield Soul (Best for Faces)</option>
 
 
915
  </optgroup>
916
- <optgroup label="SeeDream Edit - NSFW OK">
917
- <option value="seedream-4.5-edit">SeeDream v4.5 Edit (Best Quality)</option>
918
  <option value="seedream-4-edit">SeeDream v4 Edit</option>
919
- </optgroup>
920
- <optgroup label="WAN Edit (Alibaba)">
921
  <option value="wan-2.6-edit">WAN 2.6 Edit</option>
 
 
 
 
 
 
922
  <option value="wan-2.5-edit">WAN 2.5 Edit</option>
923
  <option value="wan-2.2-edit">WAN 2.2 Edit</option>
924
- </optgroup>
925
- <optgroup label="Qwen Edit (WaveSpeed)">
926
  <option value="qwen-edit-lora">Qwen Edit + LoRA</option>
927
- <option value="qwen-edit-angles">Qwen Multi-Angle Edit</option>
928
- <option value="qwen-layered">Qwen Layered</option>
929
- </optgroup>
930
- <optgroup label="GPT Image Edit (OpenAI)">
931
- <option value="gpt-image-1.5-edit">GPT Image 1.5 Edit (Highest Quality)</option>
932
- <option value="gpt-image-1-edit">GPT Image 1 Edit</option>
933
- <option value="gpt-image-1-mini-edit">GPT Image 1 Mini Edit (Fastest)</option>
934
- </optgroup>
935
- <optgroup label="NanoBanana Edit (Google)">
936
  <option value="nano-banana-pro-edit">NanoBanana Pro Edit</option>
937
- <option value="nano-banana-edit">NanoBanana Edit</option>
938
- </optgroup>
939
- <optgroup label="Kling Edit (Kuaishou)">
940
  <option value="kling-o3-edit">Kling O3 Edit</option>
941
- </optgroup>
942
- <optgroup label="Dreamina Edit (ByteDance)">
943
  <option value="dreamina-3-edit">Dreamina v3 Edit</option>
944
  </optgroup>
945
  </select>
946
  <div style="font-size:11px;color:var(--text-secondary);margin-top:4px">
947
- Upload a reference photo and describe what you want. The model preserves identity, face, and pose while applying your prompt.
948
  </div>
949
  </div>
950
 
@@ -953,109 +936,71 @@ select { cursor: pointer; }
953
  <div id="pod-status-inline" style="padding:8px 12px; background:var(--bg-primary); border-radius:6px; margin-bottom:12px; font-size:13px">
954
  <span id="pod-status-indicator">Checking pod status...</span>
955
  </div>
956
- <label>Model</label>
957
- <select id="pod-model-select" onchange="updatePodModelInfo()">
958
- <option value="flux">FLUX.2 Dev (Best for realistic images)</option>
959
- <option value="wan-t2i">WAN 2.2 T2I (Good for stylized/anime)</option>
960
  </select>
961
- <label style="margin-top:8px">LoRA Model (trained character)</label>
962
  <select id="pod-lora-select">
963
- <option value="">None - Base model only</option>
964
  </select>
965
  <div style="font-size:11px;color:var(--text-secondary);margin-top:4px">
966
- Select your trained LoRA to generate images of your character. Start the pod in Status page first.
967
  </div>
968
  </div>
969
 
970
  <!-- Image to Video settings -->
971
  <div id="img2video-section" style="display:none">
972
- <div class="section-title">Source Image</div>
973
  <div class="drop-zone" id="video-drop-zone" onclick="document.getElementById('video-file-input').click()">
974
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" style="width:32px;height:32px;opacity:0.5;margin-bottom:8px"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="17 8 12 3 7 8"/><line x1="12" y1="3" x2="12" y2="15"/></svg>
975
- <div>Drop image here or click to browse</div>
976
- <div style="font-size:11px;margin-top:4px">This image will be animated into a video</div>
977
  </div>
978
  <input type="file" id="video-file-input" accept="image/*" style="display:none" onchange="handleVideoImage(this)">
979
  <div id="video-preview" style="display:none; margin-top:8px">
980
  <img id="video-preview-img" style="max-width:100%; border-radius:6px">
981
  </div>
982
- <div class="section-title" style="margin-top:12px">Video Settings</div>
983
- <div style="margin-bottom:8px">
984
- <label>Backend</label>
985
- <div id="video-backend-chips" class="chips" style="margin-top:4px">
986
- <div class="chip selected" onclick="selectVideoBackend(this, 'cloud')">Cloud API (WaveSpeed)</div>
987
- <div class="chip" onclick="selectVideoBackend(this, 'pod')">RunPod (WAN 2.2)</div>
988
- </div>
989
- </div>
990
- <div id="video-cloud-model-select">
991
- <label>Video Model</label>
992
- <select id="video-cloud-model">
993
- <optgroup label="⭐ Kling 3.0 (Higgsfield) - Best Quality">
994
- <option value="kling-3.0-pro">Kling 3.0 Pro (15s, Audio)</option>
995
- <option value="kling-3.0">Kling 3.0 (Up to 15s)</option>
996
- </optgroup>
997
- <optgroup label=" Premium (Higgsfield)">
998
- <option value="sora-2-hf">Sora 2 (OpenAI via Higgsfield)</option>
999
- <option value="veo-3.1-hf">Veo 3.1 (Google via Higgsfield)</option>
1000
- </optgroup>
1001
- <optgroup label="Higgsfield (Cinematic Motion)">
1002
- <option value="higgsfield-dop">Higgsfield DoP (5s Cinematic)</option>
1003
- <option value="higgsfield-dop-turbo">Higgsfield DoP Turbo (Fast)</option>
1004
- </optgroup>
1005
- <optgroup label="WAN 2.6 I2V (Alibaba)">
1006
- <option value="wan-2.6-i2v-pro" selected>WAN 2.6 I2V Pro (Best)</option>
1007
- <option value="wan-2.6-i2v">WAN 2.6 I2V</option>
1008
- <option value="wan-2.6-i2v-flash">WAN 2.6 I2V Flash (Fast)</option>
1009
- </optgroup>
1010
- <optgroup label="WAN 2.5 I2V (Alibaba)">
1011
- <option value="wan-2.5-i2v">WAN 2.5 I2V</option>
1012
- </optgroup>
1013
- <optgroup label="WAN 2.2 I2V">
1014
- <option value="wan-2.2-i2v-1080p">WAN 2.2 I2V 1080p</option>
1015
- <option value="wan-2.2-i2v-720p">WAN 2.2 I2V 720p</option>
1016
- </optgroup>
1017
- <optgroup label="Kling (WaveSpeed)">
1018
- <option value="kling-o3-pro">Kling O3 Pro</option>
1019
- <option value="kling-o3">Kling O3</option>
1020
- </optgroup>
1021
- <optgroup label="Seedance (ByteDance)">
1022
- <option value="seedance-1.5-pro">Seedance 1.5 Pro</option>
1023
- </optgroup>
1024
- <optgroup label="Dreamina I2V (ByteDance)">
1025
- <option value="dreamina-i2v-1080p">Dreamina I2V 1080p</option>
1026
- <option value="dreamina-i2v-720p">Dreamina I2V 720p</option>
1027
- </optgroup>
1028
- <optgroup label="Veo (Google)">
1029
- <option value="veo-3.1">Veo 3.1</option>
1030
- </optgroup>
1031
- <optgroup label="Sora (OpenAI)">
1032
- <option value="sora-2">Sora 2</option>
1033
- </optgroup>
1034
- <optgroup label="Vidu">
1035
- <option value="vidu-q3">Vidu Q3 Turbo</option>
1036
- </optgroup>
1037
- </select>
1038
- </div>
1039
- <div style="display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:8px">
1040
- <div>
1041
- <label>Duration</label>
1042
- <select id="video-duration">
1043
- <option value="41">~2 seconds (41 frames)</option>
1044
- <option value="81" selected>~3 seconds (81 frames)</option>
1045
- <option value="121">~5 seconds (121 frames)</option>
1046
- </select>
1047
- </div>
1048
- <div>
1049
- <label>FPS</label>
1050
- <select id="video-fps">
1051
- <option value="16">16 fps</option>
1052
- <option value="24" selected>24 fps</option>
1053
- </select>
1054
- </div>
1055
- </div>
1056
- <div id="video-note" style="font-size:11px;color:var(--text-secondary);margin-top:8px">
1057
- Cloud API: Fast generation via WaveSpeed. RunPod: Uses WAN 2.2 I2V (~2 sec per frame).
1058
- </div>
1059
  </div>
1060
 
1061
  <!-- Reference image upload for img2img -->
@@ -1105,29 +1050,39 @@ select { cursor: pointer; }
1105
  <div class="section-title">Settings</div>
1106
  <div class="row" style="display:grid; grid-template-columns:1fr 1fr; gap:8px;">
1107
  <div>
1108
- <label>Seed (-1 = random)</label>
1109
- <input type="number" id="gen-seed" value="-1">
 
 
 
 
 
 
1110
  </div>
1111
  <div>
1112
- <label>Steps</label>
1113
- <input type="number" id="gen-steps" value="28">
1114
  </div>
1115
  </div>
1116
- <label>CFG Scale</label>
1117
- <div class="slider-row">
1118
- <input type="range" id="gen-cfg" min="1" max="20" step="0.5" value="7" oninput="this.nextElementSibling.textContent=this.value">
1119
- <span class="value">7</span>
1120
- </div>
1121
- <div class="row" style="display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:8px;">
1122
- <div>
1123
- <label>Width</label>
1124
- <input type="number" id="gen-width" value="832">
1125
- </div>
1126
- <div>
1127
- <label>Height</label>
1128
- <input type="number" id="gen-height" value="1216">
 
 
 
 
1129
  </div>
1130
- </div>
1131
  </div>
1132
 
1133
  <button class="btn btn-primary" id="generate-btn" onclick="doGenerate()">
@@ -2043,6 +1998,20 @@ function selectBackend(chip, backend) {
2043
  updateCloudModelVisibility();
2044
  }
2045
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2046
  function selectVideoBackend(chip, backend) {
2047
  chip.parentElement.querySelectorAll('.chip').forEach(c => c.classList.remove('selected'));
2048
  chip.classList.add('selected');
@@ -2065,11 +2034,21 @@ function updateCloudModelVisibility() {
2065
  const isCloud = selectedBackend === 'cloud';
2066
  const isPod = selectedBackend === 'pod';
2067
  const isImg2img = selectedMode === 'img2img';
 
 
 
 
 
 
 
 
 
 
2068
  // Show txt2img cloud models when cloud + txt2img
2069
  document.getElementById('cloud-model-select').style.display = (isCloud && !isImg2img) ? '' : 'none';
2070
  // Show edit cloud models when cloud + img2img
2071
  document.getElementById('cloud-edit-model-select').style.display = (isCloud && isImg2img) ? '' : 'none';
2072
- // Show pod settings when pod backend selected
2073
  document.getElementById('pod-settings-section').style.display = isPod ? '' : 'none';
2074
  if (isPod) loadPodLorasForGeneration();
2075
  // Show denoise slider only for local img2img (cloud edit doesn't use denoise)
 
876
  </div>
877
 
878
  <div id="cloud-model-select" style="display:none">
879
+ <label>Model</label>
880
  <select id="gen-cloud-model">
881
+ <optgroup label="Recommended">
882
+ <option value="seedream-4.5" selected>SeeDream v4.5 (Best)</option>
883
+ <option value="gpt-image-1.5">GPT Image 1.5</option>
884
+ <option value="nano-banana-pro">NanoBanana Pro</option>
885
+ </optgroup>
886
+ <optgroup label="NSFW Friendly">
887
  <option value="seedream-4">SeeDream v4</option>
888
  <option value="seedream-3.1">SeeDream v3.1</option>
889
  </optgroup>
890
+ <optgroup label="Fast">
891
+ <option value="gpt-image-1-mini">GPT Image Mini</option>
 
 
 
 
 
892
  <option value="nano-banana">NanoBanana</option>
893
  </optgroup>
894
+ <optgroup label="Other">
895
  <option value="kling-image-o3">Kling Image O3</option>
896
+ <option value="wan-2.6">WAN 2.6</option>
 
 
897
  <option value="wan-2.5">WAN 2.5</option>
 
 
898
  <option value="qwen-image">Qwen Image</option>
899
  <option value="dreamina-3.1">Dreamina v3.1</option>
 
900
  </optgroup>
901
  </select>
902
  </div>
903
 
904
  <div id="cloud-edit-model-select" style="display:none">
905
+ <label>Model</label>
906
  <select id="gen-cloud-edit-model">
907
+ <optgroup label="Recommended">
908
+ <option value="seedream-4.5-edit" selected>SeeDream v4.5 Edit (Best)</option>
909
+ <option value="higgsfield-soul">Higgsfield Soul (Faces)</option>
910
+ <option value="gpt-image-1.5-edit">GPT Image 1.5 Edit</option>
911
  </optgroup>
912
+ <optgroup label="NSFW Friendly">
 
913
  <option value="seedream-4-edit">SeeDream v4 Edit</option>
 
 
914
  <option value="wan-2.6-edit">WAN 2.6 Edit</option>
915
+ </optgroup>
916
+ <optgroup label="Fast">
917
+ <option value="gpt-image-1-mini-edit">GPT Image Mini Edit</option>
918
+ <option value="nano-banana-edit">NanoBanana Edit</option>
919
+ </optgroup>
920
+ <optgroup label="Other">
921
  <option value="wan-2.5-edit">WAN 2.5 Edit</option>
922
  <option value="wan-2.2-edit">WAN 2.2 Edit</option>
 
 
923
  <option value="qwen-edit-lora">Qwen Edit + LoRA</option>
 
 
 
 
 
 
 
 
 
924
  <option value="nano-banana-pro-edit">NanoBanana Pro Edit</option>
 
 
 
925
  <option value="kling-o3-edit">Kling O3 Edit</option>
 
 
926
  <option value="dreamina-3-edit">Dreamina v3 Edit</option>
927
  </optgroup>
928
  </select>
929
  <div style="font-size:11px;color:var(--text-secondary);margin-top:4px">
930
+ Upload a reference image and describe changes. The model preserves faces and poses.
931
  </div>
932
  </div>
933
 
 
936
  <div id="pod-status-inline" style="padding:8px 12px; background:var(--bg-primary); border-radius:6px; margin-bottom:12px; font-size:13px">
937
  <span id="pod-status-indicator">Checking pod status...</span>
938
  </div>
939
+ <label>Base Model</label>
940
+ <select id="pod-model-select">
941
+ <option value="flux">FLUX.2 Dev (Realistic)</option>
942
+ <option value="wan-t2i">WAN 2.2 (Stylized/Anime)</option>
943
  </select>
944
+ <label style="margin-top:8px">Your LoRA</label>
945
  <select id="pod-lora-select">
946
+ <option value="">None (Base model only)</option>
947
  </select>
948
  <div style="font-size:11px;color:var(--text-secondary);margin-top:4px">
949
+ Start the pod in Status page first.
950
  </div>
951
  </div>
952
 
953
  <!-- Image to Video settings -->
954
  <div id="img2video-section" style="display:none">
955
+ <div class="section-title">Upload Image</div>
956
  <div class="drop-zone" id="video-drop-zone" onclick="document.getElementById('video-file-input').click()">
957
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" style="width:32px;height:32px;opacity:0.5;margin-bottom:8px"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="17 8 12 3 7 8"/><line x1="12" y1="3" x2="12" y2="15"/></svg>
958
+ <div>Drop image or click to upload</div>
 
959
  </div>
960
  <input type="file" id="video-file-input" accept="image/*" style="display:none" onchange="handleVideoImage(this)">
961
  <div id="video-preview" style="display:none; margin-top:8px">
962
  <img id="video-preview-img" style="max-width:100%; border-radius:6px">
963
  </div>
964
+
965
+ <div class="section-title" style="margin-top:16px">Video Model</div>
966
+ <select id="video-cloud-model" style="margin-top:0">
967
+ <optgroup label="Recommended">
968
+ <option value="wan-2.6-i2v-pro" selected>WAN 2.6 Pro ($0.05/s)</option>
969
+ <option value="wan-2.6-i2v-flash">WAN 2.6 Flash (Fast)</option>
970
+ <option value="kling-o3-pro">Kling O3 Pro</option>
971
+ </optgroup>
972
+ <optgroup label="Premium (Higgsfield - requires API key)">
973
+ <option value="kling-3.0-pro">Kling 3.0 Pro (15s + Audio)</option>
974
+ <option value="kling-3.0">Kling 3.0</option>
975
+ <option value="sora-2-hf">Sora 2</option>
976
+ <option value="veo-3.1-hf">Veo 3.1</option>
977
+ </optgroup>
978
+ <optgroup label="Budget Friendly">
979
+ <option value="wan-2.2-i2v-720p">WAN 2.2 720p ($0.01/s)</option>
980
+ <option value="wan-2.2-i2v-1080p">WAN 2.2 1080p</option>
981
+ <option value="wan-2.5-i2v">WAN 2.5</option>
982
+ </optgroup>
983
+ <optgroup label="Cinematic">
984
+ <option value="higgsfield-dop">Higgsfield DoP (5s)</option>
985
+ <option value="seedance-1.5-pro">Seedance Pro</option>
986
+ <option value="dreamina-i2v-1080p">Dreamina 1080p</option>
987
+ </optgroup>
988
+ <optgroup label="Other">
989
+ <option value="kling-o3">Kling O3</option>
990
+ <option value="veo-3.1">Veo 3.1 (WaveSpeed)</option>
991
+ <option value="sora-2">Sora 2 (WaveSpeed)</option>
992
+ <option value="vidu-q3">Vidu Q3</option>
993
+ </optgroup>
994
+ </select>
995
+
996
+ <label style="margin-top:12px">Duration</label>
997
+ <select id="video-duration">
998
+ <option value="41">2 seconds</option>
999
+ <option value="81" selected>3 seconds</option>
1000
+ <option value="121">5 seconds</option>
1001
+ <option value="241">10 seconds</option>
1002
+ <option value="361">15 seconds</option>
1003
+ </select>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1004
  </div>
1005
 
1006
  <!-- Reference image upload for img2img -->
 
1050
  <div class="section-title">Settings</div>
1051
  <div class="row" style="display:grid; grid-template-columns:1fr 1fr; gap:8px;">
1052
  <div>
1053
+ <label>Aspect Ratio</label>
1054
+ <select id="gen-aspect" onchange="updateDimensions()">
1055
+ <option value="9:16" selected>Portrait (9:16)</option>
1056
+ <option value="2:3">Portrait (2:3)</option>
1057
+ <option value="1:1">Square (1:1)</option>
1058
+ <option value="3:2">Landscape (3:2)</option>
1059
+ <option value="16:9">Landscape (16:9)</option>
1060
+ </select>
1061
  </div>
1062
  <div>
1063
+ <label>Seed (-1 = random)</label>
1064
+ <input type="number" id="gen-seed" value="-1">
1065
  </div>
1066
  </div>
1067
+ <!-- Hidden fields for actual dimensions -->
1068
+ <input type="hidden" id="gen-width" value="832">
1069
+ <input type="hidden" id="gen-height" value="1216">
1070
+ <!-- Advanced settings (collapsed by default) -->
1071
+ <details style="margin-top:12px">
1072
+ <summary style="cursor:pointer;color:var(--text-secondary);font-size:12px">Advanced Settings</summary>
1073
+ <div style="padding-top:8px">
1074
+ <div class="row" style="display:grid; grid-template-columns:1fr 1fr; gap:8px;">
1075
+ <div>
1076
+ <label>Steps</label>
1077
+ <input type="number" id="gen-steps" value="28">
1078
+ </div>
1079
+ <div>
1080
+ <label>CFG Scale</label>
1081
+ <input type="number" id="gen-cfg" value="7" min="1" max="20" step="0.5">
1082
+ </div>
1083
+ </div>
1084
  </div>
1085
+ </details>
1086
  </div>
1087
 
1088
  <button class="btn btn-primary" id="generate-btn" onclick="doGenerate()">
 
1998
  updateCloudModelVisibility();
1999
  }
2000
 
2001
+ function updateDimensions() {
2002
+ const aspect = document.getElementById('gen-aspect').value;
2003
+ const dimensions = {
2004
+ '9:16': [832, 1216],
2005
+ '2:3': [832, 1248],
2006
+ '1:1': [1024, 1024],
2007
+ '3:2': [1248, 832],
2008
+ '16:9': [1216, 832],
2009
+ };
2010
+ const [w, h] = dimensions[aspect] || [832, 1216];
2011
+ document.getElementById('gen-width').value = w;
2012
+ document.getElementById('gen-height').value = h;
2013
+ }
2014
+
2015
  function selectVideoBackend(chip, backend) {
2016
  chip.parentElement.querySelectorAll('.chip').forEach(c => c.classList.remove('selected'));
2017
  chip.classList.add('selected');
 
2034
  const isCloud = selectedBackend === 'cloud';
2035
  const isPod = selectedBackend === 'pod';
2036
  const isImg2img = selectedMode === 'img2img';
2037
+ const isVideo = selectedMode === 'img2video';
2038
+
2039
+ // Hide all model selectors for video mode (video has its own selector)
2040
+ if (isVideo) {
2041
+ document.getElementById('cloud-model-select').style.display = 'none';
2042
+ document.getElementById('cloud-edit-model-select').style.display = 'none';
2043
+ document.getElementById('pod-settings-section').style.display = 'none';
2044
+ return;
2045
+ }
2046
+
2047
  // Show txt2img cloud models when cloud + txt2img
2048
  document.getElementById('cloud-model-select').style.display = (isCloud && !isImg2img) ? '' : 'none';
2049
  // Show edit cloud models when cloud + img2img
2050
  document.getElementById('cloud-edit-model-select').style.display = (isCloud && isImg2img) ? '' : 'none';
2051
+ // Show pod settings when pod backend selected (not in video mode)
2052
  document.getElementById('pod-settings-section').style.display = isPod ? '' : 'none';
2053
  if (isPod) loadPodLorasForGeneration();
2054
  // Show denoise slider only for local img2img (cloud edit doesn't use denoise)