diff --git a/chat-storage.js b/chat-storage.js index 34d8438..a7254c2 100644 --- a/chat-storage.js +++ b/chat-storage.js @@ -360,21 +360,26 @@ document.addEventListener("DOMContentLoaded", () => { const width = Number(urlObj.searchParams.get('width')) || img.naturalWidth || 512; const height = Number(urlObj.searchParams.get('height')) || img.naturalHeight || 512; const model = urlObj.searchParams.get('model') || (document.getElementById('model-select')?.value || undefined); - let newUrl = img.src; - try { - if (window.polliLib && window.polliClient && prompt) { - newUrl = window.polliLib.mcp.generateImageUrl(window.polliClient, { - prompt, width, height, seed: newSeed, nologo: true, model - }); - } else { - urlObj.searchParams.set('seed', String(newSeed)); - newUrl = urlObj.toString(); - } - } catch (e) { - console.warn('polliLib generateImageUrl failed; falling back to seed swap', e); - urlObj.searchParams.set('seed', String(newSeed)); - newUrl = urlObj.toString(); - } + let newUrl = img.src; + try { + if (window.polliLib && window.polliClient && prompt) { + newUrl = window.polliLib.mcp.generateImageUrl(window.polliClient, { + prompt, width, height, seed: newSeed, nologo: true, model + }); + } else { + urlObj.searchParams.set('seed', String(newSeed)); + newUrl = urlObj.toString(); + } + } catch (e) { + console.warn('polliLib generateImageUrl failed; falling back to seed swap', e); + urlObj.searchParams.set('seed', String(newSeed)); + newUrl = urlObj.toString(); + } + const newUrlObj = new URL(newUrl); + if (!newUrlObj.searchParams.has('referrer') && window.polliClient?.referrer) { + newUrlObj.searchParams.set('referrer', window.polliClient.referrer); // retain referrer for API tiering + } + const finalUrl = newUrlObj.toString(); const loadingDiv = document.createElement("div"); loadingDiv.className = "ai-image-loading"; const spinner = document.createElement("div"); @@ -396,8 +401,8 @@ document.addEventListener("DOMContentLoaded", () => { loadingDiv.style.alignItems = "center"; showToast("Failed to refresh image"); }; - img.src = newUrl; - } + img.src = finalUrl; + } function openImageInNewTab(img, imageId) { console.log(`Opening image in new tab with ID: ${imageId}`); if (!img.src) { diff --git a/simple.js b/simple.js index b59cf9a..7459884 100644 --- a/simple.js +++ b/simple.js @@ -588,21 +588,26 @@ document.addEventListener("DOMContentLoaded", () => { const width = Number(urlObj.searchParams.get('width')) || img.naturalWidth || 512; const height = Number(urlObj.searchParams.get('height')) || img.naturalHeight || 512; const model = urlObj.searchParams.get('model') || (document.getElementById('model-select')?.value || undefined); - let newUrl = img.src; - try { - if (window.polliLib && window.polliClient && prompt) { - newUrl = window.polliLib.mcp.generateImageUrl(window.polliClient, { - prompt, width, height, seed: newSeed, nologo: true, model - }); - } else { - urlObj.searchParams.set('seed', String(newSeed)); - newUrl = urlObj.toString(); - } - } catch (e) { - console.warn('polliLib generateImageUrl failed; falling back to seed swap', e); - urlObj.searchParams.set('seed', String(newSeed)); - newUrl = urlObj.toString(); - } + let newUrl = img.src; + try { + if (window.polliLib && window.polliClient && prompt) { + newUrl = window.polliLib.mcp.generateImageUrl(window.polliClient, { + prompt, width, height, seed: newSeed, nologo: true, model + }); + } else { + urlObj.searchParams.set('seed', String(newSeed)); + newUrl = urlObj.toString(); + } + } catch (e) { + console.warn('polliLib generateImageUrl failed; falling back to seed swap', e); + urlObj.searchParams.set('seed', String(newSeed)); + newUrl = urlObj.toString(); + } + const newUrlObj = new URL(newUrl); + if (!newUrlObj.searchParams.has('referrer') && window.polliClient?.referrer) { + newUrlObj.searchParams.set('referrer', window.polliClient.referrer); // retain referrer for API tiering + } + const finalUrl = newUrlObj.toString(); const loadingDiv = document.createElement("div"); loadingDiv.className = "simple-ai-image-loading"; @@ -626,8 +631,8 @@ document.addEventListener("DOMContentLoaded", () => { loadingDiv.style.alignItems = "center"; window.showToast("Failed to refresh image"); }; - img.src = newUrl; - } + img.src = finalUrl; + } function openImageInNewTab(img, imageId) { console.log(`Opening image in new tab with ID: ${imageId} in simple mode`);