pixelkiln 0.71.0 → 0.73.0

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.
@@ -363,13 +363,22 @@
363
363
  prompt.placeholder = 'What the loop does, e.g. "a slow idle sway".';
364
364
  prompt.required = true;
365
365
  const mode = el("select");
366
- if (isCharacter) mode.append(new Option("template", "template"));
366
+ if (isCharacter) {
367
+ mode.append(
368
+ new Option("skeleton-v3 (a template, posed by the skeleton model; steadiest)", "skeleton-v3"),
369
+ new Option("template (a template, redrawn; 1 generation)", "template")
370
+ );
371
+ }
367
372
  mode.append(new Option("v3 (text-described)", "v3"), new Option("pro (sequential, high quality)", "pro"));
368
- mode.value = "v3";
373
+ mode.value = isCharacter ? "skeleton-v3" : "v3";
369
374
  const template = el("input");
370
375
  template.type = "text";
371
376
  template.placeholder = "e.g. walk, breathing-idle";
372
- const templateField = field("template id", template, "A PixelLab template; costs 1 generation regardless of frame count.");
377
+ const templateHint = {
378
+ "skeleton-v3": "A PixelLab template posed onto the character by the skeleton model, which moves it instead of redrawing it: steadier identity and colours. 2 to 4 generations and 3 to 5 minutes per direction; beta, Tier 1 plans and up.",
379
+ template: "A PixelLab template, redrawn frame by frame; 1 generation regardless of frame count."
380
+ };
381
+ const templateField = field("template id", template, templateHint.template);
373
382
  const frames = el("input");
374
383
  frames.type = "number";
375
384
  frames.min = "4";
@@ -403,9 +412,11 @@
403
412
  form.append(row2);
404
413
  if (subject) form.append(field("subject override", subject));
405
414
  const syncMode = () => {
406
- const isTemplate = isCharacter && mode.value === "template";
415
+ const isTemplate = isCharacter && (mode.value === "template" || mode.value === "skeleton-v3");
407
416
  templateField.style.display = isTemplate ? "" : "none";
417
+ if (isTemplate) templateField.querySelector("small").textContent = templateHint[mode.value];
408
418
  template.required = isTemplate;
419
+ prompt.required = !isTemplate;
409
420
  row2.style.display = isTemplate ? "none" : "";
410
421
  };
411
422
  if (isCharacter) {
@@ -433,8 +444,9 @@
433
444
  msg.textContent = "saving…";
434
445
  const animation = { of: item.assetId };
435
446
  if (directionField) animation.direction = directionField.select.value;
436
- if (isCharacter && mode.value === "template" && template.value.trim()) {
447
+ if (isCharacter && (mode.value === "template" || mode.value === "skeleton-v3") && template.value.trim()) {
437
448
  animation.template = template.value.trim();
449
+ if (mode.value === "skeleton-v3") animation.mode = "skeleton-v3";
438
450
  } else {
439
451
  animation.mode = mode.value;
440
452
  if (frames.value.trim() !== "") animation.frames = Number(frames.value);