← back to Wallco Ai
drunk-curator: click pattern to enlarge (1x/2x/3x repeat lightbox to inspect seams); drag still marks misaligned
152132eae7c2605358b0099cad272943bdc341ec · 2026-05-27 16:33:35 -0700 · Steve Abrams
Files touched
M data/auto-decide-ledger.jsonlM data/rescreen-voids-ledger.jsonlM public/admin/drunk-curator.html
Diff
commit 152132eae7c2605358b0099cad272943bdc341ec
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Wed May 27 16:33:35 2026 -0700
drunk-curator: click pattern to enlarge (1x/2x/3x repeat lightbox to inspect seams); drag still marks misaligned
---
data/auto-decide-ledger.jsonl | 114 +++++++++++++++++++++++++++++++++++++++
data/rescreen-voids-ledger.jsonl | 113 ++++++++++++++++++++++++++++++++++++++
public/admin/drunk-curator.html | 38 +++++++++++--
3 files changed, 262 insertions(+), 3 deletions(-)
diff --git a/data/auto-decide-ledger.jsonl b/data/auto-decide-ledger.jsonl
index 101448b..e154e54 100644
--- a/data/auto-decide-ledger.jsonl
+++ b/data/auto-decide-ledger.jsonl
@@ -3316,3 +3316,117 @@
{"t":"2026-05-27T23:29:10.943Z","id":46137,"verdict":"hot_candidate","n":4,"see":"A repeating pattern of urns and animals."}
{"t":"2026-05-27T23:29:13.044Z","id":46138,"verdict":"hot_candidate","n":4,"see":"A repeating pattern of urns and animals."}
{"t":"2026-05-27T23:29:15.326Z","id":46142,"verdict":"hot_candidate","n":8,"see":"A repeating pattern of frogs and monkeys in trees."}
+{"t":"2026-05-27T23:29:17.805Z","id":46147,"verdict":"hot_candidate","n":15,"see":"A repeating pattern of elephants."}
+{"t":"2026-05-27T23:29:20.141Z","id":46160,"verdict":"hot_candidate","n":9,"see":"A repeating pattern of raccoons and bears."}
+{"t":"2026-05-27T23:29:22.384Z","id":46175,"verdict":"hot_candidate","n":5,"see":"A wallpaper tile with a repeating pattern of parrots."}
+{"t":"2026-05-27T23:29:24.687Z","id":46176,"verdict":"hot_candidate","n":6,"see":"This is a wallpaper tile with a repeating pattern of parrots on branches."}
+{"t":"2026-05-27T23:29:26.895Z","id":46178,"verdict":"hot_candidate","n":4,"see":"The tile shows a repeating pattern of parrots on branches."}
+{"t":"2026-05-27T23:29:29.050Z","id":46183,"verdict":"hot_candidate","n":4,"see":"This is a wallpaper tile with a repeating pattern of parrots on branches."}
+{"t":"2026-05-27T23:29:31.102Z","id":46184,"verdict":"hot_candidate","n":4,"see":"A repeating pattern of parrots and leaves."}
+{"t":"2026-05-27T23:29:33.385Z","id":46188,"verdict":"hot_candidate","n":8,"see":"A repeating pattern of giraffes and antelopes."}
+{"t":"2026-05-27T23:29:35.631Z","id":46189,"verdict":"hot_candidate","n":8,"see":"A repeating pattern of giraffes and other animals."}
+{"t":"2026-05-27T23:29:37.757Z","id":46199,"verdict":"hot_candidate","n":4,"see":"Repeating pattern of monkeys with drinks."}
+{"t":"2026-05-27T23:29:39.802Z","id":46200,"verdict":"hot_candidate","n":6,"see":"This is a wallpaper tile with a repeating giraffe motif."}
+{"t":"2026-05-27T23:29:42.217Z","id":46201,"verdict":"hot_candidate","n":5,"see":"This is a wallpaper tile with a repeating giraffe motif."}
+{"t":"2026-05-27T23:29:44.455Z","id":46202,"verdict":"hot_candidate","n":4,"see":"A repeating pattern of giraffes and trees."}
+{"t":"2026-05-27T23:29:46.770Z","id":46216,"verdict":"hot_candidate","n":4,"see":"A wallpaper tile with a repeating pattern of parrots and foliage."}
+{"t":"2026-05-27T23:29:48.966Z","id":46217,"verdict":"hot_candidate","n":4,"see":"This is a wallpaper repeat with a parrot motif."}
+{"t":"2026-05-27T23:29:51.087Z","id":46218,"verdict":"hot_candidate","n":4,"see":"A repeating pattern of parrots and foliage."}
+{"t":"2026-05-27T23:29:53.323Z","id":46221,"verdict":"hot_candidate","n":5,"see":"This is a wallpaper tile with a repeating giraffe motif."}
+{"t":"2026-05-27T23:29:55.565Z","id":46279,"verdict":"hot_candidate","n":7,"see":"A wallpaper tile with a repeating giraffe and tree motif."}
+{"t":"2026-05-27T23:29:57.720Z","id":46280,"verdict":"hot_candidate","n":7,"see":"A repeating pattern of giraffes and trees."}
+{"t":"2026-05-27T23:29:59.872Z","id":46286,"verdict":"hot_candidate","n":10,"see":"A repeating pattern of monkeys and bottles."}
+{"t":"2026-05-27T23:30:02.211Z","id":46291,"verdict":"hot_candidate","n":25,"see":"A wallpaper tile with a repeating pattern of elephants and palm trees."}
+{"t":"2026-05-27T23:30:04.375Z","id":46292,"verdict":"hot_candidate","n":25,"see":"A wallpaper tile with a repeating pattern of elephants and palm trees."}
+{"t":"2026-05-27T23:30:06.683Z","id":46326,"verdict":"hot_candidate","n":8,"see":"A repeating pattern of elephant heads and architectural elements."}
+{"t":"2026-05-27T23:30:09.019Z","id":46327,"verdict":"hot_candidate","n":9,"see":"A repeating pattern of elephant head motifs and architectural elements."}
+{"t":"2026-05-27T23:30:11.317Z","id":46328,"verdict":"hot_candidate","n":9,"see":"Repeating pattern of elephant head motifs and architectural elements."}
+{"t":"2026-05-27T23:30:13.594Z","id":46332,"verdict":"hot_candidate","n":6,"see":"There are multiple sloth motifs in a repeating pattern."}
+{"t":"2026-05-27T23:30:15.718Z","id":46333,"verdict":"hot_candidate","n":6,"see":"A repeating pattern of sloths on branches."}
+{"t":"2026-05-27T23:30:18.003Z","id":46334,"verdict":"hot_candidate","n":6,"see":"A repeating pattern of sloths on branches."}
+{"t":"2026-05-27T23:30:20.251Z","id":46361,"verdict":"hot_candidate","n":6,"see":"The tile shows a repeating pattern of deer and other motifs."}
+{"t":"2026-05-27T23:30:22.337Z","id":46362,"verdict":"hot_candidate","n":8,"see":"A repeating pattern of deer and floral arrangements."}
+{"t":"2026-05-27T23:30:24.476Z","id":46367,"verdict":"hot_candidate","n":6,"see":"A wallpaper tile with a repeating deer motif."}
+{"t":"2026-05-27T23:30:26.675Z","id":46378,"verdict":"hot_candidate","n":20,"see":"A repeating pattern of raccoons and plants."}
+{"t":"2026-05-27T23:30:28.857Z","id":46387,"verdict":"hot_candidate","n":15,"see":"A repeating pattern of raccoons and plants."}
+{"t":"2026-05-27T23:30:31.004Z","id":46388,"verdict":"hot_candidate","n":18,"see":"A repeating pattern of raccoons and plants."}
+{"t":"2026-05-27T23:30:33.226Z","id":46400,"verdict":"hot_candidate","n":5,"see":"A repeating pattern of parrots on branches."}
+{"t":"2026-05-27T23:30:35.408Z","id":46405,"verdict":"hot_candidate","n":5,"see":"A repeating pattern of sloths in trees."}
+{"t":"2026-05-27T23:30:37.569Z","id":46406,"verdict":"hot_candidate","n":5,"see":"A wallpaper tile with a repeating sloth motif."}
+{"t":"2026-05-27T23:30:39.808Z","id":46410,"verdict":"hot_candidate","n":7,"see":"A repeating pattern of giraffes."}
+{"t":"2026-05-27T23:30:42.054Z","id":46430,"verdict":"hot_candidate","n":8,"see":"This is a wallpaper repeat of giraffe motifs."}
+{"t":"2026-05-27T23:30:44.250Z","id":46439,"verdict":"hot_candidate","n":7,"see":"This is a wallpaper tile with a repeating giraffe motif."}
+{"t":"2026-05-27T23:30:46.585Z","id":46443,"verdict":"hot_candidate","n":5,"see":"A wallpaper tile with a repeating lemur motif."}
+{"t":"2026-05-27T23:30:48.849Z","id":46448,"verdict":"hot_candidate","n":12,"see":"A repeating pattern of various animals."}
+{"t":"2026-05-27T23:30:51.113Z","id":46449,"verdict":"hot_candidate","n":12,"see":"This is a wallpaper repeat of various animals."}
+{"t":"2026-05-27T23:30:53.329Z","id":46450,"verdict":"hot_candidate","n":13,"see":"A repeating pattern of various animals."}
+{"t":"2026-05-27T23:30:55.622Z","id":46474,"verdict":"hot_candidate","n":8,"see":"This is a wallpaper repeat with a lizard-like motif."}
+{"t":"2026-05-27T23:30:57.777Z","id":46576,"verdict":"hot_candidate","n":6,"see":"A repeating pattern of deer and trees."}
+{"t":"2026-05-27T23:31:00.190Z","id":46578,"verdict":"hot_candidate","n":6,"see":"A repeating pattern of monkeys with champagne bottles."}
+{"t":"2026-05-27T23:31:02.313Z","id":46579,"verdict":"hot_candidate","n":5,"see":"This is a wallpaper tile with a repeating lemur motif."}
+{"t":"2026-05-27T23:31:04.585Z","id":46580,"verdict":"hot_candidate","n":5,"see":"A repeating pattern of lemurs and palm fronds."}
+{"t":"2026-05-27T23:31:07.828Z","id":46581,"verdict":"hot_candidate","n":5,"see":"A repeating pattern of lemurs and palm fronds."}
+{"t":"2026-05-27T23:31:09.991Z","id":46589,"verdict":"hot_candidate","n":10,"see":"A repeating wallpaper tile with a pattern of animals and trees."}
+{"t":"2026-05-27T23:31:12.095Z","id":46590,"verdict":"hot_candidate","n":9,"see":"A repeating wallpaper tile with animal motifs."}
+{"t":"2026-05-27T23:31:14.136Z","id":46591,"verdict":"hot_candidate","n":10,"see":"A repeating wallpaper tile with deer and trees."}
+{"t":"2026-05-27T23:31:16.495Z","id":46592,"verdict":"hot_candidate","n":6,"see":"This is a wallpaper tile with a repeating giraffe and tree motif."}
+{"t":"2026-05-27T23:31:18.863Z","id":46593,"verdict":"hot_candidate","n":5,"see":"A repeating wallpaper tile with a giraffe and tree motif."}
+{"t":"2026-05-27T23:31:21.308Z","id":46594,"verdict":"hot_candidate","n":5,"see":"This is a wallpaper tile with a repeating giraffe and tree motif."}
+{"t":"2026-05-27T23:31:23.500Z","id":46599,"verdict":"hot_candidate","n":10,"see":"A wallpaper tile with a repeating elephant motif."}
+{"t":"2026-05-27T23:31:25.693Z","id":46600,"verdict":"hot_candidate","n":9,"see":"A repeating pattern of elephant motifs."}
+{"t":"2026-05-27T23:31:28.095Z","id":46611,"verdict":"hot_candidate","n":7,"see":"The tile shows a repeating pattern of elephants and trees."}
+{"t":"2026-05-27T23:31:30.458Z","id":46612,"verdict":"hot_candidate","n":7,"see":"A wallpaper tile with a repeating elephant motif."}
+{"t":"2026-05-27T23:31:32.632Z","id":46619,"verdict":"hot_candidate","n":4,"see":"This is a wallpaper tile with a repeating pattern of sloths in trees."}
+{"t":"2026-05-27T23:31:34.849Z","id":46620,"verdict":"hot_candidate","n":4,"see":"A wallpaper tile with a repeating pattern of sloths in trees."}
+{"t":"2026-05-27T23:31:37.014Z","id":46623,"verdict":"hot_candidate","n":12,"see":"A repeating pattern of animal silhouettes."}
+{"t":"2026-05-27T23:31:39.203Z","id":46624,"verdict":"hot_candidate","n":10,"see":"This is a wallpaper tile with a repeating pattern of bears and trees."}
+{"t":"2026-05-27T23:31:41.317Z","id":46625,"verdict":"hot_candidate","n":9,"see":"A repeating pattern of bears and trees."}
+{"t":"2026-05-27T23:31:43.661Z","id":46635,"verdict":"hot_candidate","n":5,"see":"This is a wallpaper tile with a repeating pattern of monkeys and palm trees."}
+{"t":"2026-05-27T23:31:45.790Z","id":46638,"verdict":"hot_candidate","n":4,"see":"A wallpaper tile with a repeating pattern of sloths in trees."}
+{"t":"2026-05-27T23:31:47.957Z","id":46653,"verdict":"hot_candidate","n":4,"see":"A wallpaper tile with a repeating pattern of parrots and trees."}
+{"t":"2026-05-27T23:31:50.161Z","id":46654,"verdict":"hot_candidate","n":4,"see":"This is a wallpaper tile with a repeating parrot motif."}
+{"t":"2026-05-27T23:31:52.304Z","id":46679,"verdict":"hot_candidate","n":4,"see":"This is a wallpaper tile with a repeating pattern of monkeys and bottles."}
+{"t":"2026-05-27T23:31:54.441Z","id":46684,"verdict":"hot_candidate","n":4,"see":"This is a wallpaper tile with a repeating giraffe and palm tree motif."}
+{"t":"2026-05-27T23:31:56.629Z","id":46686,"verdict":"hot_candidate","n":4,"see":"A repeating wallpaper tile with a parrot and palm tree motif."}
+{"t":"2026-05-27T23:31:58.874Z","id":46687,"verdict":"hot_candidate","n":4,"see":"A repeating pattern of parrots and palm trees."}
+{"t":"2026-05-27T23:32:01.316Z","id":46688,"verdict":"hot_candidate","n":4,"see":"A wallpaper tile with a repeating pattern of parrots and palm trees."}
+{"t":"2026-05-27T23:32:03.541Z","id":46709,"verdict":"hot_candidate","n":4,"see":"The tile shows a repeating pattern of parrots."}
+{"t":"2026-05-27T23:32:05.866Z","id":46749,"verdict":"hot_candidate","n":7,"see":"A wallpaper tile with a repeating pattern of elephants and glassware."}
+{"t":"2026-05-27T23:32:08.006Z","id":46750,"verdict":"hot_candidate","n":6,"see":"A repeating pattern of elephants with glasses and tables."}
+{"t":"2026-05-27T23:32:10.263Z","id":46756,"verdict":"hot_candidate","n":4,"see":"A repeating pattern of monkeys with bottles."}
+{"t":"2026-05-27T23:32:15.709Z","id":46757,"verdict":"hot_candidate","n":4,"see":"A repeating pattern of monkeys with wine bottles."}
+{"t":"2026-05-27T23:32:18.051Z","id":46762,"verdict":"hot_candidate","n":15,"see":"A wallpaper tile with a repeating elephant motif."}
+{"t":"2026-05-27T23:32:20.525Z","id":46763,"verdict":"hot_candidate","n":15,"see":"A wallpaper tile with a repeating elephant motif."}
+{"t":"2026-05-27T23:32:22.748Z","id":46841,"verdict":"hot_candidate","n":4,"see":"This is a wallpaper tile with a repeating giraffe and tree motif."}
+{"t":"2026-05-27T23:32:24.886Z","id":46842,"verdict":"hot_candidate","n":4,"see":"A repeating pattern of silhouetted giraffes and trees."}
+{"t":"2026-05-27T23:32:27.212Z","id":46843,"verdict":"hot_candidate","n":4,"see":"A repeating wallpaper pattern of giraffes and trees."}
+{"t":"2026-05-27T23:32:29.600Z","id":46853,"verdict":"hot_candidate","n":7,"see":"A wallpaper tile with a repeating pattern of palm trees and animals."}
+{"t":"2026-05-27T23:32:31.842Z","id":46854,"verdict":"hot_candidate","n":7,"see":"A repeating pattern of palm trees and jungle foliage."}
+{"t":"2026-05-27T23:32:34.169Z","id":46863,"verdict":"hot_candidate","n":10,"see":"A wallpaper tile with a repeating pattern of palm trees and animals."}
+{"t":"2026-05-27T23:32:36.375Z","id":46890,"verdict":"hot_candidate","n":4,"see":"A wallpaper tile with a repeating pattern of lemurs and palm trees."}
+{"t":"2026-05-27T23:32:38.570Z","id":46920,"verdict":"hot_candidate","n":4,"see":"This is a wallpaper repeat with animal motifs."}
+{"t":"2026-05-27T23:32:40.710Z","id":46921,"verdict":"hot_candidate","n":6,"see":"The tile shows a repeating pattern of animals and figures."}
+{"t":"2026-05-27T23:32:43.028Z","id":46971,"verdict":"hot_candidate","n":12,"see":"This is a wallpaper repeat of giraffe motifs."}
+{"t":"2026-05-27T23:32:45.187Z","id":46972,"verdict":"hot_candidate","n":15,"see":"This is a wallpaper repeat of giraffe motifs."}
+{"t":"2026-05-27T23:32:47.579Z","id":46973,"verdict":"hot_candidate","n":12,"see":"A repeating pattern of giraffe motifs."}
+{"t":"2026-05-27T23:32:49.836Z","id":46975,"verdict":"hot_candidate","n":6,"see":"A repeating pattern of elephants."}
+{"t":"2026-05-27T23:32:52.021Z","id":46976,"verdict":"hot_candidate","n":6,"see":"This is a wallpaper repeat of elephant motifs."}
+{"t":"2026-05-27T23:32:54.147Z","id":46977,"verdict":"hot_candidate","n":6,"see":"A repeating pattern of elephant illustrations."}
+{"t":"2026-05-27T23:32:56.377Z","id":46978,"verdict":"hot_candidate","n":12,"see":"A wallpaper tile with a repeating giraffe motif."}
+{"t":"2026-05-27T23:32:58.709Z","id":46982,"verdict":"not","reason":"centered-hero (n=4)","see":"A centered tree and giraffe motif."}
+{"t":"2026-05-27T23:33:01.521Z","id":47044,"verdict":"hot_candidate","n":4,"see":"This is a wallpaper tile with a repeating giraffe motif."}
+{"t":"2026-05-27T23:33:03.762Z","id":47045,"verdict":"hot_candidate","n":4,"see":"This is a wallpaper repeat of giraffes and trees."}
+{"t":"2026-05-27T23:33:05.846Z","id":47046,"verdict":"hot_candidate","n":4,"see":"A repeating pattern of giraffes and trees."}
+{"t":"2026-05-27T23:33:08.421Z","id":47143,"verdict":"hot_candidate","n":15,"see":"A wallpaper tile with a repeating pattern of bears and bottles on shelves."}
+{"t":"2026-05-27T23:33:10.557Z","id":47144,"verdict":"hot_candidate","n":4,"see":"A wallpaper tile with a repeating parrot motif."}
+{"t":"2026-05-27T23:33:12.786Z","id":47145,"verdict":"hot_candidate","n":4,"see":"A repeating pattern of parrots and palm trees."}
+{"t":"2026-05-27T23:33:14.877Z","id":47152,"verdict":"hot_candidate","n":5,"see":"A wallpaper tile with a repeating pattern of parrots and palm trees."}
+{"t":"2026-05-27T23:33:17.155Z","id":47153,"verdict":"hot_candidate","n":5,"see":"This is a wallpaper tile with a repeating pattern of parrots and palm trees."}
+{"t":"2026-05-27T23:33:19.253Z","id":47154,"verdict":"hot_candidate","n":5,"see":"A repeating pattern of parrots and palm trees."}
+{"t":"2026-05-27T23:33:21.639Z","id":47157,"verdict":"hot_candidate","n":4,"see":"This is a wallpaper tile with a repeating pattern of a stylized figure with a bell."}
+{"t":"2026-05-27T23:33:23.706Z","id":47196,"verdict":"hot_candidate","n":7,"see":"A repeating pattern of frogs."}
+{"t":"2026-05-27T23:33:25.746Z","id":47271,"verdict":"hot_candidate","n":9,"see":"A repeating pattern of vases and figures."}
+{"t":"2026-05-27T23:33:27.817Z","id":47287,"verdict":"hot_candidate","n":7,"see":"A wallpaper tile with a repeating giraffe motif."}
+{"t":"2026-05-27T23:33:29.944Z","id":47303,"verdict":"hot_candidate","n":4,"see":"A wallpaper tile with a repeating sloth motif."}
+{"t":"2026-05-27T23:33:32.196Z","id":47304,"verdict":"hot_candidate","n":4,"see":"A wallpaper tile with a repeating pattern of sloths on branches."}
+{"t":"2026-05-27T23:33:34.345Z","id":47305,"verdict":"hot_candidate","n":4,"see":"A wallpaper tile with a repeating sloth motif."}
diff --git a/data/rescreen-voids-ledger.jsonl b/data/rescreen-voids-ledger.jsonl
index d59a9c3..e0e713e 100644
--- a/data/rescreen-voids-ledger.jsonl
+++ b/data/rescreen-voids-ledger.jsonl
@@ -496,3 +496,116 @@
{"t":"2026-05-27T23:29:10.520Z","id":18907,"verdict":"kept","n":10}
{"t":"2026-05-27T23:29:12.772Z","id":18908,"verdict":"kept","n":10}
{"t":"2026-05-27T23:29:15.036Z","id":18909,"verdict":"kept","n":10}
+{"t":"2026-05-27T23:29:17.149Z","id":18917,"verdict":"kept","n":4}
+{"t":"2026-05-27T23:29:19.436Z","id":18918,"verdict":"kept","n":3}
+{"t":"2026-05-27T23:29:21.756Z","id":18919,"verdict":"kept","n":4}
+{"t":"2026-05-27T23:29:23.871Z","id":18940,"verdict":"kept","n":4}
+{"t":"2026-05-27T23:29:26.094Z","id":18941,"verdict":"kept","n":4}
+{"t":"2026-05-27T23:29:28.232Z","id":18942,"verdict":"kept","n":4}
+{"t":"2026-05-27T23:29:30.415Z","id":18943,"verdict":"kept","n":4}
+{"t":"2026-05-27T23:29:32.839Z","id":18959,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:29:35.123Z","id":18960,"verdict":"kept","n":7}
+{"t":"2026-05-27T23:29:37.391Z","id":18972,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:29:39.624Z","id":18973,"verdict":"kept","n":7}
+{"t":"2026-05-27T23:29:41.873Z","id":18974,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:29:44.145Z","id":18989,"verdict":"kept","n":4}
+{"t":"2026-05-27T23:29:46.374Z","id":18990,"verdict":"kept","n":4}
+{"t":"2026-05-27T23:29:48.649Z","id":18991,"verdict":"kept","n":4}
+{"t":"2026-05-27T23:29:50.866Z","id":18992,"verdict":"kept","n":4}
+{"t":"2026-05-27T23:29:52.977Z","id":19031,"verdict":"kept","n":25}
+{"t":"2026-05-27T23:29:55.211Z","id":19032,"verdict":"kept","n":20}
+{"t":"2026-05-27T23:29:57.227Z","id":19033,"verdict":"kept","n":20}
+{"t":"2026-05-27T23:29:59.561Z","id":19062,"verdict":"kept","n":9}
+{"t":"2026-05-27T23:30:02.059Z","id":19063,"verdict":"kept","n":9}
+{"t":"2026-05-27T23:30:04.448Z","id":19064,"verdict":"kept","n":9}
+{"t":"2026-05-27T23:30:06.707Z","id":19065,"verdict":"kept","n":10}
+{"t":"2026-05-27T23:30:09.019Z","id":19108,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:30:11.192Z","id":19112,"verdict":"kept","n":7}
+{"t":"2026-05-27T23:30:13.385Z","id":19113,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:30:15.805Z","id":19114,"verdict":"kept","n":7}
+{"t":"2026-05-27T23:30:18.048Z","id":19173,"verdict":"kept","n":10}
+{"t":"2026-05-27T23:30:20.587Z","id":19213,"verdict":"kept","n":7}
+{"t":"2026-05-27T23:30:23.103Z","id":19215,"verdict":"kept","n":4}
+{"t":"2026-05-27T23:30:25.507Z","id":19216,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:30:27.900Z","id":19217,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:30:30.143Z","id":19296,"verdict":"kept","n":7}
+{"t":"2026-05-27T23:30:32.409Z","id":19297,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:30:34.671Z","id":19298,"verdict":"kept","n":7}
+{"t":"2026-05-27T23:30:37.379Z","id":19300,"verdict":"kept","n":2}
+{"t":"2026-05-27T23:30:39.692Z","id":19301,"verdict":"kept","n":4}
+{"t":"2026-05-27T23:30:41.863Z","id":19302,"verdict":"kept","n":4}
+{"t":"2026-05-27T23:30:44.202Z","id":19307,"verdict":"kept","n":20}
+{"t":"2026-05-27T23:30:46.382Z","id":19308,"verdict":"kept","n":20}
+{"t":"2026-05-27T23:30:48.777Z","id":19309,"verdict":"kept","n":20}
+{"t":"2026-05-27T23:30:51.515Z","id":19310,"verdict":"kept","n":30}
+{"t":"2026-05-27T23:30:53.837Z","id":19328,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:30:56.063Z","id":19329,"verdict":"kept","n":7}
+{"t":"2026-05-27T23:30:58.374Z","id":19330,"verdict":"kept","n":7}
+{"t":"2026-05-27T23:31:00.704Z","id":19331,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:31:02.861Z","id":19332,"verdict":"kept","n":7}
+{"t":"2026-05-27T23:31:05.056Z","id":19333,"verdict":"kept","n":7}
+{"t":"2026-05-27T23:31:07.272Z","id":19334,"verdict":"kept","n":7}
+{"t":"2026-05-27T23:31:09.551Z","id":19346,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:31:11.875Z","id":19347,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:31:13.882Z","id":19364,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:31:16.023Z","id":19365,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:31:18.276Z","id":19366,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:31:20.490Z","id":19371,"verdict":"kept","n":5}
+{"t":"2026-05-27T23:31:22.696Z","id":19372,"verdict":"kept","n":5}
+{"t":"2026-05-27T23:31:24.837Z","id":19373,"verdict":"kept","n":5}
+{"t":"2026-05-27T23:31:27.063Z","id":19389,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:31:29.369Z","id":19390,"verdict":"kept","n":7}
+{"t":"2026-05-27T23:31:31.587Z","id":19391,"verdict":"kept","n":7}
+{"t":"2026-05-27T23:31:33.802Z","id":19416,"verdict":"kept","n":14}
+{"t":"2026-05-27T23:31:36.385Z","id":19417,"verdict":"kept","n":15}
+{"t":"2026-05-27T23:31:38.946Z","id":19418,"verdict":"kept","n":15}
+{"t":"2026-05-27T23:31:41.247Z","id":19419,"verdict":"kept","n":15}
+{"t":"2026-05-27T23:31:43.650Z","id":19508,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:31:45.935Z","id":19509,"verdict":"kept","n":7}
+{"t":"2026-05-27T23:31:48.285Z","id":19510,"verdict":"kept","n":10}
+{"t":"2026-05-27T23:31:50.561Z","id":19511,"verdict":"kept","n":8}
+{"t":"2026-05-27T23:31:52.790Z","id":19654,"verdict":"kept","n":7}
+{"t":"2026-05-27T23:31:55.004Z","id":19655,"verdict":"kept","n":7}
+{"t":"2026-05-27T23:31:57.234Z","id":19656,"verdict":"kept","n":7}
+{"t":"2026-05-27T23:31:59.405Z","id":19657,"verdict":"kept","n":7}
+{"t":"2026-05-27T23:32:01.924Z","id":19766,"verdict":"kept","n":10}
+{"t":"2026-05-27T23:32:04.214Z","id":19767,"verdict":"kept","n":9}
+{"t":"2026-05-27T23:32:06.603Z","id":19838,"verdict":"kept","n":10}
+{"t":"2026-05-27T23:32:08.905Z","id":19870,"verdict":"kept","n":5}
+{"t":"2026-05-27T23:32:11.422Z","id":19873,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:32:13.566Z","id":19875,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:32:16.028Z","id":19877,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:32:18.391Z","id":19888,"verdict":"kept","n":25}
+{"t":"2026-05-27T23:32:20.635Z","id":19889,"verdict":"kept","n":30}
+{"t":"2026-05-27T23:32:22.733Z","id":19890,"verdict":"kept","n":20}
+{"t":"2026-05-27T23:32:25.130Z","id":19904,"verdict":"kept","n":5}
+{"t":"2026-05-27T23:32:27.454Z","id":19905,"verdict":"kept","n":5}
+{"t":"2026-05-27T23:32:29.718Z","id":19906,"verdict":"kept","n":5}
+{"t":"2026-05-27T23:32:32.112Z","id":19916,"verdict":"kept","n":7}
+{"t":"2026-05-27T23:32:34.572Z","id":19917,"verdict":"kept","n":7}
+{"t":"2026-05-27T23:32:36.870Z","id":19918,"verdict":"kept","n":7}
+{"t":"2026-05-27T23:32:39.199Z","id":19919,"verdict":"kept","n":7}
+{"t":"2026-05-27T23:32:41.517Z","id":19921,"verdict":"kept","n":8}
+{"t":"2026-05-27T23:32:43.720Z","id":19922,"verdict":"kept","n":8}
+{"t":"2026-05-27T23:32:46.063Z","id":19924,"verdict":"kept","n":8}
+{"t":"2026-05-27T23:32:48.243Z","id":20049,"verdict":"kept","n":5}
+{"t":"2026-05-27T23:32:50.523Z","id":20051,"verdict":"kept","n":5}
+{"t":"2026-05-27T23:32:52.709Z","id":20088,"verdict":"kept","n":7}
+{"t":"2026-05-27T23:32:55.062Z","id":20102,"verdict":"kept","n":4}
+{"t":"2026-05-27T23:32:57.159Z","id":20103,"verdict":"kept","n":4}
+{"t":"2026-05-27T23:32:59.463Z","id":20104,"verdict":"kept","n":4}
+{"t":"2026-05-27T23:33:01.762Z","id":20125,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:33:04.280Z","id":20127,"verdict":"kept","n":8}
+{"t":"2026-05-27T23:33:06.910Z","id":20130,"verdict":"kept","n":10}
+{"t":"2026-05-27T23:33:09.686Z","id":20131,"verdict":"kept","n":10}
+{"t":"2026-05-27T23:33:12.044Z","id":20226,"verdict":"kept","n":4}
+{"t":"2026-05-27T23:33:14.243Z","id":20227,"verdict":"kept","n":4}
+{"t":"2026-05-27T23:33:16.527Z","id":20228,"verdict":"kept","n":4}
+{"t":"2026-05-27T23:33:18.950Z","id":20229,"verdict":"kept","n":4}
+{"t":"2026-05-27T23:33:21.245Z","id":20231,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:33:23.447Z","id":20235,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:33:25.696Z","id":20236,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:33:27.916Z","id":20237,"verdict":"kept","n":6}
+{"t":"2026-05-27T23:33:30.161Z","id":20288,"verdict":"kept","n":4}
+{"t":"2026-05-27T23:33:32.336Z","id":20289,"verdict":"kept","n":4}
+{"t":"2026-05-27T23:33:34.556Z","id":20290,"verdict":"kept","n":4}
diff --git a/public/admin/drunk-curator.html b/public/admin/drunk-curator.html
index a57b3f7..3636684 100644
--- a/public/admin/drunk-curator.html
+++ b/public/admin/drunk-curator.html
@@ -259,7 +259,7 @@ function drawMboxes(){
if(!layer){ layer=document.createElement('div'); layer.id='mboxes'; layer.className='mboxes'; si.appendChild(layer); }
const manual = curBoxes.filter(b=>!b.auto);
layer.innerHTML = manual.map(b=>`<div class="mbox" style="left:${b.x*100}%;top:${b.y*100}%;width:${b.w*100}%;height:${b.h*100}%" title="click to remove"><b>${(b.label||'misaligned').replace(/</g,'')}</b></div>`).join('')
- + `<div class="mhint">drag to mark misaligned · click a box to remove</div>`;
+ + `<div class="mhint">click = enlarge · drag = mark misaligned · click a box to remove</div>`;
[...layer.querySelectorAll('.mbox')].forEach((el,k)=>el.addEventListener('click',ev=>{
ev.stopPropagation(); const target=manual[k]; curBoxes=curBoxes.filter(b=>b!==target); saveBoxes(); drawMboxes();
}));
@@ -282,11 +282,43 @@ function startDraw(e){
const L=Math.max(0,Math.min(x0,x)),T=Math.max(0,Math.min(y0,y));
const W=Math.min(1-L,Math.abs(x-x0)),H=Math.min(1-T,Math.abs(y-y0));
ghost.remove();
- if(W>0.02&&H>0.02){ curBoxes.push({x:+L.toFixed(4),y:+T.toFixed(4),w:+W.toFixed(4),h:+H.toFixed(4),label:'misaligned',auto:false}); saveBoxes(); }
- drawMboxes();
+ if(W>0.02&&H>0.02){ curBoxes.push({x:+L.toFixed(4),y:+T.toFixed(4),w:+W.toFixed(4),h:+H.toFixed(4),label:'misaligned',auto:false}); saveBoxes(); drawMboxes(); }
+ else { openZoom(); } // negligible drag = a plain click → open the larger view
};
document.addEventListener('mousemove',mv); document.addEventListener('mouseup',up);
}
+
+// === Click-to-enlarge lightbox ======================================
+// Plain click on the tile opens a big view of the pattern; toggle 1×/2×/3×
+// repeat to inspect seams/misalignment at scale. Click backdrop or Esc to close.
+let zoomRepeat = 2;
+function ensureZoom(){
+ let z=document.getElementById('zoombox'); if(z) return z;
+ z=document.createElement('div'); z.id='zoombox';
+ z.style.cssText='position:fixed;inset:0;z-index:200;background:rgba(8,9,11,.92);display:none;flex-direction:column;align-items:center;justify-content:center;gap:12px;';
+ z.innerHTML=`<div id="zoomctl" style="display:flex;gap:8px;align-items:center;color:#cfcfcf;font:600 13px sans-serif">
+ repeat: <button class="rb" data-r="1">1×1</button><button class="rb" data-r="2">2×2</button><button class="rb" data-r="3">3×3</button>
+ <span style="margin-left:14px;color:#8a929a">click outside / Esc to close</span></div>
+ <div id="zoomfield" style="background:#fff;box-shadow:0 8px 40px rgba(0,0,0,.6);background-repeat:repeat;"></div>`;
+ document.body.appendChild(z);
+ z.addEventListener('mousedown',e=>{ if(e.target===z) closeZoom(); });
+ z.querySelectorAll('#zoomctl .rb').forEach(b=>b.addEventListener('click',e=>{ e.stopPropagation(); zoomRepeat=+b.dataset.r; paintZoom(); }));
+ return z;
+}
+function paintZoom(){
+ const d=curDesign(); if(!d) return;
+ const z=document.getElementById('zoombox'); if(!z) return;
+ const f=z.querySelector('#zoomfield');
+ const side=Math.min(window.innerHeight*0.82, window.innerWidth*0.82);
+ const src=`/designs/img/by-id/${d.id}`;
+ f.style.width=side+'px'; f.style.height=side+'px';
+ f.style.backgroundImage=`url('${src}')`;
+ f.style.backgroundSize=(100/zoomRepeat).toFixed(3)+'% '+(100/zoomRepeat).toFixed(3)+'%';
+ z.querySelectorAll('#zoomctl .rb').forEach(b=>b.style.outline=(+b.dataset.r===zoomRepeat)?'2px solid #ff4d6d':'none');
+}
+function openZoom(){ const z=ensureZoom(); z.style.display='flex'; paintZoom(); }
+function closeZoom(){ const z=document.getElementById('zoombox'); if(z) z.style.display='none'; }
+addEventListener('keydown',e=>{ if(e.key==='Escape') closeZoom(); });
new MutationObserver(()=>{
const si=document.getElementById('scaleimg'); if(!si || si.dataset.mwired) return;
si.dataset.mwired='1';
← def6e52 room wall: show repeat count + black pinstripe vertical line
·
back to Wallco Ai
·
room: user-adjustable wall-size slider (default 13.5ft) + fu 45b818c →