pixelkiln 0.89.3 → 0.89.4

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.
@@ -209,6 +209,15 @@ higher, and it is sent to `/characters/animations`, the endpoint that
209
209
  documents it; every other mode keeps using `/animate-character`. Like a
210
210
  template loop it takes no `frames` and needs no prompt of its own.
211
211
 
212
+ It needs a character PixelLab stored a 3D skeleton for. A `v3` base has
213
+ one (a `skeleton-v3` loop on it billed 3 generations live). A `standard`
214
+ base has none: PixelLab answers `POST /characters/animations` with a bare
215
+ 500 (`Failed to start any animation jobs`, nothing billed) and, asked,
216
+ says to use `mode: "template"` for that character. `plan` and `validate`
217
+ refuse the combination and name the engine. `pro` and `pro-flash` bases
218
+ are not refused, but a `skeleton-v3` loop on one is unverified; try a
219
+ single direction before a batch.
220
+
212
221
  ```jsonc
213
222
  "mira.walk": { "animation": { "of": "mira", "template": "walk", "mode": "skeleton-v3", "directions": ["south", "west", "north"] } }
214
223
  ```
package/docs/ENDPOINTS.md CHANGED
@@ -781,6 +781,14 @@ one size; the higher cost tiers are still unconfirmed under
781
781
  carries `usage` once the job is gone, completed or not. `poll` reads the
782
782
  object/character for the result but would need this same job id, still
783
783
  polled separately today, to learn what it actually cost.
784
+ - **A v3 character base once recorded `billed: {amount: 0, unit: "usd"}`**
785
+ against an estimate of 2 generations while the submit reported 1
786
+ generation consumed. Its job record had expired before the shape could be
787
+ read (jobs are deleted 8 hours after finishing, and the lock had dropped
788
+ the job id), so the real `usage` is unseen; `GET /characters/{id}` carries
789
+ none. `poll` now treats a dollar-denominated zero as not known, tries
790
+ `last_response.billing_usage`, and keeps `backgroundJobId` in the
791
+ character's lock metadata.
784
792
  - **`inpaint-v3` and `edit-images-v2` both confirmed live at their floor
785
793
  size**: a 32×32 masked inpaint and a separate 32×32 whole-image edit each
786
794
  billed exactly 20 generations, both matching a balance diff taken after.
package/docs/PIXELLAB.md CHANGED
@@ -125,8 +125,8 @@ Each has been billed live and matched the plan: Pro sets at 32px (15) and
125
125
  64px (25, 25 tiles at transition 0.5), a second set connected to the first
126
126
  (15), standard sets (3 each), a sidescroller set (3), a 64×64 `imagePro`
127
127
  call with the Game Boy palette (10, every pixel one of its four colours), a
128
- lite described effect (1), and normal maps (0.5 each). The home page shows
129
- the results.
128
+ lite described effect (1), and normal maps (0.5 each). The home page's latest
129
+ updates section shows the results.
130
130
 
131
131
  ## Learn from PixelLab's tutorials
132
132
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pixelkiln",
3
- "version": "0.89.3",
3
+ "version": "0.89.4",
4
4
  "description": "Manifest-driven pixel-art generation, review, recovery, and packaging with deterministic provenance.",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -388,7 +388,11 @@ character with PixelLab's skeleton video model instead of redrawing each
388
388
  frame: the steadiest template loop, 2 to 4 generations and 3 to 5 minutes
389
389
  per direction (plan budgets 4), beta, Tier 1 plans and up. Prefer it over a
390
390
  plain template loop when identity drift matters and the account qualifies;
391
- plain `template` stays the 1-generation option.
391
+ plain `template` stays the 1-generation option. It needs a base with a
392
+ stored 3D skeleton: a `v3` base has one (measured, 3 generations); a
393
+ `standard` base has none, so PixelLab answers a bare 500 and pixelkiln
394
+ refuses the loop at `plan`/`validate`, pointing at `mode: "template"`. `pro`
395
+ and `pro-flash` bases are not refused but are unverified.
392
396
 
393
397
  A named `template` loop (`walk`, `breathing-idle`, and similar) is trained
394
398
  mostly on characters with empty hands, and reliably struggles once a