pixelkiln 0.89.5 → 0.89.6

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.
package/docs/ENDPOINTS.md CHANGED
@@ -894,6 +894,34 @@ Listed so the gaps are known rather than assumed away:
894
894
  `animate-character`, portraits, and outfit transfer are covered in full; see
895
895
  the September 2026 measurements below.
896
896
 
897
+ ## Skeleton-driven motion, measured
898
+
899
+ October 2026, on a v3 character (64×64, `pixen_v3`), each billed exactly 3
900
+ generations and finished in about two minutes:
901
+
902
+ - **`POST /animate-with-skeleton-v3`** (pixelkiln's `animate-skeleton`):
903
+ 8 hand-edited poses on a 64×64 sprite returned 8 frames at 64×64, matching
904
+ PixelLab's anchor (8 frames = 3). `description` and `action` are both
905
+ required. Sent with neither, the endpoint answers `422` with a field
906
+ error for each, and a failed request bills nothing. The completed job's
907
+ `last_response` carries `images` (base64, `width`, `height`), `flow_kind`,
908
+ and `billing_usage` beside the top-level `usage`.
909
+ - **`POST /characters/animations`, `mode: "skeleton-v3"` with no
910
+ `template_animation_id`** (PixelLab's new custom motion): a one-sentence
911
+ `action_description` and `frame_count` 8 returned 8 frames at **96×96**
912
+ (the character's own canvas grows from 64) in one job for `south`, saved
913
+ onto the character as an animation (`animation_id`, `animation_group_id`),
914
+ and billed 3. The submit answers `{ background_job_ids, directions,
915
+ animation_group_id, status, enhanced_prompt, enhance_usage }`. The finished
916
+ job's `last_response` has `images`, `storage_urls.frames`,
917
+ `generation_model: "skeleton-v3_custom"`, `animation_description`, and
918
+ `billing_usage: {usd: 0, type: "generations", generations: 3}`, the same
919
+ nested field as the other character jobs, which is where `poll` looks when
920
+ the top-level amount is a dollar zero. PixelLab says the action is written
921
+ into one 3D motion that every direction is drawn from, so later directions
922
+ added with `animation_group_id` move the same way (humanoids). pixelkiln
923
+ does not send this mode yet.
924
+
897
925
  ## Characters, measured
898
926
 
899
927
  - Standard bases draw on a canvas 28px larger than `image_size` (64 → 92,
package/docs/REVISIONS.md CHANGED
@@ -553,11 +553,15 @@ Cost uses PixelLab's own documented anchors (3 frames = 2 generations, 8 = 3,
553
553
  15 = 4 — barely moving with length, unlike `animate`/`animate-pixminimax`'s
554
554
  canvas-area formula) and interpolates between the nearest two for any
555
555
  in-between frame count, ceiling'd — the safe direction for `--budget` — since
556
- no in-between value is confirmed live. **Neither `animate-with-skeleton-v3`
557
- nor `estimate-skeleton` has been exercised against a live account**; request
558
- field names come from the live `animate_with_skeleton_v3` MCP tool schema
559
- (the same authoritative source already trusted for the character/object
560
- family), not an observed call.
556
+ no in-between value is confirmed live. **Both have now run live once**
557
+ (October 2026): `estimate-skeleton` on a 64×64 sprite, then an 8-frame
558
+ `animate-skeleton` revision of it billed exactly 3 generations, matching the
559
+ anchor, and returned 8 frames at the sprite's own 64×64 size. The endpoint
560
+ **requires both `description` and `action`**: the asset's `prompt` is sent as
561
+ `action` (a short motion label such as "wave"), and `revision.description`
562
+ (what the character looks like) is sent as `description`. Without a
563
+ `description` PixelLab answers `422` with `description: Field required`,
564
+ and `plan` does not catch that yet.
561
565
 
562
566
  ComfyUI does not support this mode either, for the same structural reason as
563
567
  `animate`/`animate-pixminimax`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pixelkiln",
3
- "version": "0.89.5",
3
+ "version": "0.89.6",
4
4
  "description": "Manifest-driven pixel-art generation, review, recovery, and packaging with deterministic provenance.",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -297,8 +297,9 @@ and which tutorial(s) demonstrated real (not hypothetical) demand for it.
297
297
  is wrapped too, but deliberately kept outside the manifest pipeline — a
298
298
  standalone `pixelkiln estimate-skeleton` CLI command, not a
299
299
  `resolveSpecs`/`estimate()`-time call — so `animate-skeleton`'s submission
300
- composes exactly one never-tested-live PixelLab endpoint, not two chained
301
- together. **Correcting this catalog's own prior research**: this entry
300
+ composes exactly one PixelLab endpoint, not two chained together. Both
301
+ endpoints have since run live once (8 frames billed exactly 3), and the
302
+ run found that `description` is required: `plan` does not check for it yet. **Correcting this catalog's own prior research**: this entry
302
303
  used to also claim a distinct "animation to animation" endpoint existed,
303
304
  for transferring an existing walk cycle's motion onto a different
304
305
  character. Checked against the live `animate_with_skeleton_v3` MCP tool
@@ -516,6 +517,20 @@ missing:
516
517
  Aseprite. pixelkiln has no frame-set concatenation; `lastFrame` can pin a
517
518
  clip's ending to another clip's frame file, but the two sets stay separate.
518
519
 
520
+ ## Sentence-driven skeleton-v3 loops
521
+
522
+ PixelLab's October 2026 character-creator update adds custom animation on the
523
+ skeleton v3 model: a sentence becomes one 3D motion that every direction of
524
+ the animation is drawn from, so a direction added later moves the same way.
525
+ It is `POST /characters/animations` with `mode: "skeleton-v3"`, an
526
+ `action_description`, and no `template_animation_id` (3 to 15 frames, humanoid
527
+ v3 characters). **Measured once**: an 8-frame south loop billed exactly 3 and
528
+ came back at 96×96 (docs/ENDPOINTS.md, "Skeleton-driven motion, measured").
529
+ Still a gap: a character loop's `mode: "skeleton-v3"` needs a `template`,
530
+ and the request never sends `action_description` for it. Closing it means a
531
+ loop that names `skeleton-v3` and a `prompt` without a template, a
532
+ `frames` count from 3 to 15, and adding a direction to an existing group.
533
+
519
534
  ## Map Workshop (scene composition)
520
535
 
521
536
  PixelLab's actual scene-building surface: lay out a tile floor, place