[object Object]

← back to Wallco Ai

design page: add Share — Pinterest (Pin It) + Instagram (download + open) + Copy link

0f932562cad6d0bb6fbea58fbd5f037367c66eda · 2026-05-13 14:07:58 -0700 · SteveStudio2

Replaces the per-item search chips (Google/1stdibs/Pinterest/Etsy) that
Steve rejected. Adds a dedicated Share block on the design page itself:

- Pinterest: opens pin-it window with image_url + page_url + title
- Instagram: downloads the design PNG (no public IG share URL exists);
  on mobile UA also offers instagram://library deep link
- Copy link: writes pageUrl to clipboard

Lives just above the Furnish block, same border-top section style.

Files touched

Diff

commit 0f932562cad6d0bb6fbea58fbd5f037367c66eda
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date:   Wed May 13 14:07:58 2026 -0700

    design page: add Share — Pinterest (Pin It) + Instagram (download + open) + Copy link
    
    Replaces the per-item search chips (Google/1stdibs/Pinterest/Etsy) that
    Steve rejected. Adds a dedicated Share block on the design page itself:
    
    - Pinterest: opens pin-it window with image_url + page_url + title
    - Instagram: downloads the design PNG (no public IG share URL exists);
      on mobile UA also offers instagram://library deep link
    - Copy link: writes pageUrl to clipboard
    
    Lives just above the Furnish block, same border-top section style.
---
 data/designs.json | 990 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 server.js         | 100 +++++-
 2 files changed, 1072 insertions(+), 18 deletions(-)

diff --git a/data/designs.json b/data/designs.json
index 0fb6e47..42bfb19 100644
--- a/data/designs.json
+++ b/data/designs.json
@@ -81811,5 +81811,995 @@
     "user_scale_good": null,
     "user_stars": null,
     "room_mockups": []
