pixelkiln 0.68.1 → 0.69.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.
package/docs/CLI.md CHANGED
@@ -6,8 +6,8 @@ pixelkiln <command> [options]
6
6
 
7
7
  Unknown commands, positional arguments, and flags are errors. The only
8
8
  positional words accepted are a command's own subcommands (`refine approve`,
9
- `workspace add <manifest>`, and the like) and `estimate-skeleton`'s one image
10
- path. Repeated `--style`, `--only`, `--claims`, and `--output-role` values
9
+ `workspace add <manifest>`, and the like), `estimate-skeleton`'s one image
10
+ path, and `skeleton-preview`'s keypoints file or asset id. Repeated `--style`, `--only`, `--claims`, and `--output-role` values
11
11
  accumulate; comma-separated values work too. This strict parsing prevents a misspelled filter
12
12
  from widening a paid run.
13
13
 
@@ -55,6 +55,7 @@ Which command:
55
55
  | shrink upscaled outside art to its native grid before using it as a reference | `pixelkiln unzoom --from refs/knight-512.png --out refs/knight.png` |
56
56
  | generate a pixel font (`.ttf` plus glyph atlas) | `pixelkiln font --description "warm orange arcade font" --out fonts/arcade` |
57
57
  | start an `animate-skeleton` keypoints file from an image | `pixelkiln estimate-skeleton poses/hero.png --out poses/hero-swing.json` |
58
+ | see a keypoints file's poses over the source before paying | `pixelkiln skeleton-preview hero-swing` |
58
59
  | work across several projects | `pixelkiln workspace add ../other/pixelkiln.manifest.json`, then `--workspace` on `gallery` and `salvage` |
59
60
 
60
61
  Every command takes `--manifest <file>` when the manifest is not in the
@@ -875,7 +876,8 @@ See [derived artifacts](./ARTIFACTS.md) and [tiles](./TILES.md).
875
876
  Three commands call PixelLab on loose files rather than manifest assets. None
876
877
  reads the manifest or touches the lockfile; all three load `PIXELLAB_API_KEY`
877
878
  from the environment or a `.env.local`/`.env` beside `--manifest` or in the
878
- working directory, the same as every other command.
879
+ working directory, the same as every other command. A fourth,
880
+ `skeleton-preview`, is their local companion and calls nothing.
879
881
 
880
882
  ### `unzoom`
881
883
 
@@ -929,19 +931,44 @@ an image, so there is nothing for the lockfile's provenance model to hold.
929
931
  ### `estimate-skeleton`
930
932
 
931
933
  ```bash
932
- pixelkiln estimate-skeleton <image> [--out keypoints.json]
934
+ pixelkiln estimate-skeleton <image> [--out keypoints.json] [--frames 4] [--force]
933
935
  ```
934
936
 
935
937
  PixelLab only. Derives an 18-joint skeleton from an image via
