pixelkiln 0.77.0 → 0.79.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/dist/cli.js +18 -1
- package/dist/cli.js.map +1 -1
- package/dist/client/gallery.css +35 -0
- package/dist/client/gallery.js +460 -9
- package/dist/index.cjs +18 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +26 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.js +18 -1
- package/dist/index.js.map +1 -1
- package/docs/CHARACTERS.md +12 -0
- package/docs/CLI.md +20 -0
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -15409,7 +15409,12 @@ var AssetPatchSchema = import_zod8.z.object({
|
|
|
15409
15409
|
width: import_zod8.z.number().int().nullable().optional(),
|
|
15410
15410
|
height: import_zod8.z.number().int().nullable().optional(),
|
|
15411
15411
|
size: import_zod8.z.number().int().nullable().optional(),
|
|
15412
|
-
tags: import_zod8.z.array(import_zod8.z.string()).optional()
|
|
15412
|
+
tags: import_zod8.z.array(import_zod8.z.string()).optional(),
|
|
15413
|
+
/**
|
|
15414
|
+
* A loop shorthand's `animation.directions`, replaced whole: each named
|
|
15415
|
+
* direction is drawn, and each one's flip comes free as a mirror.
|
|
15416
|
+
*/
|
|
15417
|
+
loopDirections: import_zod8.z.array(CharacterDirectionSchema).min(1).optional()
|
|
15413
15418
|
}).strict();
|
|
15414
15419
|
var NewStateSchema = import_zod8.z.object({
|
|
15415
15420
|
/** Asset id of the parent this states; must already exist. */
|
|
@@ -15758,6 +15763,13 @@ function applyEdit(raw, edit) {
|
|
|
15758
15763
|
if (patch.tags.length) asset.tags = patch.tags;
|
|
15759
15764
|
else delete asset.tags;
|
|
15760
15765
|
}
|
|
15766
|
+
if (patch.loopDirections) {
|
|
15767
|
+
const animation = asset.animation;
|
|
15768
|
+
if (!animation || !Array.isArray(animation.directions)) {
|
|
15769
|
+
throw new ManifestEditError(`asset "${edit.assetId}" is not a loop declared with animation.directions`);
|
|
15770
|
+
}
|
|
15771
|
+
asset.animation = { ...animation, directions: patch.loopDirections };
|
|
15772
|
+
}
|
|
15761
15773
|
}
|
|
15762
15774
|
async function withCandidate(manifestPath, edit, use, unchanged) {
|
|
15763
15775
|
const absolute = import_node_path27.default.resolve(manifestPath);
|
|
@@ -16660,6 +16672,7 @@ async function buildGallerySnapshot(opts) {
|
|
|
16660
16672
|
styleId: spec.styleId,
|
|
16661
16673
|
assetId: spec.assetId,
|
|
16662
16674
|
declared: true,
|
|
16675
|
+
declaredAs: loopShorthandOf(spec.assetId, loaded.loopFamilies) ?? spec.assetId,
|
|
16663
16676
|
state: planItem.state,
|
|
16664
16677
|
reason: planItem.reason,
|
|
16665
16678
|
status: entry?.status ?? null,
|
|
@@ -16729,6 +16742,7 @@ async function buildGallerySnapshot(opts) {
|
|
|
16729
16742
|
styleId: entry.styleId,
|
|
16730
16743
|
assetId: entry.assetId,
|
|
16731
16744
|
declared: false,
|
|
16745
|
+
declaredAs: null,
|
|
16732
16746
|
state: "undeclared",
|
|
16733
16747
|
reason: "not declared by the current manifest; `pixelkiln prune` removes the entry",
|
|
16734
16748
|
status: entry.status,
|
|
@@ -17058,9 +17072,11 @@ ${css}</style>
|
|
|
17058
17072
|
</select>
|
|
17059
17073
|
<select id="group" aria-label="Group">
|
|
17060
17074
|
<option value="style">Group: by style</option>
|
|
17075
|
+
<option value="family">Group: by family</option>
|
|
17061
17076
|
<option value="none">Group: none</option>
|
|
17062
17077
|
</select>
|
|
17063
17078
|
<span id="editing" class="editing" hidden title="This gallery can write the manifest. It never contacts a provider.">editing</span>
|
|
17079
|
+
<button id="select" type="button" title="Pick several records to generate, regenerate, compare, or tag together (or ctrl/\u2318-click a card)">Select</button>
|
|
17064
17080
|
<button id="studio" type="button" hidden title="Draft a new character: its style, base, loops, and portrait, priced as you go">+ New character</button>
|
|
17065
17081
|
<button id="refresh" type="button" title="Re-read the manifest, lockfile, and disk">Refresh</button>
|
|
17066
17082
|
<label class="chip" title="Refresh every 5 seconds while this tab is visible"><input id="auto" type="checkbox"> auto</label>
|
|
@@ -17074,6 +17090,7 @@ ${css}</style>
|
|
|
17074
17090
|
<div id="tools"></div>
|
|
17075
17091
|
</header>
|
|
17076
17092
|
<main id="root"></main>
|
|
17093
|
+
<div id="selbar" class="selbar" hidden></div>
|
|
17077
17094
|
<footer>
|
|
17078
17095
|
Click a sprite for its full record; <kbd>shift</kbd>-click adds it to a side-by-side comparison. <kbd>\u2190</kbd>/<kbd>\u2192</kbd> step through the visible set while a record
|
|
17079
17096
|
is open, <kbd>,</kbd>/<kbd>.</kbd> step a loop's frames and <kbd>space</kbd> plays it, <kbd>Esc</kbd> closes it, and <kbd>/</kbd> jumps to search. This page reads the manifest, lockfile,
|