[object Object]

← back to Designer Wallcoverings

auto-save: 2026-06-23T07:50:15 (83 files) — DW-Agents/dw-agents/agent-thibaut-updater/thibaut-updater-agent.ts DW-Agents/vendor-command-center/server.js DW-Agents/vendor-command-center/standardization-worker.js DW-Agents/vendor-command-center/website-scorer.js DW-Programming/DW-Duplicate-Recolor-v1.4/lib/geminiAnalyzer.js

2a4e2a6180b4455469bceeb586e76dde2d8618e2 · 2026-06-23 07:50:21 -0700 · Steve Abrams

Files touched

Diff

commit 2a4e2a6180b4455469bceeb586e76dde2d8618e2
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Tue Jun 23 07:50:21 2026 -0700

    auto-save: 2026-06-23T07:50:15 (83 files) — DW-Agents/dw-agents/agent-thibaut-updater/thibaut-updater-agent.ts DW-Agents/vendor-command-center/server.js DW-Agents/vendor-command-center/standardization-worker.js DW-Agents/vendor-command-center/website-scorer.js DW-Programming/DW-Duplicate-Recolor-v1.4/lib/geminiAnalyzer.js
---
 .../agent-thibaut-updater/thibaut-updater-agent.ts |  2 +-
 DW-Agents/vendor-command-center/server.js          |  4 +-
 .../standardization-worker.js                      |  2 +-
 DW-Agents/vendor-command-center/website-scorer.js  |  2 +-
 .../lib/geminiAnalyzer.js                          |  2 +-
 .../dwjs-comprehensive-update.ts                   |  2 +-
 .../dwjs-interior-design-update.js                 |  2 +-
 .../dwjs-interior-design-update.ts                 |  2 +-
 .../scripts/rwltd-gemini-cron.js                   |  2 +-
 .../scripts/rescan-scheduled-posts.ts              |  2 +-
 .../src/app/api/analyze-product/route.ts           |  2 +-
 .../src/app/api/generate-ai-content/route.ts       |  2 +-
 DW-Programming/activate-versace-drafts.js          |  2 +-
 DW-Programming/activate-versace-vi.js              |  6 +--
 DW-Programming/anna-french-ai-enrich.js            |  2 +-
 DW-Programming/china-seas-design-tagger.js         |  2 +-
 DW-Programming/color-collection-cleaner.js         |  2 +-
 DW-Programming/fix-blue-collection.js              |  6 +--
 DW-Programming/gls-gemini-retry.js                 |  2 +-
 DW-Programming/gls-product-cleanup.js              |  4 +-
 DW-Programming/gls-product-processor.js            |  2 +-
 DW-Programming/gls-product-updater.js              |  2 +-
 DW-Programming/gls-retry-failed.js                 |  2 +-
 DW-Programming/hollywood-hex-and-tags.js           |  2 +-
 DW-Programming/interior-design-ai-tagger.js        |  2 +-
 DW-Programming/interior-design-tagger.js           |  2 +-
 .../maya-romanoff-updater/maya-romanoff-updater.js |  2 +-
 DW-Programming/maya-romanoff-updater/server.js     |  2 +-
 .../app/api/analyze-image/route.ts                 |  2 +-
 .../nextjs-liquid-app/app/api/bulk-import/route.ts |  2 +-
 DW-Programming/phase3-ai-enrich-100.js             |  2 +-
 DW-Programming/phase3-ai-enrich-batch.js           |  2 +-
 DW-Programming/phase3-ai-enrichment.js             |  2 +-
 DW-Programming/prl-ai-enrich.js                    |  2 +-
 DW-Programming/ralph-lauren-fabric-updater-9899.js |  2 +-
 DW-Programming/ralph-lauren-fabric-updater-9899.ts |  2 +-
 .../app/api/analyze-pattern/route.ts               |  2 +-
 .../room-setting-app/lib/multi-model-generator.ts  |  2 +-
 DW-Programming/zoffany-ai-enrich.js                |  2 +-
 ai-enrich-arte-fix.js                              |  2 +-
 ai-enrich-gaps2.js                                 |  2 +-
 arte-fill-tags.js                                  |  2 +-
 brand-router/server.js                             |  2 +-
 enrich-arte-gaps.js                                |  2 +-
 enrich-arte-puppeteer.js                           |  2 +-
 enrich-remaining-13.js                             |  2 +-
 gemini-classify-texture.js                         |  2 +-
 gemini-enrich-gaps.js                              |  2 +-
 scripts/brand-mckenzie-ai-analysis.ts              |  2 +-
 scripts/brand-mckenzie-full-scrape.ts              |  2 +-
 scripts/brand-mckenzie-full-update.ts              |  2 +-
 scripts/collection-description-writer.js           |  2 +-
 scripts/enrich-remaining-13.js                     |  2 +-
 scripts/interior-design-tags.js                    |  2 +-
 scripts/prl-ai-enrich.js                           |  2 +-
 scripts/texture-repeat-classifier.js               |  2 +-
 scripts/us-007-ai-product-quality-analyzer.ts      |  2 +-
 shopify/_cwGRID/sections/collection.liquid         |  2 +-
 .../collection-filters-horizontal.liquid           | 61 +---------------------
 shopify/fix-collection-filters-snippet.sh          |  2 +
 shopify/scripts/arte-dashboard/server.js           |  4 +-
 shopify/scripts/bespoke-updater/server.js          |  2 +-
 shopify/scripts/gemini-catalog-tagger.js           |  2 +-
 shopify/scripts/gemini-tag-engine/index.js         |  2 +-
 shopify/scripts/import-missing-dwrr.ts             |  2 +-
 shopify/scripts/interior-design-tagger.js          |  4 +-
 shopify/scripts/koroseal-batch-cron.js             |  2 +-
 shopify/scripts/koroseal-complete-update.ts        |  2 +-
 shopify/scripts/koroseal-enhanced-update.js        |  2 +-
 shopify/scripts/koroseal-update.js                 |  2 +-
 shopify/scripts/prl-ai-enrich.js                   |  2 +-
 shopify/scripts/review-dwqw-images-descriptions.ts |  2 +-
 shopify/scripts/set-texture-repeat-zero.js         |  4 +-
 shopify/scripts/update-all-malibu-architectural.ts |  2 +-
 shopify/scripts/update-dwk-full-details.js         |  2 +-
 shopify/scripts/update-dwk-slow-seo.js             |  2 +-
 shopify/scripts/update-dwqw-complete.ts            |  2 +-
 .../scripts/update-dwqw-malibu-architectural.ts    |  2 +-
 .../scripts/update-dwrr-descriptions-quantities.ts |  2 +-
 shopify/scripts/update-dwrr-gemini.ts              |  2 +-
 shopify/scripts/update-koroseal-gemini.ts          |  2 +-
 shopify/scripts/zoffany-full-monty-20.js           |  2 +-
 82 files changed, 92 insertions(+), 149 deletions(-)

diff --git a/DW-Agents/dw-agents/agent-thibaut-updater/thibaut-updater-agent.ts b/DW-Agents/dw-agents/agent-thibaut-updater/thibaut-updater-agent.ts
index eaec9e2d..8e77da03 100644
--- a/DW-Agents/dw-agents/agent-thibaut-updater/thibaut-updater-agent.ts
+++ b/DW-Agents/dw-agents/agent-thibaut-updater/thibaut-updater-agent.ts
@@ -448,7 +448,7 @@ Provide comprehensive tagging data for e-commerce. Return ONLY valid JSON:
 }` }
           ]
         }],
-        generationConfig: { temperature: 0.1, maxOutputTokens: 800 }
+        generationConfig: { temperature: 0.1, maxOutputTokens: 800, thinkingConfig: { thinkingBudget: 0 } }
       })
     });
 
diff --git a/DW-Agents/vendor-command-center/server.js b/DW-Agents/vendor-command-center/server.js
index eb71f735..696176c4 100644
--- a/DW-Agents/vendor-command-center/server.js
+++ b/DW-Agents/vendor-command-center/server.js
@@ -1245,7 +1245,7 @@ app.post('/api/launch-test', async (req, res) => {
                 contents: [{ parts: [
                   { text: `Image URL: ${p.image_url}\n\nProduct: ${title}\n\n${idPrompt}` }
                 ]}],
-                generationConfig: { temperature: 0.1, maxOutputTokens: 400 }
+                generationConfig: { temperature: 0.1, maxOutputTokens: 400, thinkingConfig: { thinkingBudget: 0 } }
               }),
               signal: AbortSignal.timeout(15000)
             }
@@ -3490,7 +3490,7 @@ app.post('/api/tags/batch-submit', async (req, res) => {
   "material": "one of: Vinyl, Paper, Non-woven, Grasscloth, Sisal, Silk, Fabric, Linen, Velvet, Metal Leaf, Foil"
 }` }
                 ]}],
