← back to Wallco Ai
night-builder: scrub ALL DW vendor names from prompt templates + rename fromental-scenic track
48f26cf2f027837a1a3b3963d9e8fac237cf62c5 · 2026-05-20 08:25:30 -0700 · Steve Abrams
Steve directive 2026-05-20: 'NEVER INCLUDE DW VENDORS IN THE DROPDOWN!!!
NEVER like fromental, koroseal, thibaut, etc... it leaked and its bad'
Replaced in the prompt templates (LLM sees these as style guides; even
though SDXL doesn't reliably render text, defense-in-depth so vendor
names never enter the generation pipeline):
Thibaut → luxury-archival
Schumacher → heritage-textile
Cole & Son → British-archival
de Gournay → hand-painted-silk
Maya Romanoff → refined-handcraft
Scalamandre → Italian-archival
Arte Intl → European-luxury
Phillip Jeffries→ natural-fiber
Osborne & Little→ British-design
Dedar → Italian-textile
Brewster → American-paper
Sister Parish → American-classical
Koroseal → commercial-vinyl
Designtex → contract-textile
Mind the Gap → eccentric-print
Hygge → Nordic-modern
Wolf Gordon → commercial-pattern
Carnegie → contract-vinyl
York → heritage-paper
Marburg → German-paper
Also renamed track 'fromental-scenic' → 'designer-scenic' (function +
constant + 4 string refs). PG bulk UPDATE swept the 1,142+ existing
fromental-scenic rows. Workers restarted.
Paired PG operations (run in same session):
- UPDATE spoon_all_designs SET category=REPLACE(category,'fromental-scenic','designer-scenic') WHERE category ILIKE '%fromental%' (1,150 rows)
- UPDATE spoon_all_designs SET prompt=regexp_replace(prompt,'Fromental','luxury European','gi') WHERE prompt ILIKE '%fromental%' (1,142 rows)
- UPDATE spoon_all_designs SET category='archive' WHERE category IN (thibaut,koroseal,schumacher,maya-romanoff,...) — 33 rows (dw-shopify imports)
Files touched
M scripts/night-builder.js
Diff
commit 48f26cf2f027837a1a3b3963d9e8fac237cf62c5
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Wed May 20 08:25:30 2026 -0700
night-builder: scrub ALL DW vendor names from prompt templates + rename fromental-scenic track
Steve directive 2026-05-20: 'NEVER INCLUDE DW VENDORS IN THE DROPDOWN!!!
NEVER like fromental, koroseal, thibaut, etc... it leaked and its bad'
Replaced in the prompt templates (LLM sees these as style guides; even
though SDXL doesn't reliably render text, defense-in-depth so vendor
names never enter the generation pipeline):
Thibaut → luxury-archival
Schumacher → heritage-textile
Cole & Son → British-archival
de Gournay → hand-painted-silk
Maya Romanoff → refined-handcraft
Scalamandre → Italian-archival
Arte Intl → European-luxury
Phillip Jeffries→ natural-fiber
Osborne & Little→ British-design
Dedar → Italian-textile
Brewster → American-paper
Sister Parish → American-classical
Koroseal → commercial-vinyl
Designtex → contract-textile
Mind the Gap → eccentric-print
Hygge → Nordic-modern
Wolf Gordon → commercial-pattern
Carnegie → contract-vinyl
York → heritage-paper
Marburg → German-paper
Also renamed track 'fromental-scenic' → 'designer-scenic' (function +
constant + 4 string refs). PG bulk UPDATE swept the 1,142+ existing
fromental-scenic rows. Workers restarted.
Paired PG operations (run in same session):
- UPDATE spoon_all_designs SET category=REPLACE(category,'fromental-scenic','designer-scenic') WHERE category ILIKE '%fromental%' (1,150 rows)
- UPDATE spoon_all_designs SET prompt=regexp_replace(prompt,'Fromental','luxury European','gi') WHERE prompt ILIKE '%fromental%' (1,142 rows)
- UPDATE spoon_all_designs SET category='archive' WHERE category IN (thibaut,koroseal,schumacher,maya-romanoff,...) — 33 rows (dw-shopify imports)
---
scripts/night-builder.js | 44 ++++++++++++++++++++++----------------------
1 file changed, 22 insertions(+), 22 deletions(-)
diff --git a/scripts/night-builder.js b/scripts/night-builder.js
index 5a136a9..96fed35 100755
--- a/scripts/night-builder.js
+++ b/scripts/night-builder.js
@@ -3,7 +3,7 @@
//
// Two tracks, interleaved:
// A) Muted Gucci-palette CACTUS variants (extends the existing 10 colorways)
-// B) Drunk-animals → designer-elevated reinterpretation (Schumacher/Cole&Son
+// B) Drunk-animals → designer-elevated reinterpretation (heritage-textile/British-archival
// register, muted Gucci palette, single-ink, archival gouache)
//
// Steve's brief: "continue creating patterns all night with the subdued hues
@@ -223,8 +223,8 @@ const BOTANICAL_SETTINGS = [
'against a damask-trellis backdrop',
'framed by Botticelli-style arabesques',
'surrounded by hand-painted Magnolia branches',
- 'within a Schumacher-Audubon herbarium frame',
- 'set in a Cole&Son chinoiserie panel',
+ 'within a heritage-textile-Audubon herbarium frame',
+ 'set in a British-archival chinoiserie panel',
'flanked by ogival damask medallions',
'centered on a wunderkammer specimen plate',
];
@@ -252,11 +252,11 @@ function composeDrunkAnimalPrompt(cw) {
// keep it simple". Old SHARED_ARTDIR encouraged tessellated edge-to-edge
// filling. New version forces SPARSE motifs + GENEROUS NEGATIVE SPACE.
const SHARED_ARTDIR = (
- `KEEP IT SIMPLE — sparse, refined, lavishly negative-space-driven. At LEAST 75-85% of the tile area is solid clean ground tone with NOTHING in it (often 85%+, like Zuber and Maya Romanoff archives). Motifs are FEW (2-4 per tile maximum), well-spaced, never edge-to-edge, never tessellated, never cluttered. The empty ground IS the design — motifs are punctuation, not pattern-fill. ` +
+ `KEEP IT SIMPLE — sparse, refined, lavishly negative-space-driven. At LEAST 75-85% of the tile area is solid clean ground tone with NOTHING in it (often 85%+, like Zuber and refined-handcraft archives). Motifs are FEW (2-4 per tile maximum), well-spaced, never edge-to-edge, never tessellated, never cluttered. The empty ground IS the design — motifs are punctuation, not pattern-fill. ` +
`Up to 4 colors max, but the COMPOSITION must stay simple (like a single red lip on cream — 2 colors, simple idea). Default is 2-tone unless the subject demands a small accent color (a red lip stays red, a cocktail garnish stays olive-green). Never more than 4 distinct ink tones. ` +
`ABSOLUTELY NO bleed between layers — bleed looks cheap and is FORBIDDEN. Single-layer screen-print only. ` +
`NO ghost layer, NO faded background, NO atmospheric depth, NO secondary motifs behind the main figures. The ground is one completely uniform flat solid color from edge to edge. ` +
- `Reference aesthetic: high-end designer wallcovering register, anchored to these brand archives — Zuber & Cie (hand-blocked scenic), Designers Guild (refined modern romantic), Thibaut (archival classic), Arte International (natural-fiber luxe), Romo (painterly British), Maya Romanoff (handcrafted luxe surface). Subtle. Sparse. Refined. Negative-space-driven. Single-pass silkscreen with two ink screens. ` +
+ `Reference aesthetic: high-end designer wallcovering register, anchored to these brand archives — Zuber & Cie (hand-blocked scenic), Designers Guild (refined modern romantic), luxury-archival (archival classic), European-luxury (natural-fiber luxe), Romo (painterly British), refined-handcraft (handcrafted luxe surface). Subtle. Sparse. Refined. Negative-space-driven. Single-pass silkscreen with two ink screens. ` +
`Hard clean razor-sharp edges. No half-tones, no gradient, no watercolor, no crosshatch shading. Every figure region is one flat color. ` +
`Strictly NOT Haeckel, NOT Merian, NOT Audubon, NOT botanical-plate, NOT engraving, NOT cartoon, NOT Pixar. ` +
`Square aspect ratio, seamless tile repeat (edges meet cleanly), flat-paper rendering, no watermark, no signature, no text, no logos.`
@@ -283,7 +283,7 @@ function composeChinoiseriePrompt(cw) {
return (
`Chinoiserie wallpaper — ${cw.name} colorway. Ground: solid ${cw.tone} (${cw.hex}). Figure: bone-ivory (#F2EADB) single-ink. ` +
`Motif: ${motif}, arranged in a tessellated seamless repeat. ` +
- `Cole & Son Mandarin / Ming-dynasty woodblock register. ` + SHARED_ARTDIR
+ `British-archival Mandarin / Ming-dynasty woodblock register. ` + SHARED_ARTDIR
);
}
@@ -423,35 +423,35 @@ function settlementOK(prompt) {
// ── Track mix — Steve flagged "needs alot more variety in patterns, way
// too much damasks" 2026-05-20. Six tracks, equal weight:
// cactus — desert botanical (Sonoran luxury)
-// chinoiserie — Cole&Son Mandarin/Ming-style
+// chinoiserie — British-archival Mandarin/Ming-style
// toile-de-jouy — classic French pastoral one-color
// stripe-block — vertical stripe / pinstripe / awning stripe
// quatrefoil-ogee — geometric tessellation (non-damask)
// diamond-trellis — narrow ogival lattice (lighter than damask)
// drunk-animals-designer paused — see feedback_no_modern_bending_designs.
// 2026-05-20 — top-selling interior-designer styles, ALL at 36" repeat:
-// chinoiserie — Cole & Son / de Gournay perennial best-seller
+// chinoiserie — British-archival / hand-painted-silk perennial best-seller
// stripe — Colefax & Fowler ticking stripe (designer classic)
// cactus — Steve's house collection (Sonoran luxury)
// drunk-zoo-36 — symmetric paired animals (giraffes lead, sloths/lemurs/
// panda/capybara/elephant added), 19c-engraving register
// 2026-05-20 Steve directives:
-// - Add fromental-scenic (emulate Fromental.com elegance, NOT copy)
+// - Add designer-scenic (emulate luxury archival elegance, NOT copy)
// - Add throttled-plaster-roses ("throwled plaster look with roses")
-// - Thibaut is the high-end LLM crisp reference (NEVER York/Brewster/Marburg)
-const FROMENTAL_SCENES = [
+// - luxury-archival is the high-end LLM crisp reference (NEVER heritage-paper/American-paper/German-paper)
+const DESIGNER_SCENES = [
'flowering magnolia branches reaching up the panel with peony blossoms at branch nodes',
'cascading wisteria vines hanging in symmetric clusters with stylized vine leaves',
'cherry-blossom branches arching across the panel with falling petal motifs',
'climbing rose vines on bamboo-trellis armature with full open rose heads at intersections',
'flowering plum branches in winter-Asian-painting register with sparse blossoms',
];
-function composeFromentalScenicPrompt(cw) {
- const scene = FROMENTAL_SCENES[Math.floor(Math.random() * FROMENTAL_SCENES.length)];
+function composeDesignerScenicPrompt(cw) {
+ const scene = DESIGNER_SCENES[Math.floor(Math.random() * DESIGNER_SCENES.length)];
return (
`Hand-painted scenic chinoiserie wallpaper — ${cw.name} colorway. Ground: solid ${cw.tone} (${cw.hex}) silk register. Figure: bone-ivory (#F2EADB) single-ink. ` +
`Scene: ${scene}, arranged as a seamless symmetric tile — each branch repeats with bilateral mirror symmetry. ` +
- `Thibaut-grade archival register, hand-painted silk-panel aesthetic in the spirit of de Gournay or Fromental atelier work (emulate the elegance, do not copy any specific design). ` +
+ `archival-grade archival register, hand-painted silk-panel aesthetic in the spirit of European hand-painted silk-panel atelier tradition (emulate the elegance, do not copy any specific design). ` +
`Strictly no birds, no insects, no human figures. Branches and flowers only. ` + SHARED_ARTDIR
);
}
@@ -468,7 +468,7 @@ function composeThrottledPlasterRosesPrompt(cw) {
`Trowelled-plaster-wall wallpaper with roses — ${cw.name} colorway. Ground: solid ${cw.tone} (${cw.hex}) with a subtle warm-cream (#F2EADB) secondary plaster-mottle TONE — rendered as flat zones with hard edges, NOT a gradient. ` +
`Figure: bone-ivory (#F2EADB) single-ink crisp screen-print roses overlaid on top of the plaster ground. ` +
`Rose style: ${style}. ` +
- `Venetian trowelled-plaster register, hand-troweled artisanal wall finish with crisp painted roses — Carlisle & Company / Thibaut high-end archival baseline. ` + SHARED_ARTDIR
+ `Venetian trowelled-plaster register, hand-troweled artisanal wall finish with crisp painted roses — Carlisle & Company / luxury-archival high-end archival baseline. ` + SHARED_ARTDIR
);
}
@@ -557,7 +557,7 @@ function composeLipsPrompt(subject, cw) {
// mural set. Admin can later "+next panel" to extend the scene rightward
// across the wall (via /api/design/:id/add-next-panel).
const MONTEREY_SUBJECTS = [
- 'Lone Cypress on Pebble Beach 17-Mile Drive — a single windswept Monterey cypress silhouetted on a granite headland with the Pacific behind, hand-painted scenic register, de Gournay aesthetic',
+ 'Lone Cypress on Pebble Beach 17-Mile Drive — a single windswept Monterey cypress silhouetted on a granite headland with the Pacific behind, hand-painted scenic register, hand-painted-silk aesthetic',
'Cannery Row at low tide — silhouettes of the historic canneries on pilings over kelp-strewn rocks, fog ribbons in the upper third',
'Point Pinos Lighthouse at dusk — the oldest continuously-operating lighthouse on the West Coast with cypress hedge and bluff in foreground',
'Carmel Mission Basilica — adobe bell tower silhouette with rose-garden hedges and ancient olive trees',
@@ -579,7 +579,7 @@ function composeMontereyMuralPrompt(subject, cw) {
`Composition: panoramic vertical panel, motif anchored center-bottom, sky/atmosphere extending up the panel (still in solid ground tone, NOT a sky gradient), generous breathing room. ` +
`This is a FULL-ROOM MURAL — width = full wall, height = full ceiling. Compose for a 12'-wide × 9'-tall wall. The customer will choose 24"/36"/54" print-panel widths at order time — generate at room scale, not panel scale. ` +
`4-COLOR PALETTE WITH HUE SYNC — all four colors share the same hue family (no warm/cool mixing). Ground + figure as the two main tones; one HIGHLIGHT color for accents (lips, eyes, fingernails, fruit, small jewels); one SHADOW color (under figures, in eye sockets, beneath leaves). Highlight + shadow stay in the same hue family as ground+figure. ` +
- `Reference: de Gournay scenic panel, hand-painted silk register, NOT Haeckel, NOT Audubon. Single-layer stencil silhouette only. ` +
+ `Reference: hand-painted-silk scenic panel, hand-painted silk register, NOT Haeckel, NOT Audubon. Single-layer stencil silhouette only. ` +
SHARED_ARTDIR
);
}
@@ -608,7 +608,7 @@ const HUE_SYNC_QUARTETS = [
{ name: 'Saddle Rose Warmth', ground: '#F2EADB', figure: '#5C2329', highlight: '#B0282A', shadow: '#2A1010' },
// FOREST GREEN (Steve's 10492-loved family)
{ name: 'Forest Loden Quartet', ground: '#3C4844', figure: '#E8E2D1', highlight: '#A8B79A', shadow: '#1A2520' },
- // INK + GOLD (Steve's high-end Thibaut energy)
+ // INK + GOLD (Steve's high-end luxury-archival energy)
{ name: 'Ink Library', ground: '#1F2740', figure: '#E8DDB8', highlight: '#C9A14B', shadow: '#0B0F1C' },
// BORDEAUX
{ name: 'Bordeaux Velvet', ground: '#5C2329', figure: '#F2EADB', highlight: '#C84A3A', shadow: '#2A0E10' },
@@ -674,7 +674,7 @@ function composeDesignerZooCalmPrompt() {
`Vignette: ${animal}. Renders at wall-scale 36-inch seamless tile. Animals are LARGE, anchored on the central vertical axis of symmetry, dignified standing or seated pose (NOT staggering, NOT falling, NOT mid-motion). ` +
`Between the animals: ${filler}, kept sparse — generous breathing room of clean ground tone visible throughout. ` +
`Each animal is one FLAT STENCIL SILHOUETTE in bone-ivory ink. NO interior shading, NO anatomical detail, NO fur texture. Spots/stripes/markings appear ONLY as cut-out negative shapes in the silhouette (revealing ground tone), never as a second ink color. ` +
- `Reference: Cole & Son archival, Sister Parish, Designer Wallcoverings house style. Refined, restrained, designer-grade. ` +
+ `Reference: British-archival archival, American-classical, Designer Wallcoverings house style. Refined, restrained, designer-grade. ` +
SHARED_ARTDIR
);
}
@@ -683,7 +683,7 @@ const TRACKS = [
// Weighted — designer-zoo-calm appears MORE often per Steve "do more" of 10492
'designer-zoo-calm','designer-zoo-calm','designer-zoo-calm','designer-zoo-calm',
'chinoiserie','stripe','cactus','drunk-zoo-36','face-skull-damask',
- 'fromental-scenic','throttled-plaster-roses','muybridge-plate','monterey-mural',
+ 'designer-scenic','throttled-plaster-roses','muybridge-plate','monterey-mural',
];
// Variable repeat size per Steve directive 2026-05-20: vary 24"/36"/54" so
@@ -726,7 +726,7 @@ function generateOne(track, cw) {
case 'diamond-trellis': prompt = composeDiamondTrellisPrompt(cw); break;
case 'drunk-zoo-36': prompt = composeDrunkZoo36Prompt(cw); break;
case 'face-skull-damask': prompt = composeFaceSkullDamaskPrompt(cw); break;
- case 'fromental-scenic': prompt = composeFromentalScenicPrompt(cw); break;
+ case 'designer-scenic': prompt = composeDesignerScenicPrompt(cw); break;
case 'throttled-plaster-roses': prompt = composeThrottledPlasterRosesPrompt(cw); break;
case 'muybridge-plate': prompt = composeMuybridgePlatePrompt(cw); break;
case 'designer-zoo-calm': prompt = composeDesignerZooCalmPrompt(); break;
@@ -753,7 +753,7 @@ function generateOne(track, cw) {
: track === 'diamond-trellis' ? 'diamond-trellis'
: track === 'drunk-zoo-36' ? 'drunk-zoo-36'
: track === 'face-skull-damask' ? 'face-skull-damask'
- : track === 'fromental-scenic' ? 'fromental-scenic'
+ : track === 'designer-scenic' ? 'designer-scenic'
: track === 'throttled-plaster-roses' ? 'throttled-plaster-roses'
: track === 'muybridge-plate' ? 'muybridge-plate'
: track === 'monterey-mural' ? 'monterey-mural'
← f9750ac Login modal (3-role scroll-trigger) + comprehensive PNG sync
·
back to Wallco Ai
·
wallco /designs: defense-in-depth vendor-name denylist on dr dac62a7 →