Changelog
1.5.1
New Features
- Import / Export config. A new "⋯" menu on the config page lets you export your config to a
.yamlfile and import one back — or just drag a.yamlfile anywhere onto the config pane. - Lightweight ball visualizer. A WebGL-free "Lite" version. New Grid texture.
- Wired side switch & aux button. The Wired device's 3-position side switch and aux button are now shown on the ball view and can be bound like any other control — control picker in the config editor lists both buttons and switch positions.
App & UI
- Many UI performance improvements.
- Starts on login by default. Changed default for convenience. Turning it off from the tray menu is persisted.
- Clearer first-time setup on macOS. The accessibility warning now spells out that Rotatrix must be fully quit and reopened for the permission to take effect, with a Quit Rotatrix button right in the banner. The Getting Started card shows the menu-bar icon so you know what to look for when the window is closed.
- Send Keys and hotkey triggers now accept punctuation and non-US layout symbols (e.g.
-,=,[,;,/), plus a newplusname for the+key. - Richer logging to make binding/profile issues easier to diagnose for support.
- Modal dialogs can be dismissed with Enter.
- Undo/redo buttons name the action they'll undo or redo in their tooltip (e.g. "Undo Add binding").
Integrations
- Onshape: Improved motion lagging on heavy models and "catching up" after you release — the camera now always applies the most recent pose.
- Onshape: The Start automatically and Use selection as pivot checkboxes now show their saved setting instead of always appearing unchecked.
- Rhino: When Rhino 8 is set to run plug-ins on the classic .NET Framework, Rotatrix now installs the matching build instead of one that fails to load, and flags an update when you switch runtimes after installing.
- FreeCAD: The plug-in no longer floods FreeCAD's Report View with diagnostic and retry messages; status feedback now appears briefly in the status bar.
Firmware (1.1.7)
- The USB serial (CDC) interface is hidden on a normal boot, so the device no longer creates a phantom COM port.
- Wired: The 3-position side switch no longer briefly flickers to "none" while sliding between positions — the device now holds the last settled position.
1.5.0
Note: Please remove past versions of the software when installing this one (on Windows, we also attempt this automatically).
New Features
- Automatic Updates. The app can notify you about new versions and update in place when you click Install.
- Onshape cursor pivot and pivot display with optional Userscript extension. Install for better rotation control.
- Turntable lock for level rotation. New "Snap" options:
- Turntable (nearest) locks the nearest world axis to point up. Bound to btn2 in the default built-in 3D app profiles.
- Turntable (upright) always keeps world-up pointing up.
- Experimental 2D pan, scroll & twist-zoom axis map (off by default). New output axes
scroll_x/yandzoomthat generate pan and zoom gestures. Enables smooth pan on macOS; improves simultaneous axis panning. Enable the profiledefault_experimental_software_scrollto use it (replacesbtn4). - Multiple simultaneous 3D apps can now be open at once. Input follows the focused app by profile priority, instead of only working with the last app connected.
- Twist-to-scroll click sound (off by default). Plays a low-latency click via your PC speakers while twist-scrolling, with customization under Twist to Scroll.
App UI
- The web UI now opens automatically on first run and after an install or update.
- Copy App Link tray item: mint a fresh web-UI link and copy it to the clipboard, so you can open the config UI in a second browser.
- Diagnostics submenu added to the tray.
- Added optional, anonymous usage statistics to help guide feature development — Config > Global to opt-out.
Additional Features
- Single-axis dominance tuning (soft / snap) for cleaner single-axis rotation — also used by the software pan/scroll mapping.
- Improved Pipeline config page: a live monitor of the parameters in use, with an Override toggle for live tuning and a preset picker.
- Aux buttons & LED indicators for Wired.
led_demoprofile is included to demonstrate.
Bug Fixes
- Settings written by a different app version are no longer rejected — unrecognized fields are kept in your config and skipped (with a notice) instead of the whole config being discarded.
- Blender: Pick-from-cursor and orbit-pivot raycasts now keep working after switching documents (New / Open a file) — previously the cursor tracker stopped until you reloaded scripts.
- FreeCAD: Fixed the screen-center orbit pivot.
- macOS: Fixed App Nap throttling causing gradual slowdown after app runs in the background without showing OSD for a while.
- macOS: Quitting Rotatrix no longer shows an "unexpected crash" report. The app now exits cleanly.
- Windows: Inventor is no longer reported as installed when a different Autodesk product is present.
- Windows: Send Keys bindings with a shifted letter (e.g.
shift+v) now trigger app shortcuts that match on the physical key — for example Onshape's "Named Views" — instead of only typing the character. - Windows: Keys injected by AutoHotkey and other automation tools can now trigger Rotatrix hotkeys.
- Linux: More robust
/dev/uinputudev rule autoinstaller, fixing cases (seen on Debian 12) where you had to fix device permissions by hand. - Linux / GNOME: No longer falsely prompts to reinstall the focused-window extension at login while GNOME is still starting up.
- Linux: The tray "show binary location" entry now points at the real
.AppImagefile rather than a temporary per-launch mount path. - Linux / Wayland: More consistent app-name matching for native Wayland windows, so per-app profiles trigger reliably across KDE and GNOME.
1.4.0
New Integrations
- Autodesk Inventor integration introduced. Tested on 2024–2027; older releases are untested but may work.
- Rhino 7 & 8 integration introduced, tested on both Windows and macOS.
Default Bindings
- Hold-to-orbit (add Shift to pan) now enters on the modifier each app leaves free on each OS:
- Fusion: Ctrl — plus Win on Windows
- Inventor: Win
- Onshape / FreeCAD: Win (Windows), Super (Linux), Ctrl (Mac)
- Rhino: Win (Windows), Ctrl (Mac)
- Blender: Win (Windows), Cmd (Mac), Super (Linux)
- A quick tap of Win/Super still opens the Start menu / launcher — only a held key orbits.
- Btn4 enters pan & zoom with +Shift to orbit in all of the above; Rhino and Blender newly match the other profiles here.
- Blender's previous layout (backtick hotkey) remains available as the disabled
blender_legacyprofile. Your own customizations of any profile are kept as-is. - Default zoom mode is now Pivot (zoom toward the orbit pivot) instead of Forward (toward screen center).
Integrations Manager
- Redesigned Integrations tab now that there are more integrations.
- Per-version install targets (e.g. choose which Rhino or Inventor version to install into).
- Added targets for Flatpak Blender/FreeCAD installs on Linux.
- Log viewer for troubleshooting.
Configuration & Profiles
- New type of profile called "Additions" that layer on top of whichever profile is active. Use them to override per-app feel without authoring a full profile: e.g. disable hi-res scrolling for specific apps.
- New
os:trigger condition (os:windows/os:mac/os:linux) for per-platform bindings — keys gated to another platform are never grabbed. The editor shows os chips, lit when they match the machine the app runs on. - Clearer trigger expressions in collapsed binding rows: compound expressions are visually grouped with OR separators between alternatives, and wrap when they get long.
- Improved Profiles "learn" panel with illustrations and simplified explanation.
- Hovering an axis-map chip now shows its OSD preview.
- Improved layout of Global config page.
- Config files are now read and written as UTF-8 (fixes corruption with non-ASCII paths or values).
- Fixed the Ctrl+Shift+Z redo shortcut in the config editor on Windows and Linux.
Scroll
- Hi-res scroll can now be disabled globally or per-profile (requires firmware 1.1.5).
- Now configurable per profile/binding: Hi-res scroll, twist-to-scroll enable/invert/speed and ball scroll speed.
- Improved twist-to-scroll fine-tuning defaults (higher exit ratio, shorter detection window) to make unintentional scroll less likely.
Fusion
- New "Perspective with Ortho Faces" advanced preference (off by default); when enabled, prefers this projection unless the camera is set to Orthographic.
- Navigation no longer crashes in drawing documents — it no-ops gracefully where 3D navigation doesn't apply.
- Fixed the pivot indicator not clearing in some cases.
Onshape
- Drawing pivot is centered so zoom stays middle-anchored; pivot hit aperture scales to the view.
- Fixed navigation failing to start in some dialogs when selection-as-pivot was enabled.
- Tightened pivot selection radius for screen center, especially noticeable in Perspective cameras.
OpenAxis
- Local HTTPS support: a shared local certificate and an OpenAxis secure-WebSocket (WSS) endpoint, so browser pages served over HTTPS can connect.
On-Screen Display
- The OSD now appears on the screen under the cursor instead of always on the primary monitor.
Firmware (1.1.5)
- Introduced support for the upcoming Rotatrix Wired board.
- Adds device-side support for disabling hi-res scroll (see Scroll).
- The Firmware UI tab now shows the device's hardware version and serial number.
1.3.1
Onshape
- Onshape Drawings support: pan + cursor-anchored zoom in 2D drawing tabs (rotation locked, since drawings are ortho).
Linux Compatibility
Follow-up fixes from real-world Linux testing of 1.3.0:
- KDE Plasma: active-window detection works on both Wayland and XWayland sessions (via injected KWin script).
- Default to XWayland on Wayland sessions — fixes OSD overlay appearing centered, opaque, and stealing focus. Override with
QT_QPA_PLATFORM=wayland. - Hidraw access now works on Arch, Fedora, and openSUSE (the udev rule silently dropped its MODE/TAG on distros without a plugdev group).
- Hidraw setup: device is usable immediately in the common case; replug is only suggested as fallback advice if access still fails.
- Udev install works when launched from the AppImage (was failing on FUSE mount permissions); uinput is granted in place without requiring reboot.
- Opening folders or URLs (xdg-open, kde-open, nautilus) no longer crashes due to PyInstaller's library path leaking into child processes.
- GNOME extension install: pre-checks Shell version (skips the doomed 10-second timeout on GNOME 42 / Ubuntu 22.04), distinguishes user-cancelled from failed, and surfaces GNOME's actual error message on version-mismatch refusals.
Status Page
- New warnings when global hotkeys can't be grabbed or active-window detection isn't working (so configurations relying on app/hotkey triggers don't silently fail).
OpenAxis
- New
navigation_preferencesfields:lock_pitchandlock_yaw(combine withlock_rollfor pan-only/2D navigation in orbit mode). - TypeScript client now exposes
lock_rollandlock_translation_plane(already supported on the wire). - SPEC.md rewritten for clearer onboarding (raw-axis vs OpenAxis Navigation consumption levels, message summary, session-flow diagrams).
Firmware (v1.1.3)
- New SPI bus diagnostic capture: the device records ball sensor traffic, and the host can download it from the Firmware page for debugging sensor issues.
Bug Fixes
- Integrations tab now shows the update-available red dot on startup, instead of only after first visiting the tab.
1.3.0
Linux Support
Linux is now a first-class platform. Rotatrix ships as a portable AppImage that runs on Ubuntu 20.04+, Debian 11+, Fedora 32+, RHEL/Rocky/Alma 8+, or any distribution with glibc 2.28 or newer.
All existing features work on Linux: device detection, global hotkeys, active-window profile switching, auto-start on login, synthetic mouse and keyboard input, and the Blender, Onshape, and FreeCAD integrations. The Fusion integration is bundled but untested on Linux — Autodesk doesn't officially support Fusion on Linux, so using it requires running Fusion under Wine.
Pure Wayland sessions can't synthesize keystrokes — a "Send Keys" banner appears when that's needed. X11 and XWayland sessions have no such limitation.
Firmware
- Rewritten twist-to-scroll detection with adaptive magnitude window. Slow scrolling is much more stable — zero-motion frames no longer dilute the twist ratio. Requires firmware update to v1.1.0.
- Config change:
global.twist_exit_delayandglobal.twist_windoware removed. A newglobal.twist_window_tickssetting controls the non-zero-tick magnitude window for the rewritten detector — it is not a rename (units and meaning differ from the oldtwist_windowms-based rolling window, so old values are not migrated). Both legacy keys are silently dropped from user overlays on load; the new bundled default applies.
Fusion
- Calibration now works without the settings palette open (triggering from the nav command no longer leaves a stuck indicator).
- "Last Used Pivot" promoted to a first-class pivot mode alongside Cursor, Selection, and Center.
- Pivot selection order now prioritizes cursor over selection (previously selection was first).
Blender
- Cursor-as-pivot rewritten to run through Blender's event loop instead of OS-specific cursor APIs. Enables Linux and native-Wayland support. macOS and Windows users: behavior should be equivalent, but report any regressions.
Other
- Pointer speed slider range expanded to 15.9375x (was 4x), useful for users with low system pointer speed settings.
- Quit Rotatrix directly from the web UI.
1.2.1
- Improved Onshape pivot selection: raycast constrained to selection first, then selection center, unconstrained raycast, previous pivot, model center, view target.
- Onshape bridge now connects/disconnects from OpenAxis on browser window focus/blur.
- Fixed Onshape server failing silently on port conflict. Added Retry button when conflict process is unknown.
- Onshape integrations page now shows connected client count instead of binary status.
- Fixed orphaned OpenAxis connections when Onshape bridge reconnects or crashes mid-setup.
- Fixed missing icon in FreeCAD integration build.
- Fixed FreeCAD pivot marker too small on macOS Retina displays.
- Fixed FreeCAD orthographic camera pivot placement when camera is inside geometry.
- Fixed FreeCAD profile not activating automatically by app name.
- Fixed key action bindings not saving correctly in the configuration editor.
1.2.0
Blender Integration
- Changed default Blender profile:
- Using ` (backtick) key in order to avoid conflicts with ctrl+mouse.
- Added binding-based switching between orbit and free camera modes with Btn3+Btn4.
- Mode labels renamed to "Ground Lock" and "Horizon Lock".
- Added bundled profile for "modal" use with sticky/toggle keys. Modes switch via the Blender N-panel.
Onshape Integration
- New Onshape browser extension integration with orbit, zoom, and pan control.
- Pivot is now evaluated at gesture start for more accurate orbit behavior.
FreeCAD Integration
- New FreeCAD workbench integration with orbit control and selection pivot.
- Pivot marker with show-through rendering (visible behind geometry).
Configuration Editor
- Undo/redo with Ctrl+Z / Ctrl+Shift+Z, history dropdown, and navigation to changed items.
- Drag-copy bindings and cycle states with Alt/Ctrl/Cmd+drag.
- Collapsible binding and cycle state cards with move-to-profile action.
- "Show Defaults" tab to view built-in configuration values.
- "Get AI Help" button on docs pages to share configuration context with AI.
OSD
osd_labelbinding action to display custom text on the overlay.- Configurable OSD position and opacity in global settings.
- Auto-hide after 1 second of inactivity with smooth fadeout animation.
3D Navigation Control
- Forward zoom mode: zoom toward screen center instead of toward the pivot point.
- Idle timeout: ends the motion gesture after a period of inactivity. This is useful for users who use Rotatrix in a persistent 3D mode rather than momentary activation -- for example, when using a mouse alongside Rotatrix. When motion resumes, the pivot is re-selected. Configurable per-profile and globally.
Integrations Page
- Firmware update badge when a newer version is bundled.
- Integration update badges for available plugin updates.
Binding Engine
- Single-character key triggers (
key:````,key:a, etc.) now work on macOS and Windows. - Tap-through mode (
key:tapthru:````): hold the key to activate a binding, quick-tap to type the character. Ball movement while held cancels the tap. Configurable per-trigger in the UI with a toggle chip. - Cycle and toggle states (e.g. Orbit / Free Camera) persist when switching windows — returning to a profile resumes where you left off.
Bug Fixes
- Fixed hotkey listener race condition on startup.
- Fixed active binding highlighting for identically-named bindings.
- Fixed stray clicks and path-based highlighting on inactive profiles in config editor.
- Blender: Fixed pivot marker getting stuck visible or not appearing when switching between orbit and free camera modes.
- Fixed tap-through dropping every other tap on Windows.
- Onshape: Fixed certificate trust detection on Windows.
- FreeCAD: Fixed pivot state not resetting when switching documents.
- Added Intel Mac (x86_64) build support.
1.1.1
- Fixed config editor failing to save after adding a cycle binding (serialization was injecting invalid fields into cycle states).
1.1.0
New Binding System
- Bindings use recursive boolean trigger expressions (
and,or,not) instead of flat trigger lists, enabling complex activation conditions likekey:shift and (app:Blender or app:Fusion). Existing configs using the old trigger format are automatically converted. - Trigger expression visualization in the UI with nesting indicators, multi-line display, and tooltips.
- Diagnostics panel shows expression-level evaluation state for debugging trigger logic.
- Fusion and Blender profiles only activate when both the target app is active and its integration is connected.
Cycle Bindings
- Cycle mode: bindings can advance through a sequence of states (e.g. toggle between orbit/pan modes on each press).
- Live cycle state visualization in the config editor.
Blender Integration
- New Blender extension with orbit control, pivot tracking, and walk/fly navigation (requires Blender 4.2+).
- Free camera navigation mode with lock-roll and translation-plane preferences.
- Orbit marker follows Blender standard conventions.
- Preferences stored in extension prefs instead of scene data, persisting across files.
- Install and uninstall the Blender extension from within the app.
Configuration UI
- Inline YAML editor for profiles and axis maps with built-in YAML linter.
- Gain sliders with improved axis map page layout.
- Linked profile and axis map dropdowns with inline axis map previews.
- Draggable reorder for profiles.
- Reset-to-default buttons on the global config page.
- Built-in documentation page for configuration reference and trigger syntax.
- Live state display shows real-time binding and trigger values.
- Dynamic "Add" menu for creating new fields, bindings, and nested states.
- Enable/disable individual profiles.
Axis Dominance
- Axis dominance presets: named presets configurable at the global, axis map, and per-binding level.
- User configurations can override built-in axis maps and dominance presets.
- Axis dominance can be set as a binding action.
Send Keys
- New
send_keysbinding action: trigger keyboard shortcuts and media keys (play/pause, volume, next/prev track) from bindings. - Web editor for configuring send_keys actions.
User Education
- Interactive ball-mode tutorial for learning trackball controls.
- Improved setup instructions and onboarding flow.
Other
sixdof_btnrenamed toopenaxis_btnin config (backwards compatible).AxisMapRefmode/gain overrides removed in favor of binding-level overrides. Existing configs are automatically converted.- Tray icon shows detailed version info when Alt/Option is held.
- Windows installer cleans up old files before installing.
1.0.0rc2
- Single-instance guard: if Rotatrix is already running, a second launch shows a dialog and quits instead of conflicting on ports.
- Error dialogs on critical startup failures (ports taken, servers fail to start) instead of silently crashing.
- Log file capped at 5 MB with automatic rotation. "Reveal log file" added to the tray menu.
- Fusion add-in: pivot fallback is now a separate setting (Last Used Pivot, Camera Target, or Origin) instead of being mixed into the auto-selection list.
- Fusion add-in: Calibrate button auto-enables the Cursor pivot mode.
- Fusion add-in: pivot and pivot lock are cleared on document switch so stale pivots don't carry between models.
- Fusion add-in: improved descriptions and help text in the Rotatrix Settings palette.
- Firmware page shows confirmation when firmware is already up to date.
- Improved integration setup instructions.
1.0.0rc1
- Testing release.
- Includes firmware 1.0.1 (Batch 1 shipped with firmware 1.0.0).