-                generationConfig: { temperature: 0.1, maxOutputTokens: 500 }
+                generationConfig: { temperature: 0.1, maxOutputTokens: 500, thinkingConfig: { thinkingBudget: 0 } }
               })
             }
           );
diff --git a/DW-Agents/vendor-command-center/standardization-worker.js b/DW-Agents/vendor-command-center/standardization-worker.js
index 5d7792b7..dfb0e2c6 100644
--- a/DW-Agents/vendor-command-center/standardization-worker.js
+++ b/DW-Agents/vendor-command-center/standardization-worker.js
@@ -95,7 +95,7 @@ async function analyzeWithGemini(imageUrl, title, productType) {
         { inlineData: { mimeType: 'image/jpeg', data: imageBase64 } },
         { text: GEMINI_PROMPT + '\n\nContext: ' + contextNote }
       ]}],
-      generationConfig: { temperature: 0.1, maxOutputTokens: 800 }
+      generationConfig: { temperature: 0.1, maxOutputTokens: 800, thinkingConfig: { thinkingBudget: 0 } }
     }),
     signal: gemCtrl.signal
   });
diff --git a/DW-Agents/vendor-command-center/website-scorer.js b/DW-Agents/vendor-command-center/website-scorer.js
index 1d24954a..298b4fa7 100644
--- a/DW-Agents/vendor-command-center/website-scorer.js
+++ b/DW-Agents/vendor-command-center/website-scorer.js
@@ -293,7 +293,7 @@ Scoring guide:
 
   const body = JSON.stringify({
     contents: [{ parts: [{ text: prompt }] }],
-    generationConfig: { temperature: 0.3, maxOutputTokens: 200 },
+    generationConfig: { temperature: 0.3, maxOutputTokens: 200, thinkingConfig: { thinkingBudget: 0 } },
   });
 
   return new Promise((resolve, reject) => {
diff --git a/DW-Programming/DW-Duplicate-Recolor-v1.4/lib/geminiAnalyzer.js b/DW-Programming/DW-Duplicate-Recolor-v1.4/lib/geminiAnalyzer.js
index 189580fe..d754b11f 100644
--- a/DW-Programming/DW-Duplicate-Recolor-v1.4/lib/geminiAnalyzer.js
+++ b/DW-Programming/DW-Duplicate-Recolor-v1.4/lib/geminiAnalyzer.js
@@ -89,7 +89,7 @@ For ${wallWidthFt}×${wallHeightFt} wall: ${wallHeightFt > wallWidthFt ? 'NARROW
                     temperature: 0.4,
                     topK: 32,
                     topP: 1,
-                    maxOutputTokens: 4096,
+                    maxOutputTokens: 4096, thinkingConfig: { thinkingBudget: 0 },
                 }
             });
 
diff --git a/DW-Programming/ImportNewSkufromURL/dwjs-comprehensive-update.ts b/DW-Programming/ImportNewSkufromURL/dwjs-comprehensive-update.ts
index ec22a9d4..b4f917ec 100644
--- a/DW-Programming/ImportNewSkufromURL/dwjs-comprehensive-update.ts
+++ b/DW-Programming/ImportNewSkufromURL/dwjs-comprehensive-update.ts
@@ -210,7 +210,7 @@ async function analyzeImageWithGemini(imageUrl: string): Promise<{ color1: strin
               { inlineData: { mimeType: 'image/jpeg', data: await fetchImageAsBase64(imageUrl) } }
             ]
           }],
-          generationConfig: { temperature: 0.1, maxOutputTokens: 500 }
+          generationConfig: { temperature: 0.1, maxOutputTokens: 500, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
diff --git a/DW-Programming/ImportNewSkufromURL/dwjs-interior-design-update.js b/DW-Programming/ImportNewSkufromURL/dwjs-interior-design-update.js
index 084377e8..373e207b 100644
--- a/DW-Programming/ImportNewSkufromURL/dwjs-interior-design-update.js
+++ b/DW-Programming/ImportNewSkufromURL/dwjs-interior-design-update.js
@@ -232,7 +232,7 @@ Return ONLY valid JSON (no markdown, no code blocks):
 }` }
             ]
           }],
-          generationConfig: { temperature: 0.1, maxOutputTokens: 600 }
+          generationConfig: { temperature: 0.1, maxOutputTokens: 600, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
diff --git a/DW-Programming/ImportNewSkufromURL/dwjs-interior-design-update.ts b/DW-Programming/ImportNewSkufromURL/dwjs-interior-design-update.ts
index d4cbe470..e2476f1f 100644
--- a/DW-Programming/ImportNewSkufromURL/dwjs-interior-design-update.ts
+++ b/DW-Programming/ImportNewSkufromURL/dwjs-interior-design-update.ts
@@ -236,7 +236,7 @@ Return ONLY valid JSON (no markdown, no code blocks):
 }` }
             ]
           }],
-          generationConfig: { temperature: 0.1, maxOutputTokens: 600 }
+          generationConfig: { temperature: 0.1, maxOutputTokens: 600, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
diff --git a/DW-Programming/ImportNewSkufromURL/scripts/rwltd-gemini-cron.js b/DW-Programming/ImportNewSkufromURL/scripts/rwltd-gemini-cron.js
index f07c3a9e..a7f427b4 100644
--- a/DW-Programming/ImportNewSkufromURL/scripts/rwltd-gemini-cron.js
+++ b/DW-Programming/ImportNewSkufromURL/scripts/rwltd-gemini-cron.js
@@ -51,7 +51,7 @@ Return ONLY valid JSON:
 }` }
             ]
           }],
-          generationConfig: { temperature: 0.1, maxOutputTokens: 300 }
+          generationConfig: { temperature: 0.1, maxOutputTokens: 300, thinkingConfig: { thinkingBudget: 0 } }
         }),
         signal: AbortSignal.timeout(25000)
       }
diff --git a/DW-Programming/ShopifyCalendarNext/scripts/rescan-scheduled-posts.ts b/DW-Programming/ShopifyCalendarNext/scripts/rescan-scheduled-posts.ts
index dd7edf1c..83619667 100644
--- a/DW-Programming/ShopifyCalendarNext/scripts/rescan-scheduled-posts.ts
+++ b/DW-Programming/ShopifyCalendarNext/scripts/rescan-scheduled-posts.ts
@@ -72,7 +72,7 @@ Return ONLY valid JSON:
 8. Description MUST mention: Custom Colors, Custom Scale, Made to Order` }
             ]
           }],
-          generationConfig: { temperature: 0.1, maxOutputTokens: 1200 }
+          generationConfig: { temperature: 0.1, maxOutputTokens: 1200, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
diff --git a/DW-Programming/ShopifyCalendarNext/src/app/api/analyze-product/route.ts b/DW-Programming/ShopifyCalendarNext/src/app/api/analyze-product/route.ts
index cbaa9721..1a260761 100644
--- a/DW-Programming/ShopifyCalendarNext/src/app/api/analyze-product/route.ts
+++ b/DW-Programming/ShopifyCalendarNext/src/app/api/analyze-product/route.ts
@@ -89,7 +89,7 @@ Return ONLY valid JSON matching this schema:
             { text: prompt }
           ]
         }],
-        generationConfig: { temperature: 0.1, maxOutputTokens: 1200 }
+        generationConfig: { temperature: 0.1, maxOutputTokens: 1200, thinkingConfig: { thinkingBudget: 0 } }
       })
     }
   );
diff --git a/DW-Programming/ShopifyCalendarNext/src/app/api/generate-ai-content/route.ts b/DW-Programming/ShopifyCalendarNext/src/app/api/generate-ai-content/route.ts
index 9b0b8ab8..6d2fd80c 100644
--- a/DW-Programming/ShopifyCalendarNext/src/app/api/generate-ai-content/route.ts
+++ b/DW-Programming/ShopifyCalendarNext/src/app/api/generate-ai-content/route.ts
@@ -70,7 +70,7 @@ Return ONLY valid JSON in this exact format:
           }],
           generationConfig: {
             temperature: 0.3,
-            maxOutputTokens: 500
+            maxOutputTokens: 500, thinkingConfig: { thinkingBudget: 0 }
           }
         })
       }
diff --git a/DW-Programming/activate-versace-drafts.js b/DW-Programming/activate-versace-drafts.js
index 9b7db7e7..5b12cb8b 100644
--- a/DW-Programming/activate-versace-drafts.js
+++ b/DW-Programming/activate-versace-drafts.js
@@ -79,7 +79,7 @@ Requirements:
         { inline_data: { mime_type: 'image/jpeg', data: imgBase64 } }
       ]
     }],
