spine-rigc 0.8.1 → 0.10.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/README.md +29 -8
- package/cli.ts +431 -17
- package/docs/AUTHORING.md +696 -104
- package/docs/INGEST.md +1117 -0
- package/docs/MOTION.md +9 -0
- package/docs/SPEC_COVERAGE.md +36 -14
- package/package.json +2 -1
- package/src/atlas.ts +871 -0
- package/src/bonedist.ts +632 -0
- package/src/check.ts +555 -29
- package/src/compile.ts +1028 -95
- package/src/diff.ts +269 -1
- package/src/mesh.ts +832 -3
- package/src/render.ts +385 -7
- package/src/rig.ts +448 -20
- package/src/transform.ts +13 -0
- package/src/types.ts +124 -8
- package/src/validate.ts +392 -60
package/README.md
CHANGED
|
@@ -30,6 +30,8 @@ parser and a list of named assertions all come back green.
|
|
|
30
30
|
| You have | You run | You get |
|
|
31
31
|
| --- | --- | --- |
|
|
32
32
|
| part PNGs, a rig spec and a motion spec | `rigc build` | `skeleton.json` + `skeleton.atlas` — or a failure named by rule, and **nothing on disk** |
|
|
33
|
+
| the same, and one texture instead of many | `rigc build --pack` | the parts arranged onto shared atlas pages, written beside the skeleton — losslessly, so the picture is the picture |
|
|
34
|
+
| a pack somebody already made | `rigc build --atlas-in` | the same skeleton, with every part resolved to a region of that atlas — or a named refusal, never a part that silently does not draw |
|
|
33
35
|
| a compiled rig | `rigc render` | every animation as PNG frames, plus one labelled contact sheet of the whole shot |
|
|
34
36
|
| a compiled rig | `rigc preview` | one self-contained `.html` that plays it in Spine's own web player |
|
|
35
37
|
| two to four compiled rigs | `rigc vote` | one ballot page a human picks from, and the answer checked into a ledger |
|
|
@@ -81,10 +83,11 @@ run a list of named assertions, and **write nothing unless all of them are green
|
|
|
81
83
|
|
|
82
84
|
## Install
|
|
83
85
|
|
|
84
|
-
📦 **rigc measures loose PNGs directly
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
📦 **rigc measures loose PNGs directly, and emits one atlas page per image unless
|
|
87
|
+
you ask otherwise.** `rigc build --pack` arranges every part onto shared pages and
|
|
88
|
+
writes them into `--out`; `--atlas-in` builds against a pack somebody else made.
|
|
89
|
+
Both are opt-in and both are narrow — no trimming, no rotation, no scaling — and
|
|
90
|
+
[AUTHORING §0.1–§0.2](docs/AUTHORING.md) states the limits before you hit them.
|
|
88
91
|
|
|
89
92
|
rigc runs on [Bun](https://bun.sh). The package ships its TypeScript sources and
|
|
90
93
|
Bun runs them, so there is no build step and no `dist/` that can drift from the
|
|
@@ -379,6 +382,8 @@ commands take it and what its default is.
|
|
|
379
382
|
| Command | Does |
|
|
380
383
|
| --- | --- |
|
|
381
384
|
| `build --rig … --motion … --out …` | compiles, gates, and **writes only if the gate is green**. `--images <dir>` says where the rig spec's `image` names resolve, `--manifest` adds measured art, and `--copy-images` copies every page PNG into `--out` so the directory is self-contained |
|
|
385
|
+
| `build … --pack` | the same build with every part arranged onto **shared** atlas pages, written into `--out` — losslessly, and gated a second time as the pair that ships. `--page-size` and `--padding` tune it |
|
|
386
|
+
| `build … --atlas-in <file.atlas>` | the same build with every part resolved to a **region of an existing pack** instead of a loose PNG; a name the atlas lacks, a size the spec disagrees with or a rectangle off its page is refused by name |
|
|
382
387
|
| `validate <dir>` | re-gates artifacts already on disk |
|
|
383
388
|
| `explain --rig … --motion …` | the compiled rig as a table — every bone with its resolved parent, the slots in draw order, every timeline key by key. Writes nothing. What to reach for when a rig compiles and still looks wrong |
|
|
384
389
|
| `render --candidate <dir>` | PNG frames plus a contact sheet, in `render/` |
|
|
@@ -394,9 +399,9 @@ work on any frames you have, and `bench` is a repository workflow that needs a c
|
|
|
394
399
|
and `bun run fetch-examples`. The reasoning behind all three is in
|
|
395
400
|
[the benchmark dossier](https://github.com/firejune/rigc/blob/main/docs/BENCHMARK.md).
|
|
396
401
|
|
|
397
|
-
`build` and `validate` both default to `--profile spine` — the
|
|
402
|
+
`build` and `validate` both default to `--profile spine` — the 25 validity rules, which
|
|
398
403
|
ask *is this valid Spine 4.3 that any runtime plays correctly?* `--profile spine-html`
|
|
399
|
-
adds all
|
|
404
|
+
adds all 39: the other 14 are one renderer's policy and one canvas budget's, and they
|
|
400
405
|
fire on perfectly correct editor-produced Spine data, so reach for that profile when
|
|
401
406
|
you are shipping into *that* project rather than to be thorough. A report always names
|
|
402
407
|
the profile it ran and lists what that profile left out.
|
|
@@ -413,6 +418,7 @@ the art. Its shape is under
|
|
|
413
418
|
| --- | --- |
|
|
414
419
|
| 📘 **[docs/AUTHORING.md](docs/AUTHORING.md)** | **the format guide, and the one to read before writing a spec.** Both input files field by field with a complete minimal example each, every field with its Spine meaning, the rules that decide what is emitted, the build → read the report → fix → repeat loop, the map from every named failure to the file that has to change, and the features rigc refuses by name so you do not spend a loop discovering them. It travels **inside the npm package**, at `node_modules/spine-rigc/docs/AUTHORING.md` |
|
|
415
420
|
| 🎞️ **[docs/MOTION.md](docs/MOTION.md)** | **the key-pose recipe.** How to get two poses, what a pair of poses does and does not fix, the in-betweening rules and where each comes from, and how to spread candidates so a ballot informs. Ships in the package too |
|
|
421
|
+
| 📥 **[docs/INGEST.md](docs/INGEST.md)** | **working with a skeleton you did not author.** What every command can and cannot do with a foreign `skeleton.json`, reading it with the toolchain, transcription as the route that makes it yours, what each validator complaint means on an export, and the re-pivot/rename/extend recipes. Ships in the package too |
|
|
416
422
|
| 🤖 **[docs/PROMPTING.md](docs/PROMPTING.md)** | **handing the authoring to an AI agent** — the prompt clauses a measured pilot run paid for, and what you can leave unsaid. Ships in the package too |
|
|
417
423
|
| 🔬 **[docs/SPEC_COVERAGE.md](docs/SPEC_COVERAGE.md)** | Spine 4.3's full export surface against what rigc emits and what the official examples measurably use, with the ordered gap list |
|
|
418
424
|
| 🎓 **[the benchmark dossier](https://github.com/firejune/rigc/blob/main/docs/BENCHMARK.md)** | **why you can trust the output.** The yardstick, `diff` and `check` and what neither can see, the eight-rung ladder and the spineboy graduation exam, the run viewer, the 36 named assertions with their profiles, and the selftest that has watched every one of them fire. Repository material — it is not in the npm package |
|
|
@@ -425,12 +431,27 @@ rigc is measured against **Spine's own official example projects** — the
|
|
|
425
431
|
as the graduation exam.
|
|
426
432
|
|
|
427
433
|
🎓 **The ladder is complete, 2026-08-28.** All eight numbered rungs and the
|
|
428
|
-
spineboy graduation exam are cleared
|
|
434
|
+
spineboy graduation exam are cleared and hold under the current gate, **v2.3**, every clause PASS or SKIP:
|
|
429
435
|
worst attributable slot drift **5.55 px** against a 6.0 px bar, and **0 of 124**
|
|
430
436
|
frame-change disagreements. Recompiling the same spec in a different session
|
|
431
437
|
reproduced every field of the measurement record **to the digit**. The rungs stay
|
|
432
438
|
in place as regression gates.
|
|
433
439
|
|
|
440
|
+
🗓️ **One rung's pass was withdrawn and restored on 2026-09-02, and both are dated
|
|
441
|
+
facts.** `check`'s extent tolerance ([PR #254](https://github.com/firejune/rigc/pull/254))
|
|
442
|
+
changed which box a set is measured in, and rung 7's stored candidate failed **G2**
|
|
443
|
+
under it — one of its three slots draws in every set and is attributable in none,
|
|
444
|
+
and no read-down ground survived the framing change. The gate then answered the two
|
|
445
|
+
clause questions that exposed, as **v2.3**: a read-down names the framing of its
|
|
446
|
+
evidence, and a slot whose attributability is **measured** to be capped below the bar
|
|
447
|
+
reads down when everything observable about it is independently verified strict. That
|
|
448
|
+
rung's third attempt clears on those grounds, on the candidate it already had.
|
|
449
|
+
**Rungs 1–6 and 8 and the graduation exam were unaffected throughout**: each reproduces
|
|
450
|
+
its gated figures to the digit, and the 5.55 px and 0-of-124 figures above are among
|
|
451
|
+
them. Both verdicts, and the sweep of every candidate under the new gate, are in
|
|
452
|
+
[docs/LADDER.md](https://github.com/firejune/rigc/blob/main/docs/LADDER.md)'s *PR #254 instrument re-inspection* and *gate-v2.3
|
|
453
|
+
re-inspection*.
|
|
454
|
+
|
|
434
455
|
⚠️ **What that certifies, stated exactly.** That **the tool, the guide and the
|
|
435
456
|
protocol reach the bar across a bounded series of honest attempts, each residual
|
|
436
457
|
diagnosed and fixed** — spineboy took five, and the last inherited its
|
|
@@ -439,7 +460,7 @@ that an agent authors a spineboy-scale rig from the brief alone in one run: the
|
|
|
439
460
|
ladder has not demonstrated that, and each row records which of the two it is.
|
|
440
461
|
|
|
441
462
|
The whole dossier — the yardstick, `diff` and `check` and what neither of them can
|
|
442
|
-
see, every rung, the run viewer, the
|
|
463
|
+
see, every rung, the run viewer, the 39 assertions and the selftest behind them — is
|
|
443
464
|
[docs/BENCHMARK.md](https://github.com/firejune/rigc/blob/main/docs/BENCHMARK.md).
|
|
444
465
|
Live rung status is
|
|
445
466
|
[docs/LADDER.md](https://github.com/firejune/rigc/blob/main/docs/LADDER.md).
|