All notable changes to this project are documented in this file.
- Keep callback-triggered deferred destruction safe while another thread is joining the worker.
- Keep the deferred-destruction service alive for the process lifetime to avoid shutdown races.
- Allow a client to be destroyed from its own sample callback without joining or destroying a joinable worker thread on that callback.
- Remove the legacy bundled CLI and its
NETFT_BUILD_CLIoption. Command-line workflows now live in the independent netft-cli project.
- Drop stalled and backward FT-sequence samples before latching a fail-stop fault, matching the documented delivery contract and preventing consumers from observing stale measurements.
- Support SDK streaming on macOS and Windows alongside Linux, with native POSIX and WinSock backends and platform CI coverage. The CLI remains supported on Linux and macOS.
- Require libcurl 7.63.0 or newer, matching the first release that provides the
CURLOPT_CURLUAPI used by sensor discovery.
- Restore GCC 10 and manylinux2014 source compatibility by parsing sensor calibration counts with a C++17 locale-independent implementation.
- Expose the exact signed RDT axis counts on every
Samplethroughraw_wrench, ordered as force X/Y/Z followed by torque X/Y/Z.
- Advance the shared-library ABI for the expanded public
Samplelayout.
- Keep UDP receive timeouts bounded when
poll()is interrupted by signals, preventing repeatedEINTRretries from extending the configured timeout.
- Lower the supported CMake baseline from 3.20 to 3.16 and verify shared and static installed consumers with the pinned minimum version in CI.
- Replace the project-specific sensor address in defaults and examples with ATI's factory-default
192.168.1.1address. - Keep tests focused on executable and machine-readable contracts instead of human-facing help, error, log, diagnostic, and release wording.
- Normalize generated release notes so source formatting does not introduce awkward wrapped continuation lines.
- Standalone C++17 SDK for validated configuration, calibrated RDT force/torque samples, status decoding, and lifecycle-safe client operation.
- Bounded HTTP sensor discovery for product, calibration scales, and sensor-selected force and torque units, with complete manual calibration overrides when discovery is unavailable.
netftCLI withinfo,monitor, and softwarebiascommands, human and stable JSON summaries, atomic file output, defined exit codes, and SIGINT handling.- Sequence, status, rate, calibration-revision, and error health reporting with exponential reconnect and first-fault fail-stop recovery policies.
- Deterministic fake HTTP/UDP sensor tests covering protocol, discovery, streaming, lifecycle, faults, recovery, CLI behavior, and sanitizer configurations without physical hardware.
- Shared and static installation, versioned shared-library ABI, public CMake package export as
netft::netft, installed CLI, and out-of-tree consumer validation.