-    generationConfig: { maxOutputTokens: 300, temperature: 0.7 }
+    generationConfig: { maxOutputTokens: 300, thinkingConfig: { thinkingBudget: 0 }, temperature: 0.7 }
   };
 
   const resp = await fetch(
diff --git a/DW-Programming/activate-versace-vi.js b/DW-Programming/activate-versace-vi.js
index 4b06890e..0a25023b 100644
--- a/DW-Programming/activate-versace-vi.js
+++ b/DW-Programming/activate-versace-vi.js
@@ -149,14 +149,14 @@ Guidelines:
             { inline_data: { mime_type: 'image/jpeg', data: imageBase64 } }
           ]
         }],
-        generationConfig: { temperature: 0.7, maxOutputTokens: 300 }
+        generationConfig: { temperature: 0.7, maxOutputTokens: 300, thinkingConfig: { thinkingBudget: 0 } }
       };
     } else {
       reqBody = {
         contents: [{
           parts: [{ text: prompt + `\n\nNote: The image could not be loaded. Write based on the pattern name and color.` }]
         }],
-        generationConfig: { temperature: 0.7, maxOutputTokens: 300 }
+        generationConfig: { temperature: 0.7, maxOutputTokens: 300, thinkingConfig: { thinkingBudget: 0 } }
       };
     }
 
@@ -178,7 +178,7 @@ Guidelines:
         contents: [{
           parts: [{ text: prompt + `\n\nNote: Write based on the pattern name and color provided.` }]
         }],
-        generationConfig: { temperature: 0.7, maxOutputTokens: 300 }
+        generationConfig: { temperature: 0.7, maxOutputTokens: 300, thinkingConfig: { thinkingBudget: 0 } }
       };
 
       const fallbackRes = await httpRequest(url, {
diff --git a/DW-Programming/anna-french-ai-enrich.js b/DW-Programming/anna-french-ai-enrich.js
index c95122da..61165ec2 100644
--- a/DW-Programming/anna-french-ai-enrich.js
+++ b/DW-Programming/anna-french-ai-enrich.js
@@ -92,7 +92,7 @@ async function analyzeWithGemini(imageBase64, context) {
         { text: prompt }
       ]
     }],
-    generationConfig: { temperature: 0.1, maxOutputTokens: 800 }
+    generationConfig: { temperature: 0.1, maxOutputTokens: 800, thinkingConfig: { thinkingBudget: 0 } }
   };
 
   const bodyStr = JSON.stringify(body);
diff --git a/DW-Programming/china-seas-design-tagger.js b/DW-Programming/china-seas-design-tagger.js
index e52bea81..322c0a06 100644
--- a/DW-Programming/china-seas-design-tagger.js
+++ b/DW-Programming/china-seas-design-tagger.js
@@ -89,7 +89,7 @@ Return ONLY valid JSON (no markdown, no code fences):
       { inlineData: { mimeType, data: base64 } },
       { text: prompt }
     ]}],
-    generationConfig: { temperature: 0.1, maxOutputTokens: 800 }
+    generationConfig: { temperature: 0.1, maxOutputTokens: 800, thinkingConfig: { thinkingBudget: 0 } }
   };
 
   const resp = await fetchJson(GEMINI_URL, {
diff --git a/DW-Programming/color-collection-cleaner.js b/DW-Programming/color-collection-cleaner.js
index 7a83c1f3..9fcafc8f 100644
--- a/DW-Programming/color-collection-cleaner.js
+++ b/DW-Programming/color-collection-cleaner.js
@@ -223,7 +223,7 @@ async function analyzeWithGemini(imageUrl, colorPrompt, notColors) {
         { inline_data: { mime_type: 'image/jpeg', data: imgBase64 } }
       ]
     }],
-    generationConfig: { temperature: 0.1, maxOutputTokens: 50 }
+    generationConfig: { temperature: 0.1, maxOutputTokens: 50, thinkingConfig: { thinkingBudget: 0 } }
   });
 
   // Retry with exponential backoff on 429
diff --git a/DW-Programming/fix-blue-collection.js b/DW-Programming/fix-blue-collection.js
index 249aa76c..f78902e9 100644
--- a/DW-Programming/fix-blue-collection.js
+++ b/DW-Programming/fix-blue-collection.js
@@ -71,7 +71,7 @@ async function analyzeWithGemini(imageUrl) {
           { text: imageUrl }
         ]
       }],
-      generationConfig: { temperature: 0.1, maxOutputTokens: 50 }
+      generationConfig: { temperature: 0.1, maxOutputTokens: 50, thinkingConfig: { thinkingBudget: 0 } }
     });
 
     // Use URL-based image analysis
@@ -82,7 +82,7 @@ async function analyzeWithGemini(imageUrl) {
           { file_data: { mime_type: 'image/jpeg', file_uri: imageUrl } }
         ]
       }],
-      generationConfig: { temperature: 0.1, maxOutputTokens: 50 }
+      generationConfig: { temperature: 0.1, maxOutputTokens: 50, thinkingConfig: { thinkingBudget: 0 } }
     });
 
     // Fetch image first, then send as base64
@@ -98,7 +98,7 @@ async function analyzeWithGemini(imageUrl) {
               { inline_data: { mime_type: 'image/jpeg', data: imgBase64 } }
             ]
           }],
-          generationConfig: { temperature: 0.1, maxOutputTokens: 50 }
+          generationConfig: { temperature: 0.1, maxOutputTokens: 50, thinkingConfig: { thinkingBudget: 0 } }
         });
 
         const gemReq = https.request({
diff --git a/DW-Programming/gls-gemini-retry.js b/DW-Programming/gls-gemini-retry.js
index 16c5bf86..39aeb426 100644
--- a/DW-Programming/gls-gemini-retry.js
+++ b/DW-Programming/gls-gemini-retry.js
@@ -118,7 +118,7 @@ Analyze this wallcovering and return ONLY valid JSON (no markdown, no backticks,
       { inlineData: { mimeType: 'image/jpeg', data: imageBase64 } },
       { text: prompt }
     ]}],
-    generationConfig: { temperature: 0.2, maxOutputTokens: 500 }
+    generationConfig: { temperature: 0.2, maxOutputTokens: 500, thinkingConfig: { thinkingBudget: 0 } }
   };
 
   const res = await fetch(GEMINI_URL, {
diff --git a/DW-Programming/gls-product-cleanup.js b/DW-Programming/gls-product-cleanup.js
index a0b3ac54..0d0ef0c1 100644
--- a/DW-Programming/gls-product-cleanup.js
+++ b/DW-Programming/gls-product-cleanup.js
@@ -199,7 +199,7 @@ Analyze this wallcovering and return ONLY valid JSON (no markdown, no backticks)
         { text: prompt }
       ]
     }],
-    generationConfig: { temperature: 0.2, maxOutputTokens: 800 }
+    generationConfig: { temperature: 0.2, maxOutputTokens: 800, thinkingConfig: { thinkingBudget: 0 } }
   };
 
   const res = await fetch(GEMINI_URL, {
@@ -239,7 +239,7 @@ Return ONLY valid JSON (no markdown):
         { text: prompt }
       ]
     }],
-    generationConfig: { temperature: 0.1, maxOutputTokens: 300 }
+    generationConfig: { temperature: 0.1, maxOutputTokens: 300, thinkingConfig: { thinkingBudget: 0 } }
   };
 
   const res = await fetch(GEMINI_URL, {
diff --git a/DW-Programming/gls-product-processor.js b/DW-Programming/gls-product-processor.js
index f101b85e..3167a218 100644
--- a/DW-Programming/gls-product-processor.js
+++ b/DW-Programming/gls-product-processor.js
@@ -139,7 +139,7 @@ Analyze this wallcovering image and return ONLY valid JSON (no markdown, no back
           { text: prompt }
         ]
       }],
-      generationConfig: { temperature: 0.1, maxOutputTokens: 1000 }
+      generationConfig: { temperature: 0.1, maxOutputTokens: 1000, thinkingConfig: { thinkingBudget: 0 } }
     })
   });
 
