← back to Designer Wallcoverings
TK-10057: quality floor (non-room single hero needs >=1000px min-side; else mosaic) + --revert; reverted 3 sub-floor onboards
98cce98c2122967ce2282d2dd6ced27581661e8c · 2026-07-30 12:32:45 -0700 · collection-agent
Files touched
A shopify/collection-hero-fix/tk10056-hero-rotate/backups/animal-skin.jsonA shopify/collection-hero-fix/tk10056-hero-rotate/backups/animals-and-insects.jsonA shopify/collection-hero-fix/tk10056-hero-rotate/backups/art-deco.jsonA shopify/collection-hero-fix/tk10056-hero-rotate/backups/as-seen-in-showrooms.jsonA shopify/collection-hero-fix/tk10056-hero-rotate/backups/basketweave-paper.jsonA shopify/collection-hero-fix/tk10056-hero-rotate/backups/birds.jsonA shopify/collection-hero-fix/tk10056-hero-rotate/backups/braid-tape.jsonA shopify/collection-hero-fix/tk10056-hero-rotate/backups/brands-at-designer-wallcoverings-a-c.jsonA shopify/collection-hero-fix/tk10056-hero-rotate/backups/british-walls.jsonA shopify/collection-hero-fix/tk10056-hero-rotate/backups/decoglass-wallpaper.jsonA shopify/collection-hero-fix/tk10056-hero-rotate/backups/elements-ii-naturals.jsonA shopify/collection-hero-fix/tk10056-hero-rotate/backups/lorenzo-castillo-v.jsonA shopify/collection-hero-fix/tk10056-hero-rotate/backups/phillipe-romano-enlightenment.jsonA shopify/collection-hero-fix/tk10056-hero-rotate/backups/phillipe-romano-faux-leather.jsonA shopify/collection-hero-fix/tk10056-hero-rotate/backups/phillipe-romano-flocked-velvet-wallpaper.jsonA shopify/collection-hero-fix/tk10056-hero-rotate/backups/phillipe-romano-pattern-upholstery.jsonA shopify/collection-hero-fix/tk10056-hero-rotate/backups/phillipe-romano-print-basecloths.jsonM shopify/collection-hero-fix/tk10056-hero-rotate/hero-rotate.pyA shopify/collection-hero-fix/tk10056-hero-rotate/launchd.errA shopify/collection-hero-fix/tk10056-hero-rotate/launchd.out
Diff
commit 98cce98c2122967ce2282d2dd6ced27581661e8c
Author: collection-agent <steve@designerwallcoverings.com>
Date: Thu Jul 30 12:32:45 2026 -0700
TK-10057: quality floor (non-room single hero needs >=1000px min-side; else mosaic) + --revert; reverted 3 sub-floor onboards
---
.../tk10056-hero-rotate/backups/animal-skin.json | 1 +
.../backups/animals-and-insects.json | 1 +
.../tk10056-hero-rotate/backups/art-deco.json | 1 +
.../backups/as-seen-in-showrooms.json | 1 +
.../backups/basketweave-paper.json | 1 +
.../tk10056-hero-rotate/backups/birds.json | 1 +
.../tk10056-hero-rotate/backups/braid-tape.json | 1 +
.../backups/brands-at-designer-wallcoverings-a-c.json | 1 +
.../tk10056-hero-rotate/backups/british-walls.json | 1 +
.../backups/decoglass-wallpaper.json | 1 +
.../backups/elements-ii-naturals.json | 1 +
.../backups/lorenzo-castillo-v.json | 1 +
.../backups/phillipe-romano-enlightenment.json | 1 +
.../backups/phillipe-romano-faux-leather.json | 1 +
.../phillipe-romano-flocked-velvet-wallpaper.json | 1 +
.../backups/phillipe-romano-pattern-upholstery.json | 1 +
.../backups/phillipe-romano-print-basecloths.json | 1 +
.../tk10056-hero-rotate/hero-rotate.py | 19 +++++++++++++++++++
.../tk10056-hero-rotate/launchd.err | 0
.../tk10056-hero-rotate/launchd.out | 0
20 files changed, 36 insertions(+)
diff --git a/shopify/collection-hero-fix/tk10056-hero-rotate/backups/animal-skin.json b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/animal-skin.json
new file mode 100644
index 00000000..972a4cbc
--- /dev/null
+++ b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/animal-skin.json
@@ -0,0 +1 @@
+{"smart_collection": {"published_at": "2024-09-19T10:24:44-07:00", "image": {"created_at": "2026-07-05T15:25:02-07:00", "alt": "Animal Skin", "width": 1280, "height": 800, "src": "https://cdn.shopify.com/s/files/1/0015/4117/7456/collections/room-living_room-carlos-cheetah-wallpaper-skn-6807_e552c68e-5a13-4c37-94bd-24913e95837b.jpg?v=1783290303"}}}
\ No newline at end of file
diff --git a/shopify/collection-hero-fix/tk10056-hero-rotate/backups/animals-and-insects.json b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/animals-and-insects.json
new file mode 100644
index 00000000..a9cb2d26
--- /dev/null
+++ b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/animals-and-insects.json
@@ -0,0 +1 @@
+{"smart_collection": {"published_at": "2024-09-16T16:52:44-07:00", "image": {"created_at": "2026-03-20T13:09:55-07:00", "alt": null, "width": 1000, "height": 1000, "src": "https://cdn.shopify.com/s/files/1/0015/4117/7456/collections/98803-1250a5b948db419c9d9be35796e91929.jpg?v=1776628569"}}}
\ No newline at end of file
diff --git a/shopify/collection-hero-fix/tk10056-hero-rotate/backups/art-deco.json b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/art-deco.json
new file mode 100644
index 00000000..1d7c10ce
--- /dev/null
+++ b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/art-deco.json
@@ -0,0 +1 @@
+{"smart_collection": {"published_at": "2026-04-09T21:34:28-07:00", "image": {"created_at": "2026-04-17T06:50:22-07:00", "alt": null, "width": 1024, "height": 1024, "src": "https://cdn.shopify.com/s/files/1/0015/4117/7456/collections/20319258.jpg?v=1776433822"}}}
\ No newline at end of file
diff --git a/shopify/collection-hero-fix/tk10056-hero-rotate/backups/as-seen-in-showrooms.json b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/as-seen-in-showrooms.json
new file mode 100644
index 00000000..f3aa038a
--- /dev/null
+++ b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/as-seen-in-showrooms.json
@@ -0,0 +1 @@
+{"smart_collection": {"published_at": "2026-03-20T13:12:54-07:00", "image": {"created_at": "2026-07-30T10:36:58-07:00", "alt": "As Seen in Showrooms", "width": 1344, "height": 768, "src": "https://cdn.shopify.com/s/files/1/0015/4117/7456/collections/206004af94d3434db03de3bb2dac3751.png?v=1785433018"}}}
\ No newline at end of file
diff --git a/shopify/collection-hero-fix/tk10056-hero-rotate/backups/basketweave-paper.json b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/basketweave-paper.json
new file mode 100644
index 00000000..53c5d3be
--- /dev/null
+++ b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/basketweave-paper.json
@@ -0,0 +1 @@
+{"smart_collection": {"published_at": "2018-09-29T12:12:29-07:00", "image": {"created_at": "2026-07-30T10:37:03-07:00", "alt": "Basket Weave", "width": 1344, "height": 768, "src": "https://cdn.shopify.com/s/files/1/0015/4117/7456/collections/98300fc550c31ba8195ce437c4fd3325.png?v=1785433023"}}}
\ No newline at end of file
diff --git a/shopify/collection-hero-fix/tk10056-hero-rotate/backups/birds.json b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/birds.json
new file mode 100644
index 00000000..7b2d014b
--- /dev/null
+++ b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/birds.json
@@ -0,0 +1 @@
+{"smart_collection": {"published_at": "2025-01-06T08:36:38-08:00", "image": {"created_at": "2025-01-13T12:55:27-08:00", "alt": null, "width": 1339, "height": 1000, "src": "https://cdn.shopify.com/s/files/1/0015/4117/7456/collections/768728c53535e9159f8a0d9b0115ec64_d1cbd178-db67-46b4-9c58-6b90b503cd34.jpg?v=1776628313"}}}
\ No newline at end of file
diff --git a/shopify/collection-hero-fix/tk10056-hero-rotate/backups/braid-tape.json b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/braid-tape.json
new file mode 100644
index 00000000..351bcd61
--- /dev/null
+++ b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/braid-tape.json
@@ -0,0 +1 @@
+{"smart_collection": {"published_at": "2026-03-20T13:13:02-07:00", "image": {"created_at": "2026-07-30T11:25:49-07:00", "alt": null, "width": 2500, "height": 1875, "src": "https://cdn.shopify.com/s/files/1/0015/4117/7456/collections/TL10136_13_lifestyle.png?v=1785435949"}}}
\ No newline at end of file
diff --git a/shopify/collection-hero-fix/tk10056-hero-rotate/backups/brands-at-designer-wallcoverings-a-c.json b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/brands-at-designer-wallcoverings-a-c.json
new file mode 100644
index 00000000..630e8a5f
--- /dev/null
+++ b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/brands-at-designer-wallcoverings-a-c.json
@@ -0,0 +1 @@
+{"smart_collection": {"published_at": "2025-05-16T15:38:17-07:00", "image": {"created_at": "2026-03-20T13:09:30-07:00", "alt": null, "width": 1000, "height": 1000, "src": "https://cdn.shopify.com/s/files/1/0015/4117/7456/collections/happy-hour-day_24a94341-a00e-46da-a65c-8cfa89f8b06c.webp?v=1776627427"}}}
\ No newline at end of file
diff --git a/shopify/collection-hero-fix/tk10056-hero-rotate/backups/british-walls.json b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/british-walls.json
new file mode 100644
index 00000000..9af20304
--- /dev/null
+++ b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/british-walls.json
@@ -0,0 +1 @@
+{"smart_collection": {"published_at": "2019-01-08T12:44:17-08:00", "image": {"created_at": "2026-07-30T10:00:08-07:00", "alt": "British Invasion", "width": 1344, "height": 768, "src": "https://cdn.shopify.com/s/files/1/0015/4117/7456/collections/afa15867c8332e30947da963b202f760.png?v=1785430808"}}}
\ No newline at end of file
diff --git a/shopify/collection-hero-fix/tk10056-hero-rotate/backups/decoglass-wallpaper.json b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/decoglass-wallpaper.json
new file mode 100644
index 00000000..7d6b7f42
--- /dev/null
+++ b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/decoglass-wallpaper.json
@@ -0,0 +1 @@
+{"smart_collection": {"published_at": "2018-09-29T12:02:09-07:00", "image": {"created_at": "2026-03-25T20:11:16-07:00", "alt": null, "width": 1305, "height": 1606, "src": "https://cdn.shopify.com/s/files/1/0015/4117/7456/collections/104299_ROOMSET_01__38109.1769761676.jpg?v=1785429602"}}}
\ No newline at end of file
diff --git a/shopify/collection-hero-fix/tk10056-hero-rotate/backups/elements-ii-naturals.json b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/elements-ii-naturals.json
new file mode 100644
index 00000000..f9c33fa0
--- /dev/null
+++ b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/elements-ii-naturals.json
@@ -0,0 +1 @@
+{"custom_collection": {"published_at": "2026-03-20T13:26:54-07:00", "image": {"created_at": "2026-03-20T13:59:03-07:00", "alt": "ELEMENTS II NATURALS", "width": 1200, "height": 1200, "src": "https://cdn.shopify.com/s/files/1/0015/4117/7456/collections/W4030_1_6f34e8fa-d309-4354-8817-85a31f7b782c.jpg?v=1774040344"}}}
\ No newline at end of file
diff --git a/shopify/collection-hero-fix/tk10056-hero-rotate/backups/lorenzo-castillo-v.json b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/lorenzo-castillo-v.json
new file mode 100644
index 00000000..aa184110
--- /dev/null
+++ b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/lorenzo-castillo-v.json
@@ -0,0 +1 @@
+{"custom_collection": {"published_at": "2026-03-20T13:31:09-07:00", "image": {"created_at": "2026-03-20T13:56:51-07:00", "alt": "LORENZO CASTILLO V", "width": 1200, "height": 1200, "src": "https://cdn.shopify.com/s/files/1/0015/4117/7456/collections/LCW1018_002_cee0c2d1-8ef9-41ae-88af-925751a16f6c.jpg?v=1774040212"}}}
\ No newline at end of file
diff --git a/shopify/collection-hero-fix/tk10056-hero-rotate/backups/phillipe-romano-enlightenment.json b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/phillipe-romano-enlightenment.json
new file mode 100644
index 00000000..c01d94a2
--- /dev/null
+++ b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/phillipe-romano-enlightenment.json
@@ -0,0 +1 @@
+{"custom_collection": {"published_at": "2026-03-20T15:29:48-07:00", "image": {"created_at": "2026-07-30T10:01:14-07:00", "alt": "Phillipe Romano - Enlightenment", "width": 1344, "height": 768, "src": "https://cdn.shopify.com/s/files/1/0015/4117/7456/collections/e5b189a20fdc9035cf1bc5cd1efcd7d3.png?v=1785430874"}}}
\ No newline at end of file
diff --git a/shopify/collection-hero-fix/tk10056-hero-rotate/backups/phillipe-romano-faux-leather.json b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/phillipe-romano-faux-leather.json
new file mode 100644
index 00000000..cb45b291
--- /dev/null
+++ b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/phillipe-romano-faux-leather.json
@@ -0,0 +1 @@
+{"custom_collection": {"published_at": "2026-03-20T13:53:45-07:00", "image": {"created_at": "2026-07-30T10:01:29-07:00", "alt": "Phillipe Romano - Faux Leather", "width": 1344, "height": 768, "src": "https://cdn.shopify.com/s/files/1/0015/4117/7456/collections/ef087a19c915434c7c6d06fae031b5d3.png?v=1785430889"}}}
\ No newline at end of file
diff --git a/shopify/collection-hero-fix/tk10056-hero-rotate/backups/phillipe-romano-flocked-velvet-wallpaper.json b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/phillipe-romano-flocked-velvet-wallpaper.json
new file mode 100644
index 00000000..3df68e29
--- /dev/null
+++ b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/phillipe-romano-flocked-velvet-wallpaper.json
@@ -0,0 +1 @@
+{"custom_collection": {"published_at": "2024-12-16T21:54:11-08:00", "image": {"created_at": "2026-03-20T13:59:12-07:00", "alt": "Phillipe Romano Flocked Velvet Wallpaper", "width": 1200, "height": 1200, "src": "https://cdn.shopify.com/s/files/1/0015/4117/7456/collections/VV220_empire_BLACKGOLD_1200x_8e6c32c0-caeb-461d-801b-12683ee8b121.webp?v=1785429807"}}}
\ No newline at end of file
diff --git a/shopify/collection-hero-fix/tk10056-hero-rotate/backups/phillipe-romano-pattern-upholstery.json b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/phillipe-romano-pattern-upholstery.json
new file mode 100644
index 00000000..1cccef59
--- /dev/null
+++ b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/phillipe-romano-pattern-upholstery.json
@@ -0,0 +1 @@
+{"custom_collection": {"published_at": "2026-03-20T13:53:48-07:00", "image": {"created_at": "2026-07-30T10:01:35-07:00", "alt": "Phillipe Romano - Pattern Upholstery", "width": 1344, "height": 768, "src": "https://cdn.shopify.com/s/files/1/0015/4117/7456/collections/e0e5b05c039cc75e450e0e4b160bdd69.png?v=1785430895"}}}
\ No newline at end of file
diff --git a/shopify/collection-hero-fix/tk10056-hero-rotate/backups/phillipe-romano-print-basecloths.json b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/phillipe-romano-print-basecloths.json
new file mode 100644
index 00000000..88d85b77
--- /dev/null
+++ b/shopify/collection-hero-fix/tk10056-hero-rotate/backups/phillipe-romano-print-basecloths.json
@@ -0,0 +1 @@
+{"custom_collection": {"published_at": "2026-03-20T13:53:49-07:00", "image": {"created_at": "2026-07-30T10:01:39-07:00", "alt": "Phillipe Romano - Print Basecloths", "width": 1344, "height": 768, "src": "https://cdn.shopify.com/s/files/1/0015/4117/7456/collections/20687d5c646cc04832871607502ca6a8.png?v=1785430899"}}}
\ No newline at end of file
diff --git a/shopify/collection-hero-fix/tk10056-hero-rotate/hero-rotate.py b/shopify/collection-hero-fix/tk10056-hero-rotate/hero-rotate.py
index cecaae46..40f96339 100644
--- a/shopify/collection-hero-fix/tk10056-hero-rotate/hero-rotate.py
+++ b/shopify/collection-hero-fix/tk10056-hero-rotate/hero-rotate.py
@@ -38,6 +38,9 @@ def score(im):
w=im.get("width") or 0; h=im.get("height") or 0; mn=min(w,h) if w and h else 0
if not mn or SKIP.search(fn): return -1,"skip"
room=bool(ROOM.search(fn) or ROOM.search(str(im.get("alt") or "")))
+ # quality floor: a NON-room single hero must be big enough that full-bleed isn't softer
+ # than the 2x2 mosaic (~640px cells). Below 1000px min-side, leave it on the mosaic.
+ if not room and mn<1000: return -1,"toosmall"
ratio=(max(w,h)/min(w,h)) if mn else 1
s=mn/100.0
kind="swatch"
@@ -135,10 +138,26 @@ def apply(handle=None, include_new=False):
done+=1; print(f"set {c['handle']} -> {best[1]} {best[2]}x{best[3]}")
time.sleep(0.6)
print(f"applied {done} changed, {unchanged} already-current (no write)")
+def _resolve(handle):
+ for res in ("custom_collections","smart_collections"):
+ r=req("GET",f"{res}.json?handle={handle}&fields=id")
+ arr=r.get(res) or []
+ if arr: return res, arr[0]["id"]
+ return None,None
+def revert(handles):
+ """Clear collection.image for specific handles -> falls back to the mosaic (sharper than a sub-floor hero)."""
+ for h in handles:
+ res,cid=_resolve(h)
+ if not cid: print(f"not found: {h}"); continue
+ key,path=endpoint(res)
+ req("PUT",f"{path}/{cid}.json",{key:{"id":cid,"image":None}})
+ print(f"reverted {h} -> mosaic (image cleared)")
+ time.sleep(0.5)
if __name__=="__main__":
a=sys.argv[1:]; hd=a[a.index("--handle")+1] if "--handle" in a else None
new="--new" in a
if not a or a[0]=="--dryrun": dryrun(hd, include_new=new)
elif a[0]=="--apply": apply(hd, include_new=new)
elif a[0]=="--rotate": apply(hd, include_new=True) # daily job: rotate managed + onboard new
+ elif a[0]=="--revert": revert(a[1:])
else: print(__doc__)
diff --git a/shopify/collection-hero-fix/tk10056-hero-rotate/launchd.err b/shopify/collection-hero-fix/tk10056-hero-rotate/launchd.err
new file mode 100644
index 00000000..e69de29b
diff --git a/shopify/collection-hero-fix/tk10056-hero-rotate/launchd.out b/shopify/collection-hero-fix/tk10056-hero-rotate/launchd.out
new file mode 100644
index 00000000..e69de29b
← 743f36cc TK-10057: fix braid-tape (wider scan + recency bonus); auto-
·
back to Designer Wallcoverings
·
5x: verify live collection hero — build clean (M1/M2/B4 + se 48277542 →