
Device Firmware
π Release 7.10.1
Loading...

π Release 7.10.1


gravity compensation and home return can be staged, applied and β for the first time β saved;
the Hub restores them automatically when the device connects. Two upgrade notes ride along β see
If you might roll back to 1.3.0 and Store on device⦠below.
live under Show advanced settings; on service 3.5.6 or newer, no experimental-API opt-in is
needed at all.
and Transfer to profile hands the rotation back when you want it.
inverse3-family units get a telemetry panel instead of a misleading mesh.
notice, with a redesigned animated intro behind a new ? button.
and safety notifications included.
rewritten or deleted on upgrade.
return gain Modified/Saved pills, a per-field menu and a footer Apply + Save/Reset row. Profiles
saved before 1.4.0 are migrated once, one-way β back the file up before any return to 1.3.0
(see the rollback call-out).
the device's first calibration. Fields the device already matches are skipped, and an open
Settings panel reseeds its badges instead of stranding a stale Modified.
the new Store on deviceβ¦ action β behind a warning, because it persists the device's entire
configuration against a limited lifetime write budget.
"Revert" splits into _Revert unapplied edits_ and _Revert to Saved_.
home return, disabled below service 3.5.6. Handedness deliberately has none: the service's reset
forces right-handed, which would physically flip a left-handed unit.
Profiles tab.
gizmo-space toggle and device reset. Nothing applies while you drag; everything commits through
the panel's Apply.
source selector replace the old two-option control. Turning the master off also resets the
rotation on the device β the confirmation says so first.
with the experimental API on; below either floor it shows disabled with the missing half named.
deleted: the rotation returns when the device mount is turned off.
applying it immediately. It applies, it never saves.
no more out-of-step reads.
#<id> Β· <profile> in the session colour β andthe Control readouts become pills, collapsing to one muted pill when the device is idle.
Control is active β no longer a bare button in the bottom-right corner.
? button;the left-handed caveat now lives inside that intro.
now lands off, home-return reset genuinely switches on β and the live, no-opt-in mount
surface.
checkbox and acceptance flow. The View License browser link is gone (use Download PDF), and
the Updated date currently renders as a raw ISO date β a tracked regression.
rather than unresponsive.
tutorials now read in all seven non-English locales, and strings that used to bypass translation
β the tray menu, the firmware-update warning, the safety overlay and its notifications β come
through the same layer, falling back to English if a string is missing. Product names stay in
English on purpose.
Bugs that were present in 1.3.0.
instead of rendering live and failing every read and write.
from the connected service's version.
orbiting during the animation, and no longer leaves the controls stuck.
telemetry panel filling the column β visible on narrow windows too.
One warning stands above everything else in this release: back up device-settings.json before
your first 1.4.0 launch if there is any chance the machine returns to 1.3.0. The migration is
one-way, and a 1.3.0 build silently reads the migrated file as empty and overwrites it on its
first save. Restoring your copy is the only way back.
mount master toggle plus Auto Refresh.
read the agreement outside the app.
overwrites the new file rather than refusing it. Keep a copy.
freeze / continuousfrom service 3.5.6 up; the Hub still speaks the old pair to older services.
No action, trigger or keyboard shortcut was deprecated this cycle.
Shipped behaviour we know about and are not fixing in 1.4.0.
damping's displayed value is not always correct, and the force gate starts at 0.3, showing
_Modified_ from the first frame. Both need a service-side fix first.
unchanged out of the box: the default Inkwell source recaptures the rotation on every
recalibration, and changing that default on a minor release would be a breaking change. The
escape is opt-in: switch Auto Refresh off to freeze the rotation, then save it β the Hub
restores it on every connect.
Input Control intro.

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.

π Release 7.10.0

License and first launch
Freeform
Bugs that were present in 1.2.0 and are resolved in 1.3.0:

stages before a stable release: internal alpha builds, then published beta builds that soak
before anything reaches stable. Every stable release is now preceded by a validated beta.
X.Y.Z-develop.N are now X.Y.Z-alpha.N, followed by X.Y.Z-beta.N on the beta channel.
The old naming sorted "develop" builds above "beta" builds under semantic-versioning
precedence rules; the rename fixes that ordering permanently.
v prefix (v3.5.5 instead of 3.5.5). Both forms remain valid forexisting history.
deliberate, manually-triggered process gated on passing tests, and the whole new release
pipeline was rehearsed end-to-end before it shipped.
by roughly three quarters, while the full multi-platform test matrix still gates every
promotion toward a release β coverage before a release is unchanged.
serde crate1.0.228 -> 1.0.229 (lockfile-only patch bump), the release tooling's semantic-release
25.0.8 -> 25.0.9, and the Alpine container base image 3.20 -> 3.24.
code changed. The auto-generated release notes list a handful of fixes to the new release
pipeline itself; these hardened brand-new infrastructure before it shipped and have no effect
on deployed SDKs.


π Release 7.9.0





*_centered presets on the real reachable center (ad6e726), closes #321
π Release 7.8.0





π Release 7.7.0