diff --git a/DW-Programming/gls-product-updater.js b/DW-Programming/gls-product-updater.js
index 4a55896b..dd2b95bf 100644
--- a/DW-Programming/gls-product-updater.js
+++ b/DW-Programming/gls-product-updater.js
@@ -84,7 +84,7 @@ Analyze this wallcovering and return ONLY valid JSON (no markdown, no code fence
 IMPORTANT: Only list colors you ACTUALLY SEE. Do not guess. Do not add colors from the title unless visible.` }
         ]
       }],
-      generationConfig: { temperature: 0.1, maxOutputTokens: 800 }
+      generationConfig: { temperature: 0.1, maxOutputTokens: 800, thinkingConfig: { thinkingBudget: 0 } }
     })
   });
 
diff --git a/DW-Programming/gls-retry-failed.js b/DW-Programming/gls-retry-failed.js
index cf28a3b2..aa24d8a2 100644
--- a/DW-Programming/gls-retry-failed.js
+++ b/DW-Programming/gls-retry-failed.js
@@ -60,7 +60,7 @@ Return ONLY valid JSON (no markdown):
         { inlineData: { mimeType: mimeMap[ext] || 'image/jpeg', data: base64 } },
         { text: prompt }
       ]}],
-      generationConfig: { temperature: 0.1, maxOutputTokens: 1000 }
+      generationConfig: { temperature: 0.1, maxOutputTokens: 1000, thinkingConfig: { thinkingBudget: 0 } }
     })
   });
   const data = await res.json();
diff --git a/DW-Programming/hollywood-hex-and-tags.js b/DW-Programming/hollywood-hex-and-tags.js
index eb60dbab..be032618 100644
--- a/DW-Programming/hollywood-hex-and-tags.js
+++ b/DW-Programming/hollywood-hex-and-tags.js
@@ -257,7 +257,7 @@ Focus on the overall dominant color of the wallcovering material itself, not bac
     }],
     generationConfig: {
       temperature: 0.1,
-      maxOutputTokens: 50
+      maxOutputTokens: 50, thinkingConfig: { thinkingBudget: 0 }
     }
   };
 
diff --git a/DW-Programming/interior-design-ai-tagger.js b/DW-Programming/interior-design-ai-tagger.js
index 21b19653..b26c9a1b 100644
--- a/DW-Programming/interior-design-ai-tagger.js
+++ b/DW-Programming/interior-design-ai-tagger.js
@@ -129,7 +129,7 @@ async function analyzeWithGemini(imageBase64, context = '') {
         { text: prompt }
       ]
     }],
-    generationConfig: { temperature: 0.1, maxOutputTokens: 800 }
+    generationConfig: { temperature: 0.1, maxOutputTokens: 800, thinkingConfig: { thinkingBudget: 0 } }
   };
 
   const controller = new AbortController();
diff --git a/DW-Programming/interior-design-tagger.js b/DW-Programming/interior-design-tagger.js
index 35701cbf..1752838b 100644
--- a/DW-Programming/interior-design-tagger.js
+++ b/DW-Programming/interior-design-tagger.js
@@ -226,7 +226,7 @@ Return ONLY valid JSON (no markdown, no code fences):
 }` }
             ]
           }],
-          generationConfig: { temperature: 0.1, maxOutputTokens: 500 }
+          generationConfig: { temperature: 0.1, maxOutputTokens: 500, thinkingConfig: { thinkingBudget: 0 } }
         });
 
         const url = new URL(`https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-flash:generateContent?key=${GEMINI_API_KEY}`);
diff --git a/DW-Programming/maya-romanoff-updater/maya-romanoff-updater.js b/DW-Programming/maya-romanoff-updater/maya-romanoff-updater.js
index 8f1f42d9..2d20f2fe 100644
--- a/DW-Programming/maya-romanoff-updater/maya-romanoff-updater.js
+++ b/DW-Programming/maya-romanoff-updater/maya-romanoff-updater.js
@@ -121,7 +121,7 @@ Return ONLY valid JSON (no markdown):
 }` }
             ]
           }],
-          generationConfig: { temperature: 0.1, maxOutputTokens: 1000 }
+          generationConfig: { temperature: 0.1, maxOutputTokens: 1000, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
diff --git a/DW-Programming/maya-romanoff-updater/server.js b/DW-Programming/maya-romanoff-updater/server.js
index 31e8b73a..c266a83c 100644
--- a/DW-Programming/maya-romanoff-updater/server.js
+++ b/DW-Programming/maya-romanoff-updater/server.js
@@ -487,7 +487,7 @@ Return ONLY valid JSON (no markdown, no code blocks):
               { text: prompt }
             ]
           }],
-          generationConfig: { temperature: 0.1, maxOutputTokens: 1000 }
+          generationConfig: { temperature: 0.1, maxOutputTokens: 1000, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
diff --git a/DW-Programming/nextjs-liquid-app/app/api/analyze-image/route.ts b/DW-Programming/nextjs-liquid-app/app/api/analyze-image/route.ts
index 5acabdce..c76765b0 100644
--- a/DW-Programming/nextjs-liquid-app/app/api/analyze-image/route.ts
+++ b/DW-Programming/nextjs-liquid-app/app/api/analyze-image/route.ts
@@ -75,7 +75,7 @@ Return ONLY valid JSON with no markdown:
                 { text: prompt }
               ]
             }],
-            generationConfig: { temperature: 0.1, maxOutputTokens: 1000 }
+            generationConfig: { temperature: 0.1, maxOutputTokens: 1000, thinkingConfig: { thinkingBudget: 0 } }
           })
         }
       );
diff --git a/DW-Programming/nextjs-liquid-app/app/api/bulk-import/route.ts b/DW-Programming/nextjs-liquid-app/app/api/bulk-import/route.ts
index 9197b818..772c8855 100644
--- a/DW-Programming/nextjs-liquid-app/app/api/bulk-import/route.ts
+++ b/DW-Programming/nextjs-liquid-app/app/api/bulk-import/route.ts
@@ -162,7 +162,7 @@ Return ONLY valid JSON with no markdown:
 }` }
             ]
           }],
-          generationConfig: { temperature: 0.1, maxOutputTokens: 1000 }
+          generationConfig: { temperature: 0.1, maxOutputTokens: 1000, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
diff --git a/DW-Programming/phase3-ai-enrich-100.js b/DW-Programming/phase3-ai-enrich-100.js
index 79f54a88..2a8a7b9a 100644
--- a/DW-Programming/phase3-ai-enrich-100.js
+++ b/DW-Programming/phase3-ai-enrich-100.js
@@ -67,7 +67,7 @@ function callGemini(base64Data, mimeType) {
           { inline_data: { mime_type: mimeType, data: base64Data } }
         ]
       }],
-      generationConfig: { temperature: 0.2, maxOutputTokens: 1024 }
+      generationConfig: { temperature: 0.2, maxOutputTokens: 1024, thinkingConfig: { thinkingBudget: 0 } }
     });
 
     const url = new URL(GEMINI_URL);
diff --git a/DW-Programming/phase3-ai-enrich-batch.js b/DW-Programming/phase3-ai-enrich-batch.js
index db22ad7b..33f4a46a 100644
--- a/DW-Programming/phase3-ai-enrich-batch.js
+++ b/DW-Programming/phase3-ai-enrich-batch.js
@@ -82,7 +82,7 @@ function callGemini(base64Data, mimeType) {
       }],
       generationConfig: {
         temperature: 0.2,
-        maxOutputTokens: 1024
+        maxOutputTokens: 1024, thinkingConfig: { thinkingBudget: 0 }
       }
     });
 
diff --git a/DW-Programming/phase3-ai-enrichment.js b/DW-Programming/phase3-ai-enrichment.js
index ffa2f016..fa044af7 100644
--- a/DW-Programming/phase3-ai-enrichment.js
+++ b/DW-Programming/phase3-ai-enrichment.js
@@ -80,7 +80,7 @@ function callGemini(base64Image, mimeType = 'image/jpeg') {
       }],
       generationConfig: {
         temperature: 0.2,
-        maxOutputTokens: 1024
+        maxOutputTokens: 1024, thinkingConfig: { thinkingBudget: 0 }
       }
     });
 
diff --git a/DW-Programming/prl-ai-enrich.js b/DW-Programming/prl-ai-enrich.js
index 7d880fb5..0ffa3773 100644
--- a/DW-Programming/prl-ai-enrich.js
+++ b/DW-Programming/prl-ai-enrich.js
@@ -94,7 +94,7 @@ async function analyzeWithGemini(imageBase64, context) {
         { text: prompt }
       ]
     }],
-    generationConfig: { temperature: 0.1, maxOutputTokens: 800 }
+    generationConfig: { temperature: 0.1, maxOutputTokens: 800, thinkingConfig: { thinkingBudget: 0 } }
   };
 
   const bodyStr = JSON.stringify(body);
diff --git a/DW-Programming/ralph-lauren-fabric-updater-9899.js b/DW-Programming/ralph-lauren-fabric-updater-9899.js
index 10c78ed3..1716e652 100644
--- a/DW-Programming/ralph-lauren-fabric-updater-9899.js
+++ b/DW-Programming/ralph-lauren-fabric-updater-9899.js
@@ -1150,7 +1150,7 @@ Return ONLY valid JSON (no markdown, no code blocks):
                     }],
                 generationConfig: {
                     temperature: 0.1,
-                    maxOutputTokens: 800
+                    maxOutputTokens: 800, thinkingConfig: { thinkingBudget: 0 }
                 }
             })
         });