+  },
+  {
+    "id": 3948,
+    "kind": "seamless_tile",
+    "category": "stoned-animals",
+    "dominant_hex": "#363925",
+    "saturation": 0.213,
+    "title": "Olive Lullaby No.3948",
+    "handle": "wallco-3948",
+    "image_url": "/designs/img/1778705671679_668365358.png",
+    "filename": "1778705671679_668365358.png",
+    "generator": "wallco.ai",
+    "seed": 668365358,
+    "is_published": false,
+    "created_at": "2026-05-13T20:54:40.077335+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3949,
+    "kind": "seamless_tile",
+    "category": "drunk-animals",
+    "dominant_hex": "#271b35",
+    "saturation": 0.325,
+    "title": "Mauve Folly No.3949",
+    "handle": "wallco-3949",
+    "image_url": "/designs/img/1778705671679_217070537.png",
+    "filename": "1778705671679_217070537.png",
+    "generator": "wallco.ai",
+    "seed": 217070537,
+    "is_published": false,
+    "created_at": "2026-05-13T20:54:43.507946+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3950,
+    "kind": "seamless_tile",
+    "category": "damask",
+    "dominant_hex": "#826e54",
+    "saturation": 0.215,
+    "title": "Amber Baroque No.3950",
+    "handle": "wallco-3950",
+    "image_url": "/designs/img/1778705701426_1636834227.png",
+    "filename": "1778705701426_1636834227.png",
+    "generator": "wallco.ai",
+    "seed": 1636834227,
+    "is_published": false,
+    "created_at": "2026-05-13T20:55:15.664294+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3951,
+    "kind": "seamless_tile",
+    "category": "damask",
+    "dominant_hex": "#826e54",
+    "saturation": 0.215,
+    "title": "Amber Damask No.3951",
+    "handle": "wallco-3951",
+    "image_url": "/designs/img/var_3950_hue+60_1778705715775.png",
+    "filename": "var_3950_hue+60_1778705715775.png",
+    "generator": "wallco.ai",
+    "seed": 0,
+    "is_published": false,
+    "created_at": "2026-05-13T20:55:17.959276+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3952,
+    "kind": "seamless_tile",
+    "category": "damask",
+    "dominant_hex": "#826e54",
+    "saturation": 0.215,
+    "title": "Amber Heirloom No.3952",
+    "handle": "wallco-3952",
+    "image_url": "/designs/img/var_3950_hue+120_1778705717964.png",
+    "filename": "var_3950_hue+120_1778705717964.png",
+    "generator": "wallco.ai",
+    "seed": 0,
+    "is_published": false,
+    "created_at": "2026-05-13T20:55:20.189607+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3953,
+    "kind": "seamless_tile",
+    "category": "damask",
+    "dominant_hex": "#826e54",
+    "saturation": 0.215,
+    "title": "Amber Atelier No.3953",
+    "handle": "wallco-3953",
+    "image_url": "/designs/img/var_3950_hue+180_1778705720194.png",
+    "filename": "var_3950_hue+180_1778705720194.png",
+    "generator": "wallco.ai",
+    "seed": 0,
+    "is_published": false,
+    "created_at": "2026-05-13T20:55:22.367358+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3954,
+    "kind": "seamless_tile",
+    "category": "damask",
+    "dominant_hex": "#826e54",
+    "saturation": 0.215,
+    "title": "Amber Salon No.3954",
+    "handle": "wallco-3954",
+    "image_url": "/designs/img/var_3950_hue-60_1778705722370.png",
+    "filename": "var_3950_hue-60_1778705722370.png",
+    "generator": "wallco.ai",
+    "seed": 0,
+    "is_published": false,
+    "created_at": "2026-05-13T20:55:24.520491+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3955,
+    "kind": "seamless_tile",
+    "category": "damask",
+    "dominant_hex": "#826e54",
+    "saturation": 0.215,
+    "title": "Amber Baroque No.3955",
+    "handle": "wallco-3955",
+    "image_url": "/designs/img/var_3950_mono_1778705724524.png",
+    "filename": "var_3950_mono_1778705724524.png",
+    "generator": "wallco.ai",
+    "seed": 0,
+    "is_published": false,
+    "created_at": "2026-05-13T20:55:26.798959+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3956,
+    "kind": "seamless_tile",
+    "category": "drunk-animals",
+    "dominant_hex": "#261c17",
+    "saturation": 0.246,
+    "title": "Amber Carouse No.3956",
+    "handle": "wallco-3956",
+    "image_url": "/designs/img/1778705761643_748453019.png",
+    "filename": "1778705761643_748453019.png",
+    "generator": "wallco.ai",
+    "seed": 748453019,
+    "is_published": false,
+    "created_at": "2026-05-13T20:56:09.930459+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3957,
+    "kind": "seamless_tile",
+    "category": "stoned-animals",
+    "dominant_hex": "#4a3a3e",
+    "saturation": 0.121,
+    "title": "Rose Spore No.3957",
+    "handle": "wallco-3957",
+    "image_url": "/designs/img/1778705761643_631644010.png",
+    "filename": "1778705761643_631644010.png",
+    "generator": "wallco.ai",
+    "seed": 631644010,
+    "is_published": false,
+    "created_at": "2026-05-13T20:56:12.983643+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3958,
+    "kind": "seamless_tile",
+    "category": "drunk-animals",
+    "dominant_hex": "#9abd36",
+    "saturation": 0.556,
+    "title": "Olive Saunter No.3958",
+    "handle": "wallco-3958",
+    "image_url": "/designs/img/1778705834102_1166110329.png",
+    "filename": "1778705834102_1166110329.png",
+    "generator": "wallco.ai",
+    "seed": 1166110329,
+    "is_published": false,
+    "created_at": "2026-05-13T20:57:35.784552+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3959,
+    "kind": "seamless_tile",
+    "category": "stoned-animals",
+    "dominant_hex": "#a58d7f",
+    "saturation": 0.174,
+    "title": "Amber Halcyon No.3959",
+    "handle": "wallco-3959",
+    "image_url": "/designs/img/1778705851667_1970186046.png",
+    "filename": "1778705851667_1970186046.png",
+    "generator": "wallco.ai",
+    "seed": 1970186046,
+    "is_published": false,
+    "created_at": "2026-05-13T20:57:43.083144+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3960,
+    "kind": "seamless_tile",
+    "category": "drunk-animals",
+    "dominant_hex": "#b24141",
+    "saturation": 0.465,
+    "title": "Rose Hiccup No.3960",
+    "handle": "wallco-3960",
+    "image_url": "/designs/img/1778705851667_590060845.png",
+    "filename": "1778705851667_590060845.png",
+    "generator": "wallco.ai",
+    "seed": 590060845,
+    "is_published": false,
+    "created_at": "2026-05-13T20:57:46.714036+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3961,
+    "kind": "seamless_tile",
+    "category": "damask",
+    "dominant_hex": "#282523",
+    "saturation": 0.067,
+    "title": "Noir Damask No.3961",
+    "handle": "wallco-3961",
+    "image_url": "/designs/img/1778705895884_572283093.png",
+    "filename": "1778705895884_572283093.png",
+    "generator": "wallco.ai",
+    "seed": 572283093,
+    "is_published": false,
+    "created_at": "2026-05-13T20:58:24.759306+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3962,
+    "kind": "seamless_tile",
+    "category": "damask",
+    "dominant_hex": "#282523",
+    "saturation": 0.067,
+    "title": "Noir Heirloom No.3962",
+    "handle": "wallco-3962",
+    "image_url": "/designs/img/var_3961_hue+60_1778705904864.png",
+    "filename": "var_3961_hue+60_1778705904864.png",
+    "generator": "wallco.ai",
+    "seed": 0,
+    "is_published": false,
+    "created_at": "2026-05-13T20:58:26.971758+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3963,
+    "kind": "seamless_tile",
+    "category": "damask",
+    "dominant_hex": "#282523",
+    "saturation": 0.067,
+    "title": "Noir Atelier No.3963",
+    "handle": "wallco-3963",
+    "image_url": "/designs/img/var_3961_hue+120_1778705906975.png",
+    "filename": "var_3961_hue+120_1778705906975.png",
+    "generator": "wallco.ai",
+    "seed": 0,
+    "is_published": false,
+    "created_at": "2026-05-13T20:58:29.070818+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3964,
+    "kind": "seamless_tile",
+    "category": "damask",
+    "dominant_hex": "#282523",
+    "saturation": 0.067,
+    "title": "Noir Salon No.3964",
+    "handle": "wallco-3964",
+    "image_url": "/designs/img/var_3961_hue+180_1778705909074.png",
+    "filename": "var_3961_hue+180_1778705909074.png",
+    "generator": "wallco.ai",
+    "seed": 0,
+    "is_published": false,
+    "created_at": "2026-05-13T20:58:31.270903+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3965,
+    "kind": "seamless_tile",
+    "category": "damask",
+    "dominant_hex": "#282523",
+    "saturation": 0.067,
+    "title": "Noir Baroque No.3965",
+    "handle": "wallco-3965",
+    "image_url": "/designs/img/var_3961_hue-60_1778705911274.png",
+    "filename": "var_3961_hue-60_1778705911274.png",
+    "generator": "wallco.ai",
+    "seed": 0,
+    "is_published": false,
+    "created_at": "2026-05-13T20:58:33.417868+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3966,
+    "kind": "seamless_tile",
+    "category": "damask",
+    "dominant_hex": "#282523",
+    "saturation": 0.067,
+    "title": "Noir Damask No.3966",
+    "handle": "wallco-3966",
+    "image_url": "/designs/img/var_3961_mono_1778705913421.png",
+    "filename": "var_3961_mono_1778705913421.png",
+    "generator": "wallco.ai",
+    "seed": 0,
+    "is_published": false,
+    "created_at": "2026-05-13T20:58:35.535345+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3967,
+    "kind": "seamless_tile",
+    "category": "drunk-animals",
+    "dominant_hex": "#83887e",
+    "saturation": 0.04,
+    "title": "Ash Caprice No.3967",
+    "handle": "wallco-3967",
+    "image_url": "/designs/img/1778705941650_1630976808.png",
+    "filename": "1778705941650_1630976808.png",
+    "generator": "wallco.ai",
+    "seed": 1630976808,
+    "is_published": false,
+    "created_at": "2026-05-13T20:59:09.923125+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3968,
+    "kind": "seamless_tile",
+    "category": "stoned-animals",
+    "dominant_hex": "#313e2b",
+    "saturation": 0.181,
+    "title": "Sage Lullaby No.3968",
+    "handle": "wallco-3968",
+    "image_url": "/designs/img/1778705941650_418597073.png",
+    "filename": "1778705941650_418597073.png",
+    "generator": "wallco.ai",
+    "seed": 418597073,
+    "is_published": false,
+    "created_at": "2026-05-13T20:59:12.955144+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3969,
+    "kind": "seamless_tile",
+    "category": "drunk-animals",
+    "dominant_hex": "#e2318c",
+    "saturation": 0.753,
+    "title": "Plum Folly No.3969",
+    "handle": "wallco-3969",
+    "image_url": "/designs/img/1778706031642_1311699350.png",
+    "filename": "1778706031642_1311699350.png",
+    "generator": "wallco.ai",
+    "seed": 1311699350,
+    "is_published": false,
+    "created_at": "2026-05-13T21:00:43.959475+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3970,
+    "kind": "seamless_tile",
+    "category": "stoned-animals",
+    "dominant_hex": "#35373d",
+    "saturation": 0.07,
+    "title": "Noir Stealie No.3970",
+    "handle": "wallco-3970",
+    "image_url": "/designs/img/1778706031643_39777602.png",
+    "filename": "1778706031643_39777602.png",
+    "generator": "wallco.ai",
+    "seed": 39777602,
+    "is_published": false,
+    "created_at": "2026-05-13T21:00:49.791923+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3971,
+    "kind": "seamless_tile",
+    "category": "damask",
+    "dominant_hex": "#b9b08d",
+    "saturation": 0.239,
+    "title": "Honey Damask No.3971",
+    "handle": "wallco-3971",
+    "image_url": "/designs/img/1778706085896_985591414.png",
+    "filename": "1778706085896_985591414.png",
+    "generator": "wallco.ai",
+    "seed": 985591414,
+    "is_published": false,
+    "created_at": "2026-05-13T21:01:36.382036+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3972,
+    "kind": "seamless_tile",
+    "category": "damask",
+    "dominant_hex": "#b9b08d",
+    "saturation": 0.239,
+    "title": "Honey Heirloom No.3972",
+    "handle": "wallco-3972",
+    "image_url": "/designs/img/var_3971_hue+60_1778706096511.png",
+    "filename": "var_3971_hue+60_1778706096511.png",
+    "generator": "wallco.ai",
+    "seed": 0,
+    "is_published": false,
+    "created_at": "2026-05-13T21:01:41.930493+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3973,
+    "kind": "seamless_tile",
+    "category": "damask",
+    "dominant_hex": "#b9b08d",
+    "saturation": 0.239,
+    "title": "Honey Atelier No.3973",
+    "handle": "wallco-3973",
+    "image_url": "/designs/img/var_3971_hue+120_1778706101944.png",
+    "filename": "var_3971_hue+120_1778706101944.png",
+    "generator": "wallco.ai",
+    "seed": 0,
+    "is_published": false,
+    "created_at": "2026-05-13T21:01:44.391995+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3974,
+    "kind": "seamless_tile",
+    "category": "drunk-animals",
+    "dominant_hex": "#d25736",
+    "saturation": 0.634,
+    "title": "Rose Soir\u00e9e No.3974",
+    "handle": "wallco-3974",
+    "image_url": "/designs/img/1778706096251_2061806366.png",
+    "filename": "1778706096251_2061806366.png",
+    "generator": "wallco.ai",
+    "seed": 2061806366,
+    "is_published": false,
+    "created_at": "2026-05-13T21:01:45.205661+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3975,
+    "kind": "seamless_tile",
+    "category": "damask",
+    "dominant_hex": "#b9b08d",
+    "saturation": 0.239,
+    "title": "Honey Baroque No.3975",
+    "handle": "wallco-3975",
+    "image_url": "/designs/img/var_3971_hue+180_1778706104398.png",
+    "filename": "var_3971_hue+180_1778706104398.png",
+    "generator": "wallco.ai",
+    "seed": 0,
+    "is_published": false,
+    "created_at": "2026-05-13T21:01:46.805387+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3976,
+    "kind": "seamless_tile",
+    "category": "damask",
+    "dominant_hex": "#b9b08d",
+    "saturation": 0.239,
+    "title": "Honey Damask No.3976",
+    "handle": "wallco-3976",
+    "image_url": "/designs/img/var_3971_hue-60_1778706106811.png",
+    "filename": "var_3971_hue-60_1778706106811.png",
+    "generator": "wallco.ai",
+    "seed": 0,
+    "is_published": false,
+    "created_at": "2026-05-13T21:01:49.54528+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3977,
+    "kind": "seamless_tile",
+    "category": "damask",
+    "dominant_hex": "#b9b08d",
+    "saturation": 0.239,
+    "title": "Honey Heirloom No.3977",
+    "handle": "wallco-3977",
+    "image_url": "/designs/img/var_3971_mono_1778706109575.png",
+    "filename": "var_3971_mono_1778706109575.png",
+    "generator": "wallco.ai",
+    "seed": 0,
+    "is_published": false,
+    "created_at": "2026-05-13T21:01:59.118088+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3978,
+    "kind": "seamless_tile",
+    "category": "drunk-animals",
+    "dominant_hex": "#302927",
+    "saturation": 0.103,
+    "title": "Rose Saunter No.3978",
+    "handle": "wallco-3978",
+    "image_url": "/designs/img/1778706125437_139762605.png",
+    "filename": "1778706125437_139762605.png",
+    "generator": "wallco.ai",
+    "seed": 139762605,
+    "is_published": false,
+    "created_at": "2026-05-13T21:02:28.032706+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3979,
+    "kind": "seamless_tile",
+    "category": "stoned-animals",
+    "dominant_hex": "#676947",
+    "saturation": 0.193,
+    "title": "Olive Halcyon No.3979",
+    "handle": "wallco-3979",
+    "image_url": "/designs/img/1778706125435_425647631.png",
+    "filename": "1778706125435_425647631.png",
+    "generator": "wallco.ai",
+    "seed": 425647631,
+    "is_published": false,
+    "created_at": "2026-05-13T21:02:28.032705+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3980,
+    "kind": "seamless_tile",
+    "category": "stoned-animals",
+    "dominant_hex": "#70773c",
+    "saturation": 0.33,
+    "title": "Olive Stealie No.3980",
+    "handle": "wallco-3980",
+    "image_url": "/designs/img/1778706214147_2029538927.png",
+    "filename": "1778706214147_2029538927.png",
+    "generator": "wallco.ai",
+    "seed": 2029538927,
+    "is_published": false,
+    "created_at": "2026-05-13T21:03:43.364327+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3981,
+    "kind": "seamless_tile",
+    "category": "drunk-animals",
+    "dominant_hex": "#867366",
+    "saturation": 0.136,
+    "title": "Amber Tipple No.3981",
+    "handle": "wallco-3981",
+    "image_url": "/designs/img/1778706214147_1988391782.png",
+    "filename": "1778706214147_1988391782.png",
+    "generator": "wallco.ai",
+    "seed": 1988391782,
+    "is_published": false,
+    "created_at": "2026-05-13T21:03:47.341682+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3982,
+    "kind": "seamless_tile",
+    "category": "damask",
+    "dominant_hex": "#221f1d",
+    "saturation": 0.079,
+    "title": "Noir Heirloom No.3982",
+    "handle": "wallco-3982",
+    "image_url": "/designs/img/1778706276921_1667240080.png",
+    "filename": "1778706276921_1667240080.png",
+    "generator": "wallco.ai",
+    "seed": 1667240080,
+    "is_published": false,
+    "created_at": "2026-05-13T21:04:46.399373+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3983,
+    "kind": "seamless_tile",
+    "category": "damask",
+    "dominant_hex": "#221f1d",
+    "saturation": 0.079,
+    "title": "Noir Atelier No.3983",
+    "handle": "wallco-3983",
+    "image_url": "/designs/img/var_3982_hue+60_1778706286528.png",
+    "filename": "var_3982_hue+60_1778706286528.png",
+    "generator": "wallco.ai",
+    "seed": 0,
+    "is_published": false,
+    "created_at": "2026-05-13T21:04:48.65852+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3984,
+    "kind": "seamless_tile",
+    "category": "damask",
+    "dominant_hex": "#221f1d",
+    "saturation": 0.079,
+    "title": "Noir Salon No.3984",
+    "handle": "wallco-3984",
+    "image_url": "/designs/img/var_3982_hue+120_1778706288663.png",
+    "filename": "var_3982_hue+120_1778706288663.png",
+    "generator": "wallco.ai",
+    "seed": 0,
+    "is_published": false,
+    "created_at": "2026-05-13T21:04:50.762268+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3985,
+    "kind": "seamless_tile",
+    "category": "damask",
+    "dominant_hex": "#221f1d",
+    "saturation": 0.079,
+    "title": "Noir Baroque No.3985",
+    "handle": "wallco-3985",
+    "image_url": "/designs/img/var_3982_hue+180_1778706290766.png",
+    "filename": "var_3982_hue+180_1778706290766.png",
+    "generator": "wallco.ai",
+    "seed": 0,
+    "is_published": false,
+    "created_at": "2026-05-13T21:04:52.970659+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3986,
+    "kind": "seamless_tile",
+    "category": "damask",
+    "dominant_hex": "#221f1d",
+    "saturation": 0.079,
+    "title": "Noir Damask No.3986",
+    "handle": "wallco-3986",
+    "image_url": "/designs/img/var_3982_hue-60_1778706292974.png",
+    "filename": "var_3982_hue-60_1778706292974.png",
+    "generator": "wallco.ai",
+    "seed": 0,
+    "is_published": false,
+    "created_at": "2026-05-13T21:04:55.051009+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3987,
+    "kind": "seamless_tile",
+    "category": "damask",
+    "dominant_hex": "#221f1d",
+    "saturation": 0.079,
+    "title": "Noir Heirloom No.3987",
+    "handle": "wallco-3987",
+    "image_url": "/designs/img/var_3982_mono_1778706295054.png",
+    "filename": "var_3982_mono_1778706295054.png",
+    "generator": "wallco.ai",
+    "seed": 0,
+    "is_published": false,
+    "created_at": "2026-05-13T21:04:57.238373+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3988,
+    "kind": "seamless_tile",
+    "category": "drunk-animals",
+    "dominant_hex": "#952c51",
+    "saturation": 0.544,
+    "title": "Rose Saunter No.3988",
+    "handle": "wallco-3988",
+    "image_url": "/designs/img/1778706301673_1803476129.png",
+    "filename": "1778706301673_1803476129.png",
+    "generator": "wallco.ai",
+    "seed": 1803476129,
+    "is_published": false,
+    "created_at": "2026-05-13T21:05:10.237132+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3989,
+    "kind": "seamless_tile",
+    "category": "stoned-animals",
+    "dominant_hex": "#7d5a47",
+    "saturation": 0.276,
+    "title": "Amber Halcyon No.3989",
+    "handle": "wallco-3989",
+    "image_url": "/designs/img/1778706301672_452495870.png",
+    "filename": "1778706301672_452495870.png",
+    "generator": "wallco.ai",
+    "seed": 452495870,
+    "is_published": false,
+    "created_at": "2026-05-13T21:05:13.955575+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3990,
+    "kind": "seamless_tile",
+    "category": "drunk-animals",
+    "dominant_hex": "#333126",
+    "saturation": 0.146,
+    "title": "Honey Hiccup No.3990",
+    "handle": "wallco-3990",
+    "image_url": "/designs/img/1778706352033_625489924.png",
+    "filename": "1778706352033_625489924.png",
+    "generator": "wallco.ai",
+    "seed": 625489924,
+    "is_published": false,
+    "created_at": "2026-05-13T21:06:02.833673+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3991,
+    "kind": "seamless_tile",
+    "category": "stoned-animals",
+    "dominant_hex": "#332f2d",
+    "saturation": 0.062,
+    "title": "Noir Trip No.3991",
+    "handle": "wallco-3991",
+    "image_url": "/designs/img/1778706391703_443963802.png",
+    "filename": "1778706391703_443963802.png",
+    "generator": "wallco.ai",
+    "seed": 443963802,
+    "is_published": false,
+    "created_at": "2026-05-13T21:06:41.167725+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
+  },
+  {
+    "id": 3992,
+    "kind": "seamless_tile",
+    "category": "drunk-animals",
+    "dominant_hex": "#b25232",
+    "saturation": 0.561,
+    "title": "Amber Tableau No.3992",
+    "handle": "wallco-3992",
+    "image_url": "/designs/img/1778706391703_354618.png",
+    "filename": "1778706391703_354618.png",
+    "generator": "wallco.ai",
+    "seed": 354618,
+    "is_published": false,
+    "created_at": "2026-05-13T21:06:45.910698+00:00",
+    "motifs": [],
+    "user_removed": false,
+    "user_color_good": null,
+    "user_style_good": null,
+    "user_scale_good": null,
+    "user_stars": null,
+    "room_mockups": []
   }
 ]
