@cliangdev/conductor 0.27.0 → 0.27.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -240,6 +240,10 @@ destination rewards video over an image.
240
240
  - `audio` — `source: "clip"` (the background clip's own recorded sound — the default when there
241
241
  is one), `"track"` (a separate library track: `trackId` from `upload_creative_media`, plus
242
242
  `volume` and `fadeOutSec`), or `"none"`.
243
+
244
+ A MOTION Creative is one animated frame per placement: it cannot also be a story or a carousel
245
+ (`sequenceKind`/`sequence`) — that is refused with a 422 (`motionNoSequence`). For several beats, make
246
+ one MOTION Creative per beat, or a STILL story/carousel.
243
247
  3. The preview renders three key moments across the timeline into one sheet image (not the finished
244
248
  video). Judge it the same honest way as step 7 above — does the copy's entrance finish before the
245
249
  next beat, does the end card actually hold long enough to read — and get approval before
@@ -22,6 +22,12 @@
22
22
  * loaded (including a bleed layout's CSS background photo, invisible to a
23
23
  * plain <img> check), headline contrast, the accent colour, and the
24
24
  * rendered box size.
25
+ *
26
+ * Presence checks (`missingPhoto`, `missingLockup`, `missingHeadline`): every check above judges what
27
+ * IS on the board, so a board that silently lost its photo or logo used to pass them all. The caller
28
+ * says what the spec requires (`expect`, see expectedElements) and a required element that is absent,
29
+ * collapsed or hidden fails. `bodyDropped` is the one warning in this family: a layout that has no room
30
+ * for the body line at a placement drops it by design, but the author supplied that copy.
25
31
  */
26
32
 
27
33
  /* ── pure math ─────────────────────────────────────────────────────────── */
@@ -86,6 +92,19 @@ export function safeZoneIntrusion(boardRect, nodes, safe) {
86
92
  return issues;
87
93
  }
88
94
 
95
+ /** Pure: what a render requires on the board, from the resolved ad and the brand kit it renders with —
96
+ * `{ photo, lockup, headline }`. A photo is required when the ad has a photo URL (a clip-only background
97
+ * does not need one); a lockup when the kit has a mark or a wordmark (a kit without logos renders none,
98
+ * by design); a headline when the ad has one. Pass the result as `runAssertions`'s `expect`. */
99
+ export function expectedElements(ad, brand) {
100
+ const logos = (brand && brand.logos) || {};
101
+ return {
102
+ photo: Boolean(ad && ad.photoUrl),
103
+ lockup: Boolean(logos.mark || logos.wordmarkLight || logos.wordmarkDark),
104
+ headline: Boolean(ad && ad.headline && String(ad.headline).trim()),
105
+ };
106
+ }
107
+
89
108
  /* ── DOM-dependent (real browser only) ────────────────────────────────────── */
90
109
 
91
110
  const CHECKED_SELECTOR = '.cc-headline, .cc-body, .cc-cta, .cc-lockup';