diff --git a/DW-Programming/ralph-lauren-fabric-updater-9899.ts b/DW-Programming/ralph-lauren-fabric-updater-9899.ts
index 3ffe4e69..e3f969b6 100644
--- a/DW-Programming/ralph-lauren-fabric-updater-9899.ts
+++ b/DW-Programming/ralph-lauren-fabric-updater-9899.ts
@@ -1268,7 +1268,7 @@ Return ONLY valid JSON (no markdown, no code blocks):
           }],
           generationConfig: {
             temperature: 0.1,
-            maxOutputTokens: 800
+            maxOutputTokens: 800, thinkingConfig: { thinkingBudget: 0 }
           }
         })
       }
diff --git a/DW-Programming/room-setting-app/app/api/analyze-pattern/route.ts b/DW-Programming/room-setting-app/app/api/analyze-pattern/route.ts
index 55c3b29a..25741543 100644
--- a/DW-Programming/room-setting-app/app/api/analyze-pattern/route.ts
+++ b/DW-Programming/room-setting-app/app/api/analyze-pattern/route.ts
@@ -105,7 +105,7 @@ Respond ONLY with valid JSON in this exact format (no markdown, no code fences,
           temperature: 0.2,
           topK: 32,
           topP: 0.8,
-          maxOutputTokens: 1024,
+          maxOutputTokens: 1024, thinkingConfig: { thinkingBudget: 0 },
         },
       }),
     });
diff --git a/DW-Programming/room-setting-app/lib/multi-model-generator.ts b/DW-Programming/room-setting-app/lib/multi-model-generator.ts
index 758420b4..95ea68e5 100644
--- a/DW-Programming/room-setting-app/lib/multi-model-generator.ts
+++ b/DW-Programming/room-setting-app/lib/multi-model-generator.ts
@@ -914,7 +914,7 @@ Generate the photorealistic room with correctly scaled wallpaper now.`;
         temperature: 0.4,
         topK: 32,
         topP: 1,
-        maxOutputTokens: 4096,
+        maxOutputTokens: 4096, thinkingConfig: { thinkingBudget: 0 },
       },
     });
 
diff --git a/DW-Programming/zoffany-ai-enrich.js b/DW-Programming/zoffany-ai-enrich.js
index 5d690bc5..228af023 100644
--- a/DW-Programming/zoffany-ai-enrich.js
+++ b/DW-Programming/zoffany-ai-enrich.js
@@ -100,7 +100,7 @@ async function analyzeWithGemini(imageBase64, context) {
         { text: prompt }
       ]
     }],
-    generationConfig: { temperature: 0.1, maxOutputTokens: 800 }
+    generationConfig: { temperature: 0.1, maxOutputTokens: 800, thinkingConfig: { thinkingBudget: 0 } }
   };
 
   const bodyStr = JSON.stringify(body);
diff --git a/ai-enrich-arte-fix.js b/ai-enrich-arte-fix.js
index 651819c9..719ccf3b 100644
--- a/ai-enrich-arte-fix.js
+++ b/ai-enrich-arte-fix.js
@@ -47,7 +47,7 @@ function callGemini(b64, name) {
       { text: `Product: ${name}\n\n${PROMPT}` },
       { inlineData: { mimeType: 'image/jpeg', data: b64 } }
     ]}],
-    generationConfig: { temperature: 0.2, maxOutputTokens: 1024 }
+    generationConfig: { temperature: 0.2, maxOutputTokens: 1024, thinkingConfig: { thinkingBudget: 0 } }
   });
   return new Promise((resolve, reject) => {
     const url = new URL(GEMINI_URL);
diff --git a/ai-enrich-gaps2.js b/ai-enrich-gaps2.js
index e95d1159..0b4e36bb 100644
--- a/ai-enrich-gaps2.js
+++ b/ai-enrich-gaps2.js
@@ -53,7 +53,7 @@ function callGemini(b64, productName) {
       { text: `Product: ${productName}\n\n${PROMPT}` },
       { inlineData: { mimeType: 'image/jpeg', data: b64 } }
     ]}],
-    generationConfig: { temperature: 0.2, maxOutputTokens: 1024 }
+    generationConfig: { temperature: 0.2, maxOutputTokens: 1024, thinkingConfig: { thinkingBudget: 0 } }
   });
 
   return new Promise((resolve, reject) => {
diff --git a/arte-fill-tags.js b/arte-fill-tags.js
index 3b2fb8b7..36e2a3a8 100644
--- a/arte-fill-tags.js
+++ b/arte-fill-tags.js
@@ -25,7 +25,7 @@ Tags should describe: style, mood, pattern type, texture, suitable rooms, design
         { inline_data: { mime_type: 'image/jpeg', data: await fetchImageBase64(imageUrl) } }
       ]
     }],
-    generationConfig: { temperature: 0.2, maxOutputTokens: 300 }
+    generationConfig: { temperature: 0.2, maxOutputTokens: 300, thinkingConfig: { thinkingBudget: 0 } }
   });
 
   return new Promise((resolve, reject) => {
diff --git a/brand-router/server.js b/brand-router/server.js
index 64a15d6b..968b0e7c 100644
--- a/brand-router/server.js
+++ b/brand-router/server.js
@@ -306,7 +306,7 @@ Return ONLY the description text, nothing else.`;
 
     const body = JSON.stringify({
       contents: [{ parts: [{ text: prompt }] }],
-      generationConfig: { temperature: 0.7, maxOutputTokens: 300 }
+      generationConfig: { temperature: 0.7, maxOutputTokens: 300, thinkingConfig: { thinkingBudget: 0 } }
     });
 
     const result = await new Promise((resolve, reject) => {
diff --git a/enrich-arte-gaps.js b/enrich-arte-gaps.js
index 2225c435..c6d6cae4 100644
--- a/enrich-arte-gaps.js
+++ b/enrich-arte-gaps.js
@@ -60,7 +60,7 @@ function callGemini(b64) {
       { text: PROMPT },
       { inline_data: { mime_type: 'image/jpeg', data: b64 } }
     ]}],
-    generationConfig: { temperature: 0.2, maxOutputTokens: 1024 }
+    generationConfig: { temperature: 0.2, maxOutputTokens: 1024, thinkingConfig: { thinkingBudget: 0 } }
   });
   return new Promise((resolve, reject) => {
     const u = new URL(GEMINI_URL);
diff --git a/enrich-arte-puppeteer.js b/enrich-arte-puppeteer.js
index 3e2d6908..eaee904e 100644
--- a/enrich-arte-puppeteer.js
+++ b/enrich-arte-puppeteer.js
@@ -37,7 +37,7 @@ function callGemini(imageBase64, mimeType) {
         { text: PROMPT },
         { inline_data: { mime_type: mimeType || 'image/jpeg', data: imageBase64 } }
       ]}],
-      generationConfig: { temperature: 0.3, maxOutputTokens: 1024 }
+      generationConfig: { temperature: 0.3, maxOutputTokens: 1024, thinkingConfig: { thinkingBudget: 0 } }
     });
     const url = new URL(`https://generativelanguage.googleapis.com/v1beta/models/${GEMINI_MODEL}:generateContent?key=${GEMINI_KEY}`);
     const opts = { method: 'POST', hostname: url.hostname, path: url.pathname + url.search, headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(body) } };
diff --git a/enrich-remaining-13.js b/enrich-remaining-13.js
index 76152362..ade41a73 100644
--- a/enrich-remaining-13.js
+++ b/enrich-remaining-13.js
@@ -61,7 +61,7 @@ function callGemini(imageBase64, mimeType) {
           { inline_data: { mime_type: mimeType || 'image/jpeg', data: imageBase64 } }
         ]
       }],
-      generationConfig: { temperature: 0.3, maxOutputTokens: 1024 }
+      generationConfig: { temperature: 0.3, maxOutputTokens: 1024, thinkingConfig: { thinkingBudget: 0 } }
     });
     const url = new URL(`https://generativelanguage.googleapis.com/v1beta/models/${GEMINI_MODEL}:generateContent?key=${GEMINI_KEY}`);
     const opts = { method: 'POST', hostname: url.hostname, path: url.pathname + url.search, headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(body) } };
diff --git a/gemini-classify-texture.js b/gemini-classify-texture.js
index 600378d8..c8674421 100644
--- a/gemini-classify-texture.js
+++ b/gemini-classify-texture.js
@@ -43,7 +43,7 @@ function classifyWithGemini(base64, mimeType) {
       { text: PROMPT },
       { inline_data: { mime_type: mimeType, data: base64 } }
     ]}],
-    generationConfig: { temperature: 0.1, maxOutputTokens: 10 }
+    generationConfig: { temperature: 0.1, maxOutputTokens: 10, thinkingConfig: { thinkingBudget: 0 } }
   };
   return new Promise((resolve, reject) => {
     const url = new URL(GEMINI_URL);
diff --git a/gemini-enrich-gaps.js b/gemini-enrich-gaps.js
index 52db8410..616be9e1 100644
--- a/gemini-enrich-gaps.js
+++ b/gemini-enrich-gaps.js
@@ -74,7 +74,7 @@ async function analyzeWithGemini(product) {
         { fileData: undefined }
       ]
     }],
