- Oops, the README still mentioned the old websockets package. Fixing that, which requires a version change to show up on NuGet.
- Module path change for websockets didn't get checked in
- Client device command tuple calls changed to requiring class structures. If you were actually using the tuple calls, PLEASE GET AHOLD OF ME, everyone I asked wasn't and I'm very curious if they were useful. I can't personally see how they were.
- Websockets are now included in this library, in the Buttplug.Client namespace.
- Reimplement Websockets using .Net System.Net.Websockets
- Remove a dependency that'd been causing us issues for a while
- Move Buttplug.Client.Connector.Websocket to main module
- Since we're building without the extra dependency now, this can live in the main library.
- Remove tuple calls from public API and internals
- I'm not sure the external facing tuple calls were ever used, and they required extra dependencies in some cases. Converted tuples to using small classes. Not great, but we need to stay .Net Standard 2.0/.Net Framework 4.6.2 compatible and I want to kill the dependency.
- Update to Newtonsoft.JSON 13.0.3
- Evaluating move to included litjson to remove this and make the library dependency free.
- Readded StopAllDevicesAsync method
- Moved from using dataflow to channel for websocket connector
- Fixed bug with DeviceRemoved not exposing indexes correctly
- Add Unknown to Sensor Types
- Fix multiple Websocket related bugs (ping, async tasks, etc...)
Welcome Back, Buttplug C#
- All Server Components stripped out, library is now Client Only, expected to be run against either Intiface Central or Intiface engine.
- Updated to the Buttplug v3 spec, including ScalarCmd and SensorReadCmd
- JsonSchema removed
- Reflection requirements removed
- IPC Connector removed (Rust implementation won't be using it either, so no reason to have it here)
- Examples removed (moved to dev guide)
- Removed .Net Framework support (no longer needed)
- Added Standard 2.1 support (Alongside Standard 2.0)
- Websocket Client Connector returns to being its own package.
- Update to Buttplug v5
- New version of btleplug
- New comm managers and other features that need to be ported to FFI
- #87: Update ButtplugClient to use ConcurrentDictionary for device storage
- #78: Fix key duplication exception when > 1 client instances created.
- #79: Fix issue with re-entrancy causing double-disposes
- #77: C# Cleanup/Linting
- #76: Fix issue with log messages causing exceptions on device drop in FFI
- #69: Sorter now throws a ButtplugConnectorException (similar to disconnect errors) for tasks that are still live during shutdown.
- Update to buttplug-rs v3.0.3, fixing issue with RawWriteCmd JSON Schema
- Update to buttplug-rs v3.0.2, using tokio runtimes and with better scoping for runtime
setup/teardown
- Mostly because it's the only way to get Buttplug Unity v1 working.
- Also fixes some bugs with battery reading in Lovense and Magic Motion toys.
- Log object signatures/names changed.
- Update to buttplug-rs 2.1.9, fixes Lovense battery read issues, should reduce bluetooth disconnect panics on windows, cleans up some error log messages that aren't actually errors.
- #53: Nuget package now contains both .net standard and .net framework 4.7 builds
- #37: Added IsScanning status to client
- Update to buttplug-rs 2.1.7, Lovense Desire Egg support, new btleplug version
- #58 / #61: Sorter callback now processes future results on C#/.Net executor, and catches errors on possible races.
- Update to buttplug-rs v2.1.5, fixes issues with connection status races and some devices panicing on disconnect while running initialize()
- Fix issue in FFI where multiple reconnects on the same client can cause multiple events to be sent
- Update to buttplug-rs v2.1.4
- Add hardware support
- The Handy
- Fix issue with Lovense Serial Dongle timing
- Fix LoveAi Dolp compat
- Update to buttplug-rs v2.1.3, fix issues with max speed causing errors/crashes
- Update to buttplug-rs v2.1.2, fix issue where StopDeviceCmd may not work in in-process instances
- Update to buttplug-rs v2.1.1, more error handling/bugfixes, Lovense/Nobra device handling
- Update to buttplug-rs v2.0.5, fixes issues with XInput misaddressing, and DeviceMessageInfo serialization issues.
- Update to buttplug-rs v2.0.3, fixing some message compat issues and restoring access to some stroking and rotating devices.
- Update to buttplug-rs v2.0.2, hardware support for Lovense Ferri, lots of internal cleanup, lovense dongle fixes.
- Update to buttplug-rs v1.0.5, with new hardware support for libo, prettylove, etc
- #47: Sending single commands should now trigger on all motors.
- Fix issue with event emitters missing null conditionals, causing null throws if no handlers exist.
- #45: Fix issue with disconnect/reconnect causing device index collisions.
- Update to buttplug-rs v1.0.4 (via buttplug-rs-ffi v1.0.3), fixes XInput devices not emitting disconnected events.
- Update to buttplug-rs v1.0.3 (via buttplug-rs-ffi v1.0.2, yay dependency trees), fixes btle device scanning issues, added XInput rescanning
- Update to buttplug-rs v1.0.1, fixes device scanning race issue
- Hold a reference to the LogCallback Delegate for the duration of the process lifetime, otherwise we'll crash on callback setup for logging.
- Update to buttplug-rs v1.0.1, with new device config format
- Expose new env logger handler
- Due to a mishandled test version 2 years about in Buttplug C#, v1.0.0 is taken. Therefore we're moving straight to v1.0.1
- Update to buttplug-rs 0.11.3 via ButtplugFFI v1b6. Fixes memory leaks and possible race condition issues.
- Added Connected getter to client
- Added ability to request log level output, and emit logs via event.
- Fixes emitting of ServerDisconnected and ScanningFinished events in client.
- Change Build system to account for .Net Core or .Net Framework building. Currently only works on x64 builds, "Any CPU" will not work.
- Added client ping method
- Added utility method for console logging
- StopDeviceCmd should now work on all devices, not just device with index 0
- Disconnect should now actually disconnect
- Remove all Console log calls
- Suffix all Async methods with "Async"
- Make WebsocketConnector take a URI, not a string
- Move back to a connector-object-like mechanism, using C# method overloading for the Connect call.
- Change main namespace to "Buttplug" to match older libraries.
- Initial nuget release of C# FFI API. Includes most basic functionality to run Buttplug.
- Contains very little code from Buttplug C# v0.x. Consider this a complete restart.
- Move Unity package building from C# repo to its own repo
- Added Unity Package to repo
- New hardware support
- Vorze Piston SA
- New hardware support
- Kiiroo Onyx+
- Youou will now stop on StopDeviceCmd/StopAllDevices
- WeVibe Melt protocol fix
- New hardware support
- Kiiroo Pearl 2
- OhMiBod Esca 2
- Merged Kiiroo support into single protocol, so Titan should work as a vibrator now.
- New hardware support
- Magic Motion Awaken, Equinox, Solstice
- New hardware support
- Lelo F1s
- Aneros Vivi
- Lovehoney Desire
- Libo Sexy Fox, Lucy, Elle2
- WeVibe Vector (for real this time. I think.)
- Nothing actually in this release, just fixing a CI hiccup on 0.5.2
- Websocket server should only send one JSON string per packet
- Update Dependencies (including Plugin.BLE support for MacOS)
- New hardware support
- Motorbunny Classic
- Change device config file loading to use JSON, removing YAML library requirement
- New hardware support
- WeVibe Vector
- Kiiroo Clinoa
- Realov Lydia, Irena
- MagicMotion Vini, Fugu
- Fix UWP Gatt Service finding for some toys
- Add Xamarin (iOS/Android) Bluetooth Manager
- New hardware support
- Svakom Ella
- Libo Carlos, Shark, Lina, Adel, Lily
- Make XInput scanning less spammy
- Fix invalid read issue with Lovense Device Identification
- Fix package versioning with GitInfo (DLLs now show version)
- Fix building from non-git-repo (zip archives)
- Fix CI PR builds failing to sign binaries
- New hardware support
- PrettyLove brand
- MonsterPub (Libo)
- Fixed conflict issues with BouncyCastle between our library and the PEM reader we use. Removed self-signed cert generation from library to do this. If you need a cert, use intiface or generate one with OpenSSL or something. But as this is a thing that has nothing to do with sex toys, it's No Longer My Problem.
- New hardware support
- Kiiroo Onyx 2.1
- RealTouch
- Various fixes for HID devices
- New hardware support
- Mysteryvibe Tenuto
- DeviceManager can now be accessed from a ButtplugServer via a getter
- Don't hold disconnected devices in the main device array (#618)
- Fix nuget display icons
- Removed CLI, now at https://github.com/intiface/intiface-cli-csharp
- Nuget packages now cryptographically signed
- Update UWP Bluetooth Manager to Win10 17763 SDK
- Added support for more LiBo Devices
- Fixed issue with bluetooth devices not reconnecting (#602)
- Fixed redundant calls to AddAllSubtypeManagers (#610)
- Readied CLI for Intiface
- Added PEM cert reading to Websocket Server
- Mostly CI/Release work in preparation for Intiface Release
- Added Hardware Support
- Youou Wand
- Fixed check for lack of BLE characteristics
- Fixed issue with BLE devices not being seen again after connecting once
- Implemented external device configuration files and user device configuration files
- Moved device protocols into base library
- Rebuilt Device Subtype Managers to only handle device communications, not protocol specifics
- Move CI to Azure Pipelines
- Move all project files to MSBuild format
- CI now builds Windows/Mac/Linux on all builds
- Added CLI program, handles all server tasks
- Moved TestDevice/Manager classes into main library
- Switch to using HIDSharp for Serial/HID on all platforms
- Added Hardware Support
- Lovelife Krush
- Cueme Underwear
- Subtype Managers without continuous scanning will now poll for devices
- Corrected MagicMotion protocol speed scaling
- Devices no longer ignore stop commands if stop command is first command sent.
- Erostek ET-312 support disabled due to deadlocks
- Added Hardware Support
- Vorze Bach
- Moved TestServer/DeviceManager/Device to Core library for examples
- Updated dependencies
- Added Hardware Support
- Picobong Toys (All)
- Updates schema to fix LinearCmd issue
- Added Hardware Support
- Lovense Osci
- Magic Motion Magic Wand
- Magic Motion Magic Kegel Twins
- Updated schema to fix NJsonSchema parsing issues
- Fixed issue with not being able to scan for devices more than once per session
- Added Hardware Support
- Kiiroo Titan
- Kiiroo Onyx 1 (Bluetooth)
- WeVibe Classic
- Made code more C#-y
- Methods exposed to developers now throws exceptions on errors, versus returning Buttplug Messages
- All async methods now end in Async, take cancellation tokens
- Complete rewrite of Client API
- More closely resembles buttplug-js client API
- Uses extensible Connector setup for managing communications
- More ergonomic API for developers, should never have to form raw Buttplug Messages
- Server now searches local DLLs for Subtype Managers, versus requiring client to specifically add them
- Nuget Core/Client/Server packages now condensed to Buttplug package
- Buttplug package and Client/Server connectors now .Net Standard/Framework, supporting on Linux/Mac as well as Windows
- Hardware Subtype Manager libraries still .Net Framework, because they're windows specific
- Lovense devices now support LovenseCmd message
- IPC Connectors for Client/Server
- SerialPortManager now capable of using protocols other than ET312
- Remove GUI applications (now at https://github.com/buttplugio/buttplug-windows-suite)
- Kiiroo Emulator completely removed
- Added example/tutorial programs to show developers how Buttplug C# should work
- Lots of Documentation updates
- Added Copyright to (most) files
- Lots more tests
- Converted all tests to using FluentAssertions
- Print Bluetooth radio info on first scan when logging at Debug or higher
- Use Types over strings where possible
- Lovense legacy devices (using BLE Indicate) now detected via same method as newer devices
- Catch exception when serial port with incorrect name shows up
- Lots of Resharper warnings fixes
- Lots of spelling fixes
- Fix issue with Launch not connecting
- Fix issue with WeVibe/Youcups devices not being found
- Added Hardware Support
- Vorze UFO SA
- LiBo Whale
- MysteryVibe Crescendo
- Cyclone X10 (USB)
- Kiiroo Onyx 2
- Added name prefix device searching (Hopefully fixes Lovense update problems)
- Rename WebsocketServer to Server in preparation for IPC
- Add signal multiplier to GVR, for games with light vibration
- Add controller passthru to GVR, to allow turning off gamepad rumble when routing to toys
- Remove ping checking from Server to stop background tab disconnects on webbrowsers
- Move all .Net Standard project to .Net 4.7
- Update dependencies
- Change server GUI from disappearing to disabling on server stop
- Clear last error on server on successful connect or server start
- Fix lockup when closing applications that use the device tab and have a device scan going
- Fix crash when device names is missing in friendly name tables
- Fix crash when trying to open link on systems without a browser selected.
- Fix crash when Crypto key can't be written to disk
- Fix crash when Trancevibrator registry lookup returns unexpected types
- Added Hardware Support
- Lovense Lush/Domi/Edge (new firmware versions)
- WeVibe Sync
- Kiiroo Pearl 2
- Pornhub Blowbot
- Rez Trancevibrator (Win 7 only)
- Game Vibration Router now have "Vibes" tab to show incoming vibration commands
- Added individual vibrator control for WeVibes
- Fixed XInput DLL missing crash
- Fixed BAD DATA error/crash on accepting certs
- Moved all Non .Net Standard projects to .Net 4.7
- Far more test coverage
- Game Vibration Router only updates toys at 20hz max
- Added Hardware Support
- Youcups Warrior II Masturbator
- Erostek ET312B
- Wevibe 4
- OhMiBod/Kiiroo Fuse
- Lovense Edge/Hush/Domi (new firmware versions)
- Individual Vibrator support for Lovense Edge
- Now uses v1 of the Buttplug Protocol spec, adds new generic messages, as well as feature counts for device messages
- Supports message downgrading, meaning older clients can connect to newer servers
- Newer clients cannot connect to older servers, though
- Moved code to .Net Standard 2.0 compatibility
- Moved testing to NUnit
- Game Router process select button disabled until process selected
- Fix SynchronizationContext crash in client
- Add ignore cert errors for client library
- Handle message ID iteration in client library
- Fix ArgumentOutOfBoundsException in updater
- Added auto update and update checking functionality
- Added support for the following hardware
- WeVibe 4 Plus, Ditto, Nova, Pivot, Wish, Verge
- Lovense Domi
- Added more product names for the Lovense Hush (LVS-Z36, LVS_Z001)
- Added Game Vibration Router application
- WebsocketServer now defaults to SSL
- Fixed hang when no XBox controllers and no Bluetooth adapters are connected
- SSL Errors in Websocket Server are now shown in GUI or as a notification, not in modal dialogs
- Fixed ObjectDisposed Exception in Kiiroo App
- Fixed port number changing in Websocket Server
- Fixed crash when copying IP addresses in Websocket Server
- Fixed version number listing in logs
- Vibratissimo devices now required to be named "Vibratissimo"
- First release
- Added support for the following hardware
- XInput (XBox) Gamepads
- Lovense Max, Nora, Lush, Hush, Ambi, Edge (vibration only)
- Fleshlight Launch
- Vorze A10 Cyclone
- Magic Motion toys
- Vibratissimo toys
- Added libraries (available as nuget packages)
- Core
- Client
- Server
- XInputGamepadManager
- UWPBluetoothManager
- Added applications
- Websocket Server
- Kiiroo Platform Emulator
- Project Started