← back to Wild Wallcoverings
reference-image nano mode + strict palettes + pixel palette-snap + hard no-partB line
d4a7eea1f8ccca4a81d3905c26cb823823308cdb · 2026-07-22 12:56:27 -0700 · Steve Abrams
Files touched
M data/briefs.jsonM data/designs.jsonM output/archive-v1/arcade-memory-v1-nano.pngA output/archive-v1/arcade-memory-v4-nano.pngA output/archive-v1/arcade-memory-v6-nano.pngM output/archive-v1/astral-tiger-v1-nano.pngM output/archive-v1/astral-tiger-v2-sdxl.pngM output/archive-v1/astral-tiger-v3-sdxl.pngR100 output/designs/astral-tiger-v4-nano.png output/archive-v1/astral-tiger-v4-nano.pngR100 output/designs/astral-tiger-v5-nano.png output/archive-v1/astral-tiger-v5-nano.pngR100 output/designs/astral-tiger-v6-nano.png output/archive-v1/astral-tiger-v6-nano.pngM output/archive-v1/bodega-cats-v1-nano.pngA output/archive-v1/bodega-cats-v4-nano.pngA output/archive-v1/bodega-cats-v5-nano.pngA output/archive-v1/bodega-cats-v6-nano.pngM output/archive-v1/campfire-toile-v1-nano.pngA output/archive-v1/campfire-toile-v4-nano.pngA output/archive-v1/campfire-toile-v5-nano.pngA output/archive-v1/campfire-toile-v6-nano.pngM output/archive-v1/circle-fields-v1-nano.pngA output/archive-v1/circle-fields-v5-nano.pngA output/archive-v1/circle-fields-v6-nano.pngM output/archive-v1/daily-dose-v1-nano.pngA output/archive-v1/daily-dose-v4-nano.pngA output/archive-v1/daily-dose-v5-nano.pngA output/archive-v1/daily-dose-v6-nano.pngM output/archive-v1/desert-choir-v1-nano.pngM output/archive-v1/desert-choir-v2-sdxl.pngM output/archive-v1/desert-choir-v3-sdxl.pngR100 output/designs/desert-choir-v4-nano.png output/archive-v1/desert-choir-v4-nano.pngR100 output/designs/desert-choir-v5-nano.png output/archive-v1/desert-choir-v5-nano.pngR100 output/designs/desert-choir-v6-nano.png output/archive-v1/desert-choir-v6-nano.pngM output/archive-v1/dream-clouds-v1-nano.pngA output/archive-v1/dream-clouds-v4-nano.pngA output/archive-v1/dream-clouds-v5-nano.pngA output/archive-v1/dream-clouds-v6-nano.pngM output/archive-v1/fungi-skyline-v1-nano.pngA output/archive-v1/fungi-skyline-v4-nano.pngA output/archive-v1/fungi-skyline-v5-nano.pngA output/archive-v1/fungi-skyline-v6-nano.pngM output/archive-v1/galaxy-bots-v1-nano.pngM output/archive-v1/galaxy-bots-v2-sdxl.pngM output/archive-v1/galaxy-bots-v3-sdxl.pngR100 output/designs/galaxy-bots-v4-nano.png output/archive-v1/galaxy-bots-v4-nano.pngR100 output/designs/galaxy-bots-v5-nano.png output/archive-v1/galaxy-bots-v5-nano.pngR100 output/designs/galaxy-bots-v6-nano.png output/archive-v1/galaxy-bots-v6-nano.pngM output/archive-v1/golden-pineapple-v1-nano.pngA output/archive-v1/golden-pineapple-v4-nano.pngA output/archive-v1/golden-pineapple-v5-nano.pngA output/archive-v1/golden-pineapple-v6-nano.pngM output/archive-v1/herbarium-press-v1-nano.pngM output/archive-v1/herbarium-press-v2-sdxl.pngM output/archive-v1/herbarium-press-v3-sdxl.pngR100 output/designs/herbarium-press-v4-nano.png output/archive-v1/herbarium-press-v4-nano.pngR100 output/designs/herbarium-press-v5-nano.png output/archive-v1/herbarium-press-v5-nano.pngR100 output/designs/herbarium-press-v6-nano.png output/archive-v1/herbarium-press-v6-nano.pngM output/archive-v1/lagoon-legends-v1-nano.pngA output/archive-v1/lagoon-legends-v4-nano.pngA output/archive-v1/lagoon-legends-v5-nano.pngA output/archive-v1/lagoon-legends-v6-nano.pngM output/archive-v1/lost-continent-v1-nano.pngA output/archive-v1/lost-continent-v4-nano.pngA output/archive-v1/lost-continent-v5-nano.pngA output/archive-v1/lost-continent-v6-nano.pngM output/archive-v1/midnight-frequency-v1-nano.pngM output/archive-v1/midnight-frequency-v2-sdxl.pngM output/archive-v1/midnight-frequency-v3-sdxl.pngR100 output/designs/midnight-frequency-v4-nano.png output/archive-v1/midnight-frequency-v4-nano.pngR100 output/designs/midnight-frequency-v5-nano.png output/archive-v1/midnight-frequency-v5-nano.pngR100 output/designs/midnight-frequency-v6-nano.png output/archive-v1/midnight-frequency-v6-nano.pngM output/archive-v1/mod-orbit-v1-nano.pngA output/archive-v1/mod-orbit-v4-nano.pngA output/archive-v1/mod-orbit-v5-nano.pngA output/archive-v1/mod-orbit-v6-nano.pngM output/archive-v1/monstera-bungalow-v1-nano.pngA output/archive-v1/monstera-bungalow-v4-nano.pngA output/archive-v1/monstera-bungalow-v5-nano.pngA output/archive-v1/monstera-bungalow-v6-nano.pngM output/archive-v1/moonrise-ikat-v1-nano.pngR100 output/designs/moonrise-ikat-v4-nano.png output/archive-v1/moonrise-ikat-v4-nano.pngR100 output/designs/moonrise-ikat-v5-nano.png output/archive-v1/moonrise-ikat-v5-nano.pngA output/archive-v1/moonrise-ikat-v6-nano.pngM output/archive-v1/night-jungle-v1-nano.pngA output/archive-v1/night-jungle-v4-nano.pngA output/archive-v1/night-jungle-v5-nano.pngA output/archive-v1/night-jungle-v6-nano.pngM output/archive-v1/painted-feathers-v1-nano.pngA output/archive-v1/painted-feathers-v4-nano.pngA output/archive-v1/painted-feathers-v5-nano.pngA output/archive-v1/painted-feathers-v6-nano.pngM output/archive-v1/plumbline-v1-nano.pngA output/archive-v1/plumbline-v4-nano.pngA output/archive-v1/plumbline-v5-nano.pngA output/archive-v1/plumbline-v6-nano.pngM output/archive-v1/ray-shadow-v1-nano.pngR100 output/designs/ray-shadow-v4-nano.png output/archive-v1/ray-shadow-v4-nano.pngR100 output/designs/ray-shadow-v5-nano.png output/archive-v1/ray-shadow-v5-nano.pngM output/archive-v1/regatta-day-v1-nano.pngA output/archive-v1/regatta-day-v4-nano.pngA output/archive-v1/regatta-day-v5-nano.pngA output/archive-v1/regatta-day-v6-nano.pngM output/archive-v1/robot-parade-v1-nano.pngM output/archive-v1/robot-parade-v2-sdxl.pngM output/archive-v1/robot-parade-v3-sdxl.pngR100 output/designs/robot-parade-v4-nano.png output/archive-v1/robot-parade-v4-nano.pngR100 output/designs/robot-parade-v5-nano.png output/archive-v1/robot-parade-v5-nano.pngR100 output/designs/robot-parade-v6-nano.png output/archive-v1/robot-parade-v6-nano.pngM output/archive-v1/tidepool-bloom-v1-nano.pngA output/archive-v1/tidepool-bloom-v4-nano.pngA output/archive-v1/tidepool-bloom-v5-nano.pngA output/archive-v1/tidepool-bloom-v6-nano.pngD output/designs/astral-tiger-v1-nano.pngD output/designs/astral-tiger-v2-sdxl.pngD output/designs/astral-tiger-v3-sdxl.pngD output/designs/desert-choir-v1-nano.pngD output/designs/galaxy-bots-v1-nano.pngD output/designs/herbarium-press-v1-nano.pngD output/designs/midnight-frequency-v1-nano.pngD output/designs/midnight-frequency-v2-sdxl.pngD output/designs/moonrise-ikat-v1-nano.pngD output/designs/ray-shadow-v1-nano.pngD output/designs/robot-parade-v1-nano.pngA output/test/astral-tiger-test.pngA scripts/__pycache__/batch_gen.cpython-314.pycM scripts/batch_gen.pyM scripts/nano_gen.pyA scripts/snap_palette.py
Diff
commit d4a7eea1f8ccca4a81d3905c26cb823823308cdb
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Wed Jul 22 12:56:27 2026 -0700
reference-image nano mode + strict palettes + pixel palette-snap + hard no-partB line
---
data/briefs.json | 82 +++++----
data/designs.json | 189 +--------------------
output/archive-v1/arcade-memory-v1-nano.png | Bin 1605832 -> 1217855 bytes
output/archive-v1/arcade-memory-v4-nano.png | Bin 0 -> 1197801 bytes
output/archive-v1/arcade-memory-v6-nano.png | Bin 0 -> 1373934 bytes
output/archive-v1/astral-tiger-v1-nano.png | Bin 1824802 -> 1751533 bytes
output/archive-v1/astral-tiger-v2-sdxl.png | Bin 1847020 -> 1943751 bytes
output/archive-v1/astral-tiger-v3-sdxl.png | Bin 1866255 -> 1925617 bytes
.../astral-tiger-v4-nano.png | Bin
.../astral-tiger-v5-nano.png | Bin
.../astral-tiger-v6-nano.png | Bin
output/archive-v1/bodega-cats-v1-nano.png | Bin 1958994 -> 1411724 bytes
output/archive-v1/bodega-cats-v4-nano.png | Bin 0 -> 1587259 bytes
output/archive-v1/bodega-cats-v5-nano.png | Bin 0 -> 1632934 bytes
output/archive-v1/bodega-cats-v6-nano.png | Bin 0 -> 1063047 bytes
output/archive-v1/campfire-toile-v1-nano.png | Bin 2280932 -> 2176705 bytes
output/archive-v1/campfire-toile-v4-nano.png | Bin 0 -> 2070144 bytes
output/archive-v1/campfire-toile-v5-nano.png | Bin 0 -> 2068631 bytes
output/archive-v1/campfire-toile-v6-nano.png | Bin 0 -> 2101155 bytes
output/archive-v1/circle-fields-v1-nano.png | Bin 1936327 -> 1785265 bytes
output/archive-v1/circle-fields-v5-nano.png | Bin 0 -> 1799332 bytes
output/archive-v1/circle-fields-v6-nano.png | Bin 0 -> 1768388 bytes
output/archive-v1/daily-dose-v1-nano.png | Bin 1324267 -> 1496358 bytes
output/archive-v1/daily-dose-v4-nano.png | Bin 0 -> 1201829 bytes
output/archive-v1/daily-dose-v5-nano.png | Bin 0 -> 1135709 bytes
output/archive-v1/daily-dose-v6-nano.png | Bin 0 -> 971822 bytes
output/archive-v1/desert-choir-v1-nano.png | Bin 1907079 -> 1818423 bytes
output/archive-v1/desert-choir-v2-sdxl.png | Bin 1784605 -> 1856033 bytes
output/archive-v1/desert-choir-v3-sdxl.png | Bin 1881228 -> 1935586 bytes
.../desert-choir-v4-nano.png | Bin
.../desert-choir-v5-nano.png | Bin
.../desert-choir-v6-nano.png | Bin
output/archive-v1/dream-clouds-v1-nano.png | Bin 1654641 -> 1052316 bytes
output/archive-v1/dream-clouds-v4-nano.png | Bin 0 -> 1039947 bytes
output/archive-v1/dream-clouds-v5-nano.png | Bin 0 -> 1116990 bytes
output/archive-v1/dream-clouds-v6-nano.png | Bin 0 -> 951622 bytes
output/archive-v1/fungi-skyline-v1-nano.png | Bin 2477245 -> 2464798 bytes
output/archive-v1/fungi-skyline-v4-nano.png | Bin 0 -> 2297609 bytes
output/archive-v1/fungi-skyline-v5-nano.png | Bin 0 -> 2297043 bytes
output/archive-v1/fungi-skyline-v6-nano.png | Bin 0 -> 2402102 bytes
output/archive-v1/galaxy-bots-v1-nano.png | Bin 1882506 -> 2064404 bytes
output/archive-v1/galaxy-bots-v2-sdxl.png | Bin 1686980 -> 1554248 bytes
output/archive-v1/galaxy-bots-v3-sdxl.png | Bin 1665602 -> 1674150 bytes
.../galaxy-bots-v4-nano.png | Bin
.../galaxy-bots-v5-nano.png | Bin
.../galaxy-bots-v6-nano.png | Bin
output/archive-v1/golden-pineapple-v1-nano.png | Bin 1133160 -> 1892618 bytes
output/archive-v1/golden-pineapple-v4-nano.png | Bin 0 -> 1506783 bytes
output/archive-v1/golden-pineapple-v5-nano.png | Bin 0 -> 1626594 bytes
output/archive-v1/golden-pineapple-v6-nano.png | Bin 0 -> 1901662 bytes
output/archive-v1/herbarium-press-v1-nano.png | Bin 2128198 -> 1813137 bytes
output/archive-v1/herbarium-press-v2-sdxl.png | Bin 1893437 -> 1971358 bytes
output/archive-v1/herbarium-press-v3-sdxl.png | Bin 1872857 -> 1934840 bytes
.../herbarium-press-v4-nano.png | Bin
.../herbarium-press-v5-nano.png | Bin
.../herbarium-press-v6-nano.png | Bin
output/archive-v1/lagoon-legends-v1-nano.png | Bin 2050119 -> 1827756 bytes
output/archive-v1/lagoon-legends-v4-nano.png | Bin 0 -> 1666934 bytes
output/archive-v1/lagoon-legends-v5-nano.png | Bin 0 -> 1572685 bytes
output/archive-v1/lagoon-legends-v6-nano.png | Bin 0 -> 1144499 bytes
output/archive-v1/lost-continent-v1-nano.png | Bin 2187020 -> 1611906 bytes
output/archive-v1/lost-continent-v4-nano.png | Bin 0 -> 1657490 bytes
output/archive-v1/lost-continent-v5-nano.png | Bin 0 -> 2081562 bytes
output/archive-v1/lost-continent-v6-nano.png | Bin 0 -> 1492516 bytes
output/archive-v1/midnight-frequency-v1-nano.png | Bin 1588693 -> 1691949 bytes
output/archive-v1/midnight-frequency-v2-sdxl.png | Bin 1636885 -> 1574769 bytes
output/archive-v1/midnight-frequency-v3-sdxl.png | Bin 1659091 -> 1547181 bytes
.../midnight-frequency-v4-nano.png | Bin
.../midnight-frequency-v5-nano.png | Bin
.../midnight-frequency-v6-nano.png | Bin
output/archive-v1/mod-orbit-v1-nano.png | Bin 1136885 -> 1445655 bytes
output/archive-v1/mod-orbit-v4-nano.png | Bin 0 -> 1697883 bytes
output/archive-v1/mod-orbit-v5-nano.png | Bin 0 -> 1346407 bytes
output/archive-v1/mod-orbit-v6-nano.png | Bin 0 -> 1752991 bytes
output/archive-v1/monstera-bungalow-v1-nano.png | Bin 2258457 -> 1538437 bytes
output/archive-v1/monstera-bungalow-v4-nano.png | Bin 0 -> 1762963 bytes
output/archive-v1/monstera-bungalow-v5-nano.png | Bin 0 -> 1745306 bytes
output/archive-v1/monstera-bungalow-v6-nano.png | Bin 0 -> 1985957 bytes
output/archive-v1/moonrise-ikat-v1-nano.png | Bin 2051042 -> 2082129 bytes
.../moonrise-ikat-v4-nano.png | Bin
.../moonrise-ikat-v5-nano.png | Bin
output/archive-v1/moonrise-ikat-v6-nano.png | Bin 0 -> 2039580 bytes
output/archive-v1/night-jungle-v1-nano.png | Bin 1784607 -> 2308687 bytes
output/archive-v1/night-jungle-v4-nano.png | Bin 0 -> 2146248 bytes
output/archive-v1/night-jungle-v5-nano.png | Bin 0 -> 2244914 bytes
output/archive-v1/night-jungle-v6-nano.png | Bin 0 -> 2314201 bytes
output/archive-v1/painted-feathers-v1-nano.png | Bin 2070436 -> 1734757 bytes
output/archive-v1/painted-feathers-v4-nano.png | Bin 0 -> 2227273 bytes
output/archive-v1/painted-feathers-v5-nano.png | Bin 0 -> 1690322 bytes
output/archive-v1/painted-feathers-v6-nano.png | Bin 0 -> 2089672 bytes
output/archive-v1/plumbline-v1-nano.png | Bin 1713013 -> 1326815 bytes
output/archive-v1/plumbline-v4-nano.png | Bin 0 -> 1651018 bytes
output/archive-v1/plumbline-v5-nano.png | Bin 0 -> 1785352 bytes
output/archive-v1/plumbline-v6-nano.png | Bin 0 -> 1250216 bytes
output/archive-v1/ray-shadow-v1-nano.png | Bin 1759352 -> 1952799 bytes
.../{designs => archive-v1}/ray-shadow-v4-nano.png | Bin
.../{designs => archive-v1}/ray-shadow-v5-nano.png | Bin
output/archive-v1/regatta-day-v1-nano.png | Bin 1804923 -> 1402593 bytes
output/archive-v1/regatta-day-v4-nano.png | Bin 0 -> 1108446 bytes
output/archive-v1/regatta-day-v5-nano.png | Bin 0 -> 1969531 bytes
output/archive-v1/regatta-day-v6-nano.png | Bin 0 -> 1788964 bytes
output/archive-v1/robot-parade-v1-nano.png | Bin 1579412 -> 1548229 bytes
output/archive-v1/robot-parade-v2-sdxl.png | Bin 1837383 -> 1517213 bytes
output/archive-v1/robot-parade-v3-sdxl.png | Bin 1643350 -> 1469065 bytes
.../robot-parade-v4-nano.png | Bin
.../robot-parade-v5-nano.png | Bin
.../robot-parade-v6-nano.png | Bin
output/archive-v1/tidepool-bloom-v1-nano.png | Bin 2061773 -> 2054399 bytes
output/archive-v1/tidepool-bloom-v4-nano.png | Bin 0 -> 1914838 bytes
output/archive-v1/tidepool-bloom-v5-nano.png | Bin 0 -> 2035640 bytes
output/archive-v1/tidepool-bloom-v6-nano.png | Bin 0 -> 1874741 bytes
output/designs/astral-tiger-v1-nano.png | Bin 1751533 -> 0 bytes
output/designs/astral-tiger-v2-sdxl.png | Bin 1943751 -> 0 bytes
output/designs/astral-tiger-v3-sdxl.png | Bin 1925617 -> 0 bytes
output/designs/desert-choir-v1-nano.png | Bin 1818423 -> 0 bytes
output/designs/galaxy-bots-v1-nano.png | Bin 2064404 -> 0 bytes
output/designs/herbarium-press-v1-nano.png | Bin 1813137 -> 0 bytes
output/designs/midnight-frequency-v1-nano.png | Bin 1691949 -> 0 bytes
output/designs/midnight-frequency-v2-sdxl.png | Bin 1574769 -> 0 bytes
output/designs/moonrise-ikat-v1-nano.png | Bin 2082129 -> 0 bytes
output/designs/ray-shadow-v1-nano.png | Bin 1952799 -> 0 bytes
output/designs/robot-parade-v1-nano.png | Bin 1548229 -> 0 bytes
output/test/astral-tiger-test.png | Bin 0 -> 162913 bytes
scripts/__pycache__/batch_gen.cpython-314.pyc | Bin 0 -> 10150 bytes
scripts/batch_gen.py | 53 ++++--
scripts/nano_gen.py | 17 +-
scripts/snap_palette.py | 47 +++++
127 files changed, 143 insertions(+), 245 deletions(-)
diff --git a/data/briefs.json b/data/briefs.json
index dbf84a5..d1407f6 100644
--- a/data/briefs.json
+++ b/data/briefs.json
@@ -7,9 +7,8 @@
"prompt": "seamless repeating wallpaper pattern, folk-art tiger walking among scattered eight-point stars, Scandinavian folk illustration style, charcoal ground with cream and ochre linework, flat screen-print aesthetic, bold simple shapes, 24 inch repeat",
"palette": [
"#ffffff",
- "#2d2d2d",
- "#7d7d7d",
- "#d6d6d6",
+ "#272727",
+ "#6a6a6a",
"#ababab"
],
"scale": "large-scale motif: tiger about 14 inches tall within the 24 inch repeat, stars 2-3 inches"
@@ -21,10 +20,10 @@
"inspiration": "Analog Nights (theme only)",
"prompt": "seamless repeating wallpaper pattern, retro cassette tapes boomboxes and synthesizers, 1980s graphic illustration, flat two-color screen print, midnight navy ground with electric silver linework, evenly scattered motifs, 24 inch repeat",
"palette": [
+ "#616065",
"#afafb1",
"#d4d4d6",
- "#616065",
- "#828286"
+ "#79797d"
],
"scale": "medium-scale motifs about 5 inches each, evenly scattered"
},
@@ -37,7 +36,8 @@
"palette": [
"#ffffff",
"#b3b3b3",
- "#e3e3e3"
+ "#e3e3e3",
+ "#cacaca"
],
"scale": "large-scale motifs: robots 10-12 inches tall, bold and dominant"
},
@@ -51,7 +51,7 @@
"#424242",
"#dbdbdb",
"#bababa",
- "#797979"
+ "#626262"
],
"scale": "medium-scale motifs 4-6 inches, generously scattered scene"
},
@@ -65,8 +65,7 @@
"#ffffff",
"#fdd73d",
"#c2ac65",
- "#f3eabc",
- "#e5d581"
+ "#f7e88b"
],
"scale": "medium-scale pressed flowers 5-8 inches, airy arrangement"
},
@@ -77,8 +76,9 @@
"inspiration": "Cactus Spirit (theme only)",
"prompt": "seamless repeating wallpaper pattern, oversized saguaro aloe and agave cacti with desert blossoms and small desert tortoises resting between them, graphic southwest style, blush rose-gold ground with deep green and terracotta, bold flat shapes, 24 inch repeat",
"palette": [
+ "#f7eee7",
"#edb8a2",
- "#f7eee7"
+ "#efd3c6"
],
"scale": "oversized large-scale cacti 16-20 inches tall spanning most of the repeat"
},
@@ -89,8 +89,9 @@
"inspiration": "Sea Ray (theme only)",
"prompt": "seamless repeating wallpaper pattern, abstract watercolor spotted pattern inspired by eagle ray skin, organic white spots on rosewood wine ground, painterly wash texture, sophisticated animal print abstraction, 24 inch repeat",
"palette": [
- "#e8cec2",
- "#f8ede8"
+ "#f9f0ec",
+ "#e5c9bd",
+ "#d3b6aa"
],
"scale": "small-scale dense allover spots 1-2 inches, tight organic texture"
},
@@ -102,7 +103,7 @@
"prompt": "seamless repeating wallpaper pattern, moon phases rendered as woven ikat shapes, blurred-edge textile texture, stone grey ground with silver white and slate moons, rhythmic vertical arrangement, 24 inch repeat",
"palette": [
"#ece5de",
- "#fcfcfc"
+ "#faf9f8"
],
"scale": "medium-scale moons 3-4 inches in rhythmic vertical rows"
},
@@ -115,9 +116,8 @@
"palette": [
"#ffffff",
"#2f2d2e",
- "#c4c4c4",
- "#797878",
- "#abaaaa"
+ "#a2a2a2",
+ "#797878"
],
"scale": "large-scale dense jungle motifs 8-12 inches, immersive full coverage"
},
@@ -129,10 +129,9 @@
"prompt": "seamless repeating wallpaper pattern, single elegant pineapples evenly spaced in offset grid, graphic flat illustration, charcoal ground with golden ochre fruit and green crowns, hotel-chic minimal, 24 inch repeat",
"palette": [
"#ffffff",
- "#262626",
- "#c0c0c0",
- "#999999",
- "#6c6c6c"
+ "#adadad",
+ "#e2e2e2",
+ "#262626"
],
"scale": "medium-scale pineapples about 5 inches in a roomy offset grid"
},
@@ -144,8 +143,8 @@
"prompt": "seamless repeating wallpaper pattern, monstera deliciosa leaves growing from clearly represented woody stems and branches, tropical bungalow style, warm cream ground with single-tone deep green leaves, flat graphic print, no birds no butterflies no bananas, 24 inch repeat",
"palette": [
"#84cf63",
- "#fdfdef",
- "#d0e175",
+ "#fdfef2",
+ "#d9e785",
"#0a9059"
],
"scale": "large-scale leaves 10-14 inches, statement scale"
@@ -159,7 +158,7 @@
"palette": [
"#fefefe",
"#d1b684",
- "#e2d4b5"
+ "#e9e0cb"
],
"scale": "medium-scale feathers 6-8 inches in flowing vertical bands"
},
@@ -171,7 +170,8 @@
"prompt": "seamless repeating wallpaper pattern, abstract sea anemone tentacle clusters, textural organic dots and fronds radiating, soft zephyr blue-grey palette with blush centers, subtle sophisticated texture, 24 inch repeat",
"palette": [
"#dae5e9",
- "#f8fbfc"
+ "#f5f8fa",
+ "#e4ebef"
],
"scale": "small-scale dense texture, clusters 2-3 inches"
},
@@ -196,7 +196,7 @@
"prompt": "seamless repeating wallpaper pattern, jurassic dinosaurs among volcanoes ferns and fossils with tree trunks clearly represented, kids adventure illustration, mineral grey-green ground with bone cream and rust, flat hand-printed style, no birds, 24 inch repeat",
"palette": [
"#ffffff",
- "#bae3dd",
+ "#cdcfd2",
"#8897a3"
],
"scale": "medium-scale dinosaurs 5-7 inches, playful spacing"
@@ -209,7 +209,7 @@
"prompt": "seamless repeating wallpaper pattern, micro-scale geometric of connected pipe elbows and joints, modern minimal line work, aqua lines on soft white ground, precise architectural grid, 24 inch repeat",
"palette": [
"#ffffff",
- "#8ecbd6",
+ "#8bcbd6",
"#cbe7eb"
],
"scale": "micro-scale geometric, elements under 1 inch, fine dense grid"
@@ -234,8 +234,8 @@
"inspiration": "Mushroom City (theme only)",
"prompt": "seamless repeating wallpaper pattern, whimsical city skyline made of mushrooms of fluctuating heights with tiny windows and doors, trippy botanical illustration, botanical green ground with cream coral and brown fungi, 24 inch repeat",
"palette": [
- "#e4f6fe",
"#92acab",
+ "#e4f6fe",
"#c9dddf"
],
"scale": "medium-to-large mushrooms of varying heights 4-10 inches, skyline rhythm"
@@ -249,9 +249,8 @@
"palette": [
"#ffffff",
"#165652",
- "#4d7e7b",
- "#91afad",
- "#739996"
+ "#608c89",
+ "#a3bcba"
],
"scale": "medium-scale boats 5-6 inches, calm even scatter"
},
@@ -277,8 +276,8 @@
"prompt": "seamless repeating wallpaper pattern, colorful two-tone medicine capsules floating in playful diagonal rhythm, pop-art graphic style, soft lavender ground with candy-colored capsules, flat crisp print, 24 inch repeat",
"palette": [
"#3b363d",
- "#7d3055",
- "#185f4f",
+ "#6b3151",
+ "#0e6254",
"#655a43"
],
"scale": "small-scale capsules about 2 inches in diagonal rhythm"
@@ -290,8 +289,9 @@
"inspiration": "Crop Circles (theme only)",
"prompt": "seamless repeating wallpaper pattern, concentric circles of varying sizes overlapping in offset grid, hand-printed geometric, glimmer metallic silver rings on warm white ground, subtle elegant, 24 inch repeat",
"palette": [
- "#e1e1e1",
- "#fcfcfc"
+ "#e9e9e9",
+ "#f8f8f8",
+ "#d5d5d5"
],
"scale": "medium-scale concentric circles 3-6 inches overlapping"
},
@@ -303,10 +303,9 @@
"prompt": "seamless repeating wallpaper pattern, toile de jouy of idyllic modern camping scenes, tents canoes campfires pine trees with clearly represented trunks and hikers, single-color charcoal illustration on cream ground, fine engraved linework, no birds, 24 inch repeat",
"palette": [
"#ffffff",
- "#959595",
- "#e2e2e2",
+ "#818181",
"#adadad",
- "#6d6d6d"
+ "#e2e2e2"
],
"scale": "classic toile scale: vignette scenes 6-8 inches"
},
@@ -317,9 +316,9 @@
"inspiration": "Clouds / Loveclouds (theme only)",
"prompt": "seamless repeating wallpaper pattern, simple graphic puffy clouds with occasional small hearts drifting between, modern nursery style, storm grey ground with white clouds and blush hearts, flat minimal print, 24 inch repeat",
"palette": [
- "#ccd7d9",
- "#b6b7b9",
+ "#cbd5d8",
"#f4f4f4",
+ "#b6b7b9",
"#818892"
],
"scale": "medium-scale clouds 4-6 inches, calm even spacing"
@@ -332,9 +331,8 @@
"prompt": "seamless repeating wallpaper pattern, charming city bodega cats sitting and stretching among tiny storefront awnings and fire hydrants, NYC illustration style, slate grey ground with cream charcoal and mustard accents, flat print, no birds, 24 inch repeat",
"palette": [
"#f3f3f3",
- "#acb3bd",
- "#58646b",
- "#7d888f"
+ "#6d7980",
+ "#c6cbd0"
],
"scale": "small-to-medium motifs 3-4 inches, city-scatter layout"
}
diff --git a/data/designs.json b/data/designs.json
index 4f7def5..1f948f2 100644
--- a/data/designs.json
+++ b/data/designs.json
@@ -6,38 +6,7 @@
"description": "Star Tiger (theme only \u2014 original artwork)",
"size": "24\" x 25\"",
"created_at": "2026-07-22T19:18:28.830309+00:00",
- "variants": [
- {
- "file": "astral-tiger-v1-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:39:59.959671+00:00"
- },
- {
- "file": "astral-tiger-v4-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:40:08.378642+00:00"
- },
- {
- "file": "astral-tiger-v5-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:40:17.533057+00:00"
- },
- {
- "file": "astral-tiger-v6-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:40:25.588100+00:00"
- },
- {
- "file": "astral-tiger-v2-sdxl.png",
- "engine": "local-sdxl",
- "created_at": "2026-07-22T19:41:07.987115+00:00"
- },
- {
- "file": "astral-tiger-v3-sdxl.png",
- "engine": "local-sdxl",
- "created_at": "2026-07-22T19:42:20.216084+00:00"
- }
- ],
+ "variants": [],
"reference": {
"file": "ref-astral-tiger.jpg",
"title": "Star Tiger Charcoal"
@@ -50,33 +19,7 @@
"description": "Analog Nights (theme only)",
"size": "24\" x 25\"",
"created_at": "2026-07-22T19:18:36.892674+00:00",
- "variants": [
- {
- "file": "midnight-frequency-v1-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:40:33.542498+00:00"
- },
- {
- "file": "midnight-frequency-v4-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:40:42.135303+00:00"
- },
- {
- "file": "midnight-frequency-v5-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:40:49.728701+00:00"
- },
- {
- "file": "midnight-frequency-v6-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:40:57.779944+00:00"
- },
- {
- "file": "midnight-frequency-v2-sdxl.png",
- "engine": "local-sdxl",
- "created_at": "2026-07-22T19:43:32.473283+00:00"
- }
- ],
+ "variants": [],
"reference": {
"file": "ref-midnight-frequency.jpg",
"title": "Analog Nights Thunder"
@@ -89,28 +32,7 @@
"description": "Big Robots (theme only)",
"size": "24\" x 25\"",
"created_at": "2026-07-22T19:18:44.703698+00:00",
- "variants": [
- {
- "file": "robot-parade-v1-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:41:05.813810+00:00"
- },
- {
- "file": "robot-parade-v4-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:41:15.384332+00:00"
- },
- {
- "file": "robot-parade-v5-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:41:24.062583+00:00"
- },
- {
- "file": "robot-parade-v6-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:41:32.688923+00:00"
- }
- ],
+ "variants": [],
"reference": {
"file": "ref-robot-parade.jpg",
"title": "Big Robots Tin"
@@ -123,28 +45,7 @@
"description": "Astrobots (theme only)",
"size": "24\" x 25\"",
"created_at": "2026-07-22T19:18:53.231918+00:00",
- "variants": [
- {
- "file": "galaxy-bots-v1-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:41:40.212473+00:00"
- },
- {
- "file": "galaxy-bots-v4-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:41:48.585951+00:00"
- },
- {
- "file": "galaxy-bots-v5-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:41:57.162486+00:00"
- },
- {
- "file": "galaxy-bots-v6-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:42:05.593861+00:00"
- }
- ],
+ "variants": [],
"reference": {
"file": "ref-galaxy-bots.jpg",
"title": "Astrobots Thunder"
@@ -157,28 +58,7 @@
"description": "Herbario family (theme only)",
"size": "24\" x 25\"",
"created_at": "2026-07-22T19:19:01.485722+00:00",
- "variants": [
- {
- "file": "herbarium-press-v1-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:42:13.777998+00:00"
- },
- {
- "file": "herbarium-press-v4-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:42:22.686065+00:00"
- },
- {
- "file": "herbarium-press-v5-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:42:30.718909+00:00"
- },
- {
- "file": "herbarium-press-v6-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:42:38.559434+00:00"
- }
- ],
+ "variants": [],
"reference": {
"file": "ref-herbarium-press.jpg",
"title": "Herbario Canary"
@@ -191,28 +71,7 @@
"description": "Cactus Spirit (theme only)",
"size": "24\" x 25\"",
"created_at": "2026-07-22T19:19:08.811454+00:00",
- "variants": [
- {
- "file": "desert-choir-v1-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:42:46.424516+00:00"
- },
- {
- "file": "desert-choir-v4-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:42:54.630567+00:00"
- },
- {
- "file": "desert-choir-v5-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:43:02.588990+00:00"
- },
- {
- "file": "desert-choir-v6-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:43:10.541427+00:00"
- }
- ],
+ "variants": [],
"reference": {
"file": "ref-desert-choir.jpg",
"title": "Cactus Spirit Rosegold"
@@ -225,23 +84,7 @@
"description": "Sea Ray (theme only)",
"size": "24\" x 25\"",
"created_at": "2026-07-22T19:19:16.192537+00:00",
- "variants": [
- {
- "file": "ray-shadow-v1-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:43:18.515301+00:00"
- },
- {
- "file": "ray-shadow-v4-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:43:27.849372+00:00"
- },
- {
- "file": "ray-shadow-v5-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:43:36.594039+00:00"
- }
- ],
+ "variants": [],
"reference": {
"file": "ref-ray-shadow.jpg",
"title": "Sea Ray Rosewood"
@@ -254,23 +97,7 @@
"description": "Earthlight (theme only)",
"size": "24\" x 25\"",
"created_at": "2026-07-22T19:19:24.429045+00:00",
- "variants": [
- {
- "file": "moonrise-ikat-v1-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:43:52.501452+00:00"
- },
- {
- "file": "moonrise-ikat-v4-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:44:00.894923+00:00"
- },
- {
- "file": "moonrise-ikat-v5-nano.png",
- "engine": "nano-banana",
- "created_at": "2026-07-22T19:44:09.216129+00:00"
- }
- ],
+ "variants": [],
"reference": {
"file": "ref-moonrise-ikat.jpg",
"title": "Earthlight Ashlar"
diff --git a/output/archive-v1/arcade-memory-v1-nano.png b/output/archive-v1/arcade-memory-v1-nano.png
index 997be60..ef1727a 100644
Binary files a/output/archive-v1/arcade-memory-v1-nano.png and b/output/archive-v1/arcade-memory-v1-nano.png differ
diff --git a/output/archive-v1/arcade-memory-v4-nano.png b/output/archive-v1/arcade-memory-v4-nano.png
new file mode 100644
index 0000000..0992852
Binary files /dev/null and b/output/archive-v1/arcade-memory-v4-nano.png differ
diff --git a/output/archive-v1/arcade-memory-v6-nano.png b/output/archive-v1/arcade-memory-v6-nano.png
new file mode 100644
index 0000000..a11a2a1
Binary files /dev/null and b/output/archive-v1/arcade-memory-v6-nano.png differ
diff --git a/output/archive-v1/astral-tiger-v1-nano.png b/output/archive-v1/astral-tiger-v1-nano.png
index 0b6765c..3c1f1b0 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/astral-tiger-v2-sdxl.png b/output/archive-v1/astral-tiger-v2-sdxl.png
index 09560d9..7f7df83 100644
Binary files a/output/archive-v1/astral-tiger-v2-sdxl.png and b/output/archive-v1/astral-tiger-v2-sdxl.png differ
diff --git a/output/archive-v1/astral-tiger-v3-sdxl.png b/output/archive-v1/astral-tiger-v3-sdxl.png
index aaa70b1..20dcf7f 100644
Binary files a/output/archive-v1/astral-tiger-v3-sdxl.png and b/output/archive-v1/astral-tiger-v3-sdxl.png differ
diff --git a/output/designs/astral-tiger-v4-nano.png b/output/archive-v1/astral-tiger-v4-nano.png
similarity index 100%
rename from output/designs/astral-tiger-v4-nano.png
rename to output/archive-v1/astral-tiger-v4-nano.png
diff --git a/output/designs/astral-tiger-v5-nano.png b/output/archive-v1/astral-tiger-v5-nano.png
similarity index 100%
rename from output/designs/astral-tiger-v5-nano.png
rename to output/archive-v1/astral-tiger-v5-nano.png
diff --git a/output/designs/astral-tiger-v6-nano.png b/output/archive-v1/astral-tiger-v6-nano.png
similarity index 100%
rename from output/designs/astral-tiger-v6-nano.png
rename to output/archive-v1/astral-tiger-v6-nano.png
diff --git a/output/archive-v1/bodega-cats-v1-nano.png b/output/archive-v1/bodega-cats-v1-nano.png
index b56ade8..2885f84 100644
Binary files a/output/archive-v1/bodega-cats-v1-nano.png and b/output/archive-v1/bodega-cats-v1-nano.png differ
diff --git a/output/archive-v1/bodega-cats-v4-nano.png b/output/archive-v1/bodega-cats-v4-nano.png
new file mode 100644
index 0000000..852ce34
Binary files /dev/null and b/output/archive-v1/bodega-cats-v4-nano.png differ
diff --git a/output/archive-v1/bodega-cats-v5-nano.png b/output/archive-v1/bodega-cats-v5-nano.png
new file mode 100644
index 0000000..f6d46d3
Binary files /dev/null and b/output/archive-v1/bodega-cats-v5-nano.png differ
diff --git a/output/archive-v1/bodega-cats-v6-nano.png b/output/archive-v1/bodega-cats-v6-nano.png
new file mode 100644
index 0000000..95d8c27
Binary files /dev/null and b/output/archive-v1/bodega-cats-v6-nano.png differ
diff --git a/output/archive-v1/campfire-toile-v1-nano.png b/output/archive-v1/campfire-toile-v1-nano.png
index 40e8b1e..32d0233 100644
Binary files a/output/archive-v1/campfire-toile-v1-nano.png and b/output/archive-v1/campfire-toile-v1-nano.png differ
diff --git a/output/archive-v1/campfire-toile-v4-nano.png b/output/archive-v1/campfire-toile-v4-nano.png
new file mode 100644
index 0000000..9cae75b
Binary files /dev/null and b/output/archive-v1/campfire-toile-v4-nano.png differ
diff --git a/output/archive-v1/campfire-toile-v5-nano.png b/output/archive-v1/campfire-toile-v5-nano.png
new file mode 100644
index 0000000..d79ee32
Binary files /dev/null and b/output/archive-v1/campfire-toile-v5-nano.png differ
diff --git a/output/archive-v1/campfire-toile-v6-nano.png b/output/archive-v1/campfire-toile-v6-nano.png
new file mode 100644
index 0000000..214563c
Binary files /dev/null and b/output/archive-v1/campfire-toile-v6-nano.png differ
diff --git a/output/archive-v1/circle-fields-v1-nano.png b/output/archive-v1/circle-fields-v1-nano.png
index c8bef83..4267865 100644
Binary files a/output/archive-v1/circle-fields-v1-nano.png and b/output/archive-v1/circle-fields-v1-nano.png differ
diff --git a/output/archive-v1/circle-fields-v5-nano.png b/output/archive-v1/circle-fields-v5-nano.png
new file mode 100644
index 0000000..fe3ab9c
Binary files /dev/null and b/output/archive-v1/circle-fields-v5-nano.png differ
diff --git a/output/archive-v1/circle-fields-v6-nano.png b/output/archive-v1/circle-fields-v6-nano.png
new file mode 100644
index 0000000..26007a0
Binary files /dev/null and b/output/archive-v1/circle-fields-v6-nano.png differ
diff --git a/output/archive-v1/daily-dose-v1-nano.png b/output/archive-v1/daily-dose-v1-nano.png
index e1af562..03680b8 100644
Binary files a/output/archive-v1/daily-dose-v1-nano.png and b/output/archive-v1/daily-dose-v1-nano.png differ
diff --git a/output/archive-v1/daily-dose-v4-nano.png b/output/archive-v1/daily-dose-v4-nano.png
new file mode 100644
index 0000000..abfc7c2
Binary files /dev/null and b/output/archive-v1/daily-dose-v4-nano.png differ
diff --git a/output/archive-v1/daily-dose-v5-nano.png b/output/archive-v1/daily-dose-v5-nano.png
new file mode 100644
index 0000000..fc503c6
Binary files /dev/null and b/output/archive-v1/daily-dose-v5-nano.png differ
diff --git a/output/archive-v1/daily-dose-v6-nano.png b/output/archive-v1/daily-dose-v6-nano.png
new file mode 100644
index 0000000..1a2fde7
Binary files /dev/null and b/output/archive-v1/daily-dose-v6-nano.png differ
diff --git a/output/archive-v1/desert-choir-v1-nano.png b/output/archive-v1/desert-choir-v1-nano.png
index 3364f87..cd8b143 100644
Binary files a/output/archive-v1/desert-choir-v1-nano.png and b/output/archive-v1/desert-choir-v1-nano.png differ
diff --git a/output/archive-v1/desert-choir-v2-sdxl.png b/output/archive-v1/desert-choir-v2-sdxl.png
index 8678790..5d44128 100644
Binary files a/output/archive-v1/desert-choir-v2-sdxl.png and b/output/archive-v1/desert-choir-v2-sdxl.png differ
diff --git a/output/archive-v1/desert-choir-v3-sdxl.png b/output/archive-v1/desert-choir-v3-sdxl.png
index c6ea024..6d924a9 100644
Binary files a/output/archive-v1/desert-choir-v3-sdxl.png and b/output/archive-v1/desert-choir-v3-sdxl.png differ
diff --git a/output/designs/desert-choir-v4-nano.png b/output/archive-v1/desert-choir-v4-nano.png
similarity index 100%
rename from output/designs/desert-choir-v4-nano.png
rename to output/archive-v1/desert-choir-v4-nano.png
diff --git a/output/designs/desert-choir-v5-nano.png b/output/archive-v1/desert-choir-v5-nano.png
similarity index 100%
rename from output/designs/desert-choir-v5-nano.png
rename to output/archive-v1/desert-choir-v5-nano.png
diff --git a/output/designs/desert-choir-v6-nano.png b/output/archive-v1/desert-choir-v6-nano.png
similarity index 100%
rename from output/designs/desert-choir-v6-nano.png
rename to output/archive-v1/desert-choir-v6-nano.png
diff --git a/output/archive-v1/dream-clouds-v1-nano.png b/output/archive-v1/dream-clouds-v1-nano.png
index 98460cf..b8dd471 100644
Binary files a/output/archive-v1/dream-clouds-v1-nano.png and b/output/archive-v1/dream-clouds-v1-nano.png differ
diff --git a/output/archive-v1/dream-clouds-v4-nano.png b/output/archive-v1/dream-clouds-v4-nano.png
new file mode 100644
index 0000000..627de6b
Binary files /dev/null and b/output/archive-v1/dream-clouds-v4-nano.png differ
diff --git a/output/archive-v1/dream-clouds-v5-nano.png b/output/archive-v1/dream-clouds-v5-nano.png
new file mode 100644
index 0000000..5c7e21a
Binary files /dev/null and b/output/archive-v1/dream-clouds-v5-nano.png differ
diff --git a/output/archive-v1/dream-clouds-v6-nano.png b/output/archive-v1/dream-clouds-v6-nano.png
new file mode 100644
index 0000000..8eee837
Binary files /dev/null and b/output/archive-v1/dream-clouds-v6-nano.png differ
diff --git a/output/archive-v1/fungi-skyline-v1-nano.png b/output/archive-v1/fungi-skyline-v1-nano.png
index 5bea649..3f86acf 100644
Binary files a/output/archive-v1/fungi-skyline-v1-nano.png and b/output/archive-v1/fungi-skyline-v1-nano.png differ
diff --git a/output/archive-v1/fungi-skyline-v4-nano.png b/output/archive-v1/fungi-skyline-v4-nano.png
new file mode 100644
index 0000000..ae0e50c
Binary files /dev/null and b/output/archive-v1/fungi-skyline-v4-nano.png differ
diff --git a/output/archive-v1/fungi-skyline-v5-nano.png b/output/archive-v1/fungi-skyline-v5-nano.png
new file mode 100644
index 0000000..23267ff
Binary files /dev/null and b/output/archive-v1/fungi-skyline-v5-nano.png differ
diff --git a/output/archive-v1/fungi-skyline-v6-nano.png b/output/archive-v1/fungi-skyline-v6-nano.png
new file mode 100644
index 0000000..7c2fe34
Binary files /dev/null and b/output/archive-v1/fungi-skyline-v6-nano.png differ
diff --git a/output/archive-v1/galaxy-bots-v1-nano.png b/output/archive-v1/galaxy-bots-v1-nano.png
index b276720..dd10793 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/galaxy-bots-v2-sdxl.png b/output/archive-v1/galaxy-bots-v2-sdxl.png
index 7912002..f4a241a 100644
Binary files a/output/archive-v1/galaxy-bots-v2-sdxl.png and b/output/archive-v1/galaxy-bots-v2-sdxl.png differ
diff --git a/output/archive-v1/galaxy-bots-v3-sdxl.png b/output/archive-v1/galaxy-bots-v3-sdxl.png
index b3a35d3..6f83021 100644
Binary files a/output/archive-v1/galaxy-bots-v3-sdxl.png and b/output/archive-v1/galaxy-bots-v3-sdxl.png differ
diff --git a/output/designs/galaxy-bots-v4-nano.png b/output/archive-v1/galaxy-bots-v4-nano.png
similarity index 100%
rename from output/designs/galaxy-bots-v4-nano.png
rename to output/archive-v1/galaxy-bots-v4-nano.png
diff --git a/output/designs/galaxy-bots-v5-nano.png b/output/archive-v1/galaxy-bots-v5-nano.png
similarity index 100%
rename from output/designs/galaxy-bots-v5-nano.png
rename to output/archive-v1/galaxy-bots-v5-nano.png
diff --git a/output/designs/galaxy-bots-v6-nano.png b/output/archive-v1/galaxy-bots-v6-nano.png
similarity index 100%
rename from output/designs/galaxy-bots-v6-nano.png
rename to output/archive-v1/galaxy-bots-v6-nano.png
diff --git a/output/archive-v1/golden-pineapple-v1-nano.png b/output/archive-v1/golden-pineapple-v1-nano.png
index ed42571..b1d5349 100644
Binary files a/output/archive-v1/golden-pineapple-v1-nano.png and b/output/archive-v1/golden-pineapple-v1-nano.png differ
diff --git a/output/archive-v1/golden-pineapple-v4-nano.png b/output/archive-v1/golden-pineapple-v4-nano.png
new file mode 100644
index 0000000..c2c9e12
Binary files /dev/null and b/output/archive-v1/golden-pineapple-v4-nano.png differ
diff --git a/output/archive-v1/golden-pineapple-v5-nano.png b/output/archive-v1/golden-pineapple-v5-nano.png
new file mode 100644
index 0000000..eab9d15
Binary files /dev/null and b/output/archive-v1/golden-pineapple-v5-nano.png differ
diff --git a/output/archive-v1/golden-pineapple-v6-nano.png b/output/archive-v1/golden-pineapple-v6-nano.png
new file mode 100644
index 0000000..af6aaeb
Binary files /dev/null and b/output/archive-v1/golden-pineapple-v6-nano.png differ
diff --git a/output/archive-v1/herbarium-press-v1-nano.png b/output/archive-v1/herbarium-press-v1-nano.png
index b93c00f..2902c07 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/herbarium-press-v2-sdxl.png b/output/archive-v1/herbarium-press-v2-sdxl.png
index b42e31a..2c7e9f1 100644
Binary files a/output/archive-v1/herbarium-press-v2-sdxl.png and b/output/archive-v1/herbarium-press-v2-sdxl.png differ
diff --git a/output/archive-v1/herbarium-press-v3-sdxl.png b/output/archive-v1/herbarium-press-v3-sdxl.png
index fd15f35..99cc21c 100644
Binary files a/output/archive-v1/herbarium-press-v3-sdxl.png and b/output/archive-v1/herbarium-press-v3-sdxl.png differ
diff --git a/output/designs/herbarium-press-v4-nano.png b/output/archive-v1/herbarium-press-v4-nano.png
similarity index 100%
rename from output/designs/herbarium-press-v4-nano.png
rename to output/archive-v1/herbarium-press-v4-nano.png
diff --git a/output/designs/herbarium-press-v5-nano.png b/output/archive-v1/herbarium-press-v5-nano.png
similarity index 100%
rename from output/designs/herbarium-press-v5-nano.png
rename to output/archive-v1/herbarium-press-v5-nano.png
diff --git a/output/designs/herbarium-press-v6-nano.png b/output/archive-v1/herbarium-press-v6-nano.png
similarity index 100%
rename from output/designs/herbarium-press-v6-nano.png
rename to output/archive-v1/herbarium-press-v6-nano.png
diff --git a/output/archive-v1/lagoon-legends-v1-nano.png b/output/archive-v1/lagoon-legends-v1-nano.png
index c03084c..e40a885 100644
Binary files a/output/archive-v1/lagoon-legends-v1-nano.png and b/output/archive-v1/lagoon-legends-v1-nano.png differ
diff --git a/output/archive-v1/lagoon-legends-v4-nano.png b/output/archive-v1/lagoon-legends-v4-nano.png
new file mode 100644
index 0000000..9a4d14b
Binary files /dev/null and b/output/archive-v1/lagoon-legends-v4-nano.png differ
diff --git a/output/archive-v1/lagoon-legends-v5-nano.png b/output/archive-v1/lagoon-legends-v5-nano.png
new file mode 100644
index 0000000..4820b36
Binary files /dev/null and b/output/archive-v1/lagoon-legends-v5-nano.png differ
diff --git a/output/archive-v1/lagoon-legends-v6-nano.png b/output/archive-v1/lagoon-legends-v6-nano.png
new file mode 100644
index 0000000..59b37da
Binary files /dev/null and b/output/archive-v1/lagoon-legends-v6-nano.png differ
diff --git a/output/archive-v1/lost-continent-v1-nano.png b/output/archive-v1/lost-continent-v1-nano.png
index 19dd8ae..5f72c10 100644
Binary files a/output/archive-v1/lost-continent-v1-nano.png and b/output/archive-v1/lost-continent-v1-nano.png differ
diff --git a/output/archive-v1/lost-continent-v4-nano.png b/output/archive-v1/lost-continent-v4-nano.png
new file mode 100644
index 0000000..f1dca3f
Binary files /dev/null and b/output/archive-v1/lost-continent-v4-nano.png differ
diff --git a/output/archive-v1/lost-continent-v5-nano.png b/output/archive-v1/lost-continent-v5-nano.png
new file mode 100644
index 0000000..3413bd1
Binary files /dev/null and b/output/archive-v1/lost-continent-v5-nano.png differ
diff --git a/output/archive-v1/lost-continent-v6-nano.png b/output/archive-v1/lost-continent-v6-nano.png
new file mode 100644
index 0000000..e44334f
Binary files /dev/null and b/output/archive-v1/lost-continent-v6-nano.png differ
diff --git a/output/archive-v1/midnight-frequency-v1-nano.png b/output/archive-v1/midnight-frequency-v1-nano.png
index b2e9bbb..6390380 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/midnight-frequency-v2-sdxl.png b/output/archive-v1/midnight-frequency-v2-sdxl.png
index 75968d2..be3582c 100644
Binary files a/output/archive-v1/midnight-frequency-v2-sdxl.png and b/output/archive-v1/midnight-frequency-v2-sdxl.png differ
diff --git a/output/archive-v1/midnight-frequency-v3-sdxl.png b/output/archive-v1/midnight-frequency-v3-sdxl.png
index 13ec022..603070b 100644
Binary files a/output/archive-v1/midnight-frequency-v3-sdxl.png and b/output/archive-v1/midnight-frequency-v3-sdxl.png differ
diff --git a/output/designs/midnight-frequency-v4-nano.png b/output/archive-v1/midnight-frequency-v4-nano.png
similarity index 100%
rename from output/designs/midnight-frequency-v4-nano.png
rename to output/archive-v1/midnight-frequency-v4-nano.png
diff --git a/output/designs/midnight-frequency-v5-nano.png b/output/archive-v1/midnight-frequency-v5-nano.png
similarity index 100%
rename from output/designs/midnight-frequency-v5-nano.png
rename to output/archive-v1/midnight-frequency-v5-nano.png
diff --git a/output/designs/midnight-frequency-v6-nano.png b/output/archive-v1/midnight-frequency-v6-nano.png
similarity index 100%
rename from output/designs/midnight-frequency-v6-nano.png
rename to output/archive-v1/midnight-frequency-v6-nano.png
diff --git a/output/archive-v1/mod-orbit-v1-nano.png b/output/archive-v1/mod-orbit-v1-nano.png
index a5b483e..6ceb01b 100644
Binary files a/output/archive-v1/mod-orbit-v1-nano.png and b/output/archive-v1/mod-orbit-v1-nano.png differ
diff --git a/output/archive-v1/mod-orbit-v4-nano.png b/output/archive-v1/mod-orbit-v4-nano.png
new file mode 100644
index 0000000..8b6c46d
Binary files /dev/null and b/output/archive-v1/mod-orbit-v4-nano.png differ
diff --git a/output/archive-v1/mod-orbit-v5-nano.png b/output/archive-v1/mod-orbit-v5-nano.png
new file mode 100644
index 0000000..813dc4a
Binary files /dev/null and b/output/archive-v1/mod-orbit-v5-nano.png differ
diff --git a/output/archive-v1/mod-orbit-v6-nano.png b/output/archive-v1/mod-orbit-v6-nano.png
new file mode 100644
index 0000000..e76089f
Binary files /dev/null and b/output/archive-v1/mod-orbit-v6-nano.png differ
diff --git a/output/archive-v1/monstera-bungalow-v1-nano.png b/output/archive-v1/monstera-bungalow-v1-nano.png
index f35cb2b..05e39a5 100644
Binary files a/output/archive-v1/monstera-bungalow-v1-nano.png and b/output/archive-v1/monstera-bungalow-v1-nano.png differ
diff --git a/output/archive-v1/monstera-bungalow-v4-nano.png b/output/archive-v1/monstera-bungalow-v4-nano.png
new file mode 100644
index 0000000..d390c72
Binary files /dev/null and b/output/archive-v1/monstera-bungalow-v4-nano.png differ
diff --git a/output/archive-v1/monstera-bungalow-v5-nano.png b/output/archive-v1/monstera-bungalow-v5-nano.png
new file mode 100644
index 0000000..714512b
Binary files /dev/null and b/output/archive-v1/monstera-bungalow-v5-nano.png differ
diff --git a/output/archive-v1/monstera-bungalow-v6-nano.png b/output/archive-v1/monstera-bungalow-v6-nano.png
new file mode 100644
index 0000000..cb0a412
Binary files /dev/null and b/output/archive-v1/monstera-bungalow-v6-nano.png differ
diff --git a/output/archive-v1/moonrise-ikat-v1-nano.png b/output/archive-v1/moonrise-ikat-v1-nano.png
index 5aed09a..70ef0cf 100644
Binary files a/output/archive-v1/moonrise-ikat-v1-nano.png and b/output/archive-v1/moonrise-ikat-v1-nano.png differ
diff --git a/output/designs/moonrise-ikat-v4-nano.png b/output/archive-v1/moonrise-ikat-v4-nano.png
similarity index 100%
rename from output/designs/moonrise-ikat-v4-nano.png
rename to output/archive-v1/moonrise-ikat-v4-nano.png
diff --git a/output/designs/moonrise-ikat-v5-nano.png b/output/archive-v1/moonrise-ikat-v5-nano.png
similarity index 100%
rename from output/designs/moonrise-ikat-v5-nano.png
rename to output/archive-v1/moonrise-ikat-v5-nano.png
diff --git a/output/archive-v1/moonrise-ikat-v6-nano.png b/output/archive-v1/moonrise-ikat-v6-nano.png
new file mode 100644
index 0000000..e1e70a9
Binary files /dev/null and b/output/archive-v1/moonrise-ikat-v6-nano.png differ
diff --git a/output/archive-v1/night-jungle-v1-nano.png b/output/archive-v1/night-jungle-v1-nano.png
index 9b787cc..e1cdb8a 100644
Binary files a/output/archive-v1/night-jungle-v1-nano.png and b/output/archive-v1/night-jungle-v1-nano.png differ
diff --git a/output/archive-v1/night-jungle-v4-nano.png b/output/archive-v1/night-jungle-v4-nano.png
new file mode 100644
index 0000000..c6243c9
Binary files /dev/null and b/output/archive-v1/night-jungle-v4-nano.png differ
diff --git a/output/archive-v1/night-jungle-v5-nano.png b/output/archive-v1/night-jungle-v5-nano.png
new file mode 100644
index 0000000..b516fb7
Binary files /dev/null and b/output/archive-v1/night-jungle-v5-nano.png differ
diff --git a/output/archive-v1/night-jungle-v6-nano.png b/output/archive-v1/night-jungle-v6-nano.png
new file mode 100644
index 0000000..bf0f45d
Binary files /dev/null and b/output/archive-v1/night-jungle-v6-nano.png differ
diff --git a/output/archive-v1/painted-feathers-v1-nano.png b/output/archive-v1/painted-feathers-v1-nano.png
index 82cc67f..44a7b13 100644
Binary files a/output/archive-v1/painted-feathers-v1-nano.png and b/output/archive-v1/painted-feathers-v1-nano.png differ
diff --git a/output/archive-v1/painted-feathers-v4-nano.png b/output/archive-v1/painted-feathers-v4-nano.png
new file mode 100644
index 0000000..dd12dc6
Binary files /dev/null and b/output/archive-v1/painted-feathers-v4-nano.png differ
diff --git a/output/archive-v1/painted-feathers-v5-nano.png b/output/archive-v1/painted-feathers-v5-nano.png
new file mode 100644
index 0000000..915f6e8
Binary files /dev/null and b/output/archive-v1/painted-feathers-v5-nano.png differ
diff --git a/output/archive-v1/painted-feathers-v6-nano.png b/output/archive-v1/painted-feathers-v6-nano.png
new file mode 100644
index 0000000..32d107b
Binary files /dev/null and b/output/archive-v1/painted-feathers-v6-nano.png differ
diff --git a/output/archive-v1/plumbline-v1-nano.png b/output/archive-v1/plumbline-v1-nano.png
index 0e56284..7b81af4 100644
Binary files a/output/archive-v1/plumbline-v1-nano.png and b/output/archive-v1/plumbline-v1-nano.png differ
diff --git a/output/archive-v1/plumbline-v4-nano.png b/output/archive-v1/plumbline-v4-nano.png
new file mode 100644
index 0000000..93b49dc
Binary files /dev/null and b/output/archive-v1/plumbline-v4-nano.png differ
diff --git a/output/archive-v1/plumbline-v5-nano.png b/output/archive-v1/plumbline-v5-nano.png
new file mode 100644
index 0000000..2eb7537
Binary files /dev/null and b/output/archive-v1/plumbline-v5-nano.png differ
diff --git a/output/archive-v1/plumbline-v6-nano.png b/output/archive-v1/plumbline-v6-nano.png
new file mode 100644
index 0000000..853ab8f
Binary files /dev/null and b/output/archive-v1/plumbline-v6-nano.png differ
diff --git a/output/archive-v1/ray-shadow-v1-nano.png b/output/archive-v1/ray-shadow-v1-nano.png
index a18a9b6..54c1b13 100644
Binary files a/output/archive-v1/ray-shadow-v1-nano.png and b/output/archive-v1/ray-shadow-v1-nano.png differ
diff --git a/output/designs/ray-shadow-v4-nano.png b/output/archive-v1/ray-shadow-v4-nano.png
similarity index 100%
rename from output/designs/ray-shadow-v4-nano.png
rename to output/archive-v1/ray-shadow-v4-nano.png
diff --git a/output/designs/ray-shadow-v5-nano.png b/output/archive-v1/ray-shadow-v5-nano.png
similarity index 100%
rename from output/designs/ray-shadow-v5-nano.png
rename to output/archive-v1/ray-shadow-v5-nano.png
diff --git a/output/archive-v1/regatta-day-v1-nano.png b/output/archive-v1/regatta-day-v1-nano.png
index 4251ea4..fa81126 100644
Binary files a/output/archive-v1/regatta-day-v1-nano.png and b/output/archive-v1/regatta-day-v1-nano.png differ
diff --git a/output/archive-v1/regatta-day-v4-nano.png b/output/archive-v1/regatta-day-v4-nano.png
new file mode 100644
index 0000000..d10bf94
Binary files /dev/null and b/output/archive-v1/regatta-day-v4-nano.png differ
diff --git a/output/archive-v1/regatta-day-v5-nano.png b/output/archive-v1/regatta-day-v5-nano.png
new file mode 100644
index 0000000..7a70fd3
Binary files /dev/null and b/output/archive-v1/regatta-day-v5-nano.png differ
diff --git a/output/archive-v1/regatta-day-v6-nano.png b/output/archive-v1/regatta-day-v6-nano.png
new file mode 100644
index 0000000..d53e5a4
Binary files /dev/null and b/output/archive-v1/regatta-day-v6-nano.png differ
diff --git a/output/archive-v1/robot-parade-v1-nano.png b/output/archive-v1/robot-parade-v1-nano.png
index 733d892..c7c0130 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/output/archive-v1/robot-parade-v2-sdxl.png b/output/archive-v1/robot-parade-v2-sdxl.png
index 88a5eca..98cdd78 100644
Binary files a/output/archive-v1/robot-parade-v2-sdxl.png and b/output/archive-v1/robot-parade-v2-sdxl.png differ
diff --git a/output/archive-v1/robot-parade-v3-sdxl.png b/output/archive-v1/robot-parade-v3-sdxl.png
index 50a02e6..d1e622c 100644
Binary files a/output/archive-v1/robot-parade-v3-sdxl.png and b/output/archive-v1/robot-parade-v3-sdxl.png differ
diff --git a/output/designs/robot-parade-v4-nano.png b/output/archive-v1/robot-parade-v4-nano.png
similarity index 100%
rename from output/designs/robot-parade-v4-nano.png
rename to output/archive-v1/robot-parade-v4-nano.png
diff --git a/output/designs/robot-parade-v5-nano.png b/output/archive-v1/robot-parade-v5-nano.png
similarity index 100%
rename from output/designs/robot-parade-v5-nano.png
rename to output/archive-v1/robot-parade-v5-nano.png
diff --git a/output/designs/robot-parade-v6-nano.png b/output/archive-v1/robot-parade-v6-nano.png
similarity index 100%
rename from output/designs/robot-parade-v6-nano.png
rename to output/archive-v1/robot-parade-v6-nano.png
diff --git a/output/archive-v1/tidepool-bloom-v1-nano.png b/output/archive-v1/tidepool-bloom-v1-nano.png
index 8e1df75..b094fdc 100644
Binary files a/output/archive-v1/tidepool-bloom-v1-nano.png and b/output/archive-v1/tidepool-bloom-v1-nano.png differ
diff --git a/output/archive-v1/tidepool-bloom-v4-nano.png b/output/archive-v1/tidepool-bloom-v4-nano.png
new file mode 100644
index 0000000..4f1ff2f
Binary files /dev/null and b/output/archive-v1/tidepool-bloom-v4-nano.png differ
diff --git a/output/archive-v1/tidepool-bloom-v5-nano.png b/output/archive-v1/tidepool-bloom-v5-nano.png
new file mode 100644
index 0000000..5820a7f
Binary files /dev/null and b/output/archive-v1/tidepool-bloom-v5-nano.png differ
diff --git a/output/archive-v1/tidepool-bloom-v6-nano.png b/output/archive-v1/tidepool-bloom-v6-nano.png
new file mode 100644
index 0000000..bbaa36b
Binary files /dev/null and b/output/archive-v1/tidepool-bloom-v6-nano.png differ
diff --git a/output/designs/astral-tiger-v1-nano.png b/output/designs/astral-tiger-v1-nano.png
deleted file mode 100644
index 3c1f1b0..0000000
Binary files a/output/designs/astral-tiger-v1-nano.png and /dev/null differ
diff --git a/output/designs/astral-tiger-v2-sdxl.png b/output/designs/astral-tiger-v2-sdxl.png
deleted file mode 100644
index 7f7df83..0000000
Binary files a/output/designs/astral-tiger-v2-sdxl.png and /dev/null differ
diff --git a/output/designs/astral-tiger-v3-sdxl.png b/output/designs/astral-tiger-v3-sdxl.png
deleted file mode 100644
index 20dcf7f..0000000
Binary files a/output/designs/astral-tiger-v3-sdxl.png and /dev/null differ
diff --git a/output/designs/desert-choir-v1-nano.png b/output/designs/desert-choir-v1-nano.png
deleted file mode 100644
index cd8b143..0000000
Binary files a/output/designs/desert-choir-v1-nano.png and /dev/null differ
diff --git a/output/designs/galaxy-bots-v1-nano.png b/output/designs/galaxy-bots-v1-nano.png
deleted file mode 100644
index dd10793..0000000
Binary files a/output/designs/galaxy-bots-v1-nano.png and /dev/null differ
diff --git a/output/designs/herbarium-press-v1-nano.png b/output/designs/herbarium-press-v1-nano.png
deleted file mode 100644
index 2902c07..0000000
Binary files a/output/designs/herbarium-press-v1-nano.png and /dev/null differ
diff --git a/output/designs/midnight-frequency-v1-nano.png b/output/designs/midnight-frequency-v1-nano.png
deleted file mode 100644
index 6390380..0000000
Binary files a/output/designs/midnight-frequency-v1-nano.png and /dev/null differ
diff --git a/output/designs/midnight-frequency-v2-sdxl.png b/output/designs/midnight-frequency-v2-sdxl.png
deleted file mode 100644
index be3582c..0000000
Binary files a/output/designs/midnight-frequency-v2-sdxl.png and /dev/null differ
diff --git a/output/designs/moonrise-ikat-v1-nano.png b/output/designs/moonrise-ikat-v1-nano.png
deleted file mode 100644
index 70ef0cf..0000000
Binary files a/output/designs/moonrise-ikat-v1-nano.png and /dev/null differ
diff --git a/output/designs/ray-shadow-v1-nano.png b/output/designs/ray-shadow-v1-nano.png
deleted file mode 100644
index 54c1b13..0000000
Binary files a/output/designs/ray-shadow-v1-nano.png and /dev/null differ
diff --git a/output/designs/robot-parade-v1-nano.png b/output/designs/robot-parade-v1-nano.png
deleted file mode 100644
index c7c0130..0000000
Binary files a/output/designs/robot-parade-v1-nano.png and /dev/null differ
diff --git a/output/test/astral-tiger-test.png b/output/test/astral-tiger-test.png
new file mode 100644
index 0000000..fbfd2ba
Binary files /dev/null and b/output/test/astral-tiger-test.png differ
diff --git a/scripts/__pycache__/batch_gen.cpython-314.pyc b/scripts/__pycache__/batch_gen.cpython-314.pyc
new file mode 100644
index 0000000..2c0fadb
Binary files /dev/null and b/scripts/__pycache__/batch_gen.cpython-314.pyc differ
diff --git a/scripts/batch_gen.py b/scripts/batch_gen.py
index 6334edf..41c1a8b 100644
--- a/scripts/batch_gen.py
+++ b/scripts/batch_gen.py
@@ -33,20 +33,29 @@ def hexname(h):
shade = "pale " if l > 190 else "deep " if l < 90 else ""
return shade + hue
+HARD_NEG = ("HARD RULE: never include birds, butterflies, bananas, banana pods, "
+ "or grapes anywhere in the design.")
+
def full_prompt(brief, engine, variation=""):
- p = brief["prompt"]
- pal = brief.get("palette")
- 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)
- p += "; limited color palette of only: " + ", ".join(names)
+ pal = brief.get("palette", [])
+ if engine == "nano":
+ # reference-image mode: the attached original drives scale/density/colors
+ p = (f"The attached image is a reference wallpaper pattern. Create a completely "
+ f"ORIGINAL seamless repeating wallpaper design that matches the reference's "
+ f"motif SCALE, packing DENSITY, layout rhythm, flat print style, and uses "
+ f"EXACTLY and ONLY the reference's colors ({', '.join(pal)} — no other colors, "
+ f"no gradients, flat screen-print inks only). Do NOT copy any motif from the "
+ f"reference. Draw DIFFERENT characters instead: {brief['prompt']}. "
+ f"{HARD_NEG}")
+ if variation:
+ p += " Variation: " + variation
+ return p
+ names = []
+ for h in pal:
+ n = hexname(h)
+ if n not in names:
+ names.append(n)
+ p = brief["prompt"] + "; flat screen print using ONLY these few colors: " + ", ".join(names)
if brief.get("scale"):
p += "; motif scale: " + brief["scale"]
if variation:
@@ -55,9 +64,9 @@ def full_prompt(brief, engine, variation=""):
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",
+ "v4": "different individual characters and poses, same style and layout logic",
+ "v5": "different composition arrangement, same motif family and style",
+ "v6": "refined minimal interpretation, same scale and style",
}
def load_designs():
@@ -99,8 +108,14 @@ def main():
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):
+ ref = os.path.join(ROOT, "output", "refs", f"ref-{b['id']}.jpg")
+ cmd = [sys.executable, os.path.join(SCRIPTS, "nano_gen.py"),
+ full_prompt(b, "nano", variation), path]
+ if os.path.exists(ref):
+ cmd.append(ref)
+ if run(cmd, 200):
+ subprocess.run([sys.executable, os.path.join(SCRIPTS, "snap_palette.py"),
+ path, b["id"]], capture_output=True)
save_variant(b, "nano-banana", fname)
nano_done += 1
time.sleep(2)
@@ -116,6 +131,8 @@ def main():
print(f"[sdxl seed {seed}] {b['id']}")
if run([sys.executable, os.path.join(SCRIPTS, "comfy_gen.py"),
full_prompt(b, "sdxl"), str(seed), path], 700):
+ subprocess.run([sys.executable, os.path.join(SCRIPTS, "snap_palette.py"),
+ path, b["id"]], capture_output=True)
save_variant(b, "local-sdxl", fname)
print("sdxl complete")
diff --git a/scripts/nano_gen.py b/scripts/nano_gen.py
index 93d0dc6..0a73c48 100644
--- a/scripts/nano_gen.py
+++ b/scripts/nano_gen.py
@@ -1,8 +1,10 @@
#!/usr/bin/env python3
"""Generate one image via Gemini 2.5 Flash Image ("nano banana").
-Usage: GEMINI_API_KEY=... nano_gen.py "<prompt>" <outfile.png>
-Cost: ~$0.039 per image (1290 output tokens @ $30/1M).
+Usage: GEMINI_API_KEY=... nano_gen.py "<prompt>" <outfile.png> [reference.jpg]
+With a reference image, the model matches its scale/density/colors while
+drawing ORIGINAL motifs per the prompt.
+Cost: ~$0.039 per image.
"""
import base64, json, os, sys, urllib.request
@@ -13,14 +15,21 @@ URL = (f"https://generativelanguage.googleapis.com/v1beta/models/"
def main():
prompt, outfile = sys.argv[1], sys.argv[2]
+ ref = sys.argv[3] if len(sys.argv) > 3 else None
+ parts = []
+ if ref:
+ mime = "image/png" if ref.endswith(".png") else "image/jpeg"
+ parts.append({"inline_data": {"mime_type": mime,
+ "data": base64.b64encode(open(ref, "rb").read()).decode()}})
+ parts.append({"text": prompt})
body = {
- "contents": [{"parts": [{"text": prompt}]}],
+ "contents": [{"parts": parts}],
"generationConfig": {"responseModalities": ["IMAGE"],
"imageConfig": {"aspectRatio": "1:1"}},
}
req = urllib.request.Request(URL, data=json.dumps(body).encode(),
headers={"Content-Type": "application/json"})
- with urllib.request.urlopen(req, timeout=120) as r:
+ with urllib.request.urlopen(req, timeout=180) as r:
resp = json.load(r)
for part in resp["candidates"][0]["content"]["parts"]:
if "inlineData" in part:
diff --git a/scripts/snap_palette.py b/scripts/snap_palette.py
new file mode 100644
index 0000000..7938d42
--- /dev/null
+++ b/scripts/snap_palette.py
@@ -0,0 +1,47 @@
+#!/usr/bin/env python3
+"""Snap every pixel of a generated image to the design's exact reference palette.
+
+Guarantees the output contains ONLY the original colorway's colors.
+Usage: snap_palette.py <image.png> <design_id> (or --all to sweep output/designs)
+$0 local.
+"""
+import json, os, sys
+from PIL import Image
+
+ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+
+def load_palettes():
+ briefs = json.load(open(os.path.join(ROOT, "data", "briefs.json")))
+ return {b["id"]: [tuple(int(h[i:i+2], 16) for i in (1, 3, 5))
+ for h in b.get("palette", [])] for b in briefs}
+
+def snap(path, colors):
+ if not colors:
+ return
+ im = Image.open(path).convert("RGB")
+ # palette-image trick: PIL maps every pixel to nearest palette entry in C
+ pal_img = Image.new("P", (1, 1))
+ flat = [c for rgb in colors for c in rgb]
+ pal_img.putpalette(flat + flat[:3] * (256 - len(colors)))
+ im = im.quantize(palette=pal_img, dither=Image.NONE).convert("RGB")
+ im.save(path)
+
+def main():
+ palettes = load_palettes()
+ if sys.argv[1] == "--all":
+ outdir = os.path.join(ROOT, "output", "designs")
+ n = 0
+ for f in os.listdir(outdir):
+ if not f.endswith(".png"):
+ continue
+ did = f.rsplit("-v", 1)[0]
+ if did in palettes:
+ snap(os.path.join(outdir, f), palettes[did])
+ n += 1
+ print(f"snapped {n} images ($0 local)")
+ else:
+ snap(sys.argv[1], palettes[sys.argv[2]])
+ print(f"snapped {sys.argv[1]}")
+
+if __name__ == "__main__":
+ main()
← d55803e auto-save: 2026-07-22T12:44:11 (2 files) — data/designs.json
·
back to Wild Wallcoverings
·
originality firewall: motifs must have own silhouettes/edges 1560656 →