-    generationConfig: { temperature: 0.2, maxOutputTokens: 1024 }
+    generationConfig: { temperature: 0.2, maxOutputTokens: 1024, thinkingConfig: { thinkingBudget: 0 } }
   };
   // Use image URL reference
   body.contents[0].parts = [
diff --git a/scripts/brand-mckenzie-ai-analysis.ts b/scripts/brand-mckenzie-ai-analysis.ts
index a721bfd2..cb520b79 100644
--- a/scripts/brand-mckenzie-ai-analysis.ts
+++ b/scripts/brand-mckenzie-ai-analysis.ts
@@ -70,7 +70,7 @@ Styles: Traditional, Contemporary, Coastal, Tropical, Art Deco, Mid-Century, Boh
 Patterns: Botanical, Floral, Geometric, Damask, Palm, Trellis, Stripe, Abstract, Toile, Scenic, Animal, Insects` }
             ]
           }],
-          generationConfig: { temperature: 0.1, maxOutputTokens: 800 }
+          generationConfig: { temperature: 0.1, maxOutputTokens: 800, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
diff --git a/scripts/brand-mckenzie-full-scrape.ts b/scripts/brand-mckenzie-full-scrape.ts
index 1a768e9a..bf0c26c8 100644
--- a/scripts/brand-mckenzie-full-scrape.ts
+++ b/scripts/brand-mckenzie-full-scrape.ts
@@ -242,7 +242,7 @@ Return ONLY valid JSON:
             { inlineData: { mimeType: 'image/jpeg', data: base64Image } },
             { text: prompt }
           ]}],
-          generationConfig: { temperature: 0.1, maxOutputTokens: 800 }
+          generationConfig: { temperature: 0.1, maxOutputTokens: 800, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
diff --git a/scripts/brand-mckenzie-full-update.ts b/scripts/brand-mckenzie-full-update.ts
index 9f1b689e..76e5f739 100644
--- a/scripts/brand-mckenzie-full-update.ts
+++ b/scripts/brand-mckenzie-full-update.ts
@@ -117,7 +117,7 @@ Return ONLY valid JSON with NO markdown:
               { text: prompt }
             ]
           }],
-          generationConfig: { temperature: 0.1, maxOutputTokens: 800 }
+          generationConfig: { temperature: 0.1, maxOutputTokens: 800, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
diff --git a/scripts/collection-description-writer.js b/scripts/collection-description-writer.js
index 3869d4d8..2577415b 100644
--- a/scripts/collection-description-writer.js
+++ b/scripts/collection-description-writer.js
@@ -79,7 +79,7 @@ function callGemini(systemPrompt, userPrompt) {
     const body = JSON.stringify({
       systemInstruction: { parts: [{ text: systemPrompt }] },
       contents: [{ parts: [{ text: userPrompt }] }],
-      generationConfig: { temperature: 0.7, maxOutputTokens: 300, topP: 0.9 }
+      generationConfig: { temperature: 0.7, maxOutputTokens: 300, thinkingConfig: { thinkingBudget: 0 }, topP: 0.9 }
     });
     const req = https.request({
       hostname: 'generativelanguage.googleapis.com',
diff --git a/scripts/enrich-remaining-13.js b/scripts/enrich-remaining-13.js
index 3bdb4cfe..7bf318f8 100644
--- a/scripts/enrich-remaining-13.js
+++ b/scripts/enrich-remaining-13.js
@@ -61,7 +61,7 @@ async function callGemini(imageUrl, title) {
         { inlineData: { mimeType: image.mimeType, data: image.base64 } }
       ]
     }],
-    generationConfig: { temperature: 0.2, maxOutputTokens: 1024 }
+    generationConfig: { temperature: 0.2, maxOutputTokens: 1024, thinkingConfig: { thinkingBudget: 0 } }
   });
 
   return new Promise((resolve, reject) => {
diff --git a/scripts/interior-design-tags.js b/scripts/interior-design-tags.js
index bf8057cd..37ab316a 100644
--- a/scripts/interior-design-tags.js
+++ b/scripts/interior-design-tags.js
@@ -157,7 +157,7 @@ async function analyzeWithGemini(imageUrl, productName) {
         { inline_data: { mime_type: mime, data: imgBuffer.toString('base64') } }
       ]
     }],
-    generationConfig: { temperature: 0.2, maxOutputTokens: 1024 }
+    generationConfig: { temperature: 0.2, maxOutputTokens: 1024, thinkingConfig: { thinkingBudget: 0 } }
   };
 
   const resp = await postJson(GEMINI_URL, body);
diff --git a/scripts/prl-ai-enrich.js b/scripts/prl-ai-enrich.js
index f751f822..cab41e60 100644
--- a/scripts/prl-ai-enrich.js
+++ b/scripts/prl-ai-enrich.js
@@ -74,7 +74,7 @@ async function callGemini(imageUrl) {
         { inline_data: { mime_type: imageData.mimeType, data: imageData.base64 } }
       ]
     }],
-    generationConfig: { temperature: 0.2, maxOutputTokens: 1024 }
+    generationConfig: { temperature: 0.2, maxOutputTokens: 1024, thinkingConfig: { thinkingBudget: 0 } }
   });
 
   return new Promise((resolve, reject) => {
diff --git a/scripts/texture-repeat-classifier.js b/scripts/texture-repeat-classifier.js
index 576ebe00..60a34998 100644
--- a/scripts/texture-repeat-classifier.js
+++ b/scripts/texture-repeat-classifier.js
@@ -63,7 +63,7 @@ async function classifyWithGemini(imageUrl) {
         { inline_data: { mime_type: mimeType, data: base64 } }
       ]
     }],
-    generationConfig: { temperature: 0, maxOutputTokens: 10 }
+    generationConfig: { temperature: 0, maxOutputTokens: 10, thinkingConfig: { thinkingBudget: 0 } }
   });
 
   return new Promise((resolve, reject) => {
diff --git a/scripts/us-007-ai-product-quality-analyzer.ts b/scripts/us-007-ai-product-quality-analyzer.ts
index a59f97cf..83916917 100644
--- a/scripts/us-007-ai-product-quality-analyzer.ts
+++ b/scripts/us-007-ai-product-quality-analyzer.ts
@@ -118,7 +118,7 @@ SCORING CRITERIA:
           }],
           generationConfig: {
             temperature: 0.1,
-            maxOutputTokens: 800
+            maxOutputTokens: 800, thinkingConfig: { thinkingBudget: 0 }
           }
         })
       }
diff --git a/shopify/_cwGRID/sections/collection.liquid b/shopify/_cwGRID/sections/collection.liquid
index 79a4274e..c404beb9 100644
--- a/shopify/_cwGRID/sections/collection.liquid
+++ b/shopify/_cwGRID/sections/collection.liquid
@@ -82,7 +82,7 @@
               <div class="collection-filters">
                 {% if show_filters and collection.filters.size > 0 %}
                   <!-- Approach B: Horizontal filter bar (proxies to Boost's hidden controls) -->
-                  {%- section 'collection-filters-horizontal' -%}
+                  {% render 'collection-filters-horizontal' %}
 
                   <!-- Boost native filters (hidden by Approach B CSS, powers the filtering) -->
                   <div class="faceted-filters" data-faceted-filter>
diff --git a/shopify/_cwGRID/sections/collection-filters-horizontal.liquid b/shopify/_cwGRID/snippets/collection-filters-horizontal.liquid
similarity index 88%
rename from shopify/_cwGRID/sections/collection-filters-horizontal.liquid
rename to shopify/_cwGRID/snippets/collection-filters-horizontal.liquid
index e8cb97e8..4a268729 100644
--- a/shopify/_cwGRID/sections/collection-filters-horizontal.liquid
+++ b/shopify/_cwGRID/snippets/collection-filters-horizontal.liquid
@@ -20,7 +20,7 @@
   Revision: 2026-06-22 (Approach B — complete + tested)
 {%- endcomment -%}
 
-<div class="dw-filter-horizontal-wrapper" data-section-id="{{ section.id }}">
+<div class="dw-filter-horizontal-wrapper" data-section-id="collection-filters-horizontal">
   <style>
     /* HIDE Boost's vertical sidebar completely */
     body.dw-filters-horizontal .boost-sd__filter-tree,
@@ -326,62 +326,3 @@
   initializeFilters();
 })();
 </script>
-
-{% schema %}
-{
-  "name": "Filters",
-  "settings": [
-    {
-      "type": "checkbox",
-      "id": "show_color",
-      "label": "Show color filter",
-      "default": true
-    },
-    {
-      "type": "checkbox",
-      "id": "show_style",
-      "label": "Show style filter",
-      "default": true
-    },
-    {
-      "type": "checkbox",
-      "id": "show_brand",
-      "label": "Show brand filter",
-      "default": true
-    },
-    {
-      "type": "checkbox",
-      "id": "show_durability",
-      "label": "Show durability filter",
-      "default": true
-    },
-    {
-      "type": "checkbox",
-      "id": "show_price",
-      "label": "Show price filter",
-      "default": true
-    },
-    {
-      "type": "select",
-      "id": "layout",
-      "label": "Layout",
-      "options": [
-        {
-          "value": "horizontal",
-          "label": "Horizontal"
-        },
-        {
-          "value": "vertical",
-          "label": "Vertical"
-        }
-      ],
-      "default": "horizontal"
-    }
-  ],
-  "presets": [
-    {
-      "name": "Collection Filters (Horizontal)"
-    }
-  ]
-}
-{% endschema %}
diff --git a/shopify/fix-collection-filters-snippet.sh b/shopify/fix-collection-filters-snippet.sh
index 0f6b28a3..f69811da 100644
--- a/shopify/fix-collection-filters-snippet.sh
+++ b/shopify/fix-collection-filters-snippet.sh
@@ -28,6 +28,8 @@ import sys,re
 src=open(sys.argv[1],encoding="utf-8").read()
 # strip any {% schema %}...{% endschema %} block (invalid in snippets)
 src=re.sub(r"{%-?\s*schema\s*-?%}.*?{%-?\s*endschema\s*-?%}", "", src, flags=re.S)
+# section.id does not exist in a snippet -> use a stable literal so data-section-id isn't blank
+src=src.replace("{{ section.id }}", "collection-filters-horizontal")
 open(sys.argv[2],"w",encoding="utf-8").write(src.strip()+"\n")
 print("snippet written:",sys.argv[2])
 PY
diff --git a/shopify/scripts/arte-dashboard/server.js b/shopify/scripts/arte-dashboard/server.js
index 150fce10..79663fd6 100644
--- a/shopify/scripts/arte-dashboard/server.js
+++ b/shopify/scripts/arte-dashboard/server.js
@@ -1659,7 +1659,7 @@ RULES:
 - Single word values only, no prefixes` }
             ]
           }],
