Skip to content

Commit b3561ed

Browse files
committed
Address feedback on diagnostics and authoring
Signed-off-by: a-baran-orhan <a.baranorhan@gmail.com>
1 parent 430aaab commit b3561ed

104 files changed

Lines changed: 3257 additions & 125 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.changeset/bright-dancers-guide.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
---
2+
"posecode-parser": minor
3+
"posecode-render": minor
4+
"posecode-embed": minor
5+
"posecode-mcp": patch
6+
---
7+
8+
Add scoped, ROM-checked custom start-pose overrides with deterministic loop resets, Posecode language/IR v0.3 metadata, and updated authoring guidance.
9+
10+
Expose solved-frame grounding and residual self-collision diagnostics, plus a metric floor guide with facing, authored travel, and loop-reset paths.
11+
12+
Keep the renderer peer range compatible with the parser's new start-pose IR.
13+
14+
Keep the MCP initialization identity synchronized with its published package version.

ROADMAP.md

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ domain needs, so contributions land where they unlock the most.
1818
| **Fitness / strength** | Body-weight and free-form movement coaching | Core today (squat, curl, raise). Barbell/dumbbell/machine work needs props + grip. |
1919
| **Functional / elderly care** | Sit-to-stand, balance, gentle ROM, fall-prevention drills | Partial: sit-to-stand works; reaching/balance need reach-IK + props. |
2020
| **Sports technique** | Golf swing, tennis serve, throwing, kicking | Partial: needs trunk rotation fidelity, weight shift, and implements (club/racket/ball). |
21-
| **Dance / choreography** | Notating sequences, port de bras, phrases that turn & travel | Phrases, port de bras, pirouettes, and traveling combos (box-step, grapevine, chassé) work via `turn`/`travel`; partner work is future. |
21+
| **Dance / choreography** | Notating sequences, port de bras, phrases that turn & travel | `turn` / `travel` and several experimental examples exist. Ballet terminology, technique fidelity, spotting, and floor-pattern readability still need expert review; partner work is future. |
2222
| **Martial arts** | Stances, strikes, basic forms | Stances/strikes partly work; contact and weapons are future. |
2323
| **Sign language / gesture** | Finger-spelling, signs, expressive gesture | Partial: single-DOF finger curls render visibly (fist, pinch, wave, rough finger-spelling); exact sign language needs multi-joint fingers + wrist orientation. |
2424

@@ -65,6 +65,33 @@ These are the unlocks, roughly in order of leverage:
6565
7. **Two-person + collision**: partner stretches, assisted rehab, contact sports
6666
(still deferred in the spec).
6767

