[object Object]

← back to Wallco Ai

feat(/designs): dynamic OG image when filtered — sharing /designs?hue=rose on Twitter/LinkedIn/Slack now previews an actual rose design instead of generic og-default.png; unfiltered grid still uses default

f0fe84b66a8f5047b384e9fe779bc6a94c7cba63 · 2026-05-14 16:07:21 -0700 · SteveStudio2

Files touched

Diff

commit f0fe84b66a8f5047b384e9fe779bc6a94c7cba63
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date:   Thu May 14 16:07:21 2026 -0700

    feat(/designs): dynamic OG image when filtered — sharing /designs?hue=rose on Twitter/LinkedIn/Slack now previews an actual rose design instead of generic og-default.png; unfiltered grid still uses default
---
 server.js | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/server.js b/server.js
index a182167..b4a2e18 100644
--- a/server.js
+++ b/server.js
@@ -3418,10 +3418,20 @@ app.get('/designs', (req, res) => {
   const _titleHead = _titleCrumbs.length
     ? `${_titleCrumbs[0]} · ${total} design${total===1?'':'s'} — wallco.ai`
     : `All Designs — wallco.ai | AI-Original Wallpaper & Murals`;
+  // When the user lands on a filtered grid (?hue=rose, ?motif=floral, ?cat=…),
+  // share-link previews on Twitter/LinkedIn/Slack should show a REAL design
+  // from that filter, not the generic og-default.png. Picks the first design
+  // in the filtered slice; unfiltered /designs keeps og-default.
+  const _isFiltered = !!(cat || motifQ || hueQ || roomQ || q);
+  const _ogImage = (_isFiltered && slice[0]?.image_url)
+    ? `https://wallco.ai${slice[0].image_url}`
+    : '';
   res.type('html').send(`${htmlHead({
     title: _titleHead,
     description: `Browse ${total} wallco.ai original wallpaper designs. Every pattern unique, hand-curated, never repeated. Free samples available.`,
     canonical: `https://wallco.ai/designs`,
+    ogImage: _ogImage,
+    ogImageAlt: _isFiltered && slice[0] ? `${slice[0].title} — sample of ${_titleCrumbs[0] || 'wallco.ai'} designs` : '',
     preloadImages: slice.slice(0, 6).map(d => d.image_url).filter(Boolean)
   })}
 <body>

← effa221 perf(/design/:id): add fetchpriority=high + decoding=async t  ·  back to Wallco Ai  ·  fix(/provenance): 301 redirect to /about (content merged); a 6ae4fd4 →