-          generationConfig: { temperature: 0.1, maxOutputTokens: 500 }
+          generationConfig: { temperature: 0.1, maxOutputTokens: 500, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
@@ -2618,7 +2618,7 @@ INSTRUCTIONS:
 6. description: Describe what THIS SPECIFIC wallcovering looks like for commercial applications` }
             ]
           }],
-          generationConfig: { temperature: 0.2, maxOutputTokens: 1000 }
+          generationConfig: { temperature: 0.2, maxOutputTokens: 1000, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
diff --git a/shopify/scripts/bespoke-updater/server.js b/shopify/scripts/bespoke-updater/server.js
index 297c20f3..9313717c 100644
--- a/shopify/scripts/bespoke-updater/server.js
+++ b/shopify/scripts/bespoke-updater/server.js
@@ -254,7 +254,7 @@ Return ONLY valid JSON:
 8. Description MUST mention: Custom Colors, Custom Scale, Made to Order` }
             ]
           }],
-          generationConfig: { temperature: 0.1, maxOutputTokens: 1200 }
+          generationConfig: { temperature: 0.1, maxOutputTokens: 1200, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
diff --git a/shopify/scripts/gemini-catalog-tagger.js b/shopify/scripts/gemini-catalog-tagger.js
index 1013541a..6fd681e5 100644
--- a/shopify/scripts/gemini-catalog-tagger.js
+++ b/shopify/scripts/gemini-catalog-tagger.js
@@ -121,7 +121,7 @@ async function callGemini(imageUrl) {
         { inlineData: { mimeType, data: base64 } },
       ],
     }],
-    generationConfig: { temperature: 0.1, maxOutputTokens: 1024 },
+    generationConfig: { temperature: 0.1, maxOutputTokens: 1024, thinkingConfig: { thinkingBudget: 0 } },
   };
 
   const response = await fetch(GEMINI_URL, {
diff --git a/shopify/scripts/gemini-tag-engine/index.js b/shopify/scripts/gemini-tag-engine/index.js
index dd9f4ab9..2753350a 100644
--- a/shopify/scripts/gemini-tag-engine/index.js
+++ b/shopify/scripts/gemini-tag-engine/index.js
@@ -155,7 +155,7 @@ async function downloadAndAnalyze(imageUrl) {
     }],
     generationConfig: {
       temperature: 0.1,
-      maxOutputTokens: 1024
+      maxOutputTokens: 1024, thinkingConfig: { thinkingBudget: 0 }
     }
   });
 
diff --git a/shopify/scripts/import-missing-dwrr.ts b/shopify/scripts/import-missing-dwrr.ts
index db1dd43b..24e783bb 100644
--- a/shopify/scripts/import-missing-dwrr.ts
+++ b/shopify/scripts/import-missing-dwrr.ts
@@ -138,7 +138,7 @@ Requirements:
 Return ONLY the description text, no quotes or extra formatting.` }
             ]
           }],
-          generationConfig: { temperature: 0.7, maxOutputTokens: 300 }
+          generationConfig: { temperature: 0.7, maxOutputTokens: 300, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
diff --git a/shopify/scripts/interior-design-tagger.js b/shopify/scripts/interior-design-tagger.js
index 734c5607..d9d00088 100644
--- a/shopify/scripts/interior-design-tagger.js
+++ b/shopify/scripts/interior-design-tagger.js
@@ -274,7 +274,7 @@ async function analyzeWithGemini(imageUrl, productName) {
           { inlineData: { mimeType: 'image/jpeg', data: imgBuf.toString('base64') } }
         ]
       }],
-      generationConfig: { temperature: 0.2, maxOutputTokens: 1024 }
+      generationConfig: { temperature: 0.2, maxOutputTokens: 1024, thinkingConfig: { thinkingBudget: 0 } }
     };
   } else {
     // Fallback: send URL as text reference
@@ -285,7 +285,7 @@ async function analyzeWithGemini(imageUrl, productName) {
           { text: `Image URL: ${imageUrl}` }
         ]
       }],
-      generationConfig: { temperature: 0.2, maxOutputTokens: 1024 }
+      generationConfig: { temperature: 0.2, maxOutputTokens: 1024, thinkingConfig: { thinkingBudget: 0 } }
     };
   }
 
diff --git a/shopify/scripts/koroseal-batch-cron.js b/shopify/scripts/koroseal-batch-cron.js
index 664becd1..bb6f3f6e 100644
--- a/shopify/scripts/koroseal-batch-cron.js
+++ b/shopify/scripts/koroseal-batch-cron.js
@@ -203,7 +203,7 @@ async function analyzeWithGemini(imageUrl, title) {
 }` }
             ]
           }],
-          generationConfig: { temperature: 0.1, maxOutputTokens: 500 }
+          generationConfig: { temperature: 0.1, maxOutputTokens: 500, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
diff --git a/shopify/scripts/koroseal-complete-update.ts b/shopify/scripts/koroseal-complete-update.ts
index 2fcff05c..769408bb 100644
--- a/shopify/scripts/koroseal-complete-update.ts
+++ b/shopify/scripts/koroseal-complete-update.ts
@@ -129,7 +129,7 @@ async function analyzeWithGemini(imageUrl: string, title: string): Promise<any>
 {"backgroundColor":"dominant color","relevantColors":["max 3 visible"],"styles":["1-2: Contemporary,Modern,Traditional,Industrial"],"patterns":["1-2: Texture,Geometric,Solid,Weave"]}` }
             ]
           }],
-          generationConfig: { temperature: 0.1, maxOutputTokens: 400 }
+          generationConfig: { temperature: 0.1, maxOutputTokens: 400, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
diff --git a/shopify/scripts/koroseal-enhanced-update.js b/shopify/scripts/koroseal-enhanced-update.js
index b6dec060..0c4fe724 100644
--- a/shopify/scripts/koroseal-enhanced-update.js
+++ b/shopify/scripts/koroseal-enhanced-update.js
@@ -1460,7 +1460,7 @@ Return ONLY valid JSON (no markdown):
 }` }
                         ]
                     }],
-                generationConfig: { temperature: 0.1, maxOutputTokens: 500 }
+                generationConfig: { temperature: 0.1, maxOutputTokens: 500, thinkingConfig: { thinkingBudget: 0 } }
             })
         });
         const data = await response.json();