936
- `/estimate-skeleton` and prints the keypoints JSON, or writes it with `--out`.
937
- Same category as `balance`: a direct, un-budgeted account call outside the
938
- manifest/plan/lock pipeline — no manifest is read beyond locating
939
- `.env.local`, and nothing is written to a lockfile. This is how to bootstrap
940
- an `animate-skeleton` revision's `keypointsFile` (see
941
- [Controlled asset revisions](./REVISIONS.md#skeleton-driven-animation)):
942
- estimate once, sanity-check the result, hand-tweak a few joints for
943
- in-between frames, rather than hand-authoring 18 joints of
944
- `{label, x, y, z_index}` from scratch.
938
+ `/estimate-skeleton`. The image must be square at 16, 32, 64, 128, or 256
939
+ pixels, the sizes the endpoint takes; anything else is refused before the
940
+ call. Same category as `balance`: a direct, un-budgeted account call outside
941
+ the manifest/plan/lock pipeline — no manifest is read beyond locating
942
+ `.env.local`, and nothing is written to a lockfile.
943
+
944
+ The output is a whole keypoints file, the shape an `animate-skeleton`
945
+ revision's `keypointsFile` must be (see
946
+ [Controlled asset revisions](./REVISIONS.md#skeleton-driven-animation)): the
947
+ estimated pose as `firstFrameKeypoints`, and `--frames` copies of it (3–15,
948
+ default 4) as the frames to move into the motion. It prints, or writes to
949
+ `--out`; `--out` refuses to replace an existing file, which is usually hand
950
+ edits, unless `--force` is given.
951
+
952
+ ### `skeleton-preview`
953
+
954
+ ```bash
955
+ pixelkiln skeleton-preview <keypoints.json> [--from image.png] [--out sheet.png]
956
+ pixelkiln skeleton-preview <asset> [--style <id>] [--out sheet.png]
957
+ ```
958
+
959
+ Draws every pose of a keypoints file over its source image as one PNG, the
960
+ starting pose first at full strength and each frame after it over a dimmed
961
+ copy. Right-side bones are orange, left-side blue, the head and spine white.
962
+ Local and free: nothing is sent anywhere. Given an `animate-skeleton` asset
963
+ id, it reads the revision's `keypointsFile` and source image from the
964
+ manifest; given a file, `--from` names the image (without one, poses are drawn
965
+ on a plain ground). The sheet is written beside the keypoints file as
966
+ `<name>.preview.png` unless `--out` says otherwise. A file that does not parse
967
+ fails with the same message `plan` would give.
968
+
969
+ Use it after `estimate-skeleton` and after every hand edit: PixelKiln cannot
970
+ check that the starting pose matches what the image shows, and a mismatch
971
+ degrades every generated frame without an error.
945
972
 
946
973
  ## Utility commands
947
974
 
@@ -958,6 +985,7 @@ Print the package version. `-v` is an alias.
958
985
  | Option | Applies to | Meaning |
959
986
  |---|---|---|
960
987
  | `--manifest <path>` | manifest commands | Manifest path; defaults to `pixelkiln.manifest.json`. |
988
+ | `--frames <n>` | `estimate-skeleton` | Frames to scaffold after the estimated pose, 3–15; default 4. |
961
989
  | `--lock <path>` | manifest commands | Lock path; defaults beside the manifest. |
962
990
  | `--style a,b` | most workflows | Restrict styles; repeatable. |
963
991
  | `--only id1,id2` | most workflows | Restrict asset ids; repeatable. An `animation.directions` shorthand id selects every loop and mirror it expands into. |
package/docs/REVISIONS.md CHANGED
@@ -344,10 +344,16 @@ inline pixels. It must match the shape `src/skeleton.ts`'s `SkeletonSetSchema`
344
344
  validates: `{"firstFrameKeypoints": [...18 joints], "frames": [[...18
345
345
  joints], ...3 to 15 of them]}`, each joint `{"label": "RIGHT KNEE", "x": 0.52,
346
346
  "y": 0.71, "z_index": 9, "depth": 4}` (`depth` optional — PixelLab fills it
347
- from `skeletonTemplate`, default `mannequin`, when omitted). Bootstrap this
348
- file with `pixelkiln estimate-skeleton <image> --out poses/hero-swing.json`
349
- (see [CLI reference](./CLI.md#estimate-skeleton)) rather than hand-typing 18
350
- joints from scratch, then hand-tweak individual joints for in-between frames.
347
+ from `skeletonTemplate`, default `mannequin`, when omitted). `label` is one
348
+ of PixelLab's 18 joints (`NOSE`, `NECK`, `RIGHT`/`LEFT` `SHOULDER`, `ELBOW`,
349
+ `ARM` for the wrist, `HIP`, `KNEE`, `LEG` for the ankle, `EYE`, `EAR`), each
350
+ exactly once per pose; a misspelled or repeated joint fails when the manifest
351
+ loads. Bootstrap this file with
352
+ `pixelkiln estimate-skeleton <image> --out poses/hero-swing.json` (see
353
+ [CLI reference](./CLI.md#estimate-skeleton)), which writes the estimated pose
354
+ and four copies of it as frames, then move joints frame by frame. Check each
355
+ edit with `pixelkiln skeleton-preview hero-swing`, which draws every pose
356
+ over the source image, locally and for free.
351
357
 
352
358
  `direction` is **required** for this mode (unlike `animate-pixminimax`,
353
359
  where it is optional). `frames`/`fps`/`lastFrame`/`enhancePrompt` are all
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pixelkiln",
3
- "version": "0.68.1",
3
+ "version": "0.69.0",
4
4
  "description": "Manifest-driven pixel-art generation, review, recovery, and packaging with deterministic provenance.",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -111,8 +111,8 @@ Read only the reference needed for the current decision:
111
111
 
112
112
  - For PixelLab configuration, generators (including `uiElement` for single UI
113
113
  pieces and `imageProFlash` for styled stills), costs, alpha behavior,
114
- account operations, or the `unzoom`, `font`, and `estimate-skeleton`
115
- utilities, read [references/pixellab.md](references/pixellab.md). For a
114
+ account operations, or the `unzoom`, `font`, `estimate-skeleton`, and
115
+ `skeleton-preview` utilities, read [references/pixellab.md](references/pixellab.md). For a
116
116
  PixelLab style aimed at a specific resolution or fidelity tier (retro,
117
117
  high-detail, or matching an existing set's look), read
118
118
  [references/pixellab-fidelity.md](references/pixellab-fidelity.md) first.
@@ -460,7 +460,8 @@ pixel art to its native grid; run it before outside art becomes a
460
460
  cost unmeasured). `pixelkiln font --description <text> --out <base>` writes a
461
461
  `.ttf` and an 80-glyph atlas for PixelLab's documented 25 generations, and
462
462
  asks first. `pixelkiln estimate-skeleton <image> --out <file>` starts an
463
- `animate-skeleton` keypoints file. See `docs/CLI.md`, "PixelLab utilities".
463
+ `animate-skeleton` keypoints file, and `pixelkiln skeleton-preview <asset>`
464
+ draws its poses over the source for free. See `docs/CLI.md`, "PixelLab utilities".
464
465
 
465
466
  For a style aimed at a specific look (a
466
467
  retro/console feel or a
@@ -50,7 +50,11 @@ Read this reference when an asset declares `revision`.
50
50
  poses. It needs `direction`; `prompt` names the motion and the optional
51
51
  `description` says what the subject looks like. Bootstrap the file with
52
52
  `pixelkiln estimate-skeleton <image> --out <file>` (a direct call, outside
53
- any budget, like `balance`), then edit the frame poses by hand. Plan cost
53
+ any budget, like `balance`; square 16–256px images only), which writes the
54
+ estimated pose plus `--frames` copies (default 4) to edit. Joint labels are
55
+ PixelLab's 18 names, each once per pose. After every edit, run
56
+ `pixelkiln skeleton-preview <asset>` (local, free) and look at the sheet:
57
+ the starting pose must match the sprite, or every frame degrades silently. Plan cost
54
58
  interpolates PixelLab's documented anchors (3 frames = 2, 8 = 3, 15 = 4);
55
59
  like the other animate modes it lands in candidate review and is
56
60
  unmeasured live.