@nodaro/prompts 1.33.0 → 1.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -23153,6 +23153,16 @@ function applyTemplate(template, vars) {
23153
23153
  template
23154
23154
  );
23155
23155
  }
23156
+
23157
+ // src/unbound-reference-tokens.ts
23158
+ function unboundReferenceTokenText(label) {
23159
+ return label ?? "";
23160
+ }
23161
+ function tidyReferenceTokenGaps(prompt) {
23162
+ return prompt.replace(/[^\S\r\n]{2,}/g, " ").trim();
23163
+ }
23164
+
23165
+ // src/prompt-builder.ts
23156
23166
  function composeIdentityDescPart(subject, canonicalDesc, elementInjection) {
23157
23167
  const parts = [];
23158
23168
  const c = canonicalDesc?.trim();
@@ -24292,7 +24302,11 @@ ${directives}`;
24292
24302
  finalPrompt = reordered.prompt;
24293
24303
  }
24294
24304
  const refsToSend2 = supportsRefs2 && finalUrls.length > 0 ? finalUrls : void 0;
24295
- return { prompt: finalPrompt, nativeNegativePrompt: nativeNegativePrompt2, referenceImageUrls: refsToSend2 };
24305
+ const assembledPrompt = dropUnwiredImageTokens(
24306
+ finalPrompt,
24307
+ (n) => Boolean(tokenFinalSlot(n, nonCharacterRefs, finalIndexByUrl))
24308
+ );
24309
+ return { prompt: assembledPrompt, nativeNegativePrompt: nativeNegativePrompt2, referenceImageUrls: refsToSend2 };
24296
24310
  }
24297
24311
  const charDescs = characterDefs.filter((c) => c.type === "description" && c.description).map((c) => {
24298
24312
  let templateKey;
@@ -24360,6 +24374,7 @@ ${directives}`;
24360
24374
  const supportsRefs = MODELS_WITH_REFERENCE_IMAGE_SUPPORT.has(provider);
24361
24375
  const refsToSend = supportsRefs && allRefs.length > 0 ? allRefs : void 0;
24362
24376
  prompt = expandImagePositionRefs(prompt, allRefs.length);
24377
+ prompt = dropUnwiredImageTokens(prompt, (n) => hasImageAt(n, allRefs.length));
24363
24378
  return { prompt, nativeNegativePrompt, referenceImageUrls: refsToSend };
24364
24379
  }
24365
24380
  function buildImagePromptSegments(config2, bodySegments) {
@@ -24384,6 +24399,22 @@ var STRICT_DEFAULT_SOURCES = /* @__PURE__ */ new Set([
24384
24399
  "wired-location"
24385
24400
  ]);
24386
24401
  var IMAGE_TOKEN_PATTERN = /\{image:(\d+)(?::([^}\n]+))?\}/gi;