@@ -116,9 +135,10 @@ function sameRgb(a, b) {
116
135
  /* Runs every check against a live, fitted `.cc-board` and returns
117
136
  * `{ errors, warnings, width, height }`. `placement` is this placement's own
118
137
  * registry entry (pixel size, safe zone); `brand` is the same object handed
119
- * to renderBoard. An empty `errors` array means the frame is safe to ship;
120
- * `warnings` are non-fatal (e.g. a soft, upscaled photo). */
121
- export async function runAssertions(board, placement, brand, { outputScale = 2 } = {}) {
138
+ * to renderBoard; `expect` (optional, see expectedElements) names the elements the spec requires, so a
139
+ * missing one fails. An empty `errors` array means the frame is safe to ship; `warnings` are non-fatal
140
+ * (e.g. a soft, upscaled photo, or a body line the layout drops at this placement). */
141
+ export async function runAssertions(board, placement, brand, { outputScale = 2, expect = null } = {}) {
122
142
  const errors = [];
123
143
  const warnings = [];
124
144
  // The same findings with a stable `rule` id each, for callers (the draft preview) that report them
@@ -128,9 +148,9 @@ export async function runAssertions(board, placement, brand, { outputScale = 2 }
128
148
  errors.push(message);
129
149
  checks.push({ rule, severity: 'error', message });
130
150
  };
131
- const warn = (rule, message) => {
151
+ const warn = (rule, message, extra) => {
132
152
  warnings.push(message);
133
- checks.push({ rule, severity: 'warning', message });
153
+ checks.push({ rule, severity: 'warning', message, ...extra });
134
154
  };
135
155
  const br = rectOf(board);
136
156
 
@@ -155,14 +175,44 @@ export async function runAssertions(board, placement, brand, { outputScale = 2 }
155
175
  }
156
176
  }
157
177
 
178
+ // ── required elements: present, sized and visible (a spec that names them must get them) ──
179
+ if (expect) {
180
+ const shown = (n) => {
181
+ if (!n) return false;
182
+ const r = n.getBoundingClientRect();
183
+ const cs = getComputedStyle(n);
184
+ return r.width > 0 && r.height > 0 && cs.display !== 'none' && cs.visibility !== 'hidden';
185
+ };
186
+ if (expect.headline) {
187
+ const h = board.querySelector('.cc-headline');
188
+ if (!h || !h.textContent.trim() || !shown(h)) fail('missingHeadline', 'the headline is missing from the rendered frame');
189
+ }
190
+ if (expect.lockup && !shown(board.querySelector('.cc-lockup:not(.cc-lockup--spacer)'))) {
191
+ fail('missingLockup', 'the brand logo lockup is missing from the rendered frame (the brand kit has a logo)');
192
+ }
193
+ if (expect.photo) {
194
+ const layer = board.querySelector('.cc-bg-photo') || board.querySelector('.cc-board__band img, .cc-board__card img');
195
+ const hasImage = layer && (layer.tagName === 'IMG'
196
+ ? Boolean(layer.getAttribute('src')) && layer.complete && layer.naturalWidth > 0
197
+ : /url\(/.test(getComputedStyle(layer).backgroundImage || ''));
198
+ if (!shown(layer) || !hasImage) fail('missingPhoto', 'the photo is missing from the rendered frame (the spec has a photo URL)');
199
+ }
200
+ }
201
+ if (board.dataset.bodyDropped === 'true') {
202
+ const layout = board.dataset.layout || 'this layout';
203
+ const key = board.dataset.ratio;
204
+ warn('bodyDropped', `the body line is not shown: the ${layout} layout drops the body at ${key}. Put the words in the headline, or pick another layout or placement.`, { placementKey: key });
205
+ }
206
+
158
207
  const imgs = [...board.querySelectorAll('img')];
159
208
  const broken = imgs.filter((i) => !i.complete || i.naturalWidth === 0).map((i) => i.getAttribute('src'));
160
209
  if (broken.length) fail('image', `image(s) failed to load: ${broken.join(', ')}`);
161
210
 
162
- // A bleed/card layout paints its photo as a CSS background, invisible to
211
+ // A bleed layout paints its photo as a CSS background (the `.cc-bg-photo` layer), invisible to
163
212
  // the <img> check above — probe it directly, the same way a typo'd path
164
213
  // would otherwise export a flat, photo-less board and pass everything else.
165
- const bgImage = getComputedStyle(board).backgroundImage;
214
+ const photoLayer = board.querySelector('.cc-bg-photo');
215
+ const bgImage = getComputedStyle(photoLayer || board).backgroundImage;
166
216
  const bgUrlMatch = /url\("?(.+?)"?\)/.exec(bgImage || '');
167
217
  if (bgUrlMatch && bgUrlMatch[1]) {
168
218
  const probe = await new Promise((done) => {
@@ -37,3 +37,32 @@ export async function ensureBrandFont(brand) {
37
37
  await Promise.all([400, 700].map((w) => document.fonts.load(`${w} 32px "${family}"`).catch(() => [])));
38
38
  }
39
39
  }
40
+
41
+ /* Waits until every picture under `root` has loaded: each <img> (the logo lockup, the badge, a band/card
42
+ * photo) AND each bleed photo layer, which is a CSS background and so is not in `document.images` — the
43
+ * page's `load` event does not wait for it either. Without this a screenshot (the contact sheet most of
44
+ * all, which never ran this wait) could be taken before the photo or logos had arrived: a board with no
45
+ * photo and no logo that nothing flagged. A picture that fails to load resolves anyway; it is
46
+ * assertions.js's job (frame.html) to report it. Browser-only; a no-op outside a document. */
47
+ export async function settleImages(root) {
48
+ if (typeof document === 'undefined') return;
49
+ const scope = root || document;
50
+ const loads = [...scope.querySelectorAll('img')].map((img) => (
51
+ img.complete ? Promise.resolve() : new Promise((done) => {
52
+ img.addEventListener('load', done, { once: true });
53
+ img.addEventListener('error', done, { once: true });
54
+ })
55
+ ));
56
+ for (const layer of scope.querySelectorAll('.cc-bg-photo')) {
57
+ const m = /url\("?(.+?)"?\)/.exec(getComputedStyle(layer).backgroundImage || '');
58
+ if (!m) continue;
59
+ loads.push(new Promise((done) => {
60
+ const probe = new Image();
61
+ probe.onload = done;
62
+ probe.onerror = done;
63
+ probe.src = m[1];
64
+ }));
65
+ }
66
+ await Promise.all(loads);
67
+ await Promise.all([...scope.querySelectorAll('img')].map((img) => (img.decode ? img.decode().catch(() => {}) : null)));
68
+ }
@@ -87,6 +87,8 @@
87
87
  }
88
88
  .cc-board--light .cc-headline { color: var(--cc-ink); }
89
89
  .cc-headline em { font-style: italic; color: var(--cc-accent); }
90
+ .cc-headline em.cc-accent-after-space { margin-left: 0.07em; }
91
+ .cc-headline em.cc-accent-before-space { margin-right: 0.04em; }
90
92
  /* Word spans the motion presets animate: inline-block so transforms apply; the spaces between them stay
91
93
  * plain text, so lines wrap exactly as they do without the spans. */
92
94
  .cc-word { display: inline-block; }
@@ -37,8 +37,8 @@
37
37
  import { resolveAd, resolveSequence, renderBoard, fitBoard } from './render.js';
38
38
  import { placements as DEFAULT_PLACEMENTS } from './placements.js';
39
39
  import { layouts as DEFAULT_LAYOUTS } from './layouts/index.js';
40
- import { ensureBrandFont } from './font.js';
41
- import { runAssertions } from './assertions.js';
40
+ import { ensureBrandFont, settleImages } from './font.js';
41
+ import { runAssertions, expectedElements } from './assertions.js';
42
42
  import { applyMotion, seekBackgroundVideo } from './motion.js';
43
43
 
44
44
  function finish(result) {
@@ -83,10 +83,13 @@ async function main() {
83
83
 
84
84
  await document.fonts.ready;
85
85
  await Promise.all([...document.images].map((img) => (img.decode ? img.decode().catch(() => {}) : null)));
86
+ await settleImages(board); // also the bleed photo layer, a CSS background `document.images` does not list
86
87
  // Motion presets restructure the headline (word spans): build that structure, in its final state,
87
88
  // before fitting, so the type is sized for the layout every captured frame will have.
88
89
  if (spec.motion) applyMotion(board, spec.motion, spec.motion.durationSec || 8, { durationSec: spec.motion.durationSec || 8 });
89
90
  fitBoard(board, placementsReg);
91
+ // What this spec requires on the board: a required element that did not render fails the checks.
92
+ const expect = expectedElements(ad, spec.brand);
90
93
 
91
94
  if (spec.motion) {
92
95
  const durationSec = spec.motion.durationSec || 8;
@@ -102,13 +105,13 @@ async function main() {
102
105
  return true;
103
106
  };
104
107
  // A motion frame is captured at 1x (video), so the photo only needs to cover the placement itself.
105
- window.__assertBoard = async () => runAssertions(board, placement, spec.brand || {}, { outputScale: 1 });
108
+ window.__assertBoard = async () => runAssertions(board, placement, spec.brand || {}, { outputScale: 1, expect });
106
109
 
107
110
  finish({ ok: true, width: placement.w, height: placement.h });
108
111
  return;
109
112
  }
110
113
 
111
- const { errors, warnings, checks, width, height } = await runAssertions(board, placement, spec.brand || {});
114
+ const { errors, warnings, checks, width, height } = await runAssertions(board, placement, spec.brand || {}, { expect });
112
115
  finish({ ok: errors.length === 0, errors, warnings, checks, width, height });
113
116
  } catch (err) {
114
117
  finish({ ok: false, error: String((err && err.message) || err) });
@@ -1,16 +1,23 @@
1
1
  /* bleed — photo covers the whole artboard, text sits over a scrim. */
2
2
 
3
3
  .cc-board--bleed {
4
- background-image: var(--cc-photo);
5
- /* motion.js's Ken Burns pan/zoom (a MOTION creative only) sets --cc-bg-size/--cc-bg-pos on the
6
- board; a background-image has no `transform`, so the zoom/pan is expressed as a growing
7
- background-size and a shifting background-position instead. Unset for STILL: falls back to the
8
- original fixed cover/focal. */
9
- background-size: var(--cc-bg-size, cover);
10
- background-position: var(--cc-bg-pos, var(--cc-focal, 50% 50%));
11
4
  justify-content: flex-end;
12
5
  }
13
6
 
7
+ /* The photo: a real layer under the copy (render.js adds it first, so plain DOM order keeps the panel and
8
+ any clip video above it). `cover` + `no-repeat` mean it can never tile or leave a strip uncovered;
9
+ the focal point is its background-position. motion.js's Ken Burns pan/zoom (a MOTION creative only)
10
+ is a transform on this layer, kept inside the overhang a scale >= 1 gives it; unset for STILL. */
11
+ .cc-bg-photo {
12
+ position: absolute; inset: 0;
13
+ background-image: var(--cc-photo);
14
+ background-repeat: no-repeat;
15
+ background-size: cover;
16
+ background-position: var(--cc-focal, 50% 50%);
17
+ transform: var(--cc-bg-transform, none);
18
+ transform-origin: center center;
19
+ }
20
+
14
21
  /* Fill variant (9x16, 4x5, story): the scrim covers the artboard and the
15
22
  copy is distributed from top to bottom over it. */
16
23
  .cc-board__panel--fill {
@@ -136,6 +136,45 @@ function wrapWordsInPlace(container) {
136
136
  container.appendChild(frag);
137
137
  }
138
138
 
139
+ /* ── accent-pop: how far a word may grow without eating the spaces around it ─────────────────────
140
+ * A scaled inline-block keeps its layout box, so growing it moves its ink into the neighbouring spaces:
141
+ * at 1.18x a long accent word swallowed the space before it ("slightdelay") for the first half second.
142
+ * The pop is therefore limited so each side grows by at most POP_GAP_EM of the font size (two accent words share one space, so each takes only a sliver of it), and only on a
143
+ * side that HAS a space (a word glued to punctuation, like "delay" in "delay.", does not grow towards it);
144
+ * the origin is placed so the growth lands on the open sides. Layout-less environments (a DOM shim)
145
+ * report no width and get the plain, uncapped pop. */
146
+
147
+ const POP_PEAK = 1.18;
148
+ const POP_GAP_EM = 0.04;
149
+
150
+ function hasGap(word, direction) {
151
+ const prop = direction < 0 ? 'previousSibling' : 'nextSibling';
152
+ let node = word[prop];
153
+ // The first/last word of the accent <em> neighbours whatever sits beside the <em> itself.
154
+ if (!node && word.parentNode && word.parentNode.tagName === 'EM') node = word.parentNode[prop];
155
+ if (!node) return true; // a line edge: nothing to run into
156
+ if (node.nodeType !== 3) return false;
157
+ return direction < 0 ? /\s$/.test(node.textContent) : /^\s/.test(node.textContent);
158
+ }
159
+
160
+ /** Pure-ish (reads the word's measured width and font size): `{ peak, originX }` — the largest pop scale
161
+ * that keeps the word clear of its neighbours, and the transform-origin x (percent) that puts the growth
162
+ * on the sides that have a space. */
163
+ function popLimits(word) {
164
+ const width = word.offsetWidth;
165
+ const view = word.ownerDocument && word.ownerDocument.defaultView;
166
+ const size = view && view.getComputedStyle ? parseFloat(view.getComputedStyle(word).fontSize) : NaN;
167
+ if (!(width > 0) || !(size > 0)) return { peak: POP_PEAK, originX: 50 };
168
+ const budget = POP_GAP_EM * size;
169
+ const left = hasGap(word, -1) ? budget : 0;
170
+ const right = hasGap(word, 1) ? budget : 0;
171
+ if (left + right === 0) return { peak: 1, originX: 50 };
172
+ return {
173
+ peak: Math.min(POP_PEAK, 1 + (left + right) / width),
174
+ originX: round2((100 * left) / (left + right)),
175
+ };
176
+ }
177
+
139
178
  /* ── headline (preset-dependent) ──────────────────────────────────────────── */
140
179
 
141
180
  function applyHeadline(board, preset, tSec, inEndCard) {
@@ -189,11 +228,12 @@ function applyHeadline(board, preset, tSec, inEndCard) {
189
228
  const fadeProgress = windowProgress(tSec, ACCENT_POP_FADE_WINDOW[0], ACCENT_POP_FADE_WINDOW[1]);
190
229
  setFade(headline, fadeProgress, null);
191
230
  const popProgress = windowProgress(tSec, ACCENT_POP_POP_WINDOW[0], ACCENT_POP_POP_WINDOW[1]);
192
- // Scale settles 1.18 → 1; brightness pulses up and back to 1, so the end card starts with no jump.
193
- const scale = round2(lerp(1.18, 1, popProgress));
231
+ // Scale settles peak → 1; brightness pulses up and back to 1, so the end card starts with no jump.
194
232
  const brightness = round2(1 + 0.3 * Math.sin(Math.PI * popProgress));
195
233
  accentWords.forEach((w) => {
196
- w.style.transformOrigin = '50% 70%';
234
+ const { peak, originX } = popLimits(w);
235
+ const scale = round2(lerp(peak, 1, popProgress));
236
+ w.style.transformOrigin = `${originX}% 70%`;
197
237
  w.style.transform = scale === 1 ? 'none' : `scale(${scale})`;
198
238
  w.style.filter = brightness === 1 ? 'none' : `brightness(${brightness})`;
199
239
  });
@@ -243,26 +283,28 @@ export function backgroundMotionState(motion, tSec, durationSec) {
243
283
  return { scale: 1, panPct: 0 }; // 'none'
244
284
  }
245
285
 
246
- /* "50% 30%" + a pan percent -> "54% 30%": keeps the focal point's own Y, only
247
- * the X drifts (a Ken Burns pan is always horizontal here). */
248
- function panBackgroundPosition(focal, panPct) {
249
- const parts = String(focal || '50% 50%').trim().split(/\s+/);
250
- const y = parts[1] || '50%';
251
- return `${round2(50 + panPct)}% ${y}`;
286
+ /** Pure: the rect (relative to the board/band/card it fills) the background layer occupies once
287
+ * `backgroundMotionState`'s transform is applied to a layer that exactly fills a `w` x `h` box. The
288
+ * transform is `translateX(panPct%) scale(scale)` (translate first, so the pan is in the BOX's own
289
+ * pixels, not the scaled layer's): a scale >= 1 overhangs each side by (scale - 1) / 2, and the pan is
290
+ * kept inside that overhang, so the layer covers the box at every `t`. Exported for tests. */
291
+ export function backgroundLayerRect(w, h, state) {
292
+ const { scale, panPct } = state;
293
+ const width = w * scale;
294
+ const height = h * scale;
295
+ const left = (w - width) / 2 + (panPct / 100) * w;
296
+ const top = (h - height) / 2;
297
+ return { left, top, right: left + width, bottom: top + height, width, height };
252
298
  }
253
299
 
254
300
  function applyBackgroundMotion(board, motion, tSec, durationSec) {
255
301
  const { scale, panPct } = backgroundMotionState(motion, tSec, durationSec);
256
- // Consumed two ways, both with a no-op fallback so a STILL board (which
257
- // never calls applyMotion at all) is untouched:
258
- // - `.cc-board__band img` / `.cc-board__card img` / `.cc-bg-video`: a real
259
- // transform (band/card layouts, and any layout's clip background video).
260
- // - `.cc-board--bleed`'s own CSS `background-image`: background-size/
261
- // -position, since `transform` does not apply to a background image.
262
- board.style.setProperty('--cc-bg-transform', `scale(${scale}) translateX(${panPct}%)`);
263
- board.style.setProperty('--cc-bg-size', `${round2(scale * 100)}%`);
264
- const focal = board.style.getPropertyValue('--cc-focal') || '50% 50%';
265
- board.style.setProperty('--cc-bg-pos', panBackgroundPosition(focal, panPct));
302
+ // One CSS var, consumed by every layout's photo layer, with a no-op fallback so a STILL board (which
303
+ // never calls applyMotion at all) is untouched: `.cc-bg-photo` (bleed's photo layer),
304
+ // `.cc-board__band img` / `.cc-board__card img` and `.cc-bg-video`. The layer is `cover`-sized, never
305
+ // scaled below 1 and never panned past its overhang, so no edge or repeat can show (see
306
+ // backgroundLayerRect). The focal point stays the layer's own object-/background-position.
307
+ board.style.setProperty('--cc-bg-transform', `translateX(${panPct}%) scale(${scale})`);
266
308
  }
267
309
 
268
310
  /* ── the public entry point ───────────────────────────────────────────────── */
@@ -159,7 +159,11 @@ export function resolveSequence(raw, placements, layouts) {
159
159
  if (!raw.sequenceKind || !Array.isArray(seq) || !seq.length) return [];
160
160
  const last = seq.length - 1;
161
161
  return seq.map((frame, i) => {
162
- const merged = resolveAd({ ...raw, ...frame, sequence: undefined, sequenceKind: undefined }, placements, layouts);
162
+ // A beat inherits the creative for anything it leaves out, and the API sends an unset beat field as
163
+ // null: a null must not overwrite the creative's own value (a beat with `photoUrl: null` rendered
164
+ // with no photo at all).
165
+ const own = Object.fromEntries(Object.entries(frame).filter(([, v]) => v != null));
166
+ const merged = resolveAd({ ...raw, ...own, sequence: undefined, sequenceKind: undefined }, placements, layouts);
163
167
  // null and undefined both mean "not set" (the API sends null): the CTA then lands on the last frame only.
164
168
  merged.showCta = frame.cta != null ? frame.cta : i === last;
165
169
  // Body is per-frame opt-in: a hook frame can be a headline and nothing else.
@@ -260,7 +264,13 @@ function buildHeadline(ad, parent) {
260
264
  return h;
261
265
  }
262
266
  if (m[1]) h.appendChild(document.createTextNode(m[1]));
263
- el('em', null, h).textContent = m[2];
267
+ const em = el('em', null, h);
268
+ em.textContent = m[2];
269
+ // Italic correction: a slanted accent leans into the upright word before it (and its last letter
270
+ // overhangs the word after), so a plain word space reads as no space at all ("slightdelay").
271
+ // Widen only the gaps that are real spaces, never one against glued punctuation.
272
+ if (/\s$/.test(m[1])) em.classList.add('cc-accent-after-space');
273
+ if (/^\s/.test(m[3])) em.classList.add('cc-accent-before-space');
264
274
  if (m[3]) h.appendChild(document.createTextNode(m[3]));
265
275
  return h;
266
276
  }
@@ -405,6 +415,7 @@ export function renderBoard(ad, placementKey, placements, layouts, brand, opts)
405
415
  (ad.isSequence ? ' cc-board--seq' : '') +
406
416
  (ad.isStory ? ' cc-board--story' : ''));
407
417
  board.dataset.ratio = placementKey;
418
+ board.dataset.layout = kind;
408
419
 
409
420
  applyBrandTokens(board, brand);
410
421
  board.style.setProperty('--cc-board-w', placement.w + 'px');
@@ -435,6 +446,11 @@ export function renderBoard(ad, placementKey, placements, layouts, brand, opts)
435
446
  let panel;
436
447
  if (photoType === 'background') {
437
448
  board.style.setProperty('--cc-photo', ad.photoUrl ? 'url("' + ad.photoUrl + '")' : 'none');
449
+ // The photo is its own layer, not the board's background: a MOTION creative's Ken Burns zoom/pan is a
450
+ // transform on this layer, which always covers the board (cover, no-repeat) whatever the zoom. A
451
+ // background-size percentage on the board did not: it was relative to the photo's WIDTH, so a
452
+ // landscape photo on a tall board ended up shorter than the board and tiled (see motion.js).
453
+ if (ad.photoUrl) el('div', 'cc-bg-photo', board).setAttribute('aria-hidden', 'true');
438
454
  // The video (when present) must land BEFORE the panel, so the panel's own
439
455
  // stacking (position:relative, later in the DOM) renders above it.
440
456
  if (ad.backgroundVideoUrl) buildBgVideo(board, ad.backgroundVideoUrl);
@@ -474,6 +490,9 @@ export function renderBoard(ad, placementKey, placements, layouts, brand, opts)
474
490
  if (ad.body && !dropBody) {
475
491
  el('p', 'cc-body', panel).textContent = ad.body;
476
492
  }
493
+ // A layout may not have room for a body line at some placements (stacked at 4x5): keep that behaviour,
494
+ // but record it on the board so runAssertions can warn that supplied copy is not on the artwork.
495
+ if (ad.body && dropBody) board.dataset.bodyDropped = 'true';
477
496
  if (ad.showCta !== false) buildCta(brand, panel, placement);
478
497
 
479
498
  if (opts.safe && placement.safe.bottom) {
@@ -15,7 +15,7 @@
15
15
  * // motionKeyTimes()): one ROW per time, each row
16
16
  * // holding every placement in placementKeys at
17
17
  * // that time. Ignored for a sequence creative
18
- * // (MOTION creatives never carry a sequence).
18
+ * // (the backend refuses a MOTION creative with a sequence).
19
19
  * }
20
20
  *
21
21
  * Result contract: window.__RENDER_RESULT = { ok: true, width, height } |
@@ -25,7 +25,7 @@
25
25
  import { resolveAd, resolveSequence, renderBoard, fitAll } from './render.js';
26
26
  import { placements as DEFAULT_PLACEMENTS } from './placements.js';
27
27
  import { layouts as DEFAULT_LAYOUTS } from './layouts/index.js';
28
- import { ensureBrandFont } from './font.js';
28
+ import { ensureBrandFont, settleImages } from './font.js';
29
29
  import { applyMotion } from './motion.js';
30
30
 
31
31
  const SHEET_SCALE = 0.34;
@@ -105,6 +105,11 @@ async function main() {
105
105
  keys.forEach((key) => addCell(ad, key, (placementsReg[key] && placementsReg[key].label) || key));
106
106
  }
107
107
 
108
+ // Every photo and logo must have arrived before fitting (a logo's width shapes the layout) and
109
+ // before the job screenshots the sheet: a sheet captured mid-load showed boards with no photo and no
110
+ // logo, which read as a render that had dropped them.
111
+ await settleImages(sheet);
112
+
108
113
  // Fit every board at its TRUE, unscaled size first (a CSS transform
109
114
  // shrinks the measured rect and would throw fitBoard's line-count math
110
115
  // off), then apply the display scale — the same order mount.js uses.
@@ -134,6 +134,8 @@
134
134
  }
135
135
  .cc-board--light .cc-headline { color: var(--cc-ink); }
136
136
  .cc-headline em { font-style: italic; color: var(--cc-accent); }
137
+ .cc-headline em.cc-accent-after-space { margin-left: 0.07em; }
138
+ .cc-headline em.cc-accent-before-space { margin-right: 0.04em; }
137
139
  /* Word spans the motion presets animate: inline-block so transforms apply; the spaces between them stay
138
140
  * plain text, so lines wrap exactly as they do without the spans. */
139
141
  .cc-word { display: inline-block; }
@@ -245,16 +247,23 @@
245
247
  /* bleed — photo covers the whole artboard, text sits over a scrim. */
246
248
 
247
249
  .cc-board--bleed {
248
- background-image: var(--cc-photo);
249
- /* motion.js's Ken Burns pan/zoom (a MOTION creative only) sets --cc-bg-size/--cc-bg-pos on the
250
- board; a background-image has no `transform`, so the zoom/pan is expressed as a growing
251
- background-size and a shifting background-position instead. Unset for STILL: falls back to the
252
- original fixed cover/focal. */
253
- background-size: var(--cc-bg-size, cover);
254
- background-position: var(--cc-bg-pos, var(--cc-focal, 50% 50%));
255
250
  justify-content: flex-end;
256
251
  }
257
252
 
253
+ /* The photo: a real layer under the copy (render.js adds it first, so plain DOM order keeps the panel and
254
+ any clip video above it). `cover` + `no-repeat` mean it can never tile or leave a strip uncovered;
255
+ the focal point is its background-position. motion.js's Ken Burns pan/zoom (a MOTION creative only)
256
+ is a transform on this layer, kept inside the overhang a scale >= 1 gives it; unset for STILL. */
257
+ .cc-bg-photo {
258
+ position: absolute; inset: 0;
259
+ background-image: var(--cc-photo);
260
+ background-repeat: no-repeat;
261
+ background-size: cover;
262
+ background-position: var(--cc-focal, 50% 50%);
263
+ transform: var(--cc-bg-transform, none);
264
+ transform-origin: center center;
265
+ }
266
+
258
267
  /* Fill variant (9x16, 4x5, story): the scrim covers the artboard and the
259
268
  copy is distributed from top to bottom over it. */
260
269
  .cc-board__panel--fill {
@@ -1 +1 @@
1
- {"version":3,"file":"creative-drafts.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/creative-drafts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"creative-drafts.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/creative-drafts.ts"],"names":[],"mappings":"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"}
@@ -299,6 +299,7 @@ export async function previewCreativeDraft(params, config, options = {}) {
299
299
  const checks = manifest.checks ?? [];
300
300
  const failing = checks.filter((c) => c.severity === 'error');
301
301
  const passed = manifest.passed ?? failing.length === 0;
302
+ const advisories = checks.filter((c) => c.severity !== 'error');
302
303
  return {
303
304
  ok: true,
304
305
  committed: false,
@@ -313,7 +314,10 @@ export async function previewCreativeDraft(params, config, options = {}) {
313
314
  ...(note ? { note } : {}),
314
315
  nextStep: passed
315
316
  ? 'Nothing has been saved to Conductor. All placement checks passed. Show the image to the person and ask whether to approve it. ' +
316
- 'Only after they approve, call commit_creative_draft({draftDir}); to change something, call preview_creative_draft again.'
317
+ 'Only after they approve, call commit_creative_draft({draftDir}); to change something, call preview_creative_draft again.' +
318
+ (advisories.length
319
+ ? ` Warnings (they do not block, but tell the person when you show the image): ${summariseChecks(advisories)}`
320
+ : '')
317
321
  : `NOT ready for approval: ${failing.length} placement check${failing.length === 1 ? '' : 's'} failed (${summariseChecks(failing)}) — ` +
318
322
  'the full render would fail them after the person approved. Nothing has been saved. Fix the design (shorter copy, a different layout, ' +
319
323
  'layoutOverrides, typeOverrides, or drop the body) and call preview_creative_draft again until `passed` is true. Do not ask the person to ' +
@@ -1 +1 @@
1
- {"version":3,"file":"creative-drafts.js","sourceRoot":"","sources":["../../../src/mcp/tools/creative-drafts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"creative-drafts.js","sourceRoot":"","sources":["../../../src/mcp/tools/creative-drafts.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cliangdev/conductor",
3
- "version": "0.27.0",
3
+ "version": "0.27.1",
4
4
  "description": "Agentic software development platform — AI-driven PRD, implementation, and beyond",
5
5
  "license": "SEE LICENSE IN ../LICENSE",
6
6
  "repository": {