diff --git a/shopify/scripts/koroseal-update.js b/shopify/scripts/koroseal-update.js
index d9302997..58e5fa9e 100644
--- a/shopify/scripts/koroseal-update.js
+++ b/shopify/scripts/koroseal-update.js
@@ -140,7 +140,7 @@ async function analyzeWithGemini(imageUrl, title) {
 {"backgroundColor":"dominant color","relevantColors":["max 3 visible"],"styles":["1-2: Contemporary,Modern,Traditional"],"patterns":["1-2: Texture,Geometric,Solid"]}` }
             ]
           }],
-          generationConfig: { temperature: 0.1, maxOutputTokens: 400 }
+          generationConfig: { temperature: 0.1, maxOutputTokens: 400, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
diff --git a/shopify/scripts/prl-ai-enrich.js b/shopify/scripts/prl-ai-enrich.js
index b9dffbf5..c258ae64 100644
--- a/shopify/scripts/prl-ai-enrich.js
+++ b/shopify/scripts/prl-ai-enrich.js
@@ -51,7 +51,7 @@ async function callGemini(imageUrl) {
         }
       ]
     }],
-    generationConfig: { temperature: 0.2, maxOutputTokens: 1024 }
+    generationConfig: { temperature: 0.2, maxOutputTokens: 1024, thinkingConfig: { thinkingBudget: 0 } }
   });
   return new Promise((resolve, reject) => {
     const url = new URL(GEMINI_URL);
diff --git a/shopify/scripts/review-dwqw-images-descriptions.ts b/shopify/scripts/review-dwqw-images-descriptions.ts
index 53154cc3..f76ea4bf 100644
--- a/shopify/scripts/review-dwqw-images-descriptions.ts
+++ b/shopify/scripts/review-dwqw-images-descriptions.ts
@@ -223,7 +223,7 @@ Return ONLY valid JSON (no markdown, no code blocks):
               { text: prompt }
             ]
           }],
-          generationConfig: { temperature: 0.3, maxOutputTokens: 800 }
+          generationConfig: { temperature: 0.3, maxOutputTokens: 800, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
diff --git a/shopify/scripts/set-texture-repeat-zero.js b/shopify/scripts/set-texture-repeat-zero.js
index bf599a77..0559597a 100644
--- a/shopify/scripts/set-texture-repeat-zero.js
+++ b/shopify/scripts/set-texture-repeat-zero.js
@@ -70,7 +70,7 @@ async function callGeminiVision(imageUrl) {
         { inline_data: undefined }, // will use image URL
       ]
     }],
-    generationConfig: { temperature: 0, maxOutputTokens: 10 }
+    generationConfig: { temperature: 0, maxOutputTokens: 10, thinkingConfig: { thinkingBudget: 0 } }
   });
 
   // Fetch image first, then send as inline_data
@@ -87,7 +87,7 @@ async function callGeminiVision(imageUrl) {
         { inline_data: { mime_type: mimeType, data: base64Image } }
       ]
     }],
-    generationConfig: { temperature: 0, maxOutputTokens: 10 }
+    generationConfig: { temperature: 0, maxOutputTokens: 10, thinkingConfig: { thinkingBudget: 0 } }
   });
 
   return new Promise((resolve) => {
diff --git a/shopify/scripts/update-all-malibu-architectural.ts b/shopify/scripts/update-all-malibu-architectural.ts
index 5b5668cd..34dd5532 100644
--- a/shopify/scripts/update-all-malibu-architectural.ts
+++ b/shopify/scripts/update-all-malibu-architectural.ts
@@ -230,7 +230,7 @@ Return ONLY valid JSON (no markdown, no code blocks):
 Use professional interior design terminology. Focus on actual visible colors only.` }
             ]
           }],
-          generationConfig: { temperature: 0.1, maxOutputTokens: 800 }
+          generationConfig: { temperature: 0.1, maxOutputTokens: 800, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
diff --git a/shopify/scripts/update-dwk-full-details.js b/shopify/scripts/update-dwk-full-details.js
index 458fbc4c..750981e4 100644
--- a/shopify/scripts/update-dwk-full-details.js
+++ b/shopify/scripts/update-dwk-full-details.js
@@ -170,7 +170,7 @@ async function analyzeWithGemini(imageUrl) {
 }` }
             ]
           }],
-          generationConfig: { temperature: 0.1, maxOutputTokens: 500 }
+          generationConfig: { temperature: 0.1, maxOutputTokens: 500, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
diff --git a/shopify/scripts/update-dwk-slow-seo.js b/shopify/scripts/update-dwk-slow-seo.js
index 3e0903d7..89f6243a 100644
--- a/shopify/scripts/update-dwk-slow-seo.js
+++ b/shopify/scripts/update-dwk-slow-seo.js
@@ -135,7 +135,7 @@ async function analyzeWithGemini(imageUrl) {
               { text: `Analyze this wallcovering. Return ONLY JSON: {"backgroundColor":"color","colors":["max 3"],"styles":["1-2 styles"],"patterns":["1-2 patterns"]}` }
             ]
           }],
-          generationConfig: { temperature: 0.1, maxOutputTokens: 300 }
+          generationConfig: { temperature: 0.1, maxOutputTokens: 300, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
diff --git a/shopify/scripts/update-dwqw-complete.ts b/shopify/scripts/update-dwqw-complete.ts
index 7ef93499..6878b0fb 100644
--- a/shopify/scripts/update-dwqw-complete.ts
+++ b/shopify/scripts/update-dwqw-complete.ts
@@ -110,7 +110,7 @@ Return ONLY valid JSON (no markdown):
               { text: prompt }
             ]
           }],
-          generationConfig: { temperature: 0.2, maxOutputTokens: 400 }
+          generationConfig: { temperature: 0.2, maxOutputTokens: 400, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
diff --git a/shopify/scripts/update-dwqw-malibu-architectural.ts b/shopify/scripts/update-dwqw-malibu-architectural.ts
index c9ab5c46..a289064c 100644
--- a/shopify/scripts/update-dwqw-malibu-architectural.ts
+++ b/shopify/scripts/update-dwqw-malibu-architectural.ts
@@ -178,7 +178,7 @@ Styles from: Traditional, Contemporary, Coastal, Tropical, Nautical, Bohemian, T
 Patterns from: Botanical, Floral, Geometric, Damask, Palm, Trellis, Stripe, Abstract` }
             ]
           }],
-          generationConfig: { temperature: 0.1, maxOutputTokens: 500 }
+          generationConfig: { temperature: 0.1, maxOutputTokens: 500, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
diff --git a/shopify/scripts/update-dwrr-descriptions-quantities.ts b/shopify/scripts/update-dwrr-descriptions-quantities.ts
index 1f78e25b..3f142762 100644
--- a/shopify/scripts/update-dwrr-descriptions-quantities.ts
+++ b/shopify/scripts/update-dwrr-descriptions-quantities.ts
@@ -121,7 +121,7 @@ Requirements:
 Return ONLY the description text, no quotes or extra formatting.` }
             ]
           }],
-          generationConfig: { temperature: 0.7, maxOutputTokens: 300 }
+          generationConfig: { temperature: 0.7, maxOutputTokens: 300, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
diff --git a/shopify/scripts/update-dwrr-gemini.ts b/shopify/scripts/update-dwrr-gemini.ts
index 3f0dccc5..08c776b0 100644
--- a/shopify/scripts/update-dwrr-gemini.ts
+++ b/shopify/scripts/update-dwrr-gemini.ts
@@ -139,7 +139,7 @@ IMPORTANT: Only include colors that are ACTUALLY visible. Remove any color not p
           }],
           generationConfig: {
             temperature: 0.1,
-            maxOutputTokens: 500
+            maxOutputTokens: 500, thinkingConfig: { thinkingBudget: 0 }
           }
         })
       }
diff --git a/shopify/scripts/update-koroseal-gemini.ts b/shopify/scripts/update-koroseal-gemini.ts
index aa54c412..dfaf8632 100644
--- a/shopify/scripts/update-koroseal-gemini.ts
+++ b/shopify/scripts/update-koroseal-gemini.ts
@@ -120,7 +120,7 @@ Return ONLY valid JSON (no markdown):
 }` }
             ]
           }],
-          generationConfig: { temperature: 0.1, maxOutputTokens: 500 }
+          generationConfig: { temperature: 0.1, maxOutputTokens: 500, thinkingConfig: { thinkingBudget: 0 } }
         })
       }
     );
diff --git a/shopify/scripts/zoffany-full-monty-20.js b/shopify/scripts/zoffany-full-monty-20.js
index 5ee98127..1ee34ae5 100644
--- a/shopify/scripts/zoffany-full-monty-20.js
+++ b/shopify/scripts/zoffany-full-monty-20.js
@@ -330,7 +330,7 @@ async function phase3_aiEnrich(products) {
               { text: `${GEMINI_PROMPT}\n\nProduct: "${context}"` }
             ]
           }],
-          generationConfig: { temperature: 0.1, maxOutputTokens: 800 }
+          generationConfig: { temperature: 0.1, maxOutputTokens: 800, thinkingConfig: { thinkingBudget: 0 } }
         });
 
         const resp = await httpRequest(GEMINI_URL, {

← 98038581 Add collection grid responsive-cols + infinite-scroll fix pu  ·  back to Designer Wallcoverings  ·  Disable Gemini thinking budget on capped enrichment calls (t a1410525 →