You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add motion export. `exportBVH(ir, options?)` bakes a movement's authored joint motion and root travel/turn into a standard Biovision Hierarchy (`.bvh`) file, and `exportGLTF(ir, options?)` / `buildAnimatedRig(ir, options?)` export the mannequin rig plus a baked `AnimationClip` as a glTF/GLB asset that loads with Three.js `GLTFLoader`. Both sample the timeline headlessly (no WebGL) at a configurable frame rate and bake the full looped runtime; they export authored motion, not the contact/IK-solved motion.
-[Vercel Web Analytics limits and pricing](https://vercel.com/docs/analytics/limits-and-pricing)
35
+
36
+
## Event dictionary
37
+
38
+
| Event | Fires when | Properties |
39
+
|---|---|---|
40
+
|`preset_opened`| A bundled movement is actually opened at initial load or selected in the library. |`source`: `library`, `direct_url`, `shared_link`, or `landing_cta`; `preset_id`: bundled stable ID |
41
+
|`editor_changed`| The first real CodeMirror user edit in the page session. Programmatic preset loads do not count. |`document_kind`: `preset`, `shared`, or `custom`|
42
+
|`render_succeeded`|`viewer.load()` successfully accepts a new meaningful document revision. Lazy boot and repeated recompiles of the same revision are deduplicated. The animation frame loop never emits this event. |`trigger`: `initial`, `preset_open`, `shared_link`, or `editor_change`; `document_kind`|
43
+
|`share_created`| The generated preset/encoded URL has successfully been written to the clipboard. |`share_kind`: `preset` or `encoded`|
44
+
|`embed_docs_clicked`| The embed documentation CTA on `/for-products` is clicked. |`location`: `for_products`|
45
+
|`install_command_copied`| An npm/npx command on `/for-products` is successfully written to the clipboard. |`command`: `embed`, `packages`, or `mcp`; `location`: `for_products`|
46
+
47
+
## Reading the dashboard
48
+
49
+
Open **Analytics → Events**, select an event, then drill into its properties.
50
+
Useful readings include:
51
+
52
+
-`preset_opened` grouped by `source` separates library discovery from direct,
53
+
shared, and landing-page entry.
54
+
- Compare `editor_changed` and `render_succeeded` counts to see whether editing
55
+
reaches a valid renderer update. They are intentionally not a strict funnel:
56
+
initial and preset renders also count.
57
+
-`share_created` is a confirmed clipboard outcome, not a button-click count.
58
+
- Group `install_command_copied` by `command` to compare integration intent.
59
+
60
+
Vercel reports aggregate events rather than a user-level funnel. Do not attempt
61
+
to join individual visitors or reconstruct sessions from these payloads.
62
+
63
+
## Privacy and resilience
64
+
65
+
Events never contain Posecode source text, authoring prompts, personal data,
66
+
full share tokens, query strings, referrers, or sensitive URLs. `preset_id` is a
67
+
bounded public catalogue identifier; all other values are closed enums.
68
+
69
+
Every analytics call is best-effort and catches provider failures. Ad blockers,
70
+
network failures, a missing provider configuration, or plan limitations do not
71
+
change editing, rendering, sharing, navigation, or clipboard behavior.
Copy file name to clipboardExpand all lines: editors/vscode/README.md
+46Lines changed: 46 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,6 +9,52 @@ Language support for the **Posecode** (`.posecode`) kinematic motion DSL:
9
9
10
10
The smart features are provided by [`posecode-lsp`](../../packages/posecode-lsp), which shares its language logic ([`posecode-language`](../../packages/posecode-language)) with the web playground, so the editor and the playground always agree.
11
11
12
+
## File association (before the extension is installed)
13
+
14
+
Until the full extension is published to the Marketplace, `.posecode` files
15
+
open as plain text. You can get basic highlighting and comment/bracket
16
+
behaviour right away by telling your editor to treat `.posecode` files as
17
+
Markdown, which is the closest built-in grammar.
18
+
19
+
### VS Code
20
+
21
+
Add the following to your `settings.json` (open the Command Palette →
22
+
**Preferences: Open User Settings (JSON)**, or use a workspace
23
+
`.vscode/settings.json` to scope it to a single project):
24
+
25
+
```json
26
+
{
27
+
"files.associations": {
28
+
"*.posecode": "markdown"
29
+
}
30
+
}
31
+
```
32
+
33
+
Alternatively, open any `.posecode` file, click the language indicator in the
34
+
bottom-right status bar (it will say "Plain Text"), choose **Configure File
35
+
Association for '.posecode'…**, and pick **Markdown**.
36
+
37
+
### Cursor and other VS Code forks
38
+
39
+
Cursor, VSCodium, and other VS Code forks read the same `files.associations`
40
+
setting, so the JSON snippet above works unchanged.
41
+
42
+
### Sublime Text
43
+
44
+
Open a `.posecode` file, then use the menu **View → Syntax → Open all with
0 commit comments