Here's a quick summary of how it's coming along so far. Version 3 is still a work in progress, but I'll post a preview build tomorrow. Or you can download the source code if you want to build it yourself: https://github.com/Sauceke/LoveMachine/archive/refs/heads/v3.zip.
This is what the stroking motion looks like in LoveMachine 1 and 2:

And this is what it looks like in LoveMachine 3 with smooth stroking mode enabled:

As you can see, we get a much more natural flow compared to v1/v2's abrupt, robotic movements. Somehow it also feels more "intimate", at least in my experience. (Or maybe I've finally gone nuts, who knows.)
This feature relies on the Handy's (and possibly other devices') ability to change speed without stopping the motor upon receiving a new command. By interrupting each command with a new one before it can be finished, we can trace a sine curve:

The tiny changes in speed are still noticeable on a Handy, but you'll only feel them with your hand, while holding it.
Unfortunately, not every device can handle interruptions so well (the Keon, for example, seems to be hardcoded to stop at every new command). So all of this is turned off by default, and you'll have to open Plugin Settings to enable it.
A lot of settings that used to be available only at a global level are now available for each device separately:

That includes the smooth stroking option previously mentioned, as well as latency, update frequency and stroke/vibration range options. On a related note, latency compensation also got much better, and now supports all device types.
The test buttons now work on all device types, and they replicate the exact in-game behavior of the device.
Probably no one cares, but just to give myself a pat on the back: I optimized the crap out of everything. There are fewer coroutines, and they only run when needed. Device controllers are decoupled from the game hooks. There is less boilerplate. No more circular dependencies. Even added some docs. Finally everything seems to be exactly in the right place. Good job, me.
If Buttplug 6 comes out by the end of summer, I'm definitely integrating it into the next release, but that might cause some delay. Apologies in advance if that happens.