Loading
Commits on Source 27
-
-
Martin Zak authored
Release v9.3.1 See merge request software-public/zaber-motion-lib!1743
-
Martin Zak authored
-
Martin Zak authored
ZML-1168: don't save/load pos.cycles Adds `pos.cycles` to the `NonsavedSettings` map in the save-state code. Because this map is consulted by both the save (get) and load (set) state paths, the setting is now excluded from both saving and loading. Closes ZML-1168 See merge request software-public/zaber-motion-lib!1744
-
Martin Zak authored
-
Martin Zak authored
Release v9.3.2 Patch release **v9.3.2** — single fix. ### Changes * **ZML-1168** — The volatile `pos.cycles` setting is no longer saved or restored by device state operations (`getState`/`setState`). It is added to `NonsavedSettings` alongside `pos` and the other volatile settings. ### Release mechanics * `npx gulp set_version --new_version 9.3.2` — version bump across all languages (nuspec → `9.3.2-rc`, Java pom → `9.3.2-RC`). * LICENSE files intentionally left unchanged: a local `gen_license` run produced an incomplete bundle (it dropped the shipped `golang.org/x/crypto` and `golang.org/x/text`), so the known-good v9.3.1 license text is retained. The pre-existing version-staleness in those files should be fixed separately in a proper build environment. See merge request software-public/zaber-motion-lib!1746
-
Colby Sparks authored
-
Colby Sparks authored
Fix PVT CSV action unit conversions Add PVT action units when loading CSVs and convert them when exporting. #zml-1164 Fixed Related to zml-1164 See merge request software-public/zaber-motion-lib!1748
-
Martin Zak authored
-
Martin Zak authored
ZML-1172: upgrade @software-public/tools to 0.0.68 and regenerate LICENSE bundles ## What Re-pin `@software-public/tools` → `0.0.68` (which contains the `gen_license` fix from [software-public/zaber-tools!20](https://gitlab.izaber.com/software-public/zaber-tools/-/merge_requests/20)) and regenerate the third-party LICENSE bundles. Motion-lib side of [ZML-1172](https://youtrack.izaber.com/issue/ZML-1172). ## Changes - `package.json` / `package-lock.json`: `@software-public/tools` `0.0.66` → `0.0.68`. - Regenerated bundles: stale versions corrected — `miekg/dns` 1.1.55→1.1.72, `modern-go/concurrent`, `x/net`→0.52.0, `x/sync`→0.20.0, `x/mod`→0.34.0 — and removed `golang.org/x/crypto` / `golang.org/x/text` (both `go.mod`-only; not built into the shipped binary per `go version -m`). - `licensing/generate.ts`: added **`py/LICENSE.txt`** to the generator's destinations. This is the bundle `py/pyproject.toml` ships as the package `license` file, but it was missing from the destinations and had gone stale (last regenerated 2024-03-07, still listed `x/crypto v0.0.0-20210322…`). It is now regenerated with the rest and is byte-identical to `licensing/LICENSE`. ## Verified `npx gulp gen_license` emitted all 36 selected modules with **no "No license" drops**; every version matches `go list -m`. `py/LICENSE.txt` now matches the canonical bundle. LF endings preserved (`core.autocrlf=true`).
🤖 Generated with [Claude Code](https://claude.com/claude-code) See merge request software-public/zaber-motion-lib!1747 -
Martin Zak authored
-
Martin Zak authored
ZML-1166: update Linux build images to Node 24 on Ubuntu 22.04 Updates the Linux build/CI Docker images (`linux_amd64`, `linux_arm`, `linux_arm64`) from Node 18 to Node 24, clearing the `npm WARN EBADENGINE` warnings in the release jobs — `@zaber/motion` and `bson@7` require `node >=20.19.0`. The obsolete `npm@8.19.4` pin is dropped (Node 24 bundles npm 11). Node 24's node-gyp defaults native addons to C++20, which Ubuntu 20.04's gcc 9 rejects, so the base image moves to **Ubuntu 22.04** (gcc 11).
⚠️ This raises the glibc floor of the shipped Linux artifacts from **2.31 → 2.35**. Knock-on changes from the 22.04 bump: - **Maven** `3.9.14 → 3.9.16` — 3.9.14 was purged from dlcdn.apache.org and now 404s, which already breaks any image rebuild. - **Firefox** installed from Mozilla's apt repo on amd64 (Ubuntu's `firefox` is a snap, unusable in a container). Dropped from arm/arm64, where the headless WASM web tests that use it only run on x64. - **Swift** switched to the `ubuntu22.04` toolchain build. - **clang-tidy**: jammy ships clang-tidy 14, whose `bugprone-throw-keyword-missing` check false-positives on the generated `*ExceptionData`/`*Error` DTOs; disabled it (the build treats lint warnings as errors). Also removes the unused Windows Docker images (`win_amd64.Dockerfile`, `win_amd64_build.Dockerfile`) — Windows CI runs on tagged `windows-64` runners, not a Docker image. Validation: built `linux_amd64.Dockerfile` + `linux_amd64_build.Dockerfile` locally on 22.04 — Node 24 / npm 11, the N-API addon under gcc-11, and a jammy probe (Firefox / Python 3.8 / Swift) all pass; the full `gulp build`/`test` is being re-run to confirm after the clang-tidy fix. These images must be rebuilt and pushed per `images/README.md` to take effect — MR CI uses the existing registry images, so it won't exercise these Dockerfiles. Closes ZML-1166 See merge request software-public/zaber-motion-lib!1749 -
Martin Zak authored
-
Martin Zak authored
ZL-1903: add Tools.listSerialPortsDetails listing serial ports with USB info ## What Adds `Tools.listSerialPortsDetails()` — lists **all** serial ports on the computer, each as a `SerialPortDetails` with its name and, for USB-backed ports, the USB vendor/product IDs. ```ts Tools.listSerialPortsDetails(): SerialPortDetails[] class SerialPortDetails { name: string; // "COM5" (Windows), "/dev/ttyUSB0" (Linux), ... usbInfo: SerialPortUsbInfo | null; // null when the port is not a USB device } class SerialPortUsbInfo { vendorId: number; // USB VID, e.g. 0x2939 -> 10553 productId: number; // USB PID, e.g. 0x49E1 -> 18913 } ``` Non-USB ports are included with `usbInfo == null`. VID/PID are integers. ## Why Part of [ZL-1903](https://youtrack.izaber.com/issue/ZL-1903) (speed up X-MCC USB/Ethernet connections). Lets a caller (e.g. Zaber Launcher) recognize which serial ports are USB-connected Zaber devices and apply the single-device connection speed-up. ## How - Go core handler reuses go-serial's cross-platform `enumerator.GetDetailedPortsList()` (`internal/tools/serial_ports.go`, alongside `listSerialPorts`). Because the gateway is built with CGO, this works on Windows, Linux and macOS with **no new native code**. Wasm gets a stub. - New public DTOs `SerialPortDetails` + `SerialPortUsbInfo`; new route `tools/list_serial_ports_details`. - Bumps `go-serial` to `v0.0.0-20260624150618`. - Bindings regenerated for all languages (`npx gulp gen_code`). ## Verification Verified end-to-end against real hardware on **all three desktop platforms**. Go core compiles + lints clean; wasm builds; the `js/test-e2e/tools.test.ts` jest e2e passes. -✅ **Windows**: COM5 → Zaber X-MCC (`usbInfo` **VID 0x2939 / PID 0x49E1**), COM3 → FTDI (0x0403 / 0x6001), through the JS binding. -✅ **Linux**: serial ports enumerated with correct `usbInfo` via go-serial `usb_linux.go` (sysfs). -✅ **macOS**: serial ports enumerated with correct `usbInfo` via go-serial `usb_darwin.go` (IOKit). ## Notes - Supersedes !1745 (the flat `listSerialPortsUsbInfo` design), now closed. See merge request software-public/zaber-motion-lib!1750 -
Silviu Toderita authored
-
Silviu Toderita authored
adds init py for movement module See merge request software-public/zaber-motion-lib!1753
-
Martin Zak authored
-
Martin Zak authored
ZML-1166: bump Python wheel manylinux tag to glibc 2.35 ## Summary Bumps the Linux wheel platform tag in `py/tasks.py` from `manylinux_2_27` to `manylinux_2_35` so the declared glibc floor matches the build image. ## Why ZML-1166 moved the Linux build images to Ubuntu 22.04 (glibc 2.35), but the wheel platform tag was left at `manylinux_2_27`. The `.so` bindings are compiled in that image, so the manylinux floor should match the image's glibc instead of under-declaring it. ## Validation Rebuilt `images/linux_amd64.Dockerfile` locally and confirmed from inside the container: - `ldd --version` / `getconf GNU_LIBC_VERSION` → glibc **2.35** (Ubuntu 22.04.5) - `packaging.tags.platform_tags()` includes `manylinux_2_35_x86_64`, so the guard at `py/tasks.py:79-80` passes.
🤖 Generated with [Claude Code](https://claude.com/claude-code) See merge request software-public/zaber-motion-lib!1755 -
Martin Zak authored
Removes the linux/arm (armhf) build target across the toolchain: gulp build/publish tasks, the prebuild_linux_arm and build_linux_arm CI jobs, the linux_arm Docker image, and the arm branches in the C#, Java, C++, JS, and Python native-library loaders. 32-bit ARM now raises an explicit unsupported ImportError in the Python loaders. Follows ZML-1166 (Node 24 dropped armhf, so the linux_arm image can no longer be built). Co-Authored-By:Claude Opus 4.8 (1M context) <noreply@anthropic.com>
-
Martin Zak authored
ZL-1966: remove 32-bit ARM (linux/arm) build support Removes the linux/arm (armhf) build target everywhere: gulp tasks, the prebuild_linux_arm/build_linux_arm CI jobs, the linux_arm Docker image, and the C#/Java/C++/JS/Python loaders. 32-bit ARM now raises an explicit unsupported error in Python. Test-prefixed branch so the MR pipeline runs the full matrix (arm64, win-arm64, macOS). Follows ZML-1166 (Node 24 has no armhf build). Related to ZL-1966 See merge request software-public/zaber-motion-lib!1756
-
Martin Zak authored
-
Martin Zak authored
ZL-1116: represent missing settings as missing values in multi-get * GetManyByType gets optional values for string/int/bool. * GetMany no longer throws CommandFailed (BADCOMMAND, DEVICEONLY) - instead returns NaN. * Improvements to documentation. Related to zl-1116 See merge request software-public/zaber-motion-lib!1754
-
Martin Zak authored
-
Martin Zak authored
ZML-1158: seal resource-managing classes to prevent inheritance Seals the 9 classes that own a native Go-side resource so user code cannot subclass them, preventing lifecycle bugs (cf. ZML-1150), API confusion, and breakage when internals are refactored. Sealed: `ascii.Connection`, `binary.Connection`, `Moveable`, `Transport`, `OscilloscopeData`, `WdiAutofocusProvider`, `gcode.Translator`, `gcode.OfflineTranslator`, `Ge1xGripper`. A single `isSealedClass()` helper (`def.resource != null`) drives each language's class template: - **TS/JS**: `private constructor` (pure compile-time, no runtime check). `OscilloscopeData` keeps an `@internal` `_create()` factory because it is constructed by `Oscilloscope` rather than its own static factory. - **Python**: `@final` + `__init_subclass__` raising `TypeError`. - **C#**: `sealed`. The `IDisposable` pattern's `Dispose(bool)`/`DisposeAsyncCore()` become `private` (a sealed class cannot declare `virtual` members — CS0549). - **Java** / **C++**: `final` (C++ on the derived `Connection`, not `BaseConnection`). - **MATLAB**: `(Sealed)`. Swift was already `public final class`. Also tidies the C# class-declaration builder (dedups the repeated declaration string). The commits are split so the generated bindings are separate from the template/logic changes, keeping the reviewable diff small. **Breaking change** (tag: `Breaking`): the public constructors of these classes become inaccessible. The audit found zero real subclassers — users construct via factories (`Connection.openTcp`, etc.), so real-world impact is expected to be nil. Closes ZML-1158
🤖 Generated with [Claude Code](https://claude.com/claude-code) See merge request software-public/zaber-motion-lib!1757 -
Martin Zak authored
-
Martin Zak authored
ZML-1178: fix moveSin period documentation (wrong units) Fixes the `moveSin` documentation for `Axis` and `Lockstep`. The `period` parameter description incorrectly claimed the value is in milliseconds, but `moveSin` has a separate `periodUnits` parameter that determines the units. **Root cause:** the `period` param description in the `moveSin` API definition (`templates/src/templates/definitions/axis.ts`) hard-coded "in milliseconds". Because `lockstep.ts` reuses the same `moveSinFunctions.moveSin` definition, both `Axis.moveSin` and `Lockstep.moveSin` were affected across all languages. **Fix:** changed the description to "Period of the sinusoidal motion." and regenerated the language bindings. The change is doc-comment-only — no signatures or behaviour changed. Closes ZML-1178 See merge request software-public/zaber-motion-lib!1759
-
Martin Zak authored
Co-Authored-By:Claude Fable 5 <noreply@anthropic.com>