\ No newline at end of file
diff --git a/server.js b/server.js
index 06627fb..3cd2579 100644
--- a/server.js
+++ b/server.js
@@ -6206,6 +6206,87 @@ ${htmlHeader('/designs')}
             </div>
           </div>
 
+          <!-- Share this design — Pinterest (one-click Pin) + Instagram
+               (download image + open IG). Per Steve's 2026-05-13 ask. -->
+          <div class="share-block" style="margin-top:22px;padding-top:18px;border-top:1px solid var(--line)">
+            <label style="font:11px var(--sans);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);display:block;margin-bottom:8px">Share this design</label>
+            <div style="display:flex;gap:8px;flex-wrap:wrap;align-items:center">
+              <button type="button" id="share-pinterest" style="padding:10px 16px;background:#e60023;color:#fff;border:0;border-radius:6px;font:600 12px var(--sans);letter-spacing:.06em;text-transform:uppercase;cursor:pointer;display:inline-flex;align-items:center;gap:6px">
+                <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0C5.4 0 0 5.4 0 12c0 5.1 3.1 9.4 7.6 11.2-.1-.9-.2-2.4 0-3.4.2-.9 1.4-5.8 1.4-5.8s-.4-.7-.4-1.8c0-1.7 1-2.9 2.2-2.9 1 0 1.5.8 1.5 1.7 0 1-.7 2.6-1 4-.3 1.2.6 2.1 1.7 2.1 2.1 0 3.7-2.2 3.7-5.4 0-2.8-2-4.8-4.9-4.8-3.3 0-5.3 2.5-5.3 5.1 0 1 .4 2.1.9 2.7.1.1.1.2.1.3l-.3 1.4c-.1.2-.2.3-.4.2-1.5-.7-2.4-2.9-2.4-4.6 0-3.7 2.7-7.1 7.8-7.1 4.1 0 7.3 2.9 7.3 6.8 0 4.1-2.6 7.4-6.2 7.4-1.2 0-2.3-.6-2.7-1.4l-.7 2.8c-.3 1-1 2.3-1.5 3.1 1.1.3 2.3.5 3.5.5 6.6 0 12-5.4 12-12C24 5.4 18.6 0 12 0z"/></svg>
+                Pin it
+              </button>
+              <button type="button" id="share-instagram" style="padding:10px 16px;background:linear-gradient(45deg,#f09433,#e6683c,#dc2743,#cc2366,#bc1888);color:#fff;border:0;border-radius:6px;font:600 12px var(--sans);letter-spacing:.06em;text-transform:uppercase;cursor:pointer;display:inline-flex;align-items:center;gap:6px">
+                <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M12 2.16c3.2 0 3.58 0 4.85.07 1.17.05 1.8.25 2.23.41.56.22.96.48 1.38.9.42.42.68.82.9 1.38.16.42.36 1.06.41 2.23.06 1.27.07 1.64.07 4.85s0 3.58-.07 4.85c-.05 1.17-.25 1.8-.41 2.23-.22.56-.48.96-.9 1.38a3.7 3.7 0 0 1-1.38.9c-.42.16-1.06.36-2.23.41-1.27.06-1.64.07-4.85.07s-3.58 0-4.85-.07c-1.17-.05-1.8-.25-2.23-.41a3.7 3.7 0 0 1-1.38-.9 3.7 3.7 0 0 1-.9-1.38c-.16-.42-.36-1.06-.41-2.23C2.16 15.58 2.16 15.2 2.16 12s0-3.58.07-4.85c.05-1.17.25-1.8.41-2.23.22-.56.48-.96.9-1.38.42-.42.82-.68 1.38-.9.42-.16 1.06-.36 2.23-.41C8.42 2.16 8.8 2.16 12 2.16M12 0C8.74 0 8.33 0 7.05.07 5.78.13 4.9.33 4.14.63a5.85 5.85 0 0 0-2.13 1.38A5.85 5.85 0 0 0 .63 4.14C.33 4.9.13 5.78.07 7.05.01 8.33 0 8.74 0 12c0 3.26.01 3.67.07 4.95.06 1.27.26 2.15.56 2.91.31.79.73 1.46 1.38 2.13a5.85 5.85 0 0 0 2.13 1.38c.76.3 1.64.5 2.91.56C8.33 23.99 8.74 24 12 24c3.26 0 3.67-.01 4.95-.07 1.27-.06 2.15-.26 2.91-.56a5.85 5.85 0 0 0 2.13-1.38 5.85 5.85 0 0 0 1.38-2.13c.3-.76.5-1.64.56-2.91.06-1.28.07-1.69.07-4.95s-.01-3.67-.07-4.95c-.06-1.27-.26-2.15-.56-2.91a5.85 5.85 0 0 0-1.38-2.13A5.85 5.85 0 0 0 19.86.63C19.1.33 18.22.13 16.95.07 15.67.01 15.26 0 12 0zm0 5.84A6.16 6.16 0 1 0 18.16 12 6.16 6.16 0 0 0 12 5.84M12 16a4 4 0 1 1 4-4 4 4 0 0 1-4 4m6.41-11.85a1.44 1.44 0 1 0 1.44 1.44 1.44 1.44 0 0 0-1.44-1.44"/></svg>
+                Share to Instagram
+              </button>
+              <button type="button" id="share-copy-link" style="padding:10px 14px;background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:6px;font:600 12px var(--sans);letter-spacing:.06em;text-transform:uppercase;cursor:pointer">
+                🔗 Copy link
+              </button>
+              <span id="share-status" class="muted" style="font:11px var(--sans);color:var(--ink-faint);"></span>
+            </div>
+            <div style="font:10.5px var(--sans);color:var(--ink-faint);margin-top:6px;letter-spacing:.04em">
+              Pin opens Pinterest's pin-it window. Instagram downloads the design image — open IG, tap +, choose the saved image.
+            </div>
+          </div>
+          <script>
+          (function(){
+            const pageUrl = window.location.href;
+            const imgUrl = ${JSON.stringify('https://wallco.ai' + design.image_url)};
+            const title  = ${JSON.stringify((design.title || 'wallco.ai design') + ' — wallco.ai original wallpaper')};
+            const handle = ${JSON.stringify(design.handle || ('design-' + design.id))};
+            const stat   = document.getElementById('share-status');
+
+            // Pinterest — opens the pin-create window in a small popup.
+            // Pinterest fetches the image directly from imgUrl + back-links
+            // to pageUrl.
+            const pinBtn = document.getElementById('share-pinterest');
+            if (pinBtn) pinBtn.addEventListener('click', () => {
+              const u = 'https://pinterest.com/pin/create/button/?url='
+                + encodeURIComponent(pageUrl)
+                + '&media=' + encodeURIComponent(imgUrl)
+                + '&description=' + encodeURIComponent(title);
+              window.open(u, 'pinit', 'width=750,height=620,scrollbars=yes');
+            });
+
+            // Instagram — IG has no public share URL. Best UX on desktop:
+            // download the image, then prompt user to upload it in IG.
+            // On mobile, attempt the instagram://library deep link first;
+            // fall back to download.
+            const igBtn = document.getElementById('share-instagram');
+            if (igBtn) igBtn.addEventListener('click', async () => {
+              stat.textContent = 'preparing image…';
+              try {
+                const r = await fetch(imgUrl);
+                const blob = await r.blob();
+                const a = document.createElement('a');
+                a.href = URL.createObjectURL(blob);
+                a.download = handle + '.png';
+                document.body.appendChild(a); a.click(); a.remove();
+                setTimeout(() => URL.revokeObjectURL(a.href), 1000);
+                const isMobile = /Mobi|Android|iPhone|iPad/i.test(navigator.userAgent);
+                if (isMobile) {
+                  stat.innerHTML = '✓ Saved — <a href="instagram://library" style="color:var(--accent)">open Instagram</a>';
+                } else {
+                  stat.innerHTML = '✓ Saved <strong>' + handle + '.png</strong> — open Instagram on your phone, tap +, choose the image.';
+                }
+              } catch (e) {
+                stat.innerHTML = '<span style="color:#b91c1c">Download failed: ' + (e.message || String(e)) + '</span>';
+              }
+            });
+
+            // Copy link to clipboard
+            const copyBtn = document.getElementById('share-copy-link');
+            if (copyBtn) copyBtn.addEventListener('click', async () => {
+              try {
+                await navigator.clipboard.writeText(pageUrl);
+                const t = copyBtn.textContent;
+                copyBtn.textContent = '✓ Copied';
+                setTimeout(() => { copyBtn.textContent = t; }, 1500);
+              } catch { stat.textContent = 'copy failed'; }
+            });
+          })();
+          </script>
+
           <!-- Furnish this design — coordinated furniture + lighting + decor
                recommendations scoped to residential / commercial / hospitality /
                healthcare. POSTs to /api/design/:id/furnish. -->
