Default the gemini provider to Nano Banana Pro.

gemini-3-pro-image is Google's strongest image model; IMAGE_GEN_MODEL still overrides for the cheaper flash tier.

AI-assisted commit.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Abdul Wahab
2026-09-01 10:00:42 +05:00
co-authored by Cursor
parent 98ab04b94b
commit 72ba69e3a4
2 changed files with 4 additions and 4 deletions
+1 -1
View File
@@ -33,7 +33,7 @@ Run it from the project root (that is where it finds `.impeccable/.env`). It pri
**gemini** (Nano Banana):
- **Model**: `gemini-3.1-flash-image` by default; a `IMAGE_GEN_MODEL` line in `.impeccable/.env` overrides it, and the wrapper retries the `-preview` sibling once when Google's model naming drifts.
- **Model**: `gemini-3-pro-image` (Nano Banana Pro, the strongest tier) by default; a `IMAGE_GEN_MODEL` line in `.impeccable/.env` overrides it (e.g. `gemini-3.1-flash-image` for the cheaper high-volume tier), and the wrapper retries the `-preview` sibling once when Google's model naming drifts.
- **Size**: the wrapper pins aspect ratio 1:1, so output is always square; Gemini picks the pixel size for its tier (1024 by default) and ignores `--width`/`--height`. A 1024 square passes the pipelines' square gate as a "nearest supported square"; do not upscale it.
- **Format**: Gemini frequently returns JPEG bytes regardless of the `--out` filename; the wrapper converts them, so the written file is always a real PNG. Do not re-check or re-convert it.
- **Protocol**: synchronous; one call returns the image inline, no polling. Moderation arrives as an imageless response, which the wrapper turns into a clear error, not as an HTTP failure.
+3 -3
View File
@@ -237,9 +237,9 @@ async function generateBfl({ apiKey, prompt, ref, width, height, out }) {
// only requires square). Moderation shows up as a response with no image
// part plus a block reason, not as an HTTP error.
async function generateGemini({ apiKey, prompt, ref, out }) {
// IMAGE_GEN_MODEL overrides for users on a different tier; the default
// is the high-volume Nano Banana model.
let model = loadEnv("IMAGE_GEN_MODEL") || "gemini-3.1-flash-image";
// IMAGE_GEN_MODEL overrides for users on a cheaper tier; the default is
// Nano Banana Pro, Google's strongest image model.
let model = loadEnv("IMAGE_GEN_MODEL") || "gemini-3-pro-image";
const parts = [{ text: prompt }];
if (ref) parts.push({ inlineData: { mimeType: "image/png", data: fs.readFileSync(ref).toString("base64") } });
const body = JSON.stringify({