pixelkiln 0.40.0 → 0.41.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
@@ -177,9 +177,13 @@ changed upstream, after editing it in the provider's own editor, for
177
177
  example. Unchanged objects are reported as such and left alone; a changed
178
178
  object replaces the local file only if that file still hashes to what
179
179
  PixelKiln wrote, so a local hand edit is never overwritten without `--force`.
180
- The lockfile then records the new bytes as this generation. Objects with no
181
- durable reference (PixelLab pixflux images, for one) are not eligible; use
182
- `pixelkiln edit` for those.
180
+ The lockfile then records the new bytes as this generation. A character's
181
+ rotations and frames are re-resolved from the character itself first, since
182
+ PixelLab stamps their URLs with the last edit time and a cache can keep
183
+ serving an old stamp; a character deleted upstream fails its entry instead
184
+ of silently keeping the old bytes. Objects with no durable reference
185
+ (PixelLab pixflux images, for one) are not eligible; use `pixelkiln edit`
186
+ for those.
183
187
 
184
188
  When a style sets `enforcePalette`, `fetch` snaps each downloaded PNG to the
185
189
  style's palette before writing it and records the raw hash and the palette on
@@ -401,9 +405,10 @@ lock entry is shown at integer zoom on a transparency checkerboard, grouped by
401
405
  style, with its provenance one click away: the prompt actually sent, provider
402
406
  and generator, dimensions, recorded cost, lock status and plan state, submit
403
407
  and download times, job and object ids, every output with its path, SHA-256,
404
- size, and on-disk status, revision lineage, the quality record (palette,
405
- native-grid detection, audit, named approval), the manifest asset as declared,
406
- and raw provider metadata.
408
+ size, and on-disk status, revision lineage, a character's parent and the
409
+ states and loops that hang off it, the quality record (palette, native-grid
410
+ detection, audit, named approval), the manifest asset as declared, and raw
411
+ provider metadata.
407
412
 
408
413
  ```bash
409
414
  pixelkiln gallery
package/docs/ENDPOINTS.md CHANGED
@@ -289,6 +289,13 @@ once a 1-generation re-roll exists: forty re-rolls cost one `1dir` call.
289
289
  - `pixflux`/`pixen`/`bitforge` results are **not account objects** at all.
290
290
  Bytes come back inline and are never listed. `adopt` and `salvage` cannot see
291
291
  them, and they cannot be tagged.
292
+ - Character rotation and frame URLs live at a stable path under
293
+ `backblaze.pixellab.ai/file/pixellab-characters/...` but carry
294
+ `?t=<updated_at as epoch seconds>`, and the response is
295
+ `cache-control: public, max-age=31536000`. The path serves the current
296
+ bytes with any `t` (checked September 2026), but a cache between you and
297
+ the bucket may not, so `fetch --refresh` reads `GET /characters/{id}` for
298
+ the current stamp before comparing. Object URLs carry no stamp.
292
299
 
293
300
  ---
294
301
 
@@ -182,7 +182,10 @@ canvas lands in. Every direction of a base or state is one file
182
182
  (`<asset>-south.png`, ...); an animation's frames are `<asset>-frame-00.png`
183
183
  onwards, with the resting pose as frame 0 unless `keepFirstFrame` is off.
184
184
  `enforcePalette` snaps all of them. `pack --format godot` writes each base
185
- direction as a still and each animation as a looping set. See
185
+ direction as a still and each animation as a looping set. The gallery
186
+ labels a state or loop with its parent ("state of hero", "loop of
187
+ hero.sit, east"), links parent and children in the record, and counts the
188
+ family in the style header ("3 characters, 4 states, 6 loops"). See
186
189
  [Characters](./MANIFEST.md#characters).
187
190
 
188
191
  ## Style variants
package/docs/PIXELLAB.md CHANGED
@@ -108,6 +108,13 @@ new bytes as this generation. A `pixflux` image is returned inline and keeps no
108
108
  account object, so it cannot be edited upstream; use `pixelkiln edit` to touch
109
109
  it up locally.
110
110
 
111
+ A character edited in PixelLab's character editor comes back the same way.
112
+ Its rotation and frame URLs carry the last edit time (`?t=`), so a refresh
113
+ asks `GET /characters/{id}` for the current URLs before comparing bytes
114
+ rather than trusting the ones the lockfile recorded, and records the new
115
+ URLs. A refreshed base makes its states and animations stale, because their
116
+ identity hashes the base's south file; `pixelkiln gen` regenerates them.
117
+
111
118
  PixelLab's official
112
119
  [MCP server](https://github.com/pixellab-code/pixellab-mcp) gives agents direct
113
120
  access to PixelLab generation tools. It complements PixelKiln: the MCP handles
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pixelkiln",
3
- "version": "0.40.0",
3
+ "version": "0.41.0",
4
4
  "description": "Manifest-driven pixel-art generation, review, recovery, and packaging with deterministic provenance.",
5
5
  "type": "module",
6
6
  "sideEffects": false,