← back to Wallco Ai
drunk-animals: add FASHION_PALETTES (12 luxury-house combinations from common colors of 20 brands)
b78b5d55493f29289488a41e2e857ab05851098f · 2026-05-14 08:12:39 -0700 · SteveStudio2
DRUNK_PALETTE=fashion → fashion-only pool
DRUNK_PALETTE=warhol → original pop pool
default → mixed (Warhol + Fashion)
Palette names describe color FAMILY not brand (no public brand-name exposure per Steve's standing rule). Source: ~/Projects/fashion-style-guides/data/brands.json common-color extraction.
Files touched
M scripts/drunk_animal_prompts.js
Diff
commit b78b5d55493f29289488a41e2e857ab05851098f
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date: Thu May 14 08:12:39 2026 -0700
drunk-animals: add FASHION_PALETTES (12 luxury-house combinations from common colors of 20 brands)
DRUNK_PALETTE=fashion → fashion-only pool
DRUNK_PALETTE=warhol → original pop pool
default → mixed (Warhol + Fashion)
Palette names describe color FAMILY not brand (no public brand-name exposure per Steve's standing rule). Source: ~/Projects/fashion-style-guides/data/brands.json common-color extraction.
---
scripts/drunk_animal_prompts.js | 43 +++++++++++++++++++++++++++++++++++++----
1 file changed, 39 insertions(+), 4 deletions(-)
diff --git a/scripts/drunk_animal_prompts.js b/scripts/drunk_animal_prompts.js
index 301257c..e96c51c 100644
--- a/scripts/drunk_animal_prompts.js
+++ b/scripts/drunk_animal_prompts.js
@@ -106,6 +106,30 @@ const PALETTES = [
'campbell-soup tomato red + sunshine yellow + grass green + matte black',
];
+// Fashion-house-derived palettes pulled from the common-colors map of the
+// top 20 fashion houses (~/Projects/fashion-style-guides/data/brands.json).
+// Each entry is a deliberate 4-color combination of swatches that appear
+// together across the luxury-fashion fleet. Names are descriptive of the
+// COLOR FAMILY, NOT the brand — public-facing prompts must never name a
+// brand (see [[feedback_never_expose_ai_software]] adjacent rule).
+const FASHION_PALETTES = [
+ 'deep forest emerald #0e5c2f + heritage red #9b1b1f + antique gold #b58a2a + warm ivory #f2ece1',
+ 'saddle-leather orange #ff6900 + warm chocolate brown #6b4423 + gold leaf #c8a44a + french cream #f6efe2',
+ 'pure jet black #000000 + crisp white #ffffff + warm beige #e6d6b8 + camellia red #b00020',
+ 'tiffany robin\'s-egg blue #0abab5 + champagne gold #caa84a + bright white #ffffff + ink black #0a0a0a',
+ 'baroque jet black + medusa antique gold #d4af37 + imperial red #b40000 + royal purple #4b1c5e',
+ 'dark gallery green #22443a + ink black #0a0a0a + powder beige #d7c8a8 + lipstick red #c8102e',
+ 'old-money ink black + champagne gold #c8a96a + oxblood maroon #5a1818 + warm bronze #8a6a3a',
+ 'equestrian navy blue #0a2548 + polo red #bf2c2c + saddle tan #a8794a + crisp ivory #f5efe2',
+ 'parakeet kelly green #5cb338 + dark chocolate brown #5b3a1d + caramel tan #c38a4d + warm ivory #f4ede0',
+ 'heritage camel #c8a47a + check black #000000 + check red #b22234 + check white #ffffff',
+ 'vintage powder pink #f3c7c4 + retro mint #b6dcc7 + powder blue #c8d8e6 + buttery cream #f4ecd8',
+ 'rosso red #bc0030 + roman black #0a0a0a + warm ivory #f5efdf + pale rose pink #f7d6d0',
+];
+
+// Combined pool — fashion palettes mix into the regular rotation by default.
+const ALL_PALETTES = [...PALETTES, ...FASHION_PALETTES];
+
const STYLES = [
'classic Andy Warhol silkscreen, 4-panel color-swap repeat, registration offset, halftone grain',
'hand-pulled screen print, ink bleed at every edge, paper-grain texture, slight misregister',
@@ -133,6 +157,17 @@ const COMPOSITIONS = [
'grid-of-portraits Warhol layout, alternating color cells of bouquets',
];
+// Source-pool picker — honors DRUNK_PALETTE env var:
+// 'fashion' → fashion-only
+// 'warhol' → original pop-only
+// anything else (default) → mixed pool
+function pickPaletteSource() {
+ const mode = (process.env.DRUNK_PALETTE || '').toLowerCase();
+ if (mode === 'fashion') return FASHION_PALETTES;
+ if (mode === 'warhol' || mode === 'pop') return PALETTES;
+ return ALL_PALETTES;
+}
+
function pickRand(arr, exclude = new Set()) {
for (let tries = 0; tries < 50; tries++) {
const v = arr[Math.floor(Math.random() * arr.length)];
@@ -152,7 +187,7 @@ function buildPrompt(seed = null) {
return [
pick(ANIMALS), pick(TABLEAUX),
`set among ${pick(BOTANICALS)}`,
- `palette: ${pick(PALETTES)}`,
+ `palette: ${pick(pickPaletteSource())}`,
pick(STYLES),
pick(COMPOSITIONS),
'seamless wallpaper repeat, archival quality, FLOWERS ONLY, NO leaves, NO foliage, NO monstera, NO palm, NO banana, NO tropical, NO jungle, no text or watermark'
@@ -161,7 +196,7 @@ function buildPrompt(seed = null) {
return [
pickRand(ANIMALS), pickRand(TABLEAUX),
`set among ${pickRand(BOTANICALS)}`,
- `palette: ${pickRand(PALETTES)}`,
+ `palette: ${pickRand(pickPaletteSource())}`,
pickRand(STYLES),
pickRand(COMPOSITIONS),
'seamless wallpaper repeat, archival quality, FLOWERS ONLY, NO leaves, NO foliage, NO monstera, NO palm, NO banana, NO tropical, NO jungle, no text or watermark'
@@ -182,7 +217,7 @@ function buildN(n) {
animal,
pickRand(TABLEAUX),
`set among ${pickRand(BOTANICALS)}`,
- `palette: ${pickRand(PALETTES)}`,
+ `palette: ${pickRand(pickPaletteSource())}`,
style,
pickRand(COMPOSITIONS),
'seamless wallpaper repeat, archival quality, FLOWERS ONLY, NO leaves, NO foliage, NO monstera, NO palm, NO banana, NO tropical, NO jungle, no text or watermark'
@@ -192,7 +227,7 @@ function buildN(n) {
return out;
}
-module.exports = { buildPrompt, buildN, ANIMALS, TABLEAUX, BOTANICALS, PALETTES, STYLES, COMPOSITIONS };
+module.exports = { buildPrompt, buildN, ANIMALS, TABLEAUX, BOTANICALS, PALETTES, FASHION_PALETTES, ALL_PALETTES, STYLES, COMPOSITIONS };
if (require.main === module) {
const n = parseInt(process.argv[2] || '5', 10);
← d10ea8d fix(/designs): wrap card in <div> so HTML5 parser stops spli
·
back to Wallco Ai
·
chore(deploy): gitignore .deploy.conf (per-machine config) 1ba619e →