@@ -6244,27 +6325,10 @@ ${htmlHeader('/designs')}
                 const j = await r.json();
                 if (!j.ok) throw new Error(j.error || 'gen failed');
                 let html = '';
-                // Each item gets clickable "find images" chips so the text
-                // recommendation becomes a visual lookup tool. Steve's
-                // 2026-05-13 feedback: "but nothing generated" — text alone
-                // doesn't satisfy a furnishing browse.
-                const searchChips = (q) => {
-                  const enc = encodeURIComponent(q);
-                  return '<span style="display:inline-flex;gap:4px;margin-left:6px;font-size:10px;vertical-align:middle;flex-wrap:wrap">'
-                    + '<a href="https://www.google.com/search?tbm=isch&q=' + enc + '" target="_blank" rel="noopener" style="padding:2px 7px;border-radius:9999px;background:#eff6ff;color:#1d4ed8;text-decoration:none;border:1px solid #bfdbfe">🖼 Google</a>'
-                    + '<a href="https://www.1stdibs.com/search/?q=' + enc + '" target="_blank" rel="noopener" style="padding:2px 7px;border-radius:9999px;background:#fef3c7;color:#92400e;text-decoration:none;border:1px solid #fde68a">1stdibs</a>'
-                    + '<a href="https://www.pinterest.com/search/pins/?q=' + enc + '" target="_blank" rel="noopener" style="padding:2px 7px;border-radius:9999px;background:#fee2e2;color:#b91c1c;text-decoration:none;border:1px solid #fecaca">Pinterest</a>'
-                    + '<a href="https://www.etsy.com/search?q=' + enc + '" target="_blank" rel="noopener" style="padding:2px 7px;border-radius:9999px;background:#fef9c3;color:#854d0e;text-decoration:none;border:1px solid #fde047">Etsy</a>'
-                    + '</span>';
-                };
                 for (const cat of (j.categories || [])) {
                   html += '<div style="margin-bottom:14px"><div style="font:600 11px var(--sans);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);margin-bottom:6px">' + cat.category + '</div><ul style="margin:0;padding-left:18px">';
                   for (const item of (cat.items || [])) {
-                    const q = (item.name || '') + (item.detail ? ' ' + item.detail.split(/[.,]/)[0] : '');
-                    html += '<li style="margin-bottom:6px"><strong>' + item.name + '</strong>'
-                      + (item.detail ? ' — <span style="color:var(--ink-soft,#555)">' + item.detail + '</span>' : '')
-                      + searchChips(q)
-                      + '</li>';
+                    html += '<li style="margin-bottom:4px"><strong>' + item.name + '</strong>' + (item.detail ? ' — <span style="color:var(--ink-soft,#555)">' + item.detail + '</span>' : '') + '</li>';
                   }
                   html += '</ul></div>';
                 }

← 829515f wallco: add full sort options (oldest/title-desc/vivid/muted  ·  back to Wallco Ai  ·  furnish: disk-backed cache (data/furnish-cache/<id>-<ctx>.js f4031b4 →