Repository navigation
v0.4.1
A patch release: nothing a caller depends on changed shape. The one wire change is additive and optional, so an orchestrator written against 0.4.0 needs no attention.
A forearm can no longer teleport between two frames
The anatomical clamp is a projection onto the poses a joint allows, and that set is not convex — the humeral rotation is bounded to half a circle, so a request that drifts past the far side of it is equally near both stops, and the nearer one can change in a single frame. The forearm answered by swinging half a turn on the switch frame, which is the one artefact a viewer reads as the character being replaced rather than moving.
Rig.slew now holds the limiter's own correction to a speed a limb has. The cap is the lowest rate that leaves the movement alone: every entrance in the gesture table plays unchanged under it, while the seams it exists to catch asked for five times as much. The body layer hands the rig its frame time, and toggling limitsEnabled drops the held history rather than crawling the arm back from wherever the unbounded pose had left it. Measured at the wrist over every ordered switch between poses that sit against a stop, the worst case was twenty-six metres a second against a movement peak of two or three; it is now inside the movement.
The words of the line on air
snapshot.airing carries the turns a renderer has started and not reported an end for. state.turn says which line is being said and this says what it says — until now a panel had an id and nothing to read, because a started line is out of the queue by then and does not reach the history until it is over.
The field is optional in both directions, and deliberately: a client that does not know it is unaffected, and a control server that does not send it is still one the shell can adopt over its port probe. Only what went through the queue is reported — a say posted straight to /api/command is not the server's to report, on the same boundary the history draws.
The broadcast panel
- The line on air is read out under the preview, in the sticky column every tab shares, so the answer to "what is it saying right now" stays in one place through a segment spent turning slides.
- A segmented picker is announced as the radio group it is; the two strips that really do swap a region are tabs, and name the region with
aria-controls. Both are a single stop in the tab order, with the arrows moving and selecting within the group — nine tabs across the top of the panel were nine stops between the header and the first control under them. - Every control row shares one label column and one readout column, so a fader, a toggle and a picker in the same section start on the same axis and end on the same edge. The fader's track takes the slack instead of the label, which on the panel makes it three times the length it had.
- An action is no longer a member of the list it acts on: the rescans sit beside their section titles, the release chips have a row of their own instead of reading as one more mood, and the "none" and "bare" chips are drawn as the states they are.
- The browser-source bar is rebuilt on a new select whose popup stays the platform's, with each label bound to its own control, and it carries the header's padding so the three strips at the top of the page share a left edge.
- The queue row's three actions are drawn marks at one optical weight, quiet until the row is under the pointer.
Also in this release
The guides are settled into a neutral reference voice in both languages. Nothing about a command, an endpoint or a default changed with them.