← back to Wild Wallcoverings
scale-lock per design + 3 extra nano variations (6 versions/design)
31adc5ff89dea1145b868bcd69b601373f91ceb0 · 2026-07-22 12:39:47 -0700 · Steve Abrams
Files touched
M data/briefs.jsonM output/archive-v1/astral-tiger-v1-nano.pngM output/archive-v1/galaxy-bots-v1-nano.pngM output/archive-v1/herbarium-press-v1-nano.pngM output/archive-v1/midnight-frequency-v1-nano.pngM output/archive-v1/robot-parade-v1-nano.pngM scripts/batch_gen.py
Diff
commit 31adc5ff89dea1145b868bcd69b601373f91ceb0
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Wed Jul 22 12:39:47 2026 -0700
scale-lock per design + 3 extra nano variations (6 versions/design)
---
data/briefs.json | 75 +++++++++++++++--------
output/archive-v1/astral-tiger-v1-nano.png | Bin 1988402 -> 1824802 bytes
output/archive-v1/galaxy-bots-v1-nano.png | Bin 2101873 -> 1882506 bytes
output/archive-v1/herbarium-press-v1-nano.png | Bin 1944088 -> 2128198 bytes
output/archive-v1/midnight-frequency-v1-nano.png | Bin 1541627 -> 1588693 bytes
output/archive-v1/robot-parade-v1-nano.png | Bin 1411198 -> 1579412 bytes
scripts/batch_gen.py | 58 +++++++++++-------
7 files changed, 85 insertions(+), 48 deletions(-)
diff --git a/data/briefs.json b/data/briefs.json
index 8565170..dbf84a5 100644
--- a/data/briefs.json
+++ b/data/briefs.json
@@ -11,7 +11,8 @@
"#7d7d7d",
"#d6d6d6",
"#ababab"
- ]
+ ],
+ "scale": "large-scale motif: tiger about 14 inches tall within the 24 inch repeat, stars 2-3 inches"
},
{
"id": "midnight-frequency",
@@ -24,7 +25,8 @@
"#d4d4d6",
"#616065",
"#828286"
- ]
+ ],
+ "scale": "medium-scale motifs about 5 inches each, evenly scattered"
},
{
"id": "robot-parade",
@@ -36,7 +38,8 @@
"#ffffff",
"#b3b3b3",
"#e3e3e3"
- ]
+ ],
+ "scale": "large-scale motifs: robots 10-12 inches tall, bold and dominant"
},
{
"id": "galaxy-bots",
@@ -49,7 +52,8 @@
"#dbdbdb",
"#bababa",
"#797979"
- ]
+ ],
+ "scale": "medium-scale motifs 4-6 inches, generously scattered scene"
},
{
"id": "herbarium-press",
@@ -63,7 +67,8 @@
"#c2ac65",
"#f3eabc",
"#e5d581"
- ]
+ ],
+ "scale": "medium-scale pressed flowers 5-8 inches, airy arrangement"
},
{
"id": "desert-choir",
@@ -74,7 +79,8 @@
"palette": [
"#edb8a2",
"#f7eee7"
- ]
+ ],
+ "scale": "oversized large-scale cacti 16-20 inches tall spanning most of the repeat"
},
{
"id": "ray-shadow",
@@ -85,7 +91,8 @@
"palette": [
"#e8cec2",
"#f8ede8"
- ]
+ ],
+ "scale": "small-scale dense allover spots 1-2 inches, tight organic texture"
},
{
"id": "moonrise-ikat",
@@ -96,7 +103,8 @@
"palette": [
"#ece5de",
"#fcfcfc"
- ]
+ ],
+ "scale": "medium-scale moons 3-4 inches in rhythmic vertical rows"
},
{
"id": "night-jungle",
@@ -110,7 +118,8 @@
"#c4c4c4",
"#797878",
"#abaaaa"
- ]
+ ],
+ "scale": "large-scale dense jungle motifs 8-12 inches, immersive full coverage"
},
{
"id": "golden-pineapple",
@@ -124,7 +133,8 @@
"#c0c0c0",
"#999999",
"#6c6c6c"
- ]
+ ],
+ "scale": "medium-scale pineapples about 5 inches in a roomy offset grid"
},
{
"id": "monstera-bungalow",
@@ -137,7 +147,8 @@
"#fdfdef",
"#d0e175",
"#0a9059"
- ]
+ ],
+ "scale": "large-scale leaves 10-14 inches, statement scale"
},
{
"id": "painted-feathers",
@@ -149,7 +160,8 @@
"#fefefe",
"#d1b684",
"#e2d4b5"
- ]
+ ],
+ "scale": "medium-scale feathers 6-8 inches in flowing vertical bands"
},
{
"id": "tidepool-bloom",
@@ -160,7 +172,8 @@
"palette": [
"#dae5e9",
"#f8fbfc"
- ]
+ ],
+ "scale": "small-scale dense texture, clusters 2-3 inches"
},
{
"id": "mod-orbit",
@@ -172,7 +185,8 @@
"#ffffff",
"#57bee7",
"#94d6ef"
- ]
+ ],
+ "scale": "small-scale tight geometric repeat, elements about 2 inches"
},
{
"id": "lost-continent",
@@ -184,7 +198,8 @@
"#ffffff",
"#bae3dd",
"#8897a3"
- ]
+ ],
+ "scale": "medium-scale dinosaurs 5-7 inches, playful spacing"
},
{
"id": "plumbline",
@@ -196,7 +211,8 @@
"#ffffff",
"#8ecbd6",
"#cbe7eb"
- ]
+ ],
+ "scale": "micro-scale geometric, elements under 1 inch, fine dense grid"
},
{
"id": "lagoon-legends",
@@ -208,7 +224,8 @@
"#ffffff",
"#52eebf",
"#93f4d7"
- ]
+ ],
+ "scale": "medium-scale creatures 5-8 inches gliding across the repeat"
},
{
"id": "fungi-skyline",
@@ -220,7 +237,8 @@
"#e4f6fe",
"#92acab",
"#c9dddf"
- ]
+ ],
+ "scale": "medium-to-large mushrooms of varying heights 4-10 inches, skyline rhythm"
},
{
"id": "regatta-day",
@@ -234,7 +252,8 @@
"#4d7e7b",
"#91afad",
"#739996"
- ]
+ ],
+ "scale": "medium-scale boats 5-6 inches, calm even scatter"
},
{
"id": "arcade-memory",
@@ -247,7 +266,8 @@
"#7c8975",
"#aab2a5",
"#ced2cb"
- ]
+ ],
+ "scale": "medium-scale devices 4-5 inches, even scatter"
},
{
"id": "daily-dose",
@@ -260,7 +280,8 @@
"#7d3055",
"#185f4f",
"#655a43"
- ]
+ ],
+ "scale": "small-scale capsules about 2 inches in diagonal rhythm"
},
{
"id": "circle-fields",
@@ -271,7 +292,8 @@
"palette": [
"#e1e1e1",
"#fcfcfc"
- ]
+ ],
+ "scale": "medium-scale concentric circles 3-6 inches overlapping"
},
{
"id": "campfire-toile",
@@ -285,7 +307,8 @@
"#e2e2e2",
"#adadad",
"#6d6d6d"
- ]
+ ],
+ "scale": "classic toile scale: vignette scenes 6-8 inches"
},
{
"id": "dream-clouds",
@@ -298,7 +321,8 @@
"#b6b7b9",
"#f4f4f4",
"#818892"
- ]
+ ],
+ "scale": "medium-scale clouds 4-6 inches, calm even spacing"
},
{
"id": "bodega-cats",
@@ -311,6 +335,7 @@
"#acb3bd",
"#58646b",
"#7d888f"
- ]
+ ],
+ "scale": "small-to-medium motifs 3-4 inches, city-scatter layout"
}
]
\ No newline at end of file
diff --git a/output/archive-v1/astral-tiger-v1-nano.png b/output/archive-v1/astral-tiger-v1-nano.png
index c5794a4..0b6765c 100644
Binary files a/output/archive-v1/astral-tiger-v1-nano.png and b/output/archive-v1/astral-tiger-v1-nano.png differ
diff --git a/output/archive-v1/galaxy-bots-v1-nano.png b/output/archive-v1/galaxy-bots-v1-nano.png
index 4b41007..b276720 100644
Binary files a/output/archive-v1/galaxy-bots-v1-nano.png and b/output/archive-v1/galaxy-bots-v1-nano.png differ
diff --git a/output/archive-v1/herbarium-press-v1-nano.png b/output/archive-v1/herbarium-press-v1-nano.png
index 5e860b0..b93c00f 100644
Binary files a/output/archive-v1/herbarium-press-v1-nano.png and b/output/archive-v1/herbarium-press-v1-nano.png differ
diff --git a/output/archive-v1/midnight-frequency-v1-nano.png b/output/archive-v1/midnight-frequency-v1-nano.png
index 2d4f714..b2e9bbb 100644
Binary files a/output/archive-v1/midnight-frequency-v1-nano.png and b/output/archive-v1/midnight-frequency-v1-nano.png differ
diff --git a/output/archive-v1/robot-parade-v1-nano.png b/output/archive-v1/robot-parade-v1-nano.png
index 99c50ea..733d892 100644
Binary files a/output/archive-v1/robot-parade-v1-nano.png and b/output/archive-v1/robot-parade-v1-nano.png differ
diff --git a/scripts/batch_gen.py b/scripts/batch_gen.py
index e2e202b..6334edf 100644
--- a/scripts/batch_gen.py
+++ b/scripts/batch_gen.py
@@ -33,21 +33,32 @@ def hexname(h):
shade = "pale " if l > 190 else "deep " if l < 90 else ""
return shade + hue
-def full_prompt(brief, engine):
+def full_prompt(brief, engine, variation=""):
+ p = brief["prompt"]
pal = brief.get("palette")
- if not pal:
- return brief["prompt"]
- if engine == "nano":
- clause = ("; palette strictly limited to these exact colors, matching a "
+ if pal:
+ if engine == "nano":
+ p += ("; palette strictly limited to these exact colors, matching a "
"reference colorway: " + ", ".join(pal))
- else:
- names = []
- for h in pal:
- n = hexname(h)
- if n not in names:
- names.append(n)
- clause = "; limited color palette of only: " + ", ".join(names)
- return brief["prompt"] + clause
+ else:
+ names = []
+ for h in pal:
+ n = hexname(h)
+ if n not in names:
+ names.append(n)
+ p += "; limited color palette of only: " + ", ".join(names)
+ if brief.get("scale"):
+ p += "; motif scale: " + brief["scale"]
+ if variation:
+ p += "; " + variation
+ return p
+
+NANO_VARIATIONS = {
+ "v1": "",
+ "v4": "alternate take: different individual characters and poses, same style and layout logic",
+ "v5": "alternate take: different composition arrangement, same motifs family and style",
+ "v6": "alternate take: refined minimal interpretation, slightly sparser layout, same style",
+}
def load_designs():
try:
@@ -82,16 +93,17 @@ def main():
if mode in ("nano", "all"):
for b in briefs:
- fname = f"{b['id']}-v1-nano.png"
- path = os.path.join(OUT, fname)
- if os.path.exists(path):
- save_variant(b, "nano-banana", fname); continue
- print(f"[nano] {b['id']}")
- if run([sys.executable, os.path.join(SCRIPTS, "nano_gen.py"),
- full_prompt(b, "nano"), path], 180):
- save_variant(b, "nano-banana", fname)
- nano_done += 1
- time.sleep(2)
+ for ver, variation in NANO_VARIATIONS.items():
+ fname = f"{b['id']}-{ver}-nano.png"
+ path = os.path.join(OUT, fname)
+ if os.path.exists(path):
+ save_variant(b, "nano-banana", fname); continue
+ print(f"[nano {ver}] {b['id']}")
+ if run([sys.executable, os.path.join(SCRIPTS, "nano_gen.py"),
+ full_prompt(b, "nano", variation), path], 180):
+ save_variant(b, "nano-banana", fname)
+ nano_done += 1
+ time.sleep(2)
print(f"nano complete: {nano_done} new images, est ${nano_done * 0.039:.2f}")
if mode in ("sdxl", "all"):
← c91e30a palette-lock: extract colorway palettes from originals, wire
·
back to Wild Wallcoverings
·
auto-save: 2026-07-22T12:44:11 (2 files) — data/designs.json d55803e →