24402
+ function tokenFinalSlot(n, refs, finalIndexByUrl) {
24403
+ const ref = refs[n - 1];
24404
+ return ref?.url ? finalIndexByUrl.get(ref.url) : void 0;
24405
+ }
24406
+ function hasImageAt(n, count) {
24407
+ return n >= 1 && n <= count;
24408
+ }
24409
+ function dropUnwiredImageTokens(prompt, isWired) {
24410
+ let dropped = false;
24411
+ const out = prompt.replace(IMAGE_TOKEN_PATTERN, (match, num, label) => {
24412
+ if (isWired(parseInt(num, 10))) return match;
24413
+ dropped = true;
24414
+ return unboundReferenceTokenText(label);
24415
+ });
24416
+ return dropped ? tidyReferenceTokenGaps(out) : prompt;
24417
+ }
24387
24418
  function defaultFidelityForSource(source) {
24388
24419
  if (!source) return "balanced";
24389
24420
  return STRICT_DEFAULT_SOURCES.has(source) ? "strict" : "balanced";
@@ -24541,9 +24572,7 @@ function expandImageRefTokens(prompt, imageCount) {
24541
24572
  }
24542
24573
  function expandImageRefTokensForRefs(prompt, refs, finalIndexByUrl) {
24543
24574
  return prompt.replace(IMAGE_TOKEN_PATTERN, (match, num, label) => {
24544
- const n = parseInt(num, 10);
24545
- const ref = refs[n - 1];
24546
- const finalIdx = ref?.url ? finalIndexByUrl.get(ref.url) : void 0;
24575
+ const finalIdx = tokenFinalSlot(parseInt(num, 10), refs, finalIndexByUrl);
24547
24576
  if (!finalIdx) return match;
24548
24577
  return label ? `Image ${finalIdx} (${label})` : `Image ${finalIdx}`;
24549
24578
  });
@@ -24558,9 +24587,7 @@ function hybridRolePhrase(label, letter) {
24558
24587
  function expandImageRefTokensHybrid(prompt, refs, finalIndexByUrl) {
24559
24588
  const splices = [];
24560
24589
  for (const m of prompt.matchAll(IMAGE_TOKEN_PATTERN)) {
24561
- const n = parseInt(m[1], 10);
24562
- const ref = refs[n - 1];
24563
- const finalIdx = ref?.url ? finalIndexByUrl.get(ref.url) : void 0;
24590
+ const finalIdx = tokenFinalSlot(parseInt(m[1], 10), refs, finalIndexByUrl);
24564
24591
  if (!finalIdx) continue;
24565
24592
  splices.push({
24566
24593
  offset: m.index ?? 0,
@@ -24592,7 +24619,7 @@ function buildIdentityDirectives(prompt, refs, meta3 = [], suppressedCanonicalLo
24592
24619
  function expandImagePositionRefs(prompt, imageCount, names) {
24593
24620
  return prompt.replace(IMAGE_TOKEN_PATTERN, (match, num, label) => {
24594
24621
  const n = parseInt(num, 10);
24595
- if (n < 1 || n > imageCount) return match;
24622
+ if (!hasImageAt(n, imageCount)) return match;
24596
24623
  if (label) return `Image ${n} (${label})`;
24597
24624
  if (names && names[n - 1]) return names[n - 1];
24598
24625
  return `Image ${n}`;
@@ -24992,13 +25019,15 @@ function resolveRefIdTokens(prompt, ctx) {
24992
25019
  var REFERENCE_TOKEN_RE = /\{(image|video|audio):(\d+)(?::([a-zA-Z0-9_ -]+))?\}/gi;
24993
25020
  function resolveReferenceTokens(prompt, counts) {
24994
25021
  if (!prompt) return prompt;
24995
- return prompt.replace(REFERENCE_TOKEN_RE, (_match, rawKind, nStr, label) => {
24996
- const kind = rawKind.toLowerCase();
24997
- const n = parseInt(nStr, 10);
24998
- if (n < 1 || n > counts[kind]) return label ?? "";
24999
- if (label) return REF_BINDING[kind](label, n);
25000
- return `@${kind}_${n}`;
25001
- }).replace(/[^\S\r\n]{2,}/g, " ").trim() || void 0;
25022
+ return tidyReferenceTokenGaps(
25023
+ prompt.replace(REFERENCE_TOKEN_RE, (_match, rawKind, nStr, label) => {
25024
+ const kind = rawKind.toLowerCase();
25025
+ const n = parseInt(nStr, 10);
25026
+ if (n < 1 || n > counts[kind]) return unboundReferenceTokenText(label);
25027
+ if (label) return REF_BINDING[kind](label, n);
25028
+ return `@${kind}_${n}`;
25029
+ })
25030
+ ) || void 0;
25002
25031
  }
25003
25032
  function resolveVideoCharacterMentionsHybrid(prompt, tokens, refs, offset) {
25004
25033
  const bySlug = /* @__PURE__ */ new Map();
@@ -41435,7 +41464,7 @@ var IMAGE_REFERENCE_PROMPT_DOCTRINE = {
41435
41464
 
41436
41465
  - \`{image:N:label}\` \u2192 expands server-side to \`Image N (label)\`, aligned with the numbered reference list sent to the provider.
41437
41466
  - \`{image:N}\` \u2192 \`Image N\` (no role named).
41438
- - A token whose N has no wired reference is left as literal text in the final prompt \u2014 visible on purpose, so fix the numbering instead of ignoring it.
41467
+ - A token whose N has no wired reference falls back to its label (\`{image:3:dog}\` \u2192 \`dog\`); a bare \`{image:N}\` is dropped. The prompt still runs but binds nothing at N, so check the numbering against what is wired.
41439
41468
 
41440
41469
  **How to compose**
41441
41470
  - The prompt should be little more than tokens plus glue words: \`{image:1:person} with {image:2:face}\`. The label tells the model what to TAKE from that image \u2014 \`person\`, \`face\`, \`background\`, \`settings\`, or a concrete garment/prop name (\`jacket\`).
@@ -41646,6 +41675,7 @@ var PROVIDER_CAPABILITIES = {
41646
41675
  "nano-banana": "Fast generation, style flexibility, reference image support",
41647
41676
  "nano-banana-pro": "Higher quality Nano Banana with better detail",
41648
41677
  "nano-banana-2": "Latest Nano Banana with resolution options (1K/2K/4K)",
41678
+ "nano-banana-2-1": "Nano Banana 2.1 \u2014 sharper quality, prompt adherence, character consistency and text rendering, 1K/2K/4K",
41649
41679
  "nano-banana-2-lite": "Fast, low-cost 1K generation for drafts and iteration",
41650
41680
  "gpt-image": "Creative concepts, illustration, variable quality tiers",
41651
41681
  "gpt-image-2": "Latest GPT Image \u2014 sharp text, photorealism, 1K/2K/4K resolution",
@@ -41661,6 +41691,7 @@ var PROVIDER_CAPABILITIES = {
41661
41691
  "seedream": "Artistic, painterly styles, creative interpretation",
41662
41692
  "seedream-5-lite": "Lighter Seedream, faster artistic generation",
41663
41693
  "seedream-5-pro": "Flagship Seedream \u2014 strongest instruction following, 2K via high quality",
41694
+ "seedream-5-flash": "Fast, low-cost Seedream 5 \u2014 quick drafts and iteration at 1K or 2K",
41664
41695
  "z-image": "Experimental, novel generation approaches",
41665
41696
  "wan-2.7": "Wan 2.7 T2I \u2014 1K/2K/4K, up to 9 ref images",
41666
41697
  "wan-2.7-pro": "Wan 2.7 Pro T2I \u2014 higher quality, 1K/2K/4K",
@@ -41685,6 +41716,7 @@ var PROVIDER_CAPABILITIES = {
41685
41716
  "seedream-edit": "Artistic style editing",
41686
41717
  "seedream-5-lite-i2i": "Light artistic transformation",
41687
41718
  "seedream-5-pro-i2i": "Pro-grade instruction-based edits, multi-reference",
41719
+ "seedream-5-flash-i2i": "Fast, low-cost Seedream edits \u2014 up to 10 input images",
41688
41720
  "flux-kontext": "Character-consistent edits with reference awareness",
41689
41721
  "flux-kontext-max": "Premium character-consistent editing",
41690
41722
  "kontext-multi": "Multi-image Kontext via Replicate \u2014 up to 4 refs, no safety filter",
@@ -41709,6 +41741,7 @@ var PROVIDER_CAPABILITIES = {
41709
41741
  "seedream-edit": "Artistic style editing",
41710
41742
  "seedream-5-lite-i2i": "Light artistic transformation",
41711
41743
  "seedream-5-pro-i2i": "Pro-grade instruction-based edits, multi-reference",
41744
+ "seedream-5-flash-i2i": "Fast, low-cost Seedream edits \u2014 up to 10 input images",
41712
41745
  "flux-kontext": "Character-consistent edits with reference awareness",
41713
41746
  "flux-kontext-max": "Premium character-consistent editing",
41714
41747
  "kontext-multi": "Multi-image Kontext via Replicate \u2014 up to 4 refs, no safety filter",
@@ -42057,7 +42090,6 @@ var STYLIZED_SUBJECT = [
42057
42090
  name: "Cartoon Person, Real World",
42058
42091
  description: "Subject \u2192 3D cartoon, rest stays photoreal.",
42059
42092
  data: {
42060
- provider: "nano-banana-pro",
42061
42093
  promptPrefix: "Restyle ONLY the person in the reference image into a polished 3D animated character \u2014 Pixar/Disney sensibility: soft subsurface skin shading, expressive oversized eyes, smoothly stylized hair, clean rounded forms. Preserve their identity, exact pose, expression, and framing. Everything else stays untouched and fully photorealistic: keep the original background, props, clothing fabric and texture, and the scene's real lighting, shadows, and color grade. Composite the stylized figure into the real plate so it sits naturally \u2014 matched light direction, contact shadows, and depth.",
42062
42094
  negativePrompt: "changing the background, altering the unstylized parts, restyling clothing fabric or props, relighting the scene, distorting the subject, changing identity or pose, flat 2D look, extra limbs, deformed hands, warped face"
42063
42095
  }
@@ -42067,7 +42099,6 @@ var STYLIZED_SUBJECT = [
42067
42099
  name: "Caricature, Real Photo",
42068
42100
  description: "Exaggerated cartoon head on a real scene.",
42069
42101
  data: {
42070
- provider: "nano-banana-pro",
42071
42102
  promptPrefix: "Turn ONLY the person into a playful hand-illustrated caricature: enlarge the head, exaggerate their most recognizable features, and amplify expression with bold, confident linework and clean cel-style shading \u2014 while keeping them clearly identifiable. Leave everything else exactly as shot and photorealistic: the body proportions below the neck, the clothing, the background, props, and the scene's real lighting and shadows remain unchanged. Blend the caricature head onto the real photo seamlessly with matched lighting and a believable neckline.",
42072
42103
  negativePrompt: "changing the background, altering the unstylized parts, restyling the body or clothing, relighting the scene, distorting the subject beyond intent, losing likeness, photorealistic head, harsh seam at the neck, deformed features"
42073
42104
  }
@@ -42077,7 +42108,6 @@ var STYLIZED_SUBJECT = [
42077
42108
  name: "Anime Person, Real Background",
42078
42109
  description: "Subject \u2192 2D anime, real environment.",
42079
42110
  data: {
42080
- provider: "nano-banana-pro",
42081
42111
  promptPrefix: "Restyle ONLY the person as a crisp 2D anime character \u2014 clean ink outlines, flat cel shading with sharp shadow shapes, glossy stylized hair, and expressive anime eyes \u2014 while preserving their identity, pose, expression, and framing. Keep the real-world background, environment, props, and the original photographic lighting, shadows, and color completely untouched and photorealistic. Integrate the 2D figure into the live-action plate so the light direction and contact shadows read naturally.",
42082
42112
  negativePrompt: "changing the background, altering the unstylized parts, restyling the environment or props, relighting the scene, distorting the subject, 3D render look, photorealistic skin on the subject, extra fingers, warped anatomy, broken outlines"
42083
42113
  }
@@ -42087,7 +42117,6 @@ var STYLIZED_SUBJECT = [
42087
42117
  name: "Real Person, Cartoon World",
42088
42118
  description: "Inverse \u2014 real subject, stylized world.",
42089
42119
  data: {
42090
- provider: "nano-banana-pro",
42091
42120
  promptPrefix: "Inverse stylization: keep the PERSON completely photorealistic and unchanged \u2014 real skin, hair, clothing, identity, pose, and framing all preserved exactly. Restyle ONLY the surrounding world into a vibrant, hand-crafted cartoon environment: simplified painterly shapes, bold saturated colors, soft graphic shading, and whimsical stylized props and scenery. Light the real person to match the cartoon world's color and direction so they sit convincingly inside it, with believable contact shadows.",
42092
42121
  negativePrompt: "stylizing or cartoonifying the person, altering the subject's skin, face, hair or clothing, distorting the subject, changing the subject's pose, photorealistic background, flat lifeless scene, harsh cut-out edges around the person"
42093
42122
  }
@@ -42097,19 +42126,21 @@ var STYLIZED_SUBJECT = [
42097
42126
  name: "Claymation Figure, Real Set",
42098
42127
  description: "Subject \u2192 clay figure, real surroundings.",
42099
42128
  data: {
42100
- provider: "nano-banana-pro",
42101
42129
  promptPrefix: "Restyle ONLY the person into a tactile stop-motion claymation figure \u2014 molded plasticine surface with visible fingerprints, tool marks, subtle seams, and a soft matte sheen, in the handmade spirit of Aardman puppets \u2014 while keeping their identity, pose, expression, and framing. Everything else stays exactly as shot and photorealistic: the real background, set, props, and the scene's natural lighting and shadows are unchanged. Seat the clay figure into the real plate with matched light direction and grounded contact shadows.",
42102
42130
  negativePrompt: "changing the background or set, altering the unstylized parts, restyling props, relighting the scene, distorting the subject, smooth plastic toy look, glossy CGI surface, melted or deformed figure, missing fingerprints, extra limbs"
42103
42131
  }
42104
42132
  }
42105
42133
  ];
42134
+ function editProviderFor(nodeType) {
42135
+ return nodeType === "modify-image" ? "gpt-image-2-5-flare-i2i" : "gpt-image-2-5-flare";
42136
+ }
42106
42137
  function stylizedSubjectFor(nodeType) {
42107
42138
  return STYLIZED_SUBJECT.map((p) => ({
42108
42139
  id: `${nodeType}/${p.slug}`,
42109
42140
  name: p.name,
42110
42141
  description: p.description,
42111
42142
  group: "Stylized Subject",
42112
- data: p.data
42143
+ data: { provider: editProviderFor(nodeType), ...p.data }
42113
42144
  }));
42114
42145
  }
42115
42146
  var IMAGE_EDITS = [
@@ -42118,7 +42149,6 @@ var IMAGE_EDITS = [
42118
42149
  name: "Remove Background",
42119
42150
  description: "Cut out the subject on white.",
42120
42151
  data: {
42121
- provider: "nano-banana-pro",
42122
42152
  promptPrefix: "Cleanly cut the main subject out of the reference image and place it on a pure, solid white background. Trace a crisp, accurate edge \u2014 preserve fine detail like hair strands, fur, and translucent or wispy edges \u2014 with no leftover background pixels and no color fringing. Keep the subject itself completely unchanged: same pose, lighting, color, and full silhouette, nothing cropped.",
42123
42153
  negativePrompt: "fringing, color halo, cut-off subject, leftover background, jagged or rough edges, missing hair detail, semi-transparent matte, drop shadow, gray or off-white background, altering the subject"
42124
42154
  }
@@ -42128,7 +42158,6 @@ var IMAGE_EDITS = [
42128
42158
  name: "Replace Background",
42129
42159
  description: "Swap in a new scene.",
42130
42160
  data: {
42131
- provider: "nano-banana-pro",
42132
42161
  prompt: "Replace the background behind the subject with {scene || a sunlit Mediterranean terrace}. Keep the subject perfectly unchanged \u2014 identity, pose, edges, and proportions intact \u2014 and composite it into the new scene so it looks truly photographed there: relight the subject's rim and ambient tones to match the new environment, cast believable contact shadows, and match perspective, depth of field, and color grade.",
42133
42162
  negativePrompt: "altering the subject, changing the subject's pose or proportions, fringing, halo, floating subject, missing or wrong-direction shadows, mismatched lighting, flat composite, harsh cut-out edges, perspective mismatch"
42134
42163
  }
@@ -42138,7 +42167,6 @@ var IMAGE_EDITS = [
42138
42167
  name: "Colorize B&W Photo",
42139
42168
  description: "Natural color from grayscale.",
42140
42169
  data: {
42141
- provider: "nano-banana-pro",
42142
42170
  promptPrefix: "Colorize this black-and-white photograph with natural, historically plausible color. Give skin realistic, even tones, and assign believable hues to clothing, foliage, sky, and materials. Preserve every original detail, grain, contrast, and the exact composition \u2014 add color only, never invent or remove content.",
42143
42171
  negativePrompt: "oversaturated, anachronistic colors, neon or cartoon tones, color bleeding outside edges, blotchy or uneven skin, lost detail, altered composition, added or hallucinated objects, washed-out contrast"
42144
42172
  }
@@ -42148,7 +42176,6 @@ var IMAGE_EDITS = [
42148
42176
  name: "Restore Old Photo",
42149
42177
  description: "Repair scratches, denoise, sharpen.",
42150
42178
  data: {
42151
- provider: "nano-banana-pro",
42152
42179
  promptPrefix: "Restore this old, damaged photograph: remove scratches, dust, creases, stains, and noise, repair torn or missing areas by reconstructing what is plainly there, and gently recover sharpness and tonal detail. Keep the result authentic and true to the original \u2014 preserve identity, era, natural film grain, and composition. Repair only; do not beautify, restyle, or invent new features.",
42153
42180
  negativePrompt: "over-smoothed, plastic skin, waxy or airbrushed look, hallucinated details, invented faces or objects, changing identity or age, removing authentic grain, modern restyling, oversharpening halos, altered composition"
42154
42181
  }
@@ -42158,7 +42185,6 @@ var IMAGE_EDITS = [
42158
42185
  name: "Relight Scene",
42159
42186
  description: "New lighting, same subject.",
42160
42187
  data: {
42161
- provider: "nano-banana-pro",
42162
42188
  prompt: "Relight the image with {lighting style || soft golden-hour key light from the left}. Re-derive highlights, shadows, ambient fill, and color temperature consistently across the whole frame for a believable, physically plausible result. Keep the subject, pose, expression, materials, and composition completely unchanged \u2014 only the lighting changes.",
42163
42189
  negativePrompt: "changing the subject, pose, expression, or composition, altering materials or clothing, flat or inconsistent lighting, blown-out highlights, crushed shadows, color casts on skin, double or contradictory light directions, repositioning anything"
42164
42190
  }
@@ -42168,7 +42194,6 @@ var IMAGE_EDITS = [
42168
42194
  name: "Restyle (whole image)",
42169
42195
  description: "Apply an art style to everything.",
42170
42196
  data: {
42171
- provider: "nano-banana-pro",
42172
42197
  prompt: "Restyle the entire image in a {art style || soft watercolor illustration} look, applying the style consistently to the subject, background, and every element. Keep the composition, subject placement, and the subject clearly recognizable \u2014 reinterpret texture, color, and rendering, not the underlying content or layout.",
42173
42198
  negativePrompt: "changing the composition or layout, moving or removing the subject, losing recognizability, applying the style to only part of the image, photorealistic patches, added or hallucinated objects, distorted anatomy, inconsistent style across the frame"
42174
42199
  }
@@ -42178,7 +42203,6 @@ var IMAGE_EDITS = [
42178
42203
  name: "Doodle Overlay",
42179
42204
  description: "Hand-drawn marker doodles on top \u2014 photo stays untouched.",
42180
42205
  data: {
42181
- provider: "nano-banana-pro",
42182
42206
  promptPrefix: "Layer playful hand-drawn doodles ON TOP of the reference photo while keeping every pixel of the underlying photograph completely unchanged \u2014 same people, same colors, same lighting, same crop. Doodle style: wobbly hand-drawn felt-tip marker lines in white with a few yellow accents, like quick sketches on a printed photo. Add: loose outline traces hugging one or two key shapes, small sparkles and stars, a hand-drawn thought cloud or speech bubble with a short witty handwritten phrase that reacts to what is actually happening in the photo, and simple arrows or underlines pointing at fun details. Outlines only \u2014 never fill shapes with color. Never cover faces or the main focal point; place doodles in empty areas like sky, walls or margins. Keep it balanced: four to seven doodle elements total, charming and confident, not cluttered. The photo is the hero \u2014 the doodles are the seasoning.",
42183
42207
  negativePrompt: "altered photo, restyled or recolored scene, redrawn subject, covered faces, filled color shapes, digital sticker or emoji look, vector clipart, cluttered doodles, garbled or misspelled handwriting, watermark, blurry"
42184
42208
  }
@@ -42188,7 +42212,6 @@ var IMAGE_EDITS = [
42188
42212
  name: "Doodle Overlay \xB7 Expressive",
42189
42213
  description: "Looser free-form doodles \u2014 the model improvises.",
42190
42214
  data: {
42191
- provider: "nano-banana-pro",
42192
42215
  promptPrefix: "Decorate the reference photo with expressive hand-drawn doodles layered on top, keeping the underlying photograph itself completely unchanged. Free, confident hand-drawn marker linework \u2014 wobbly outlines, sparkles, squiggles, little flames or hearts where they fit the mood, and a short handwritten phrase that responds cleverly to the content of the photo (never a generic clich\xE9). Mix of white and one or two bright accent colors. Outline style only, no filled shapes. Compose the doodles around the subject \u2014 never on top of faces or the focal point \u2014 using empty areas and edges. Loose, playful, zine-like energy: it should feel like a bored genius doodled on a printed photo. Keep the original image pixels intact beneath the doodle layer.",
42193
42216
  negativePrompt: "altered photo, restyled or recolored scene, covered faces, filled color blocks, sticker or clipart look, clich\xE9 phrases, garbled or misspelled handwriting, cluttered composition, watermark, blurry"
42194
42217
  }
@@ -42200,7 +42223,7 @@ function editsFor(nodeType) {
42200
42223
  name: p.name,
42201
42224
  description: p.description,
42202
42225
  group: "Edits",
42203
- data: p.data
42226
+ data: { provider: editProviderFor(nodeType), ...p.data }
42204
42227
  }));
42205
42228
  }
42206
42229
 
@@ -42213,7 +42236,7 @@ var GENERATE_IMAGE_PRESETS = [
42213
42236
  description: "Connect a sharp, well-lit photo \u2192 dense character sheet; reuse it as a reference for consistent shots.",
42214
42237
  group: "Reference Sheet",
42215
42238
  data: {
42216
- provider: "nano-banana-pro",
42239
+ provider: "gpt-image-2",
42217
42240
  aspectRatio: "16:9",
42218
42241
  resolution: "2K",
42219
42242
  promptPrefix: `Create a single high-resolution, densely packed character reference sheet titled "CHARACTER BOARD" using the attached photo of the person as the single source of truth for face, hair, beard, eyes, skin tone and body proportions. The same person must appear in every panel \u2014 same age, same features. Outfit identical to the attached photo across all panels. All on-image labels in ENGLISH. Editorial reference-board layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade character-design UI. The composition should feel organized but not rigidly locked: allow the main portrait, metadata, and supporting panels to shift position naturally within the board. The panel arrangement can vary from generation to generation while remaining readable, balanced, and premium. Design the board so it works cleanly in different aspect ratios without depending on a fixed left-column structure. Include: A large hero portrait or 3/4-length character image, accompanied by a detailed metadata block: NAME \xB7 AGE \xB7 HEIGHT \xB7 BUILD \xB7 HAIR \xB7 EYES \xB7 FEATURES \xB7 OUTFIT (describe the exact clothing from the attached photo) \xB7 CHARACTER \xB7 MOOD. Also include six content groupings \u2014 render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 \u2014 VIEWS (5 full-body shots, neutral pose, identical outfit and lighting, neutral tan backdrop): FRONT \xB7 3/4 LEFT \xB7 SIDE LEFT \xB7 BACK \xB7 3/4 RIGHT. PANEL 02 \u2014 EXPRESSIONS (5 tight headshots, same lighting): CALM \xB7 LAUGHING \xB7 INTENSE \xB7 CONTEMPLATIVE \xB7 CONFIDENT. PANEL 03 \u2014 DETAILS (3 macros): face/eyes close-up \xB7 hand close-up (showing ring, watch or cuff) \xB7 distinctive outfit detail. PANEL 04 \u2014 OUTFIT FLAT-LAYS (5 isolated product shots on dark background): outerwear \xB7 top \xB7 bottom \xB7 footwear \xB7 main accessory. PANEL 05 \u2014 LIGHTING / MOOD (4 same-pose portraits under different lighting): SOFT WINDOW LIGHT \xB7 GOLDEN HOUR \xB7 COOL BLUE NIGHT \xB7 DRAMATIC RIM-LIGHT. PANEL 06 \u2014 COLOR PALETTE: 6 swatches with HEX codes derived from the outfit and skin tones. Bottom caption: "Use this character board as a visual reference for consistent depiction of the character across all generations." Bottom-right tags: STYLE \xB7 Modern \xB7 Realistic \xB7 Cinematic.`,
@@ -42227,7 +42250,7 @@ var GENERATE_IMAGE_PRESETS = [
42227
42250
  description: "Connect a sharp photo \u2192 animation-ready pose & expression sheet; reuse it as a reference for consistent action.",
42228
42251
  group: "Reference Sheet",
42229
42252
  data: {
42230
- provider: "nano-banana-pro",
42253
+ provider: "gpt-image-2",
42231
42254
  aspectRatio: "16:9",
42232
42255
  resolution: "2K",
42233
42256
  promptPrefix: `Create a single high-resolution, densely packed pose reference sheet titled "POSE BOARD" using the attached photo of the person as the single source of truth for face, hair, eyes, skin tone, body proportions and outfit. The same person must appear in every panel \u2014 same age, same features, outfit identical to the attached photo across all panels. All on-image labels in ENGLISH. Editorial reference-board layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade animation-planning UI. The composition should feel organized but not rigidly locked: allow the hero figure, metadata, and supporting panels to shift position naturally within the board while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a large full-body hero shot in a relaxed standing pose with a metadata block: NAME \xB7 AGE \xB7 BUILD \xB7 HEIGHT \xB7 OUTFIT \xB7 POSE LANGUAGE \xB7 CENTER OF GRAVITY \xB7 DOMINANT HAND \xB7 PURPOSE. Also include five content groupings \u2014 render ALL five panel headings exactly as written, never merging or omitting a panel: PANEL 01 \u2014 BASIC POSES (5 full-body shots, identical outfit and lighting, neutral tan backdrop): STANDING \xB7 SITTING \xB7 WALKING \xB7 RUNNING \xB7 JUMPING. PANEL 02 \u2014 ACTION POSES (5 dynamic full-body shots with clear silhouettes): FIGHT STANCE \xB7 THROW \xB7 DODGE \xB7 CLIMB \xB7 LAND. PANEL 03 \u2014 EXPRESSIONS (5 tight headshots, same lighting): NEUTRAL \xB7 LAUGHING \xB7 ANGRY \xB7 SAD \xB7 SURPRISED. PANEL 04 \u2014 ANGLE COVERAGE (4 chest-up portraits): FRONT \xB7 3/4 \xB7 SIDE \xB7 BACK. PANEL 05 \u2014 COLOR PALETTE: 6 swatches with HEX codes derived from the outfit and skin tones. Bottom caption: "Use this pose board as a visual reference for consistent posing of the character across all generations." Bottom-right tags: STYLE \xB7 Modern \xB7 Realistic \xB7 Cinematic.`,
@@ -42241,7 +42264,7 @@ var GENERATE_IMAGE_PRESETS = [
42241
42264
  description: "Connect a photo \u2192 dense location sheet; reuse it as a reference for consistent scenes.",
42242
42265
  group: "Reference Sheet",
42243
42266
  data: {
42244
- provider: "nano-banana-pro",
42267
+ provider: "gpt-image-2",
42245
42268
  aspectRatio: "16:9",
42246
42269
  resolution: "2K",
42247
42270
  promptPrefix: `Create a single high-resolution, densely packed location reference sheet titled "LOCATION BOARD" using the attached photo of the location as the single source of truth for its architecture, atmosphere, lighting, materials and color palette. The space must be identical across every panel \u2014 same place, same materials, same era. All on-image labels in ENGLISH. Editorial location-reference board layout with a dark near-black background, thin yellow neon accent light on the far left, faint film-grain overlay, subtle cinematic interface elements, and production-grade location-scout UI. The composition should feel structured but not rigidly fixed: allow the hero location view, metadata, environmental studies, and supporting panels to shift position naturally within the board. The arrangement may vary from generation to generation while remaining readable, balanced, and premium. Design the board so it adapts cleanly to different aspect ratios without depending on a fixed left-column layout. Include a prominent hero shot of the location, ideally a wide establishing or defining view, accompanied by a detailed metadata block: NAME \xB7 TYPE (street / interior / exterior / forest) \xB7 ERA \xB7 SCALE (intimate / vast) ARCHITECTURE: (key features) MATERIALS: (stone, brick, wood, glass, etc.) ATMOSPHERE: (busy / quiet / eerie / romantic) DEFAULT TIME \xB7 DEFAULT WEATHER \xB7 PURPOSE (e.g. chase sequence, dialogue scene). Also include six content groupings \u2014 render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 \u2014 VIEWS (5 same-location shots, identical lighting): WIDE \xB7 MID \xB7 TIGHT \xB7 ALT ANGLE \xB7 OVERHEAD. PANEL 02 \u2014 TIME OF DAY (4 same-angle shots): DAWN \xB7 NOON \xB7 DUSK \xB7 NIGHT. PANEL 03 \u2014 DETAILS (2 macros): material/texture close-up \xB7 distinctive architectural detail. PANEL 04 \u2014 SET DRESSING / PROPS (5 isolated prop or signage studies on dark background): 5 key props or signage elements from the location. PANEL 05 \u2014 WEATHER / MOOD (4 same-angle shots): CLEAR SUNNY \xB7 OVERCAST \xB7 RAIN-SOAKED \xB7 MISTY FOG. PANEL 06 \u2014 COLOR PALETTE: 6 swatches with HEX codes from the location's dominant tones. Bottom caption: "Use this location board as a visual reference for consistent depiction of the environment across all generations." Bottom-right tags: STYLE \xB7 Modern \xB7 Realistic \xB7 Cinematic.`,
@@ -42255,7 +42278,7 @@ var GENERATE_IMAGE_PRESETS = [
42255
42278
  description: "Connect a photo \u2192 dense product sheet; reuse it as a reference for consistent shots.",
42256
42279
  group: "Reference Sheet",
42257
42280
  data: {
42258
- provider: "nano-banana-pro",
42281
+ provider: "gpt-image-2",
42259
42282
  aspectRatio: "16:9",
42260
42283
  resolution: "2K",
42261
42284
  promptPrefix: `Create a single high-resolution, densely packed product reference sheet titled "PRODUCT BOARD" using the attached photo of the product as the single source of truth for its shape, materials, colorway, proportions, branding and finish. The same product must appear in every panel \u2014 identical model, identical colorway and markings. All on-image labels in ENGLISH. Editorial product-reference layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade industrial-design UI. The composition should feel organized but not rigidly locked: allow the hero shot, metadata, and supporting panels to shift position naturally within the board while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a large hero product shot with a metadata block: NAME \xB7 CATEGORY \xB7 BRAND \xB7 DIMENSIONS \xB7 WEIGHT \xB7 MATERIALS \xB7 FINISH \xB7 KEY FEATURES \xB7 COLORWAY. Also include six content groupings \u2014 render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 \u2014 VIEWS (5 studio shots on a seamless background, identical lighting): FRONT \xB7 3/4 \xB7 SIDE \xB7 BACK \xB7 TOP. PANEL 02 \u2014 DETAILS (3 macros): material/texture close-up \xB7 seam/joint or mechanism \xB7 logo/branding detail. PANEL 03 \u2014 COLORWAYS (4 isolated shots of the same product in alternate finishes). PANEL 04 \u2014 SCALE (the product beside a common reference object, with a dimension callout). PANEL 05 \u2014 IN USE / CONTEXT (3 lifestyle shots in a real setting). PANEL 06 \u2014 COLOR PALETTE: 6 swatches with HEX codes from the product's materials and finish. Bottom caption: "Use this product board as a visual reference for consistent depiction of the product across all generations." Bottom-right tags: STYLE \xB7 Modern \xB7 Realistic \xB7 Studio.`,
@@ -42269,7 +42292,7 @@ var GENERATE_IMAGE_PRESETS = [
42269
42292
  description: "Connect a photo \u2192 dense wardrobe sheet; reuse it as a reference for consistent looks.",
42270
42293
  group: "Reference Sheet",
42271
42294
  data: {
42272
- provider: "nano-banana-pro",
42295
+ provider: "gpt-image-2",
42273
42296
  aspectRatio: "16:9",
42274
42297
  resolution: "2K",
42275
42298
  promptPrefix: `Create a single high-resolution, densely packed wardrobe reference sheet titled "OUTFIT BOARD" using the attached photo of the outfit as the single source of truth for its garments, fabrics, colorway, silhouette and styling. The same outfit must appear in every panel \u2014 identical garments, identical colors and trims. All on-image labels in ENGLISH. Editorial fashion-reference layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade stylist UI. The composition should feel organized but not rigidly locked: allow the hero look, metadata, and supporting panels to shift position naturally while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a hero full-look shot with a metadata block: LOOK NAME \xB7 STYLE \xB7 SEASON \xB7 FABRICS \xB7 PALETTE \xB7 FIT \xB7 OCCASION. Also include six content groupings \u2014 render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 \u2014 ON-BODY VIEWS (5 full-length shots, identical lighting): FRONT \xB7 3/4 LEFT \xB7 SIDE \xB7 BACK \xB7 3/4 RIGHT. PANEL 02 \u2014 FLAT-LAYS (5 isolated garment shots on a dark surface): top \xB7 bottom \xB7 outerwear \xB7 footwear \xB7 headwear. PANEL 03 \u2014 FABRIC & DETAIL (3 macros): weave/texture close-up \xB7 stitching or hardware \xB7 print or trim detail. PANEL 04 \u2014 ACCESSORIES (4 isolated accessory studies: bag \xB7 jewelry \xB7 belt \xB7 eyewear). PANEL 05 \u2014 COLORWAYS (3 alternate colorways of the same look). PANEL 06 \u2014 COLOR PALETTE: 6 swatches with HEX codes from the garments. Bottom caption: "Use this outfit board as a visual reference for consistent depiction of the wardrobe across all generations." Bottom-right tags: STYLE \xB7 Modern \xB7 Editorial \xB7 Fashion.`,
@@ -42283,7 +42306,7 @@ var GENERATE_IMAGE_PRESETS = [
42283
42306
  description: "Connect a photo \u2192 set-dressing & props study; reuse it as a reference for consistent sets.",
42284
42307
  group: "Reference Sheet",
42285
42308
  data: {
42286
- provider: "nano-banana-pro",
42309
+ provider: "gpt-image-2",
42287
42310
  aspectRatio: "16:9",
42288
42311
  resolution: "2K",
42289
42312
  promptPrefix: `Create a single high-resolution, densely packed set-dressing reference sheet titled "SCENE BOARD" using the attached photo of the scene as the single source of truth for its props, set dressing, materials, signage and mood. The space and its contents must be consistent across every panel \u2014 same props, same materials, same era. All on-image labels in ENGLISH. Editorial set-decoration layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade art-department UI. The composition should feel organized but not rigidly locked: allow the hero shot, metadata, and supporting panels to shift position naturally while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a hero establishing shot with a metadata block: SCENE NAME \xB7 TYPE \xB7 ERA \xB7 MOOD \xB7 KEY MATERIALS \xB7 PURPOSE. Also include six content groupings \u2014 render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 \u2014 KEY PROPS (5 isolated prop studies on a dark background). PANEL 02 \u2014 SIGNAGE / GRAPHICS (3 readable signage or printed-graphic elements from the scene). PANEL 03 \u2014 MATERIALS & TEXTURES (3 macros: surface \xB7 fabric/wood/metal \xB7 wear/patina). PANEL 04 \u2014 LAYOUT / BLOCKING (a simple top-down or wide diagram of where key elements sit). PANEL 05 \u2014 LIGHTING STATES (3 same-angle shots: day \xB7 practical-lit night \xB7 dramatic). PANEL 06 \u2014 COLOR PALETTE: 6 swatches with HEX codes from the scene's dominant tones. Bottom caption: "Use this scene board as a visual reference for consistent set dressing across all generations." Bottom-right tags: STYLE \xB7 Modern \xB7 Realistic \xB7 Cinematic.`,
@@ -42297,7 +42320,7 @@ var GENERATE_IMAGE_PRESETS = [
42297
42320
  description: "Connect a sharp photo \u2192 dense creature sheet; reuse it as a reference for consistent shots.",
42298
42321
  group: "Reference Sheet",
42299
42322
  data: {
42300
- provider: "nano-banana-pro",
42323
+ provider: "gpt-image-2",
42301
42324
  aspectRatio: "16:9",
42302
42325
  resolution: "2K",
42303
42326
  promptPrefix: `Create a single high-resolution, densely packed creature reference sheet titled "CREATURE BOARD" using the attached photo of the creature as the single source of truth for its anatomy, silhouette, coloration, textures and features. The same creature must appear in every panel \u2014 identical species, identical markings and proportions. All on-image labels in ENGLISH. Editorial creature-design layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade concept-design UI. The composition should feel organized but not rigidly locked: allow the hero render, metadata, and supporting panels to shift position naturally while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a large hero full-body render with a metadata block: NAME \xB7 SPECIES \xB7 SIZE \xB7 BUILD \xB7 COLORATION \xB7 TEXTURES \xB7 TEMPERAMENT \xB7 FEATURES \xB7 MOVEMENT \xB7 VOCALIZATION. Also include six content groupings \u2014 render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 \u2014 VIEWS (5 full-body angles, neutral pose, identical lighting): FRONT \xB7 3/4 \xB7 SIDE \xB7 BACK \xB7 TOP-DOWN. PANEL 02 \u2014 POSES (4 dynamic full-body poses: idle \xB7 moving \xB7 alert \xB7 aggressive). PANEL 03 \u2014 DETAILS (3 macros): head/face close-up \xB7 hide/scale/fur texture \xB7 distinctive feature (claw, horn, fin). PANEL 04 \u2014 EXPRESSIONS (4 head studies showing temperament range). PANEL 05 \u2014 SCALE (the creature beside a human silhouette for size reference). PANEL 06 \u2014 COLOR PALETTE: 6 swatches with HEX codes from the creature's coloration. Bottom caption: "Use this creature board as a visual reference for consistent depiction of the creature across all generations." Bottom-right tags: STYLE \xB7 Modern \xB7 Realistic \xB7 Cinematic.`,
@@ -42311,7 +42334,7 @@ var GENERATE_IMAGE_PRESETS = [
42311
42334
  description: "Connect a photo \u2192 dense vehicle sheet; reuse it as a reference for consistent shots.",
42312
42335
  group: "Reference Sheet",
42313
42336
  data: {
42314
- provider: "nano-banana-pro",
42337
+ provider: "gpt-image-2",
42315
42338
  aspectRatio: "16:9",
42316
42339
  resolution: "2K",
42317
42340
  promptPrefix: `Create a single high-resolution, densely packed vehicle reference sheet titled "VEHICLE BOARD" using the attached photo of the vehicle as the single source of truth for its body shape, proportions, paintwork, trim, wheels and condition. The same vehicle must appear in every panel \u2014 identical model, identical colorway, markings and wear. All on-image labels in ENGLISH. Editorial vehicle-reference layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade transportation-design UI. The composition should feel organized but not rigidly locked: allow the hero shot, metadata, and supporting panels to shift position naturally while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a large three-quarter hero shot with a metadata block: NAME \xB7 TYPE \xB7 ERA \xB7 SCALE \xB7 BODY & MATERIALS \xB7 FINISH \xB7 SEATS \xB7 TOP SPEED \xB7 SIGNATURE FEATURE \xB7 ROLE. Also include six content groupings \u2014 render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 \u2014 VIEWS (5 studio shots, identical lighting): FRONT \xB7 3/4 \xB7 SIDE \xB7 BACK \xB7 TOP-DOWN. PANEL 02 \u2014 INTERIOR / CABIN (4 close shots): cockpit through the window \xB7 dashboard detail \xB7 seats or cargo area \xB7 driver POV. PANEL 03 \u2014 DETAIL MACROS (4): headlight or light cluster \xB7 wheel and tire \xB7 badge or panel line \xB7 paint and wear close-up. PANEL 04 \u2014 IN MOTION (4 staged frames): driving straight \xB7 cornering \xB7 parked on an incline \xB7 night with headlights on. PANEL 05 \u2014 LIGHTING / MOOD (4 same-angle hero shots): DESERT MIDDAY \xB7 GOLDEN HOUR \xB7 STORMY OVERCAST \xB7 NIGHT NEON. PANEL 06 \u2014 COLOR PALETTE: 6 swatches with HEX codes from the paintwork and trim. Bottom caption: "Use this vehicle board as a visual reference for consistent depiction of the vehicle across all generations." Bottom-right tags: STYLE \xB7 Modern \xB7 Realistic \xB7 Cinematic.`,
@@ -42325,7 +42348,7 @@ var GENERATE_IMAGE_PRESETS = [
42325
42348
  description: "Connect a photo \u2192 dense dish sheet; reuse it as a reference for consistent food shots.",
42326
42349
  group: "Reference Sheet",
42327
42350
  data: {
42328
- provider: "nano-banana-pro",
42351
+ provider: "gpt-image-2",
42329
42352
  aspectRatio: "16:9",
42330
42353
  resolution: "2K",
42331
42354
  promptPrefix: `Create a single high-resolution, densely packed dish reference sheet titled "FOOD BOARD" using the attached photo of the dish as the single source of truth for its ingredients, plating, colors, textures and garnish. The same dish must appear in every panel \u2014 identical recipe, identical plating, bowl or plate, and props. All on-image labels in ENGLISH. Editorial culinary-reference layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade food-styling UI. The composition should feel organized but not rigidly locked: allow the hero shot, metadata, and supporting panels to shift position naturally while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a large appetizing hero shot with a metadata block: DISH NAME \xB7 CUISINE \xB7 CATEGORY \xB7 KEY INGREDIENTS \xB7 TEXTURES \xB7 GARNISH \xB7 SERVED \xB7 AUDIENCE. Also include six content groupings \u2014 render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 \u2014 PLATING ANGLES (5 beauty shots, identical styling): TOP-DOWN \xB7 3/4 HERO \xB7 SIDE \xB7 EXTREME CLOSE-UP \xB7 IN HAND OR WITH UTENSIL. PANEL 02 \u2014 INGREDIENT BREAKDOWN (5 isolated ingredient studies on a dark background). PANEL 03 \u2014 DETAIL MACROS (4): surface texture \xB7 glaze or sauce sheen \xB7 steam or freshness cue \xB7 garnish detail. PANEL 04 \u2014 IN CONTEXT (4 staged frames): steam rising \xB7 utensil lifting a bite \xB7 sauce pour frozen mid-action \xB7 hands holding the dish. PANEL 05 \u2014 LIGHTING / MOOD (4 same-angle hero shots): WARM APPETIZING \xB7 COOL EDITORIAL \xB7 HARD COMMERCIAL \xB7 MOODY DRAMATIC. PANEL 06 \u2014 COLOR PALETTE: 6 swatches with HEX codes from the dish and plating. Bottom caption: "Use this food board as a visual reference for consistent depiction of the dish across all generations." Bottom-right tags: STYLE \xB7 Modern \xB7 Realistic \xB7 Commercial.`,
@@ -42339,7 +42362,7 @@ var GENERATE_IMAGE_PRESETS = [
42339
42362
  description: "Connect a mascot image \u2192 brand-character sheet with brand applications; reuse it for a consistent mascot.",
42340
42363
  group: "Reference Sheet",
42341
42364
  data: {
42342
- provider: "nano-banana-pro",
42365
+ provider: "gpt-image-2",
42343
42366
  aspectRatio: "16:9",
42344
42367
  resolution: "2K",
42345
42368
  promptPrefix: `Create a single high-resolution, densely packed mascot reference sheet titled "MASCOT BOARD" using the attached image of the mascot as the single source of truth for its design, proportions, colors, materials and personality. The same mascot must appear in every panel \u2014 identical design, identical colors and details \u2014 rendered in the mascot's native art style read from the attached image (illustrated, plush, costumed or 3D), never drifting between styles. All on-image labels in ENGLISH. Editorial brand-character layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade brand-design UI. The composition should feel organized but not rigidly locked: allow the hero pose, metadata, and supporting panels to shift position naturally while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a large hero pose with a metadata block: MASCOT NAME \xB7 BRAND \xB7 CATEGORY \xB7 MATERIAL / STYLE \xB7 PERSONALITY \xB7 CATCHPHRASE \xB7 SIZE \xB7 USE CASES. Also include six content groupings \u2014 render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 \u2014 VIEWS (5 full-body angles, identical lighting): FRONT \xB7 3/4 LEFT \xB7 SIDE \xB7 BACK \xB7 3/4 RIGHT. PANEL 02 \u2014 EXPRESSIONS (6 head studies): HAPPY \xB7 WAVING \xB7 SHOCKED \xB7 WINKING \xB7 SLEEPY \xB7 CURIOUS. PANEL 03 \u2014 DETAIL MACROS (3): face detail \xB7 material or texture close-up \xB7 signature accessory. PANEL 04 \u2014 BRAND APPLICATIONS (4 mockups): on product packaging \xB7 on a storefront sign \xB7 in a print ad \xB7 on merch. PANEL 05 \u2014 POSES (4 action poses): GREETING \xB7 CELEBRATING \xB7 PRESENTING \xB7 THUMBS-UP. PANEL 06 \u2014 BRAND COLOR PALETTE: 6 swatches with HEX codes from the mascot's colors. Bottom caption: "Use this mascot board as a visual reference for consistent depiction of the mascot across all generations." Bottom-right tags: STYLE \xB7 Brand \xB7 Character \xB7 Consistent.`,
@@ -42353,7 +42376,7 @@ var GENERATE_IMAGE_PRESETS = [
42353
42376
  description: "Connect a sharp photo \u2192 dense pet sheet; reuse it as a reference for consistent shots.",
42354
42377
  group: "Reference Sheet",
42355
42378
  data: {
42356
- provider: "nano-banana-pro",
42379
+ provider: "gpt-image-2",
42357
42380
  aspectRatio: "16:9",
42358
42381
  resolution: "2K",
42359
42382
  promptPrefix: `Create a single high-resolution, densely packed pet reference sheet titled "PET BOARD" using the attached photo of the pet as the single source of truth for its species, breed, coat colors, markings, eyes and build. The same animal must appear in every panel \u2014 identical markings, identical proportions, identical collar or accessories. All on-image labels in ENGLISH. Editorial reference-board layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade character-design UI. The composition should feel organized but not rigidly locked: allow the hero portrait, metadata, and supporting panels to shift position naturally while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a large hero portrait with a metadata block: NAME \xB7 SPECIES \xB7 BREED \xB7 AGE \xB7 SIZE \xB7 COAT & MARKINGS \xB7 EYES \xB7 COLLAR / ACCESSORIES \xB7 TEMPERAMENT \xB7 SIGNATURE BEHAVIOR. Also include six content groupings \u2014 render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 \u2014 VIEWS (5 full-body angles, neutral stance, identical lighting): FRONT \xB7 3/4 \xB7 SIDE \xB7 BACK \xB7 TOP-DOWN. PANEL 02 \u2014 EXPRESSIONS & MOODS (6 head studies): ALERT \xB7 CURIOUS \xB7 PLAYFUL \xB7 SLEEPY \xB7 GRUMPY \xB7 HAPPY. PANEL 03 \u2014 DETAIL MACROS (4): eye close-up \xB7 coat or fur texture \xB7 paw detail \xB7 collar tag or accessory. PANEL 04 \u2014 POSES (5 natural poses): SITTING \xB7 LYING DOWN \xB7 WALKING \xB7 PLAYING \xB7 CURLED ASLEEP. PANEL 05 \u2014 LIGHTING / MOOD (4 same-pose portraits): SOFT WINDOW LIGHT \xB7 GOLDEN HOUR \xB7 COOL BLUE NIGHT \xB7 DRAMATIC RIM-LIGHT. PANEL 06 \u2014 COLOR PALETTE: 6 swatches with HEX codes from the coat and accessories. Bottom caption: "Use this pet board as a visual reference for consistent depiction of the pet across all generations." Bottom-right tags: STYLE \xB7 Modern \xB7 Realistic \xB7 Cinematic.`,
@@ -42364,15 +42387,16 @@ var GENERATE_IMAGE_PRESETS = [
42364
42387
  // ── Cast & Consistency (clean grids per the multi-character workflow:
42365
42388
  // sterile neutral-background reference grids built to be FED BACK as identity
42366
42389
  // anchors — unlike the editorial boards above, decoration here is noise.
42367
- // nano-banana-2 per the source guide: cheaper/faster per attempt with strong
42368
- // practical consistency; 4K so panel faces stay sharp when reused as refs.) ──
42390
+ // GPT Image 2 (decided 2026-10-08 from the image model bake-off: it built the
42391
+ // best reference grid and kept both identities on the cast sheet); 4K so
42392
+ // panel faces stay sharp when reused as refs.) ──
42369
42393
  {
42370
42394
  id: "generate-image/character-reference-grid",
42371
42395
  name: "Character Reference Grid",
42372
42396
  description: "Connect a photo \u2192 clean 4-angle identity grid (no decorations) \u2014 the strongest consistency anchor.",
42373
42397
  group: "Cast & Consistency",
42374
42398
  data: {
42375
- provider: "nano-banana-2",
42399
+ provider: "gpt-image-2",
42376
42400
  aspectRatio: "3:4",
42377
42401
  resolution: "4K",
42378
42402
  promptPrefix: `Create a clean character reference grid using the attached photo of the person as the single source of truth for face, hair, eyes, skin tone, build and outfit. Four equal panels arranged in a tidy two-by-two grid on a single seamless neutral light-grey studio background: a tight front-facing portrait close-up, a 3/4-view portrait, a full-body shot from the front in a relaxed neutral stance, and a full-body shot from the back. The SAME person in every panel \u2014 identical age, features, hairstyle and outfit from the attached photo. Identical soft, even studio lighting in all four panels with no dramatic shadows. No decorations, no background props, no text, no UI elements \u2014 a sterile, production-neutral reference sheet built to be reused as an identity reference in later generations.`,
@@ -42386,7 +42410,7 @@ var GENERATE_IMAGE_PRESETS = [
42386
42410
  description: "Connect 2\u20134 character refs \u2192 one labeled cast sheet; then reference cast members by name in scenes.",
42387
42411
  group: "Cast & Consistency",
42388
42412
  data: {
42389
- provider: "nano-banana-2",
42413
+ provider: "gpt-image-2",
42390
42414
  aspectRatio: "3:4",
42391
42415
  resolution: "4K",
42392
42416
  prompt: `Create a clean multi-character cast reference sheet composed as horizontal strips stacked vertically in one image \u2014 one strip per character from the attached reference images, in the order they are attached, using exactly as many strips as there are attached characters. Each strip shows that character in four aligned studio panels: tight front portrait close-up \xB7 3/4 portrait \xB7 full body front \xB7 full body back, all in a relaxed neutral stance. Label each strip on the left edge with the character's name in clean bold lettering: {character names || ALEX \xB7 MAYA \xB7 SAM}. Every character must match their attached reference exactly \u2014 same face, hair, skin tone, build and outfit \u2014 with no identity blending between rows. Single seamless neutral light-grey studio background across the whole sheet, identical soft even lighting in every panel, consistent panel sizing and alignment. No decorations, no props, no UI elements beyond the row name labels. A sterile production casting sheet built to be reused as the single identity reference for this cast in later generations. Photorealistic, sharp focus, natural skin texture, true-to-life color.`,
@@ -42399,7 +42423,7 @@ var GENERATE_IMAGE_PRESETS = [
42399
42423
  description: "Connect a cast grid \u2192 stage a scene naming the characters; never re-describe their looks.",
42400
42424
  group: "Cast & Consistency",
42401
42425
  data: {
42402
- provider: "nano-banana-2",
42426
+ provider: "gpt-image-2",
42403
42427
  aspectRatio: "16:9",
42404
42428
  resolution: "2K",
42405
42429
  prompt: `Using the attached character reference sheet as the single source of truth for every named character's face, hair, build and outfit, generate one photorealistic scene: {scene || ALEX and MAYA share a quiet laugh at the counter of a sunlit ramen bar while SAM studies the menu}. Refer to the characters ONLY by the names labeled on the reference sheet and keep each one perfectly consistent with their reference row \u2014 do not invent new physical traits, do not blend identities, and do not alter outfits unless the scene says so. Stage them naturally in the environment with believable eye-lines, interactions and spacing. Cinematic photography, 35mm lens look with gentle depth of field, soft motivated lighting that matches the location, cohesive filmic color grade, natural skin texture, sharp detail on every character.`,
@@ -42483,7 +42507,7 @@ var GENERATE_IMAGE_PRESETS = [
42483
42507
  description: "Moody, shallow-depth portrait look.",
42484
42508
  group: "Photography & Cinematic",
42485
42509
  data: {
42486
- provider: "nano-banana-pro",
42510
+ provider: "gpt-image-2",
42487
42511
  aspectRatio: "9:16",
42488
42512
  prompt: "cinematic portrait of {subject || a pensive young man with stubble}, 85mm lens at f/1.8, shallow depth of field with creamy bokeh, soft key with warm rim separation against a moody low-key background, gentle film grain, filmic teal-and-amber grade, natural skin texture, tack-sharp eyes",
42489
42513
  negativePrompt: "flat lighting, deep focus, plastic skin, blown highlights, extra fingers, lowres, deformed, watermark, text"
@@ -42495,7 +42519,7 @@ var GENERATE_IMAGE_PRESETS = [
42495
42519
  description: "Film-grade scene, dramatic lighting.",
42496
42520
  group: "Photography & Cinematic",
42497
42521
  data: {
42498
- provider: "nano-banana-pro",
42522
+ provider: "gpt-image-2",
42499
42523
  aspectRatio: "16:9",
42500
42524
  prompt: "cinematic film still of {subject || a lone detective in a rain-slicked alley at night}, anamorphic lens at 40mm and f/2, shallow depth of field with oval bokeh and subtle horizontal flares, dramatic motivated key light with deep falloff, off-center framing with negative space, tense noir mood in a moody teal-and-amber grade, fine film grain, photoreal detail",
42501
42525
  negativePrompt: "flat lighting, deep focus, oversaturated, washed out, video-game render, lowres, deformed, watermark, text"
@@ -42519,7 +42543,7 @@ var GENERATE_IMAGE_PRESETS = [
42519
42543
  description: "Soft-lit 85mm studio headshot.",
42520
42544
  group: "Photography & Cinematic",
42521
42545
  data: {
42522
- provider: "nano-banana-pro",
42546
+ provider: "nano-banana-2-1",
42523
42547
  aspectRatio: "4:5",
42524
42548
  prompt: "studio portrait of {subject || a confident woman with sleek dark hair}, 85mm lens at f/2.8, shallow depth of field, soft octabox key with gentle fill and a subtle hair light, clean seamless gray backdrop, tight head-and-shoulders framing, polished editorial mood with a neutral true-to-life palette, natural skin texture, catchlights and tack-sharp eyes",
42525
42549
  negativePrompt: "harsh shadows, plastic skin, over-retouched, blown highlights, busy background, extra fingers, lowres, deformed, watermark, text"
@@ -42531,7 +42555,7 @@ var GENERATE_IMAGE_PRESETS = [
42531
42555
  description: "Clean professional headshot.",
42532
42556
  group: "Photography & Cinematic",
42533
42557
  data: {
42534
- provider: "nano-banana-pro",
42558
+ provider: "gpt-image-2",
42535
42559
  aspectRatio: "1:1",
42536
42560
  prompt: "professional corporate headshot of {subject || a friendly executive in a tailored navy blazer}, 85mm lens at f/4, soft even three-point lighting with a broad key and clean fill, smooth neutral gray-blue background, centered head-and-shoulders framing, approachable confident expression, crisp business mood with a clean neutral palette, sharp focus and natural skin texture",
42537
42561
  negativePrompt: "harsh shadows, busy background, casual snapshot, over-retouched, plastic skin, extra fingers, lowres, deformed, watermark, text"
@@ -42555,7 +42579,7 @@ var GENERATE_IMAGE_PRESETS = [
42555
42579
  description: "High-contrast editorial mono.",
42556
42580
  group: "Photography & Cinematic",
42557
42581
  data: {
42558
- provider: "nano-banana-pro",
42582
+ provider: "nano-banana-2-1",
42559
42583
  aspectRatio: "4:5",
42560
42584
  prompt: "black and white editorial portrait of {subject || a weathered old fisherman with a lined face}, 85mm lens at f/2, shallow depth of field, dramatic single-source chiaroscuro with deep falloff, tight off-center framing, timeless brooding mood with a rich high-contrast monochrome tonal range, deep blacks and luminous highlights, fine silver grain, sharp eyes and natural skin texture",
42561
42585
  negativePrompt: "color, muddy gray tones, flat lighting, low contrast, plastic skin, extra fingers, lowres, deformed, watermark, text"
@@ -42579,7 +42603,7 @@ var GENERATE_IMAGE_PRESETS = [
42579
42603
  description: "Appetizing 45\xB0 hero shot.",
42580
42604
  group: "Photography & Cinematic",
42581
42605
  data: {
42582
- provider: "nano-banana-pro",
42606
+ provider: "nano-banana-2-1",
42583
42607
  aspectRatio: "4:5",
42584
42608
  prompt: "appetizing hero food photograph of {dish || a rustic bowl of ramen with a soft-boiled egg}, 50mm lens at f/2.8, shallow depth of field, soft diffused window light from the side with a gentle fill, 45-degree angle on a weathered rustic surface, props and steam fading into a clean background, warm mouth-watering mood with natural color, fresh garnish, glistening textures and crisp focus on the hero",
42585
42609
  negativePrompt: "unappetizing, plastic look, fake glossy food, messy spills, dull colors, harsh flash, lowres, deformed, watermark, text"
@@ -42591,7 +42615,7 @@ var GENERATE_IMAGE_PRESETS = [
42591
42615
  description: "Overhead styled food spread.",
42592
42616
  group: "Photography & Cinematic",
42593
42617
  data: {
42594
- provider: "nano-banana-pro",
42618
+ provider: "gpt-image-2",
42595
42619
  aspectRatio: "1:1",
42596
42620
  prompt: "overhead flat-lay food photograph of {dish || a colorful brunch spread with coffee and pastries}, 35mm lens at f/5.6 with even focus, perfect top-down ninety-degree angle, soft diffused daylight casting gentle natural shadows, balanced styled arrangement with breathing room and scattered ingredients, fresh vibrant editorial mood with a clean color palette on a textured surface, crisp appetizing detail",
42597
42621
  negativePrompt: "cluttered, overcrowded, tilted angle, harsh shadows, plastic look, dull colors, lowres, deformed, watermark, text"
@@ -42628,7 +42652,7 @@ var GENERATE_IMAGE_PRESETS = [
42628
42652
  description: "Front / side / back, T-pose.",
42629
42653
  group: "Characters",
42630
42654
  data: {
42631
- provider: "nano-banana-pro",
42655
+ provider: "gpt-image-2",
42632
42656
  aspectRatio: "16:9",
42633
42657
  prompt: "full-body character turnaround model sheet of {character description || a rugged space mercenary with a scarred jaw and worn leather armor}, three matching views in a row \u2014 front, side profile, and back \u2014 held in a clean T-pose with a neutral expression, identical proportions and costume details across all three views, flat even studio lighting with no harsh shadows so every view reads the same, evenly spaced on a plain light-grey backdrop, crisp concept-art model-sheet style, clean line work and consistent color palette across panels",
42634
42658
  negativePrompt: "inconsistent design between views, mismatched proportions, extra limbs, deformed anatomy, dynamic pose, dramatic shadows, busy background, watermark, text"
@@ -42640,7 +42664,7 @@ var GENERATE_IMAGE_PRESETS = [
42640
42664
  description: "Four dynamic full-body poses.",
42641
42665
  group: "Characters",
42642
42666
  data: {
42643
- provider: "nano-banana-pro",
42667
+ provider: "gpt-image-2",
42644
42668
  aspectRatio: "16:9",
42645
42669
  prompt: "character action model sheet of {character description || a nimble rogue archer in a hooded green cloak}, four distinct full-body dynamic action poses in a row \u2014 running, leaping, attacking, landing \u2014 strictly consistent face, character design, and outfit across every pose, full-figure framing with confident gesture and clear silhouettes, even studio lighting that stays identical across all four poses, plain neutral backdrop, energetic concept-art model sheet, clean linework and matching color palette",
42646
42670
  negativePrompt: "inconsistent design between poses, changed outfit, deformed anatomy, extra limbs, fused figures, static stiff posture, busy background, watermark, text"
@@ -42652,7 +42676,7 @@ var GENERATE_IMAGE_PRESETS = [
42652
42676
  description: "6 emotions, 2 rows of 3.",
42653
42677
  group: "Characters",
42654
42678
  data: {
42655
- provider: "nano-banana-pro",
42679
+ provider: "nano-banana-2-1",
42656
42680
  aspectRatio: "4:3",
42657
42681
  prompt: "character expression model sheet of {character description || a cheerful freckled teen with messy red hair}, six head-and-shoulders portraits arranged in two even rows of three, labeled emotions in order \u2014 neutral, happy, angry, surprised, sad, determined \u2014 strictly consistent face, hairstyle, and features across every panel with only the expression changing, flat even portrait lighting identical in all six panels, evenly spaced on a plain neutral backdrop, clean concept-art model sheet, natural facial detail and matching color palette",
42658
42682
  negativePrompt: "inconsistent face, drifting features, changed hairstyle, deformed, asymmetrical eyes, uneven lighting, busy background, watermark, garbled text"
@@ -42664,7 +42688,7 @@ var GENERATE_IMAGE_PRESETS = [
42664
42688
  description: "4\xD74 emotion grid, one face.",
42665
42689
  group: "Characters",
42666
42690
  data: {
42667
- provider: "nano-banana-pro",
42691
+ provider: "nano-banana-2-1",
42668
42692
  aspectRatio: "1:1",
42669
42693
  prompt: "16-panel character expression grid of {character description || a stoic silver-haired knight with a faint scar}, evenly spaced 4x4 layout of head-and-shoulders portraits, sixteen distinct facial emotions ranging from calm to intense, strictly consistent face, hairstyle, and design across every cell with only the expression changing, flat even portrait lighting identical in all panels, plain neutral backdrop, clean concept-art model sheet, natural facial detail and matching color palette",
42670
42694
  negativePrompt: "inconsistent face, drifting features, changed hairstyle, deformed, asymmetrical eyes, uneven panels, uneven lighting, busy background, watermark, text"
@@ -42676,7 +42700,7 @@ var GENERATE_IMAGE_PRESETS = [
42676
42700
  description: "Same character, 4 outfits.",
42677
42701
  group: "Characters",
42678
42702
  data: {
42679
- provider: "nano-banana-pro",
42703
+ provider: "gpt-image-2",
42680
42704
  aspectRatio: "16:9",
42681
42705
  prompt: "outfit variation model sheet of {character description || a confident young woman with a sleek dark bob}, the same character shown full-body in four different complete outfits side by side \u2014 casual, formal, athletic, seasonal \u2014 strictly consistent face, body, and hairstyle across all four with only the wardrobe changing, full-figure framing in a relaxed standing pose, flat even studio lighting identical across every panel, evenly spaced on a plain neutral backdrop, clean concept-art model sheet, matching color palette and crisp fabric detail",
42682
42706
  negativePrompt: "inconsistent face, changed body or hairstyle, deformed, mismatched proportions, repeated identical outfit, busy background, watermark, text"
@@ -42700,7 +42724,7 @@ var GENERATE_IMAGE_PRESETS = [
42700
42724
  description: "Cute super-deformed poses.",
42701
42725
  group: "Characters",
42702
42726
  data: {
42703
- provider: "nano-banana-pro",
42727
+ provider: "nano-banana-2-1",
42704
42728
  aspectRatio: "1:1",
42705
42729
  prompt: "chibi character model sheet of {character description || a tiny brave knight with oversized armor}, adorable super-deformed proportions with a big head and small body, several cute mini full-body poses arranged across the sheet, strictly consistent design and color palette across every pose, soft even flat lighting identical across all poses, evenly spaced on a plain pastel backdrop, clean bold outlines and flat cel shading, charming concept-art model sheet",
42706
42730
  negativePrompt: "realistic proportions, inconsistent design, deformed, off-model, gritty shading, busy background, watermark, text"
@@ -42724,7 +42748,7 @@ var GENERATE_IMAGE_PRESETS = [
42724
42748
  description: "Dynamic full-body hero shot.",
42725
42749
  group: "Characters",
42726
42750
  data: {
42727
- provider: "nano-banana-pro",
42751
+ provider: "gpt-image-2-5-sunburst",
42728
42752
  aspectRatio: "2:3",
42729
42753
  prompt: "full-body hero shot of {character description || a heroic armored warrior with a flowing crimson cape}, cinematic character key art, confident dynamic power pose, dramatic rim lighting with a warm key and cool back-light carving the silhouette, low camera angle for an imposing heroic stance, softly blurred atmospheric background, bold dramatic color grade, intricately detailed costume and crisp material textures",
42730
42754
  negativePrompt: "flat lighting, static stiff pose, lowres, deformed, extra limbs, cropped feet, cluttered background, blurry, watermark, text"
@@ -42736,7 +42760,7 @@ var GENERATE_IMAGE_PRESETS = [
42736
42760
  description: "Concept creature, multi-angle.",
42737
42761
  group: "Characters",
42738
42762
  data: {
42739
- provider: "nano-banana-pro",
42763
+ provider: "gpt-image-2",
42740
42764
  aspectRatio: "16:9",
42741
42765
  prompt: "creature design model sheet of {creature description || a six-legged bioluminescent forest beast with mossy scales}, several full-body views from multiple angles plus inset anatomy and texture close-ups, strictly consistent species, markings, and proportions across every view, professional creature-concept art, flat even studio lighting identical across all views so the design reads clearly, neatly arranged on a plain neutral backdrop, detailed believable anatomy and crisp surface textures, cohesive color palette",
42742
42766
  negativePrompt: "inconsistent design between views, mismatched proportions, deformed anatomy, extra or missing limbs, dramatic shadows, busy background, watermark, text"
@@ -42748,7 +42772,7 @@ var GENERATE_IMAGE_PRESETS = [
42748
42772
  description: "Centered, bold, clean bg.",
42749
42773
  group: "Characters",
42750
42774
  data: {
42751
- provider: "nano-banana-pro",
42775
+ provider: "gpt-image-2",
42752
42776
  aspectRatio: "1:1",
42753
42777
  prompt: "stylized avatar profile picture of {character or subject || a friendly fox with bright amber eyes}, clean modern character illustration, bold thick outlines with smooth flat shading, soft even front lighting with a gentle glow, perfectly centered head-and-shoulders composition with comfortable margins, vibrant punchy color palette on a clean solid-color background, crisp friendly and instantly readable as a small icon",
42754
42778
  negativePrompt: "off-center, cropped face, busy background, lowres, deformed, muddy colors, harsh shadows, watermark, text"
@@ -42761,7 +42785,7 @@ var GENERATE_IMAGE_PRESETS = [
42761
42785
  description: "Clean e-commerce product photo on white.",
42762
42786
  group: "Product & Commerce",
42763
42787
  data: {
42764
- provider: "nano-banana-pro",
42788
+ provider: "gpt-image-2",
42765
42789
  aspectRatio: "1:1",
42766
42790
  prompt: "e-commerce studio product photograph of {product || a matte-black wireless headphone}, on a seamless pure-white background, 100mm lens at f/8 with deep focus, soft even high-key lighting from a large diffused softbox with gentle fill, perfectly centered with generous margins, clean catalog-ready mood with true-to-life color, crisp edges and accurate material texture",
42767
42791
  negativePrompt: "clutter, props, harsh shadows, blown highlights, color cast, reflections, tilted angle, lowres, deformed, watermark, text"
@@ -42785,7 +42809,7 @@ var GENERATE_IMAGE_PRESETS = [
42785
42809
  description: "Overhead styled arrangement.",
42786
42810
  group: "Product & Commerce",
42787
42811
  data: {
42788
- provider: "nano-banana-pro",
42812
+ provider: "gpt-image-2",
42789
42813
  aspectRatio: "1:1",
42790
42814
  prompt: "overhead flat-lay product photograph of {product || a leather travel wallet} surrounded by complementary props, 35mm lens at f/5.6 with even focus, perfect top-down ninety-degree angle, soft diffused daylight casting gentle natural shadows, balanced styled arrangement with breathing room around the hero, clean modern editorial mood with a cohesive palette on a textured surface, crisp material detail",
42791
42815
  negativePrompt: "cluttered, overcrowded, tilted angle, harsh shadows, dull colors, plastic look, lowres, deformed, watermark, text"
@@ -42797,7 +42821,7 @@ var GENERATE_IMAGE_PRESETS = [
42797
42821
  description: "Box / bottle / pouch render.",
42798
42822
  group: "Product & Commerce",
42799
42823
  data: {
42800
- provider: "nano-banana-pro",
42824
+ provider: "gpt-image-2",
42801
42825
  aspectRatio: "1:1",
42802
42826
  prompt: "photorealistic product packaging mockup of {product || an artisanal coffee brand}, presented as {format || a standing kraft pouch}, with a crisp accurately-printed label wrapping the form, 85mm lens at f/8 with deep focus, soft studio lighting with a subtle highlight and grounded contact shadow, centered hero composition on a clean seamless background, premium retail mood with true-to-life color, sharp legible label artwork and realistic material finish",
42803
42827
  negativePrompt: "distorted label, warped text, misspelled words, floating object, harsh shadows, clutter, lowres, deformed, watermark"
@@ -42821,7 +42845,7 @@ var GENERATE_IMAGE_PRESETS = [
42821
42845
  description: "Premium cosmetic hero shot.",
42822
42846
  group: "Product & Commerce",
42823
42847
  data: {
42824
- provider: "nano-banana-pro",
42848
+ provider: "nano-banana-2-1",
42825
42849
  aspectRatio: "4:5",
42826
42850
  prompt: "luxury beauty product hero shot of {product || a frosted-glass serum bottle with a gold dropper}, 100mm macro lens at f/8 with crisp focus, dramatic single-source key light with a soft gradient falloff and a bright specular edge, fresh water droplets beading on the surface, centered low hero angle on a premium glossy reflective surface, elegant high-end mood with a refined jewel-toned palette, immaculate detail and luminous reflections",
42827
42851
  negativePrompt: "cheap plastic look, fingerprints, dust, busy background, flat lighting, dull colors, lowres, deformed, watermark, text"
@@ -42968,7 +42992,7 @@ var GENERATE_IMAGE_PRESETS = [
42968
42992
  description: "Cinematic key art, title + tagline.",
42969
42993
  group: "Print & Posters",
42970
42994
  data: {
42971
- provider: "nano-banana-pro",
42995
+ provider: "gpt-image-2-5-sunburst",
42972
42996
  aspectRatio: "2:3",
42973
42997
  prompt: "theatrical movie poster for '{TITLE}', cinematic key art in a {genre || gritty sci-fi thriller} mood, dramatic vertical hero composition with a commanding central figure, moody atmospheric lighting with strong rim light and volumetric haze, rich filmic teal-and-amber color grade, bold title treatment along the bottom with a short tagline above it and a small billing-block strip, premium high-detail finish, legible correctly-spelled text",
42974
42998
  negativePrompt: "flat lighting, cluttered composition, amateurish layout, misspelled text, garbled letters, extra limbs, deformed faces, lowres, blurry, watermark"
@@ -42992,7 +43016,7 @@ var GENERATE_IMAGE_PRESETS = [
42992
43016
  description: "Genre cover, title + author.",
42993
43017
  group: "Print & Posters",
42994
43018
  data: {
42995
- provider: "nano-banana-pro",
43019
+ provider: "gpt-image-2-5-sunburst",
42996
43020
  aspectRatio: "2:3",
42997
43021
  prompt: "professional book cover for '{TITLE}' by {AUTHOR}, evocative {genre || literary thriller} mood and symbolic central imagery, vertical composition with a strong focal point, bold title typography across the top and the author name along the bottom with clear hierarchy, atmospheric lighting and a cohesive genre-appropriate color palette, refined bookstore-quality finish, legible correctly-spelled text",
42998
43022
  negativePrompt: "cluttered layout, clashing fonts, generic stock look, misspelled text, garbled letters, deformed faces, lowres, blurry, watermark"
@@ -43041,7 +43065,7 @@ var GENERATE_IMAGE_PRESETS = [
43041
43065
  description: "Cel-shaded anime look.",
43042
43066
  group: "Illustration & Art Styles",
43043
43067
  data: {
43044
- provider: "nano-banana-pro",
43068
+ provider: "gpt-image-2",
43045
43069
  aspectRatio: "16:9",
43046
43070
  style: "anime",
43047
43071
  prompt: "{scene or subject || a girl watching fireworks over a summer festival}, cel-shaded with crisp linework, expressive eyes, soft gradient sky, gentle bloom",
@@ -43054,7 +43078,7 @@ var GENERATE_IMAGE_PRESETS = [
43054
43078
  description: "Inked panel with action.",
43055
43079
  group: "Illustration & Art Styles",
43056
43080
  data: {
43057
- provider: "nano-banana-pro",
43081
+ provider: "gpt-image-2",
43058
43082
  aspectRatio: "4:3",
43059
43083
  style: "comic-book",
43060
43084
  prompt: "{scene || a caped hero landing on a rooftop at dusk}, dynamic comic panel composition, bold ink outlines, motion lines, clear space for a speech bubble",
@@ -43067,7 +43091,7 @@ var GENERATE_IMAGE_PRESETS = [
43067
43091
  description: "Screentone black-and-white.",
43068
43092
  group: "Illustration & Art Styles",
43069
43093
  data: {
43070
- provider: "nano-banana-pro",
43094
+ provider: "gpt-image-2",
43071
43095
  aspectRatio: "3:4",
43072
43096
  style: "manga",
43073
43097
  prompt: "{scene || a swordsman bracing against the wind}, black-and-white manga panel, crisp inking, screentone shading, dramatic low angle, speed lines",
@@ -43119,7 +43143,7 @@ var GENERATE_IMAGE_PRESETS = [
43119
43143
  description: "3/4 axonometric scene.",
43120
43144
  group: "Illustration & Art Styles",
43121
43145
  data: {
43122
- provider: "nano-banana-pro",
43146
+ provider: "gpt-image-2",
43123
43147
  aspectRatio: "1:1",
43124
43148
  style: "isometric",
43125
43149
  prompt: "isometric {building or scene || a cozy corner coffee shop}, true 3/4 axonometric angle, clean miniature game-art forms, soft even lighting, tidy modular detail",
@@ -43132,7 +43156,7 @@ var GENERATE_IMAGE_PRESETS = [
43132
43156
  description: "Retro low-res pixel grid.",
43133
43157
  group: "Illustration & Art Styles",
43134
43158
  data: {
43135
- provider: "nano-banana-pro",
43159
+ provider: "gpt-image-2",
43136
43160
  aspectRatio: "1:1",
43137
43161
  style: "pixel-art",
43138
43162
  prompt: "{subject || a hero exploring a torch-lit dungeon}, retro 16-bit pixel art, crisp pixel grid, limited dithered palette, hard-edged sprite detail",
@@ -43145,7 +43169,7 @@ var GENERATE_IMAGE_PRESETS = [
43145
43169
  description: "Polished CG character look.",
43146
43170
  group: "Illustration & Art Styles",
43147
43171
  data: {
43148
- provider: "nano-banana-pro",
43172
+ provider: "gpt-image-2",
43149
43173
  aspectRatio: "1:1",
43150
43174
  style: "pixar-3d",
43151
43175
  prompt: "{character or subject || a curious round-cheeked kid with big expressive eyes}, polished 3D animated render, soft subsurface skin, warm key light with gentle bounce, charming appeal",
@@ -43170,7 +43194,7 @@ var GENERATE_IMAGE_PRESETS = [
43170
43194
  description: "Bold linework, isolated.",
43171
43195
  group: "Illustration & Art Styles",
43172
43196
  data: {
43173
- provider: "nano-banana-pro",
43197
+ provider: "gpt-image-2-5-sunburst",
43174
43198
  aspectRatio: "2:3",
43175
43199
  prompt: "tattoo flash design of {subject || a roaring tiger with peony flowers} in {tattoo style || bold American traditional} style, confident clean linework with strong outlines, limited tattoo-ink palette, solid black fills and tasteful negative space, single centered motif isolated on a plain white sheet",
43176
43200
  negativePrompt: "photographic background, scene, soft gradients, photorealistic, fine grayscale shading, blurry, lowres, watermark, text"
@@ -43182,7 +43206,7 @@ var GENERATE_IMAGE_PRESETS = [
43182
43206
  description: "Painterly pre-production art.",
43183
43207
  group: "Illustration & Art Styles",
43184
43208
  data: {
43185
- provider: "nano-banana-pro",
43209
+ provider: "gpt-image-2",
43186
43210
  aspectRatio: "16:9",
43187
43211
  style: "concept-art",
43188
43212
  prompt: "concept art of {environment or subject || ancient ruins reclaimed by a glowing jungle}, sweeping sense of scale, atmospheric depth and haze, dramatic god-ray light",
@@ -43198,7 +43222,7 @@ var GENERATE_IMAGE_PRESETS = [
43198
43222
  description: "Plasticine stop-motion look, thumbprints included.",
43199
43223
  group: "Handmade & Stop-Motion",
43200
43224
  data: {
43201
- provider: "nano-banana-pro",
43225
+ provider: "gpt-image-2",
43202
43226
  aspectRatio: "16:9",
43203
43227
  prompt: "{scene || a tiny clay fisherman rowing across a stormy plasticine sea}, tactile stop-motion claymation scene \u2014 real plasticine clay characters and set with visible thumbprints, tool marks, seam lines and a soft matte sheen, miniature studio photography with shallow depth of field and warm practical lighting, handmade Aardman-quality charm. NOT digital CG, NOT a 3D render, NOT 2D illustration \u2014 a physically sculpted miniature scene photographed on a real stop-motion stage",
43204
43228
  negativePrompt: "smooth plastic CGI surface, digital 3d render, 2d illustration, cartoon shading, perfect seamless surfaces, real human actors, lowres, deformed, watermark, text"
@@ -43210,7 +43234,7 @@ var GENERATE_IMAGE_PRESETS = [
43210
43234
  description: "Fuzzy felted-wool miniature.",
43211
43235
  group: "Handmade & Stop-Motion",
43212
43236
  data: {
43213
- provider: "nano-banana-pro",
43237
+ provider: "gpt-image-2",
43214
43238
  aspectRatio: "1:1",
43215
43239
  prompt: "{subject || a round little fox curled in a mossy nest}, needle-felted wool sculpture \u2014 soft wool roving with visible fluffy fibers and a halo of stray strands, glass-bead eyes with a tiny sheen, embroidered nose and stitched details, handcrafted miniature photographed in a cozy diorama with soft window light, Laika-quality handmade charm. NOT digital CG, NOT a 3D render, NOT 2D illustration \u2014 real felted wool photographed up close",
43216
43240
  negativePrompt: "smooth plastic surface, digital 3d render, 2d illustration, real animal fur, photorealistic animal, hard CGI edges, lowres, deformed, watermark, text"
@@ -43222,7 +43246,7 @@ var GENERATE_IMAGE_PRESETS = [
43222
43246
  description: "Stitched-sock character on stage.",
43223
43247
  group: "Handmade & Stop-Motion",
43224
43248
  data: {
43225
- provider: "nano-banana-pro",
43249
+ provider: "gpt-image-2",
43226
43250
  aspectRatio: "4:3",
43227
43251
  prompt: "{character || a cheerful sock-puppet chef holding a tiny wooden spoon}, handmade sock puppet \u2014 thick cotton knit texture, stitched felt mouth, ping-pong-ball eyes with painted pupils, yarn hair, visible seams and hot-glue details, puppet-studio photography with soft even lighting and a simple stage backdrop, Henson-style handmade charm. NOT digital CG, NOT a 3D render, NOT 2D illustration \u2014 a real fabric puppet photographed on a puppet stage",
43228
43252
  negativePrompt: "smooth CGI fabric, digital 3d render, 2d illustration, human face, realistic skin, plastic toy look, lowres, deformed, watermark, text"
@@ -43234,7 +43258,7 @@ var GENERATE_IMAGE_PRESETS = [
43234
43258
  description: "Cut-cardboard craft set, tape & paint.",
43235
43259
  group: "Handmade & Stop-Motion",
43236
43260
  data: {
43237
- provider: "nano-banana-pro",
43261
+ provider: "gpt-image-2",
43238
43262
  aspectRatio: "16:9",
43239
43263
  prompt: "{scene || a rocket launching over a tiny cardboard city}, handmade cardboard-craft diorama \u2014 corrugated cardboard structures with visible cut edges, masking tape, hot-glue joints and hand-painted acrylic surfaces, hand-lettered signs, miniature set photography with warm practical lighting and gentle depth of field, Michel Gondry handmade-prop charm. NOT digital CG, NOT a 3D render, NOT 2D illustration \u2014 a real cardboard miniature set photographed in studio",
43240
43264
  negativePrompt: "clean vector shapes, digital 3d render, 2d illustration, smooth plastic surfaces, real buildings, photoreal city, lowres, deformed, watermark, garbled text"
@@ -43246,7 +43270,7 @@ var GENERATE_IMAGE_PRESETS = [
43246
43270
  description: "Hand-stitched thread on hooped linen.",
43247
43271
  group: "Handmade & Stop-Motion",
43248
43272
  data: {
43249
- provider: "nano-banana-pro",
43273
+ provider: "gpt-image-2",
43250
43274
  aspectRatio: "1:1",
43251
43275
  prompt: "{subject || a songbird on a blossoming branch} rendered as fine hand embroidery \u2014 visible individual thread stitches, satin-stitch fills and chain-stitch outlines, subtle thread sheen, slight fabric pucker around dense stitching, hooped natural linen background with a few loose thread tails, soft daylight craft photography, artisan needlework quality. NOT digital CG, NOT a 3D render, NOT 2D illustration, NOT a print \u2014 real stitched thread on real fabric",
43252
43276
  negativePrompt: "printed fabric, flat digital illustration, 3d render, smooth painted texture, photorealistic subject, lowres, deformed, watermark, text"
@@ -43258,7 +43282,7 @@ var GENERATE_IMAGE_PRESETS = [
43258
43282
  description: "Plasticine dish styled as a commercial.",
43259
43283
  group: "Handmade & Stop-Motion",
43260
43284
  data: {
43261
- provider: "nano-banana-pro",
43285
+ provider: "nano-banana-2-1",
43262
43286
  aspectRatio: "4:5",
43263
43287
  prompt: "{dish || a steaming bowl of ramen with a soft egg and curled noodles} sculpted entirely from plasticine modeling clay and styled as a glossy food commercial \u2014 visible sculpting tool marks, clear gloss varnish standing in for broth sheen, wool-tuft steam, clay ingredients with charming hand-modeled imperfection, miniature studio food-commercial lighting with a warm appetizing key, Aardman-quality handmade charm. NOT real food photography, NOT digital CG, NOT a 3D render, NOT 2D illustration \u2014 a physically sculpted clay dish photographed like a commercial",
43264
43288
  negativePrompt: "real food, photorealistic food, digital 3d render, 2d illustration, smooth plastic CGI, melted shapeless clay, unappetizing, lowres, watermark, text"
@@ -43307,7 +43331,7 @@ var GENERATE_IMAGE_PRESETS = [
43307
43331
  description: "Single cohesive aesthetic tile.",
43308
43332
  group: "Film & Storyboard",
43309
43333
  data: {
43310
- provider: "nano-banana-pro",
43334
+ provider: "gpt-image-2",
43311
43335
  aspectRatio: "1:1",
43312
43336
  prompt: "single cohesive mood-board tile capturing {aesthetic or theme || warm Scandinavian minimalism}, one unified evocative image \u2014 not a collage or grid, soft natural lighting with gentle texture and tactile materials, balanced editorial composition, restrained {color palette || muted oat, sage and terracotta} grade, calm atmospheric mood, crisp tasteful detail",
43313
43337
  negativePrompt: "collage, grid, split panels, multiple frames, text, labels, busy clutter, watermark, lowres"
@@ -43356,7 +43380,7 @@ var GENERATE_IMAGE_PRESETS = [
43356
43380
  description: "Bright, inviting listing shot.",
43357
43381
  group: "Architecture & Interiors",
43358
43382
  data: {
43359
- provider: "nano-banana-pro",
43383
+ provider: "gpt-image-2",
43360
43384
  aspectRatio: "16:9",
43361
43385
  prompt: "professional real estate photograph of {property || a bright open-concept living room with patio doors}, wide-angle architectural lens with straight true verticals and corrected perspective, bright airy natural daylight balanced with warm interior fill for a high-dynamic-range look, clean tasteful staging with uncluttered surfaces, welcoming aspirational mood with a fresh neutral palette, accurate geometry and crisp listing-ready detail",
43362
43386
  negativePrompt: "distorted geometry, warped perspective, bent verticals, fisheye bulge, dark, dingy, cluttered, lowres, watermark, text"
@@ -43381,7 +43405,7 @@ var GENERATE_IMAGE_PRESETS = [
43381
43405
  description: "Glossy RPG inventory icon.",
43382
43406
  group: "Icons, Game Assets & Textures",
43383
43407
  data: {
43384
- provider: "nano-banana-pro",
43408
+ provider: "gpt-image-2",
43385
43409
  aspectRatio: "1:1",
43386
43410
  prompt: "polished RPG inventory game icon of {item || a glowing enchanted health potion in a crystal vial}, rounded glossy 3D style with smooth beveled edges and a subtle inner glow, soft studio key light with a bright specular highlight and a faint magical rim, single object perfectly centered with generous margins, isolated on a clean dark gradient background, vibrant saturated game-art palette, crisp readable silhouette at small sizes",
43387
43411
  negativePrompt: "flat, 2d, lowres, cluttered background, multiple objects, busy scene, harsh shadows, watermark, text"
@@ -43393,7 +43417,7 @@ var GENERATE_IMAGE_PRESETS = [
43393
43417
  description: "Tileable PBR-style material.",
43394
43418
  group: "Icons, Game Assets & Textures",
43395
43419
  data: {
43396
- provider: "nano-banana-pro",
43420
+ provider: "gpt-image-2",
43397
43421
  aspectRatio: "1:1",
43398
43422
  prompt: "seamless tileable PBR-style surface texture of {material || weathered mossy cobblestone}, perfectly repeating with no visible seams, dead-flat top-down orthographic view, even diffuse flat lighting across the whole frame with no shadows or hotspots, edges that wrap cleanly when tiled, fine high-resolution material detail, true-to-life color, crisp uniform grain",
43399
43423
  negativePrompt: "visible seams, perspective, lighting gradient, shadows, vignette, hotspots, single object, foreground subject, lowres, watermark, text"
@@ -43417,7 +43441,7 @@ var GENERATE_IMAGE_PRESETS = [
43417
43441
  description: "Glossy 3D emoji variations.",
43418
43442
  group: "Icons, Game Assets & Textures",
43419
43443
  data: {
43420
- provider: "nano-banana-pro",
43444
+ provider: "gpt-image-2",
43421
43445
  aspectRatio: "1:1",
43422
43446
  prompt: "a set of glossy 3D emoji-style reaction icons of {subject || a round smiling yellow face}, several distinct expressions arranged in an even grid \u2014 happy, laughing, surprised, sad, angry, love \u2014 strictly consistent style, shading, and proportions across every icon with only the expression changing, smooth rounded inflatable forms with a candy-gloss finish, soft even studio lighting identical on each icon with a bright specular highlight, evenly spaced on a clean plain background, vibrant saturated palette, crisp and instantly readable at small sizes",
43423
43447
  negativePrompt: "inconsistent style, mismatched shading, off-model, realistic photo, flat 2d, muddy colors, cluttered background, lowres, watermark, text"
@@ -43429,7 +43453,7 @@ var GENERATE_IMAGE_PRESETS = [
43429
43453
  description: "Game-ready pixel sprite.",
43430
43454
  group: "Icons, Game Assets & Textures",
43431
43455
  data: {
43432
- provider: "nano-banana-pro",
43456
+ provider: "gpt-image-2",
43433
43457
  aspectRatio: "1:1",
43434
43458
  style: "pixel-art",
43435
43459
  prompt: "game-ready sprite of {character or item || a plucky knight with a tiny sword}, crisp clean pixels, bold readable silhouette, limited palette, centered on a plain background",
@@ -43443,7 +43467,7 @@ var GENERATE_IMAGE_PRESETS = [
43443
43467
  description: "Backlit subject, dramatic sky.",
43444
43468
  group: "Photography & Cinematic",
43445
43469
  data: {
43446
- provider: "nano-banana-pro",
43470
+ provider: "gpt-image-2",
43447
43471
  aspectRatio: "16:9",
43448
43472
  prompt: "dramatic silhouette of {subject || a lone figure on a hilltop with arms outstretched}, 50mm lens at f/8 with crisp deep focus, subject fully backlit against a vivid sunset sky and rendered as a clean dark shape with a glowing rim, low-angle composition with the figure off-center on the horizon, bold high-contrast mood in a fiery orange-to-purple gradient, smooth graded sky, minimal interior detail and clean recognizable outline",
43449
43473
  negativePrompt: "flat lighting, front lighting, visible face detail, washed-out sky, muddy tones, lowres, deformed, watermark, text"
@@ -43467,7 +43491,7 @@ var GENERATE_IMAGE_PRESETS = [
43467
43491
  description: "Fake-miniature selective blur.",
43468
43492
  group: "Photography & Cinematic",
43469
43493
  data: {
43470
- provider: "nano-banana-pro",
43494
+ provider: "gpt-image-2",
43471
43495
  aspectRatio: "16:9",
43472
43496
  prompt: "tilt-shift miniature photograph of {scene || a bustling city intersection with tiny cars and crowds}, tilt-shift lens with a narrow band of sharp focus and strong blur above and below, high elevated bird's-eye angle, tiny people and vehicles reading like toys, centered subject band, playful diorama mood with punchy high saturation and crisp clean detail in the focus zone",
43473
43497
  negativePrompt: "uniform sharp focus, eye-level angle, flat colors, dull lighting, realistic scale, lowres, deformed, watermark, text"
@@ -43480,7 +43504,7 @@ var GENERATE_IMAGE_PRESETS = [
43480
43504
  description: "Objects arranged at 90\xB0.",
43481
43505
  group: "Product & Commerce",
43482
43506
  data: {
43483
- provider: "nano-banana-pro",
43507
+ provider: "gpt-image-2",
43484
43508
  aspectRatio: "1:1",
43485
43509
  prompt: "knolling flat-lay photograph of {items || an everyday-carry kit \u2014 knife, pen, watch, wallet and keys}, every object precisely aligned at ninety-degree right angles and evenly spaced in a tidy grid, 35mm lens at f/8 with even edge-to-edge focus, perfect top-down ninety-degree angle, soft diffused overhead light with gentle even shadows, organized symmetrical composition with consistent gaps, satisfying orderly editorial mood with a clean palette on a smooth neutral surface, crisp product detail",
43486
43510
  negativePrompt: "cluttered, messy, overlapping objects, diagonal placement, uneven spacing, tilted angle, harsh shadows, lowres, deformed, watermark, text"
@@ -43492,7 +43516,7 @@ var GENERATE_IMAGE_PRESETS = [
43492
43516
  description: "Invisible-mannequin clothing shot.",
43493
43517
  group: "Product & Commerce",
43494
43518
  data: {
43495
- provider: "nano-banana-pro",
43519
+ provider: "nano-banana-2-1",
43496
43520
  aspectRatio: "4:5",
43497
43521
  prompt: "ghost-mannequin apparel photograph of {garment || a tailored wool blazer}, invisible-mannequin hollow three-dimensional effect with the garment holding its worn shape and a visible hollow neckline and cuffs, 85mm lens at f/8 with deep focus, soft even studio lighting from large diffusers with a subtle grounding shadow, centered front-facing composition on a clean pure-white background, crisp commercial e-commerce mood with true-to-life color, accurate fabric texture and sharp seams",
43498
43522
  negativePrompt: "visible mannequin, body, person, neck, hands, flat lifeless shape, wrinkles, color cast, lowres, deformed, watermark, text"
@@ -43511,14 +43535,14 @@ var GENERATE_IMAGE_PRESETS = [
43511
43535
  name: "Vaporwave",
43512
43536
  description: "80s neon pastel aesthetic.",
43513
43537
  group: "Illustration & Art Styles",
43514
- data: { provider: "nano-banana-pro", aspectRatio: "16:9", style: "vaporwave", prompt: "{subject || a marble bust beside a glowing palm tree}, neon pink-and-cyan glow, retro grid horizon, dreamy gradient sunset, subtle VHS haze", negativePrompt: "muted colors, photorealistic, dull, lowres, watermark, text" }
43538
+ data: { provider: "gpt-image-2", aspectRatio: "16:9", style: "vaporwave", prompt: "{subject || a marble bust beside a glowing palm tree}, neon pink-and-cyan glow, retro grid horizon, dreamy gradient sunset, subtle VHS haze", negativePrompt: "muted colors, photorealistic, dull, lowres, watermark, text" }
43515
43539
  },
43516
43540
  {
43517
43541
  id: "generate-image/cyberpunk-scene",
43518
43542
  name: "Cyberpunk Scene",
43519
43543
  description: "Neon-lit dystopian night.",
43520
43544
  group: "Illustration & Art Styles",
43521
- data: { provider: "nano-banana-pro", aspectRatio: "16:9", style: "cyberpunk", prompt: "{scene || a crowded neon market street}, rain-slicked night with glowing reflections, holographic signage, dense atmospheric haze, moody teal-and-magenta glow", negativePrompt: "daylight, flat lighting, washed out, lowres, deformed, watermark, text" }
43545
+ data: { provider: "gpt-image-2", aspectRatio: "16:9", style: "cyberpunk", prompt: "{scene || a crowded neon market street}, rain-slicked night with glowing reflections, holographic signage, dense atmospheric haze, moody teal-and-magenta glow", negativePrompt: "daylight, flat lighting, washed out, lowres, deformed, watermark, text" }
43522
43546
  },
43523
43547
  {
43524
43548
  id: "generate-image/pop-art",
@@ -43532,21 +43556,21 @@ var GENERATE_IMAGE_PRESETS = [
43532
43556
  name: "Low Poly",
43533
43557
  description: "Faceted geometric 3D.",
43534
43558
  group: "Illustration & Art Styles",
43535
- data: { provider: "nano-banana-pro", aspectRatio: "1:1", style: "low-poly", prompt: "{subject || a stylized mountain fox}, faceted triangular geometry, crisp flat-shaded polygons, clean gradient color blocking, soft studio light", negativePrompt: "smooth surfaces, rounded organic detail, photorealistic, lowres, watermark, text" }
43559
+ data: { provider: "gpt-image-2", aspectRatio: "1:1", style: "low-poly", prompt: "{subject || a stylized mountain fox}, faceted triangular geometry, crisp flat-shaded polygons, clean gradient color blocking, soft studio light", negativePrompt: "smooth surfaces, rounded organic detail, photorealistic, lowres, watermark, text" }
43536
43560
  },
43537
43561
  {
43538
43562
  id: "generate-image/paper-cut",
43539
43563
  name: "Paper Cut",
43540
43564
  description: "Layered cut-paper craft.",
43541
43565
  group: "Illustration & Art Styles",
43542
- data: { provider: "nano-banana-pro", aspectRatio: "1:1", style: "paper-cutout", prompt: "{subject || a fox in a layered forest}, layered cut-paper craft, stacked depth with soft drop shadows between layers, clean torn-and-cut edges, warm tactile palette", negativePrompt: "photorealistic, flat single-layer, smooth gradients, lowres, watermark, text" }
43566
+ data: { provider: "gpt-image-2", aspectRatio: "1:1", style: "paper-cutout", prompt: "{subject || a fox in a layered forest}, layered cut-paper craft, stacked depth with soft drop shadows between layers, clean torn-and-cut edges, warm tactile palette", negativePrompt: "photorealistic, flat single-layer, smooth gradients, lowres, watermark, text" }
43543
43567
  },
43544
43568
  {
43545
43569
  id: "generate-image/stained-glass",
43546
43570
  name: "Stained Glass",
43547
43571
  description: "Leaded colored-glass mosaic.",
43548
43572
  group: "Illustration & Art Styles",
43549
- data: { provider: "nano-banana-pro", aspectRatio: "2:3", style: "stained-glass", prompt: "{subject || a phoenix rising in flames}, bold black leading lines between glowing colored glass panes, luminous backlit jewel tones, symmetrical mosaic composition", negativePrompt: "photorealistic, flat, muddy colors, broken composition, lowres, watermark, text" }
43573
+ data: { provider: "gpt-image-2-5-sunburst", aspectRatio: "2:3", style: "stained-glass", prompt: "{subject || a phoenix rising in flames}, bold black leading lines between glowing colored glass panes, luminous backlit jewel tones, symmetrical mosaic composition", negativePrompt: "photorealistic, flat, muddy colors, broken composition, lowres, watermark, text" }
43550
43574
  },
43551
43575
  // ── Diagrams & Infographics ──────────────────────────────────────────────
43552
43576
  {
@@ -43596,7 +43620,7 @@ var GENERATE_IMAGE_PRESETS = [
43596
43620
  name: "X-Ray / See-Through",
43597
43621
  description: "Internal-structure radiograph look.",
43598
43622
  group: "Illustration & Art Styles",
43599
- data: { provider: "nano-banana-pro", aspectRatio: "4:3", prompt: "x-ray see-through render of {subject || a blooming flower}, translucent body revealing the internal structure and skeleton beneath, glowing luminous white-and-cyan lines on a deep black background, crisp radiograph aesthetic, centered specimen composition", negativePrompt: "opaque solid surface, full color, photorealistic skin, cluttered background, lowres, watermark, text" }
43623
+ data: { provider: "gpt-image-2", aspectRatio: "4:3", prompt: "x-ray see-through render of {subject || a blooming flower}, translucent body revealing the internal structure and skeleton beneath, glowing luminous white-and-cyan lines on a deep black background, crisp radiograph aesthetic, centered specimen composition", negativePrompt: "opaque solid surface, full color, photorealistic skin, cluttered background, lowres, watermark, text" }
43600
43624
  },
43601
43625
  // ── More Icons, Game Assets & Textures ───────────────────────────────────
43602
43626
  {
@@ -43604,7 +43628,7 @@ var GENERATE_IMAGE_PRESETS = [
43604
43628
  name: "3D Icon",
43605
43629
  description: "Glossy single 3D-rendered icon.",
43606
43630
  group: "Icons, Game Assets & Textures",
43607
- data: { provider: "nano-banana-pro", aspectRatio: "1:1", prompt: "a single glossy 3D rendered icon of {subject || a friendly chat bubble}, smooth rounded clay-like form with soft beveled edges, soft studio key light with a gentle gradient falloff, a bright specular highlight and a soft contact shadow, perfectly centered with generous padding, isolated on a clean plain background, vibrant cohesive palette, crisp and readable at small sizes", negativePrompt: "flat, 2d, multiple objects, cluttered background, harsh shadows, photographic scene, lowres, watermark, text" }
43631
+ data: { provider: "gpt-image-2", aspectRatio: "1:1", prompt: "a single glossy 3D rendered icon of {subject || a friendly chat bubble}, smooth rounded clay-like form with soft beveled edges, soft studio key light with a gentle gradient falloff, a bright specular highlight and a soft contact shadow, perfectly centered with generous padding, isolated on a clean plain background, vibrant cohesive palette, crisp and readable at small sizes", negativePrompt: "flat, 2d, multiple objects, cluttered background, harsh shadows, photographic scene, lowres, watermark, text" }
43608
43632
  },
43609
43633
  // ── More Architecture & Interiors ────────────────────────────────────────
43610
43634
  {
@@ -43623,7 +43647,7 @@ var GENERATE_IMAGE_PRESETS = [
43623
43647
  },
43624
43648
  // ── Portrait Transformations (identity-locked, from a connected reference photo) ──
43625
43649
  // Like Stylized Subject, these are TRANSFORM presets: connect a clean front-facing
43626
- // reference portrait and nano-banana-pro rebuilds it. The "Timeless Soul" age
43650
+ // reference portrait and GPT Image 2 rebuilds it. The "Timeless Soul" age
43627
43651
  // progression renders ONE person at several ages in a single studio composite — the
43628
43652
  // whole effect rides on the identity-lock clause (same eyes/brow/nose/ears/bone
43629
43653
  // structure), so it stays one person aging rather than several different people.
@@ -43633,7 +43657,7 @@ var GENERATE_IMAGE_PRESETS = [
43633
43657
  description: "One person at 5 ages, studio line-up. Needs a reference photo.",
43634
43658
  group: "Portrait Transformations",
43635
43659
  data: {
43636
- provider: "nano-banana-pro",
43660
+ provider: "gpt-image-2",
43637
43661
  aspectRatio: "3:4",
43638
43662
  promptPrefix: "Single photorealistic studio composite of the SAME person from the reference image at five stages of life, shoulder-to-shoulder left to right in a smooth age progression: a child around 7, a teen around 15, a young adult around 27, a mature adult around 45, and an elder around 70. Editorial portrait photography, 85mm lens at f/2.8, each figure framed chest-up, all facing camera with the same calm expression. CRITICAL identity lock \u2014 same eyes, eye color, brow, nose, ears, jawline and facial bone structure across every figure, unmistakably the same person; age ONLY via skin texture, fine lines and wrinkles, hairline, hair color (darker in youth, greying with age), and a slight shift in facial fullness. Age-appropriate wardrobe per stage. Even soft cinematic studio key with gentle rim separation, clean dark-grey gradient seamless backdrop, refined neutral grade, natural skin tones, tack-sharp facial detail; the five figures fill the frame.",
43639
43663
  negativePrompt: "different person, inconsistent face between figures, distorted features, identity drift across ages, wrong eye color, plastic skin, deformed, extra fingers, blurry, lowres, watermark, text"
@@ -43645,7 +43669,7 @@ var GENERATE_IMAGE_PRESETS = [
43645
43669
  description: "Same person at 3 ages (~10 / 40 / 75). Needs a reference photo.",
43646
43670
  group: "Portrait Transformations",
43647
43671
  data: {
43648
- provider: "nano-banana-pro",
43672
+ provider: "gpt-image-2",
43649
43673
  aspectRatio: "3:4",
43650
43674
  promptPrefix: "Single photorealistic studio composite of the SAME person from the reference image as a three-age triptych, shoulder-to-shoulder left to right: around age 10, around age 40, and around age 75. Editorial portrait photography, 85mm lens at f/2.8, each figure framed chest-up, facing camera with the same calm expression. CRITICAL identity lock \u2014 same eyes, eye color, brow, nose, ears, jawline and facial bone structure across all three, unmistakably the same person; age ONLY via skin texture, fine lines, hairline, hair color (darker in youth, greying with age), and a slight shift in facial fullness. Age-appropriate clothing per stage. Even soft cinematic studio key light with gentle rim separation, clean dark-grey gradient seamless backdrop, refined neutral grade, natural skin tones, tack-sharp facial detail; the three figures fill the frame.",
43651
43675
  negativePrompt: "different person, inconsistent face between figures, distorted features, identity drift across ages, wrong eye color, plastic skin, deformed, blurry, lowres, watermark, text"
@@ -43657,7 +43681,7 @@ var GENERATE_IMAGE_PRESETS = [
43657
43681
  description: "Monochrome age line-up. Needs a reference photo.",
43658
43682
  group: "Portrait Transformations",
43659
43683
  data: {
43660
- provider: "nano-banana-pro",
43684
+ provider: "gpt-image-2",
43661
43685
  aspectRatio: "3:4",
43662
43686
  promptPrefix: "Single black-and-white photorealistic studio composite of the SAME person from the reference image rendered at five stages of life, shoulder-to-shoulder left to right in a smooth age progression: around 7, 15, 27, 45, and 70. Fine-art monochrome portraiture, 85mm lens at f/2.8, chest-up framing, all facing camera with the same calm expression. CRITICAL identity lock \u2014 same eyes, brow, nose, ears, jawline and facial bone structure across every figure, unmistakably the same person; age ONLY via skin texture, fine lines, hairline, greying hair, and a slight shift in facial fullness. Age-appropriate clothing per stage. Even soft studio key light with gentle rim separation, clean dark-grey gradient backdrop. Deep tonal range from rich blacks to clean highlights, fine silver-gelatin film grain, tack-sharp facial detail; the five figures fill the frame.",
43663
43687
  negativePrompt: "color, color tint, different person, inconsistent face between figures, distorted features, identity drift across ages, plastic skin, deformed, blurry, lowres, watermark, text"
@@ -43669,7 +43693,7 @@ var GENERATE_IMAGE_PRESETS = [
43669
43693
  description: "Same person across the '80s\u20132020s. Needs a reference photo.",
43670
43694
  group: "Portrait Transformations",
43671
43695
  data: {
43672
- provider: "nano-banana-pro",
43696
+ provider: "gpt-image-2",
43673
43697
  aspectRatio: "3:4",
43674
43698
  promptPrefix: "Single photorealistic studio composite of the SAME person from the reference image across five decades, shoulder-to-shoulder left to right with a smooth age progression and period-accurate styling: a 1980s child, a 1990s teen, a 2000s young adult, a 2010s adult, and a 2020s mature adult. Editorial portrait photography, 85mm lens at f/2.8, chest-up framing, all facing camera with the same calm expression. CRITICAL identity lock \u2014 same eyes, eye color, brow, nose, ears, jawline and facial bone structure across every figure, unmistakably the same person; age ONLY via skin texture, fine lines, hairline, hair color, and a slight shift in facial fullness. Style each to its decade in hair and wardrobe with a subtle period-accurate film treatment per decade: 1980s bold colors and big hair, 1990s casual grunge, 2000s frosted tips, 2010s clean modern, 2020s contemporary. Even soft studio key with gentle rim separation, clean dark-grey gradient seamless backdrop, natural skin tones, tack-sharp facial detail; the five figures fill the frame.",
43675
43699
  negativePrompt: "different person, inconsistent face between figures, distorted features, identity drift across decades, anachronistic styling, plastic skin, deformed, blurry, lowres, watermark, text"
@@ -43681,7 +43705,7 @@ var GENERATE_IMAGE_PRESETS = [
43681
43705
  description: "Same person in spring / summer / autumn / winter. Needs a reference photo.",
43682
43706
  group: "Portrait Transformations",
43683
43707
  data: {
43684
- provider: "nano-banana-pro",
43708
+ provider: "gpt-image-2",
43685
43709
  aspectRatio: "3:4",
43686
43710
  promptPrefix: "Single photorealistic studio composite of the SAME person from the reference image in four seasonal looks, shoulder-to-shoulder left to right: spring, summer, autumn, and winter. Editorial portrait photography, 85mm lens at f/2.8, chest-up framing, all facing camera with the same calm expression, all at the SAME age as the reference \u2014 this is seasons, not aging. CRITICAL identity lock \u2014 same eyes, eye color, brow, nose, ears, jawline and facial bone structure across all four figures, unmistakably the same person; ONLY wardrobe, hair styling and a subtle seasonal color grade change. Spring: light pastel layers, fresh airy tone. Summer: light tee, warm sunny tone. Autumn: knit sweater, golden amber tone. Winter: coat and scarf, cool crisp tone. Even soft studio key light with a gentle seasonal color cast and rim separation per figure, clean dark-grey gradient seamless backdrop, natural skin tones, tack-sharp facial detail; the four figures fill the frame.",
43687
43711
  negativePrompt: "different person, inconsistent face between figures, distorted features, aging, age differences between figures, plastic skin, deformed, blurry, lowres, watermark, text"
@@ -43693,7 +43717,7 @@ var GENERATE_IMAGE_PRESETS = [
43693
43717
  description: "Same person at dawn / midday / golden hour / night. Needs a reference photo.",
43694
43718
  group: "Portrait Transformations",
43695
43719
  data: {
43696
- provider: "nano-banana-pro",
43720
+ provider: "gpt-image-2",
43697
43721
  aspectRatio: "3:4",
43698
43722
  promptPrefix: "Single photorealistic composite of the SAME person from the reference image across four times of day, shoulder-to-shoulder left to right: dawn, midday, golden hour, and night. Editorial portrait photography, 85mm lens at f/2.8, chest-up framing, all facing camera with the same calm expression, all at the SAME age as the reference. CRITICAL identity lock \u2014 same eyes, eye color, brow, nose, ears, jawline and facial bone structure across all four figures, unmistakably the same person; ONLY the lighting and color temperature change between figures. Dawn: soft cool blue light. Midday: bright neutral daylight. Golden hour: warm amber backlight with a gentle glow. Night: moody low light with a cool rim. Consistent chest-up framing and a clean dark-grey gradient seamless backdrop, natural skin tones, tack-sharp facial detail; the four figures fill the frame.",
43699
43723
  negativePrompt: "different person, inconsistent face between figures, distorted features, aging, age differences between figures, blown highlights, plastic skin, deformed, blurry, lowres, watermark, text"
@@ -43705,7 +43729,7 @@ var GENERATE_IMAGE_PRESETS = [
43705
43729
  description: "You in an oversized team jersey, studio editorial. Needs a reference photo.",
43706
43730
  group: "Portrait Transformations",
43707
43731
  data: {
43708
- provider: "nano-banana-pro",
43732
+ provider: "nano-banana-2-1",
43709
43733
  aspectRatio: "4:5",
43710
43734
  prompt: "Premium studio editorial portrait of the SAME person from the reference image wearing an oversized modern football jersey in the colors of {team || deep crimson and gold}. Sports-fashion editorial photography, 85mm lens at f/2, shallow depth of field with the subject tack-sharp against a softly blurred background. CRITICAL identity lock \u2014 same eyes, brow, nose, ears, jawline and facial bone structure, unmistakably the same person, exact skin tone preserved. Soft directional stadium-spotlight key with natural shadow depth and a subtle rim; gradient backdrop in the jersey colors with a faint geometric pattern and soft pitch markings; gentle atmospheric haze and light film grain. Confident, relaxed three-quarter pose, rich saturated grade. Crisp fabric weave and clean jersey graphics.",
43711
43735
  negativePrompt: "different person, inconsistent face, distorted features, altered skin tone, distorted or garbled logo, misspelled team name, deformed, extra fingers, blurry, lowres, watermark, text artifacts"
@@ -43713,7 +43737,7 @@ var GENERATE_IMAGE_PRESETS = [
43713
43737
  },
43714
43738
  // ── Stylized Subject + Edits (shared with the deprecating modify-image) ──
43715
43739
  // Transform patterns — work here when a reference image is connected
43716
- // (nano-banana-pro edits it while preserving untouched regions). The
43740
+ // (GPT Image 2.5 Flare edits it while preserving untouched regions). The
43717
43741
  // instruction lives in the prompt, not `style`.
43718
43742
  ...stylizedSubjectFor("generate-image"),
43719
43743
  ...editsFor("generate-image")