This file records user-visible compatibility changes. Detailed development
notes remain in WHATS_NEW.md.
The format follows Keep a Changelog. Until 1.0, breaking changes are permitted only when documented here with a migration path.
- Stable, headless
je_auto_control.apifaçade. - Portable
autocontrol.failure-bundle/v1diagnostic archives and CLI command. - Public API lifecycle, capability matrix, security policy, coverage and type checking configuration.
- Releases are prepared from version tags and use PyPI Trusted Publishing.
- The USB/IP server binds
127.0.0.1by default (least-privilege). Exporting the attached device to the LAN now requires an explicithost="0.0.0.0".
- New integrations should avoid the eager, historical top-level import surface
and import stable entry points from
je_auto_control.api.
- macOS cursor position and omitted-coordinate clicks on Retina / HiDPI displays (pixel-vs-point display-height mismatch).
- Remote-desktop relay hang on Linux + CPython 3.14 when one paired peer
disconnected (a cross-thread
shutdown()no longer wakes a blockedrecv()). AC_expect_pollcrashing on a not-ready value instead of continuing to poll;AC_parallelbranch variable-scope isolation; malformedrun_suitespecs now report a clean error instead of aborting.- Windows Interception backend send-to-window click silently no-opping.
- Wayland partial-coordinate
mouse_scrollraising instead of degrading. - Action-file save now raises
AutoControlJsonActionException(not a rawUnicodeEncodeError) on non-encodable text; non-ASCII USB/IP busid no longer kills the client thread; SQLite connections are closed; USB ACL removal is case-insensitive.