diff --git a/studio/frontend/src/features/images/images-page.tsx b/studio/frontend/src/features/images/images-page.tsx
index b79c2098cc..e4b304c64e 100644
--- a/studio/frontend/src/features/images/images-page.tsx
+++ b/studio/frontend/src/features/images/images-page.tsx
@@ -611,7 +611,9 @@ export function ImagesPage() {
for (let i = 0; i < count; i++) {
const res = await generateDiffusionImage({
prompt: prompt.trim(),
- negative_prompt: negativePrompt.trim() || undefined,
+ // Only send a negative prompt when guidance uses it, so the recipe
+ // doesn't record one the model ignored.
+ negative_prompt: guidance > 0 ? negativePrompt.trim() || undefined : undefined,
width: w,
height: h,
steps,
@@ -635,8 +637,9 @@ export function ImagesPage() {
return (
- {/* ── Top: the chat-style model selector (header padding mirrors chat). The
- load progress shows in a chat-style toast, not here. ── */}
+ {/* ── Top: the model selector, kept at the chat tab's exact position so the
+ shared element matches. The load progress shows in a chat-style toast,
+ not here. ── */}
- {/* ── Controls rail + preview canvas ─────────────────── */}
-
+ {/* ── Controls rail + preview canvas. Padding mirrors the other tabs
+ (Export, Data Recipes): px-5 / sm:px-9, with a roomy bottom. ── */}
+
}
title="Generate"
@@ -662,17 +666,21 @@ export function ImagesPage() {
-
-
+ {/* A negative prompt only does anything with guidance on, so hide it at
+ guidance 0 (Z-Image-Turbo's default) instead of showing a dead field. */}
+ {guidance > 0 && (
+
+
+ )}