Skip to content

v0.3.1

Choose a tag to compare

@libraz libraz released this 30 Aug 17:58
· 117 commits to main since this release

A structural release. Nothing on the wire changed, no behaviour changed, and a caller on 0.3.0 has nothing to do.

Twelve files were split by responsibility

Twelve source files had grown past a thousand lines each, and a file that size stops being read and starts being searched. Each is now a directory filed by what its parts answer, and each kept its module path and its barrel — so no import anywhere in the tree moved, and src/protocol/index.ts, the one public door of the wire protocol, is untouched.

  • engine/types is filed by what a declaration describes: the canonical slots, the joint table, one avatar resolved, what a model states about itself, one frame of movement, the staging, a turn, the voice, the ports a renderer implements, the session readouts.
  • protocol/commands is filed by what a command talks to, and protocol/messages by who is speaking to whom.
  • engine/motion/gestures is one file per group, spread back into one flat table in group order, so an id is still reachable as GESTURES.wave.
  • i18n/messages/panel is one file per tab. Each now carries its own English/Japanese parity check, so a string added in one language and forgotten in the other is an error in that tab's file.
  • Session, Rig, ArmAnatomy, Body, BrowserBgm and AvatarRuntime each gave up the questions that were not theirs — the turn queue, the staging order, the elbow search, the fingertip back-solve, the body volumes, the character-space boundary, the insert chain, the camera — while keeping their public surfaces.
  • ctl is one file per command family over shared argv handling.

The engine's tuned numbers were checked mechanically

Most constants in src/engine were arrived at by watching two real avatars, and most carry a comment saying which failure they exist to prevent. Those comments are the most valuable thing in the tree, so the move was verified rather than trusted: the multiset of numeric literals across src/ has no removals against 0.3.0, only the additions the new wiring brought, and the one comment that went missing in the first pass — the block explaining the trunk cylinder's measured radius — was restored before anything was committed.

The suites were split the same way

The four largest test files became one file per subject over a shared harness and a shared set of renderer fakes. Every case moved verbatim; the suite asserts exactly what it did before.

The one thing a reader might notice

debug is now filed with the renderer commands rather than the body ones, since it reaches nothing in the session and only says what a renderer draws over itself. That is where its schema lives now, not a change to the command.