68+
## Feedback-driven implementation order (July 2026)
69+
70+
This sequence turns the first external-user review into small, testable slices. It
71+
starts with correctness and observability, then builds one shared motion-export
72+
foundation before adding formats. The detailed dance/UAT list remains in
73+
[issue #91](https://github.com/posecode-dev/posecode/issues/91), glTF in
74+
[issue #90](https://github.com/posecode-dev/posecode/issues/90), and BVH in
75+
[issue #63](https://github.com/posecode-dev/posecode/issues/63).
76+
77+
| Order | Slice | Completion evidence |
78+
| --- | --- | --- |
79+
| 0 | **Clarify the language contract.** Keep the public spec canonical, distinguish it from the LLM guide, define `ground-lock` / `reach` / `pin` / `grip`, and state that cues are display-only. | Implemented in the feedback branch with documentation-contract, playground, and renderer regression tests. |
80+
| 1 | **Make current solver failures visible.** Add heel/toe height, sole-angle, foot-drift, and residual-collision diagnostics over whole clips. Reproduce the deadlift, demi-plié, and arms-lowering reports as fixtures. | **Implemented in the feedback branch.** Live viewer warnings and 12Hz clip diagnostics now name the grounding/ROM conflict or residual collision; strict known failures remain non-gating until their solver fixes land. |
81+
| 2 | **Add small authoring controls.** Support a built-in start pose plus sparse joint overrides; improve floor origin, facing, and metre-scale markers. | **Implemented in the feedback branch.** Parser, LSP, share-link, loop-reset, floor-guide, travel/reset-path, accessibility, and responsive UI tests cover the new behavior. |
82+
| 3 | **Separate shape from motion limits.** Introduce explicit, named ROM profiles and contact-aware ankle limits. Do not infer movement limits from a `male` / `female` label; body proportions, rig topology, and an individual's mobility are separate inputs. | General and expert-reviewed dance profiles produce deterministic clamp diagnostics; old documents retain today's default. |
83+
| 4 | **Run expert dance UAT.** Mark unreviewed ballet examples experimental; record the school/convention and reviewer; then fix demi-plié, rise terminology, pirouette/spotting, and chassé mechanics. | Each promoted example has a reviewer/reference and pose/contact/orientation regression checks. |
84+
| 5 | **Extract a solved-motion sampler.** Move the final post-grounding, post-IK, post-collision pose sampling out of the viewer so evaluation and exporters consume identical transforms. | Configurable-FPS samples round-trip through the viewer with matching root and local joint transforms. |
85+
| 6 | **Ship glTF/GLB export.** First export one compatible skinned rig plus one baked animation clip; then add multiple clips on the same rig and minimal editable materials. | Three.js `GLTFLoader` round-trip plus a Godot smoke test; no retargeting required for the first version. |
86+
| 7 | **Ship BVH export from the same sampler.** Specify hierarchy, axes, units, Euler order, frame time, and end sites before serializing. | `BVHLoader` round-trip plus documented Blender import/export validation. |
87+
| 8 | **Broaden the pipeline.** Add configurable rig adapters/retargeting, then a visual authoring layer and optional natural-language front end. Explore Labanotation only as a bounded translator with an explicit unsupported-feature report. | Additional rigs pass adapter fixtures; non-code edits remain deterministic and export the same motion as text-authored documents. |
88+
89+
Natural-language animation is best treated as an input surface, not the competing
90+
core. Posecode's role is the deterministic, inspectable, editable constraint and
91+
interchange layer underneath a prompt UI, visual editor, cache, or generated clip.
92+
The comparison should be measured on repeatability, targeted edits, contact
93+
correctness, diagnostics, and export—not only first-draft generation speed.
94+
6895
## Prop / equipment library (future)
6996

7097
Each prop is a small scene object + an anchor type; movements then reference it
@@ -86,7 +113,16 @@ Each prop is a small scene object + an anchor type; movements then reference it
86113

87114
## Current limitations (honest)
88115

89-
- One figure only; partner work and collision are still deferred.
116+
- One figure only; partner work and inter-person collision are still deferred.
117+
- The character adapter currently expects a Mixamo-compatible bone set. Body
118+
proportions can vary, but arbitrary naming/topology and distributing motion
119+
across extra spine or shoulder bones are not supported yet.
120+
- Range-of-motion uses one general profile. It is not individualized by body,
121+
training background, task, or weight-bearing context.
122+
- Self-collision is a bounded corrective pass over selected body pairs, not a
123+
comprehensive physics system. It exposes residuals for those sampled pairs,
124+
but does not detect every possible body-body collision.
125+
- There is no glTF/GLB or BVH motion export yet.
90126
- A **starter** prop set (chair / wall / bar / box / dip bars): no bench,
91127
rings, bands, or loaded implements yet, and props sit at fixed default
92128
placements.

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/posecode-embed/README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ the movement as an animated 3D figure, right where a share link would have gone.
99
## Quick start (CDN, no build step)
1010

1111
```html
12-
<script src="https://unpkg.com/posecode-embed@0.2.0/dist/posecode-embed.js"></script>
12+
<script src="https://unpkg.com/posecode-embed@latest/dist/posecode-embed.js"></script>
1313

1414
<!-- 1. From a share token (what a posecode.org permalink carries) -->
1515
<posecode-player doc="cG9zZWNvZGUgZXhlcmNpc2Ug…"></posecode-player>
@@ -35,9 +35,9 @@ posecode exercise "Lateral raise"
3535
The script auto-registers the element and boots each player when it scrolls into
3636
view. That's it.
3737

38-
Pin a package version in production, as above, so a deployment always uses a
39-
known parser/render pair. A `src` URL can be relative or absolute; cross-origin
40-
movement files must be served with CORS permission.
38+
Replace `@latest` with an exact package version in production so a deployment
39+
always uses a known parser/render pair. A `src` URL can be relative or absolute;
40+
cross-origin movement files must be served with CORS permission.
4141

4242
## With a bundler
4343

@@ -116,7 +116,7 @@ console.log(Posecode.version, Posecode.languageVersion, result.errors);
116116
For a movement library in CI, run:
117117

118118
```bash
119-
npx posecode-parser@0.2.0 validate --strict ./movements
119+
npx posecode-parser@latest validate --strict ./movements
120120
```
121121

122122
AGPL-3.0-only, part of [Posecode](https://github.com/posecode-dev/posecode). A [separate commercial license](https://github.com/posecode-dev/posecode/blob/main/docs/legal/COMMERCIAL-LICENSE.md) is available for closed-source product use.

packages/posecode-embed/test/compat.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,6 @@ describe("embed compatibility contract", () => {
2828
readFileSync(resolve(import.meta.dirname, "../package.json"), "utf8"),
2929
) as { version: string };
3030
expect(version).toBe(pkg.version);
31-
expect(languageVersion).toBe("0.2");
31+
expect(languageVersion).toBe("0.3");
3232
});
3333
});

0 commit comments

Comments
 (0)