Python SDK version history
Review the features, fixes and improvements, compatibility changes, and internal refactors of each official Qnbot Python SDK release.
v1.4.0
This release upgrades Glove SDK from 1.3.0 to 1.4.0, with a focus on glove time synchronization, composite-device access, and runtime state management. Core and Glove ship together as 1.4.0 and continue to support Linux x86_64, Linux ARM64, macOS ARM64, and Windows x86_64. It also adds Exo + Glove integration over one shared serial link, with Exo, left Glove, and right Glove accessible from the same `Sdk` instance.
Features
- Added `Glove.sync_time()` to set one external time reference for glove data.
- Standardized millisecond semantics for glove frames, runtime state, capture, and calibration timestamps.
- Added shared-serial access for Exo and the left and right Gloves.
- Added access to Glove and Exo capabilities from the same `Sdk` instance.
- Completed state, telemetry, and lifecycle management for composite devices.
- Improved algorithm-package parsing and runtime initialization.
Fixes & improvements
- Kept compatibility with legacy `timestamp_sec` input and made its conversion to milliseconds explicit.
- Fixed historical glove timestamp handling to improve consistency between capture records and aligned data.
- Improved glove connection, state recovery, and resource release.
- Cached algorithm-package parsing results to avoid repeated parsing during SDK initialization.
- Improved runtime state, debug information, and error messages.
- Completed device information, telemetry, and lifecycle handling for Exo + Glove integrations.
Compatibility
- Version 1.4.0 standardizes on millisecond semantics; legacy `timestamp_sec` input remains accepted and is converted to milliseconds.
- C++ projects must update the 1.4.0 Core/Glove headers, libraries, and Conan packages and recompile.
- See the QnBot Glove SDK 1.3.0 → 1.4.0 migration guide for upgrade details.
Internal refactor
- Unified the Python and C++ time models and serialization behaviour.
- Refined device-management boundaries between Glove, Exo, and the shared serial link.
- Unified state, telemetry, and lifecycle handling within composite devices.
- Improved runtime resource management for multi-device scenarios.
v1.3.0
This release focuses on glove device onboarding and the capture and calibration flow, together with updated public Python and C++ examples and customer documentation. Core and Glove ship together as 1.3.0 and keep supporting Linux x86_64, Linux ARM64, macOS ARM64, and Windows x86_64.
Features
- Introduced GloveDevice-centred device usage, so device selection, capture, and calibration follow one clear flow.
- Completed progress query and interactive control during capture and calibration.
- Added external input examples for background running and manual scheduling.
- Updated the public Python and C++ examples to cover device selection, capture, calibration, and external input.
- Core and Glove now ship together as 1.3.0 delivery packages for all four platforms.
Fixes & improvements
- Improved the glove connect, start, stop, and resource release flow.
- Improved device recovery, multi-device state, and runtime management.
- Improved status and error messages during capture, calibration, and runtime.
- Improved algorithm package parsing, integrity verification, and runtime loading.
- Improved C++ debug information and diagnostics when a process exits abnormally.
- Updated the C++ headers, libraries, and Conan packages for more consistent cross-language integration.
- Expanded the customer-facing README and public examples.
Compatibility
- 1.3.0 changes how glove devices, capture, and calibration are called.
- An application now selects a target GloveDevice first, then runs capture, status queries, and calibration through that device object.
- Capture and calibration must use the same GloveDevice.
- C++ projects must update the 1.3.0 Core/Glove headers, libraries, and Conan packages and recompile.
- See the QnBot Glove SDK 1.2.0 → 1.3.0 migration guide for the exact steps.
Internal refactor
- Refactored the internal boundaries between device selection, capture, calibration, and the runtime.
- Unified device state, task progress, and error handling behaviour across Python, C++, and Rust.
- Improved runtime data channels and resource management for more consistent future development and maintenance.
v1.2.0
This release focuses on the capture and calibration workflow, device onboarding and diagnostics, and online delivery and version management for algorithm packages. The SDK and CLI both keep shipping native packages for Linux x86_64, Linux ARM64, macOS ARM64, and Windows x86_64.
Features
- Reworked the capture and calibration workflow around explicit CaptureSession and CalibrationSession usage, covering capture progress, interactive control, calibration execution, and result retrieval.
- Added raw glove IMU data reading.
- Added automatic discovery and onboarding for VetraGlove Nano.
- Algorithm packages now keep a single current version per package ID, making install, upgrade, downgrade, and uninstall behaviour explicit.
- Added an online algorithm package source with account authentication, authorised algorithm lookup, and online installation for Qnbot CLI.
- Upgraded the built-in hand algorithm runtime: qnbot-hand 0.2.49 on Linux x86_64, macOS ARM64, and Windows x86_64, and qnbot-hand 0.2.54 built against glibc 2.34 on Linux ARM64.
Fixes & improvements
- Simplified the device lifecycle: applications start devices with `start()` and stop the data stream and release the connection with `stop()`.
- Improved glove connection recovery, multi-device runtime state, and diagnostics so device status is easier to observe and act on.
- Unified how progress and errors are reported across capture, calibration, and algorithm runtime.
- Unified Debug modules and log configuration; logs are archived to `QNBOT_HOME` by default.
- Lowered the Linux ARM64 minimum environment to glibc 2.34, widening the range of deployable systems.
- Updated the public Python and C++ examples and customer documentation to cover IMU, VetraGlove Nano, connection state, Debug, external input, and the full capture and calibration flow.
Compatibility
- 1.2.0 changes parts of the public API and its usage flow, mainly around: the device connect / disconnect lifecycle; the Capture and Calibration sessions; the algorithm package fields in capture requests; calibration data and log directory configuration; Debug detail and module names; and the single-current-version rule for algorithm packages.
- This announcement lists only the main changes and does not spell out the replacement steps.
Internal refactor
- Refactored the SDK's internal runtime, data channels, diagnostics, and device connection boundaries to improve cross-language consistency and long-term maintainability.
v1.1.0
Added Linux ARM64 and Windows 10 x64 wheels and simplified Glove package installation and dependency resolution.
Features
- Algorithm packages are selected by package ID; the SDK resolves the default stable version and matching algorithm automatically.
- Added native Linux ARM64 support, extending both the SDK and CLI to four-platform deliveries.
- Upgraded Qnbot CLI to 0.1.1 with SDK 1.1.0 compatibility.
- Added wireless receiver integration, including wireless device discovery and multi-source support.
- This capability has not completed real-hardware validation in this release. Verify device compatibility and connection stability separately before production use.
Internal refactor
- Split capture, calibration, and runtime into relatively independent workflows with clear invocation boundaries.
- Unified source creation and configuration so physical glove sources and the `external_input` virtual source use the same configuration and runtime entry points.
Fixes & improvements
- Fixed scheduling inconsistencies that could occur for automatic capture across runtime paths.
- Fixed the mismatch between the Linux ARM64 `aarch64` runtime target and the algorithm package `arm64` architecture identifier.
- Improved handling of incomplete input frames during calibration.
- Improved device recovery and runtime state feedback.
v1.0.0
The first stable Python SDK release, with production wheels for three platforms, managed algorithm packages, and built-in Dynamic OpenXR skeleton support.
Features
- Added `skeleton()`, 24 active-joint angles, and a 25-joint skeleton pose channel.
- Added `AlgorithmPackageManager` for managed offline algorithm packages.
Compatibility
- Finalized 1.0.0 platform support for macOS ARM64, Linux x64, and Windows x64.
- Unified default directories for calibration, algorithms, and Debug data.