Loading...

The Service Runtime and Runtime SDK for Haply devices. Bundled in a convenient installer. Also known as the "external" Service.
just the one that wrote. A second viewer refreshes on its own session-updated event instead of
polling — exactly one event per holding session, and never two for the writer.
always reporting the mount the session configured. The label that tells you which of the two you
are looking at is now truthful by construction, in every output shape.
service served a value captured when the device came up and never revisited it. It can now
refresh that reference on demand at the client's own render cadence — rate-limited service-side
so a fast client cannot flood the device link — and announce the change once the mount has
actually rotated.
Wireless VerseGrip's inertial yaw drift: it fits the grip's absolute yaw against the motion of
the paired Inverse3 or Minverse it is attached to, and once a stack of quality gates all hold, it
writes a single correction back to the grip firmware. It ships disabled, is reachable only
with the experimental opt-in switch on, and carries a runtime switch that forces every live grip
back off the moment it is flipped — non-optional for something that writes to device firmware.
selection is validated — firmware capability and device readiness — before any device is changed,
so a mixed-firmware fleet can no longer end up half-switched behind an error on the second device.
two concurrent requesters could lose each other's answer, and one ambiguous value stood for both
"refused" and "nothing yet" — which could turn a refusal into a retry storm. Each request now
carries its own token, a request that never reached the wire registers nothing, and a lost
response resolves as failed instead of wedging. The sweep that does this costs nothing while no
request is outstanding.
pen performs a full pose recalibration, which is correct on every shipped pen regardless of
firmware version; that path is explicitly exempt from the capability floor introduced for
computed heading corrections, and the exemption is spelled out at the call site rather than
inferred.
Despite its name, the scaling_factor field on config/gravity_compensation is not a
multiplier: it is the extra end-effector payload mass, in kilograms, that the device compensates
for on top of its own weight. The reset took the name at face value and restored the "neutral"
factor 1 — a phantom one-kilogram payload — so a reset left the device pushing the handle up,
which is not what a freshly connected device does. The reset now returns the real default:
compensation enabled with scaling_factor at 0, meaning the device carries its own weight and
assumes no payload. If your application had been using the reset to raise the compensation
strength, set the value you want explicitly instead.
config/home_return hadcome to disable home return while telling the caller it was enabled — a reset now genuinely
restores the factory default (on), and the value your application reads back afterwards is the
value the device is actually using.
a write that landed on the device itself — shared by every session holding that device — refreshed
only the writing client's configuration, and the device-wide routes refreshed nobody at all. Any
other client on the same device kept reporting the old value until it polled. Every holding
session is now notified.
previous dock persisted across docks, so the second dock treated its first rejection as the end
of its retry window. The retry window is now reset per dock attempt.
reassigned by the connection thread while a staging path read it under a different lock. The
identifier is now snapshotted once under the correct lock, and every path below — refusals
included — works from that copy.
message paths assembled their payload and checksum and requested the send without taking the
write lock, so two senders could interleave on the shared buffer.
was deleted or re-pathed, the public C API has no diff, and no settings key was renamed, removed,
or given a new default. Applications that opt in to the SDK's preview or experimental surfaces
do have migration work this cycle, including a switch-tier change and a removed token set;
every step is documented in the engineering companion changelog.
route or response shape changed, but an application that relied on the reset writing a
scaling_factor of 1 now gets the factory default of 0 — compensation itself stays enabled
either way. Set the value explicitly rather than depending on the reset; see the fix above.
changed, but an application that relied on the reset to disable home return now finds it
enabled instead. Set it explicitly to off after a reset if that is what you need; see the fix
above.
session-updated event only ever arrived because of its own write will now also receive one when
another client changes a device they both hold, followed by a full configuration render. This is
the intended consequence of the fan-out above; a client that simply re-reads on the event needs no
change.
All available downloads for this release: