Download: timed patreon only exclusive
Additional patreon only changelog:
Fix SLR stuck in connected state when cached session gets invalidated while running
Fix SLR script chunks sometimes streaming multiple times
Fix SLR script sometimes streaming more chunks than necessary
Changelog:
Allow adjusting keyframes heatmap max heat
Fix ability to connect to Emby/Jellyfin with invalid state
Fix playback when using integrated player in Jellyfin Android client (#189)
Fix playback not detected when using Jellyfin Android TV
Fix possible unwanted motion when DynamicKeyframeCollection gets updated
Fix main thread not idling when nothing needs updating
Fix MPV play/pause state not behaving correctly in some edge cases
Fix possibility of axis transition value or duration growing infinitely when offsetting from shortcuts/plugins
Fix motion provider speed matching also speed limiting script
Fix keyframes preview tooltip curve skipping script points
Fix draggable point canvas step curve skipping points
Fix draggable point canvas interpolated curve skipping points
Simplify FixedUpdate and PolledUpdate helper methods in plugins
Allow plugins to read action/property argument types and return types
Allow plugins to invoke actions with dynamic arguments
Fix child class constructors detected as plugin constructor
Additional patreon only changelog:
Convert SLR support from Haptics Connect to a script repository

This is initial implementation and there are some drawbacks compared to Haptics Connect:
It currently does not support script switching, the repository only selects the latest user made script and falls back to latest ai script if it cannot find one. The script switching will come in later MFP versions but it requires big internal changes.
Heatmap in MFP will load in chunks, but there is a full one visible in DeoVR.
Only stroke axis works for multi-axis scripts (SLR limitation)
DeoVR haptics toggle gestures don't work since they require Haptics Connect
Scripts stored on VR headset will not be detected by MFP since they require Haptics Connect
If you had problems with SLR scripts not working on Quest due to firewall/VPN when using the old way then this fixes all of those issues.
Changelog:
Block plugins from accessing secure script resources
Add ability to toggle InPrivate mode in Web source
Add ability to export/import (copy/paste) shortcuts and shortcut actions (#195)

Add support for multi-axis funscript format
Support script scale when using PolledUpdate (#215)
Allow triggering multi key gestures without having to release all keys
Fix sync on script resource changed setting not being respected in some cases
Fix crash when invoking motion provider actions with axis set to null
Fix DeoVR and HereSphere MediaResetMessage spam when no video is loaded
Fix possible crash when opening error dialog from snackbar
Fix speed limit when using PolledUpdate
Fix possible crash when using LinkAxis::Set actions
Fix LinkAxis::Set action allowing circular links
Fix possible crash when window is restored after logging in into windows
Add ScriptChangingMessage to allow plugins to modify scripts before they are applied
Use PasswordBox for all api key fields
Fix possible deadlock when using Web media source
Fix possible duplicate items in Serial/Plex/Emby/Jellyfin selection box
Add ability to toggle script heat normalization

In previous versions script heat was always normalized, meaning the fastest section of the script was always red no matter how fast that section is, this version disables normalization by default and adds ability to enable/disable it. With normalization disabled script sections are only marked red if they are at or above 500 units/s.
Fix MPC source not responding correctly to play state changes causing no motion from scripts
Fix MPC source not resetting state when media file is closed
Fix XBVR/Stash not working in some cases due to endpoint check not resolving host names
Fix possible deadlock by compiling plugins only after the window is loaded
Fix missing maximize button in Web window
Fix main window padding when maximized
Limit number of heatmap preview updates caused by DynamicKeyframeCollection
Fix possible crash when using null to target all axes
Fix duplicate axis clear/reload actions
Fix Script::SkipGap action ignoring target axis
Fix Axis::Script::Reload and Axis::LinkAxis::Set actions not blocking until script reload is finished
Fire PostScriptSearchMessage before applying the scripts to allow plugins to modify the result
Support script invert and media playback speed when using PolledUpdate
Add ability to disable assigned shortcut actions without having to remove them
Add ability to search for local scripts from plugins
Add ability to load scripts from shortcuts actions
Improve randomness of random motion generation
Improve performance of heatmap generation
Change default Serial and UDP output settings to improve smoothness by adding some "additional elapsed time"
Fallback to default device when selected device has no axes
Remove CreateView from plugins and only load view from .xaml files
Fix Buttplug output PolledUpdate ignoring axis settings Enabled state
Fix broken interpolation preview
Fix exception when trying to schedule shortcut actions after disposing
Fix crash when disposing a plugin with registered actions
Fix crash when plugin throws exception during initializing or disposing
Fix crash when selected device is not found
Fix Axis::InvertValue actions migration
Fix cloned items in UI when using "move up"/"move down" buttons
Fix ability to set device axis name longer than 2 characters
Fix TCode commands sent without new line when using additional elapsed time
Disable Control-flow Enforcement Technology (CET) Shadow Stack, it was enabled by default in .net 9 but causes crashes on some systems
Additional patreon only changelog:
Fix FapTap repository not loading scripts for some videos
Changelog:
Add ability to stretch TCode move duration, can help with micro stutters caused by jitter

Add RawInput/XInput logging toggles
Add draggable separator between assigned actions and action search
Add ability to invoke shortcuts from plugins
Allow script file drag-drop on axis tabs
Allow drag-dropping multiple script files
Fix script out of sync when using PotPlayer
Fix PotPlayer media path containing garbage data in some cases
Improve Web window UI
Add support for F11 and video fullscreen in Web window
Close Web window if initialization fails
Show WebView2 runtime download dialog if it's not installed
Allow changing playback speed of Web window player from MFP
Fix instant device movement due to invalid PolledUpdate events
Fix Web source start page not allowing urls with custom ports
Fix crash when calculating heatmap with negative keyframe positions
Fix crash when receiving messages in UDP output after disposing
Add FixedUpdate and PolledUpdate helpers for plugins
Add dynamic KeyframeCollection which allows live streaming of keyframes
Additional patreon only changelog:
Add FapTap script repository - works with Web media source

Fix scripts stored on VR headset not loading via SLR interactive api
Fix SLR login code not opening browser
Changelog:
Add Web media source - opens a custom Edge browser which sends playback information to MFP from a video element on the page

Add option to split axes in heatmap preview (#198)

Add ability to configure main thread update rate (#176) - can be used to lower CPU usage

Add support for reading and writing PotPlayer playback speed - requires 2501xx beta or later
Make looping optional in script motion provider
Aggregate plugin file watcher events and queue compile only once
Optimize axis state locking
Fix unable to receive data from auto-started PotPlayer
Fix OFS source PathAndQuery not set after changing ip or port (#203)
Fix first plugin #r reference not found if source file contains BOM
Yoooi
2025-11-10 19:56:51 +0000 UTCEgypt Elton
2025-11-10 19:34:10 +0000 UTCYoooi
2025-10-30 03:28:13 +0000 UTCMane
2025-10-29 19:20:56 +0000 UTCYoooi
2025-07-29 12:41:31 +0000 UTCzim maniac
2025-07-27 17:44:45 +0000 UTCYoooi
2025-02-28 13:51:06 +0000 UTCPete
2025-02-28 09:13:15 +0000 UTCgeo_gan
2025-02-21 14:33:06 +0000 UTCYoooi
2025-02-21 12:48:20 +0000 UTCgeo_gan
2025-02-21 10:15:06 +0000 UTC