Skip to main content

2024.1223.0

App

  • Reworked updater to always run first to ensure that the app is always updated before the modules
  • Migrated all files to UTF8 to reduce filesize and ensure Unicode compatibility
  • Exchanged Show Relevant Elements Only for Filter By Enabled Modules in the ChatBox clip edit window
  • Fixed deleting a profile showing the wrong message
  • Guard against tracked devices having batteries below 0%
  • Guard against using symbols for int and float variables when no symbols exist
  • Fixed a thread crash caused by auto-start with VRChat and not having a speech model installed
  • Fixed some slow app and module behaviour caused by thread blocking
  • Fixed some managers sometimes not saving on app close
  • Changed default speech model from tiny to small to improve recognition quality
  • Fixed downloading files not showing the correct progress
  • Made downloading files faster
  • Changed the speech engine to allow speech additions
  • Added a toggle to stop the speech engine from auto-translating to English
  • Changed OSCQuery to return a ReceivedParameter for consistency
  • Improved module settings to be more resilient and load faster
  • Changed dropdown module setting to take in any class and remove DropdownItem
  • Fixed ChatBox text not clearing when the live text eraser is pressed
  • Fixed a race condition regarding Edge and Windows media
  • Fixed module logs including some general information
  • Created QueryableParameters to allow the user to define what a parameter should be to trigger something in a module
  • Small fixes and optimisation

Official Modules

  • Converted Keybinds module to use QueryableParameters
  • Added Success parameter to PiShock module
  • Added lowest tracker role and battery to SteamVR Stats
  • Fixed an exception when the AFK module was too quick to manage the VRChat window

Prefabs

  • Updated Discord prefab to support new Keybinds config

2024.1209.0

App

  • Fixed parameters with wildcards not working
  • Added startup view
  • Fixed router not saving properly
  • Fixed crash when attempting to backup V1 files that are invalid
  • Fixed clip edit window not spawning in the center of the screen
  • Fixed not being able to open settings/parameters/prefabs for the same module at the same time
  • Added a popup to automatically setup the speech engine if using a module that requires it
  • Fixed a crash when the chosen input audio source provides invalid data
  • Fixed a crash when the user doesn't have a Whisper model installed
  • Fixed some UI inconsistencies

Official Modules

  • Added mode to PiShock module log
  • Changed all prefab links to the V2 links where applicable
  • Added indexes to the shocker group list
  • Alter max duration and intensity logic of PiShock to replicate V1's behaviour

2024.1208.0

After over a year of work, V2 is finally here. A lot has changed, so brace yourself for a read!

As there has been many changes, and there are a lot of differences in what modules should be used now, take a read of the upgrade document here.

As always, if you need help, join the Discord Server

What's Changed?

  • UI framework
    • V2 is written in WPF, meaning that it's now written in a proper desktop framework that Windows supports
    • This enables for clearer text, faster UI, lower memory usage, lower storage usage, lower CPU usage, and NO GPU usage!
    • This also allows for opening multiple windows so that the UI can be less cramped
  • OSCQuery
    • VRCOSC now supports connecting to VRChat via OSCQuery
    • If you don't know what OSCQuery is, that's fine! It just means less port errors if you're running other apps
    • If you were previously using the router, you now shouldn't need it
  • Profiles
    • Everything you do in the app, aside from global settings, is now inside a profile
    • This means you can now make different profiles for different things
    • Profiles are able to be copied if needed
    • Profiles are also able to be linked to avatars, meaning if you change into an avatar the linked profile will be changed to, automating profile switching!
  • Modules
    • The SDK has been completely revamped to be more stable and resilient
    • Modules are now installed directly from GitHub, and the official modules aren't packaged with the app. This allows for modules to be updated without the app updating
    • Anyone can now publish a module package on GitHub and have it appear inside the app for everyone to use!
    • Modules have had a massive facelift with clearer UI for their settings and parameters
    • You can now import/export configs for easier sharing, and for putting alongside prefabs so installing them even easier
    • Compatible prefabs are also linked
    • Where applicable, there are also links to the docs for certain modules where extra information is useful
    • Parameters are also now able to be disabled, if you don't want to see certain parameters
  • Run View
    • The run view has had a massive upgrade with several notable features
    • The first tab, runtime, allows module developers to create custom UI to be placed on the run view for users to use. These are meant to be for settings that can be dynamically populated during runtime
    • The second tab, avatar, is the incoming and outgoing parameter list that was in V1
    • The third tab, ChatBox, is a preview of the ChatBox when the timeline is active, meaning you don't have to go into VRChat to see if things are working
    • The ChatBox tab also allows you to type live text into the ChatBox to override the timeline
  • ChatBox V4
    • ChatBox V4, also now just the ChatBox Animation System, is an upgraded version of ChatBox V3
    • The timeline now allows you to reorder clips by dragging them between layers
    • Module developers can now add dynamic states (ones that aren't available when the app starts), meaning for things like the Counter module, different states and events per counter!
    • States and events have had a facelift, allowing for custom settings per state and event. Things like showing the typing indicator, some background tricks to "hide" it, and more to come!
    • The biggest change has been to how variables are referenced. They're now in a list, where you use {i} in the textbox to reference them, where i is the number next to the variable
    • Variables are now instanced, meaning the module provides some raw data, and you choose how it's formatted
    • TickerTape is no longer a module, as every variable can ticker tape!
    • There's also some custom variables that don't require a module to work. If you think you know of something that would be useful, suggest it
    • You'll also see the clips and states/events outline in yellow. This is to show you which clip and state/event is currently active
  • Speech To Text
    • The speech engine is now global rather than being per module, and has changed from VOSK to Whisper
    • Whisper has many upsides, being that it's faster, more accurate, has punctuation, and uses less resources
    • Since it's global, you need to go into the app's settings and install a model
    • In the settings you can also mess with the different sliders to get recognition to work better for you. The default settings should be fine for most users
    • If you have a Vulkan-capable GPU, it will also be used where possible to speed up recognition. It won't use it if VRChat is taking up all your GPU though!
  • SteamVR
    • SteamVR integration has been given an upgrade, allowing modules to reference specific roles for trackers rather than having a list
    • This requires users to go into the app's settings and assign roles to all the devices that have connected to their SteamVR instance

Along with everything above there's countless smaller changes, improvements, and QoL features!

Thank You!

Thank you to everyone that's supported V2's development over the past year. It's been a lot of effort to get things right, and I'm very excited for the future of VRCOSC.

A big thank you to the beta testers who were daily-driving V2 and reporting bugs, and a massive thank you to the whole community who've still been using VRCOSC!

2024.1208.0-v2

This changelog is purely for people who want to see what the difference between the main release and the previous V2 beta release.

If you want to see the full changelog for what's changed between V1 and V2, go here

App

  • Force a package refresh before manually installing just in case a package has updated
  • Fix Whisper crashing if the app still tries to process audio data if a a Whisper model isn't installed
  • Fix Whisper crashing if the recognition becomes unstable
  • Improve PackageManager UI performance
  • Fix clip element variable ordering sometimes being wrong on reorder and remove
  • Restrict timeline editing when editing a clip (for now?)
  • Changed the default state name check of a clip state to be a default name check
    • This means you can name a state "Default" and it will remove the name, but the lookup for the state can be specific just in case you may want to add more states in the future
  • Fix droppable areas sometimes generating wrong
  • Fix profile dropdown not changing when the profile is automatically switched by the current avatar
  • Fix profile automatically switching sometimes not working
  • Changed it so that received parameters aren't handled if they aren't enabled
  • Close all windows when a package change occurs, ensuring everything is serialised
  • Improve WindowManager to correctly manage windows based on a comparer
  • Changed prefab window to show links to open instead of instant downloads
  • Set default view to modules
  • Fix clearing the ChatBox timeline not deselecting the current clip
  • Fix pasting a clip sometimes failing causing an invisible clip
  • Added more validation to parameters and wildcards
  • Allow profiles to be copied
  • Upgraded all remaining window handling to use the WindowManager
  • Added more helper text in various places
  • Added more links to the docs in various places
  • Changed all windows to spawn on the screen their parent window is on, and in the center of the screen
  • Moved the 'Live Text' feature of the ChatBox to its runtime tab rather than the timeline
  • Added the ability to have dropdown lists of items instead of just enums for module settings
  • Add some hint buttons to various features
  • Add first time install window
  • Add information view
  • Altered some setting lookups
  • Fixed minimal background sometimes breaking with large ChatBoxes
  • Made start in tray more resilient
  • Improved KeybindPicker to allow for multiple regular keys
  • Improved KeybindPicker to fix not detecting keys correctly when Alt was held down
  • Guarded against crashes when the official modules aren't available
  • Ensured the first time setup window isn't closed when the official modules are installed in first time setup

Official Modules

  • Fixed the default state of SpeechToText not being set
  • Fixed some non-standard titles and descriptions in various modules
  • Added the ability for AFK Detection to minimise/maximise the VRChat window when you change AFK state
  • Changed Hardware Stats to provide all data in GB

2024.1115.0-v2

This is the 2nd (and hopefully final) release candidate for V2 replacing V1! You may notice that things fail to load correctly in this version. Refresh your package cache using the refresh button and then re-install the official modules and it should be fine!

App

  • Package manager improvements
    • Added installed version to the installed dropdown when it's a pre-release and pre-release is disallowed
    • Highlighted pre-releases as orange
    • Allow module packages to contain ZIPs
      • This allows module developers to publish ZIPs to their release which will get downloaded and unpacked automatically
      • Raw DLLs are still supported, but the ZIP method is better for security and integrity if you have multiple files
  • Fixed Heartrate module staying in the connected ChatBox state
  • Fixed Heartrate module staying on the last receiving value for the value variable
  • Fully qualify states when evaluating clips to fix 2 or more modules being active and having the same state names
  • Added the router to advanced settings to hide it behind a toggle
  • Added validation checks when creating settings groups
  • Fixed clip names being cut-off when the window or clip is too small
  • Fixed OSCQuery not receiving parameters correctly
  • Changed the VRChat log reader to only read logs that have occurred after the modules have started
  • Vastly improved the VRChat log reader's speed
  • Fixed the current avatar's config being loaded up twice
  • Hide custom endpoints behind the Use Custom Endpoints toggle
  • Added a toggle for auto-updating non-pre-release packages after an app update
  • Improved key simulator
  • Added an auto install model button for the Whisper model
  • Added the ability to follow the default microphone instead of having to manually switch
  • Improved handling of the audio buffer
  • Improved speech handler to remove text that goes over the limit of the ChatBox
  • Moved the manual ChatBox input to above the timeline and improved its behaviour
  • Fixed start in tray not working correctly
  • Fixed some odd grammar
  • Added a File Reader built-in variable
    • This reads a file and puts its text contents into the ChatBox

Official Modules

  • Added play on instance transfer to Media module
  • Allow Keybinds module to pick between press and hold/release
    • Press means that when the parameter becomes true it will press the keybind for 50 milliseconds and then release
    • Hold/Release means that it will hold the keybind when the parameter is true, and release when the parameter is false
  • Fix PiShock response formatting
  • Fixed float textboxes not allowing floats to be entered properly
  • Fixed some titles and descriptions

2024.1012.0-v2

This is a tentative release candidate to replace V1 with V2. If you have any suggestions, problems, or bugs, now is the time to report them. All the V1 modules are now transferred over to V2, or have V2 counterparts in the form of other functionality or modules that have superseded them. I'll be doing extensive testing over the next few weeks to make sure everything is working, but for those of you that use the less-used modules, I'd be grateful to hear that things are working as expected.

App

  • Speech To Text improvements
    • You can now specify a volume boost amount to help Whisper hear you when your mic is set to a lower level for other applications
    • If you have a modern GPU that supports Vulkan, Whisper will now run using Vulkan to speed up recognition to near-instant recognition
    • When you switch your microphone in the settings you no longer need to restart the modules
  • Updated parameter listing
    • Parameters can now be disabled for those of you that want to customise exactly which parameters get sent
    • The formatting for the list now better handles small window sizes
  • ChatBox variable improvements
    • Int and Float variables can now do character mapping
    • This allows you to do things like have a heartrate character get more aggressive the higher your heartrate goes
    • Int variables have a minimum and maximum value. The list of characters (or words) gets linearly interpolated through
    • Float variables are locked between 0 and 1. The list of characters (or words) gets linearly interpolated through
  • Added the Timer global variable to format a TimeSpan that counts to a specific DateTime
  • Small graphics and formatting improvements

Official Modules

  • Added voice commands to PiShock
  • Reworked how the max duration and intensity work for PiShock groups
  • Removed Leash module
    • It may return at some point but I want the V2 release to be at parity with V1
  • Removed Timer module in favour of the new Timer global variable
  • Added Voice Commands module
  • Reworked Maths module to change how parameters are retrieved to allow parameters with slashes in their names
    • You now need to surround the parameter's name with {}, and it will be replaced with the parameter's literal value
    • If a parameter's value cannot be found, the equation will be aborted

2024.915.0-v2

Hotfixes for the last release.

App

  • Fixed bugs with SteamVR device management
  • Exposed noise level cutoff to speech settings
  • Added more error handling to default VRChat parameters
  • Clear the manual ChatBox text when the window is closed
  • Allow for ChatBox validation bypassing when importing a config

Official Modules

  • Fixed PiShock module sometimes erroring
  • Standardised SteamVRStats' identifiers

2024.913.0-v2

A small release since I've not finished a lot of the large features I wanted to get out sooner, but since there's a few bugs I wanted to get these fixed as I'm away next week. Quite a few things in this release have had a rework, and while I've tested them they're usually hardware dependant, so give them a test and let me know if anything's wrong.

App

  • Rewrote tracked device handler
    • This now allows users to assign roles to their tracked devices in the SteamVR tab of the settings, allowing modules to just grab, for example, the left foot.
  • Fixed Start with SteamVR not working
    • Let me know if this is still broken for some people. Fixing this depends on what's already been added to your SteamVR manifest lists
  • Fixed clip variables sometimes erroring in Unicode edge cases
  • Handle deserialisation of object types better
  • Changed runtime view to take in a type instead of an instance
    • You're now required to make the view have a constructor of (Module)
    • You're now required to initialise the runtime view in OnPreLoad
  • Add more runtime validation
  • Improved speech detection
    • This returns the partial and final results
    • The silence threshold is currently set at 15% which should work fine as long as the microphone volume is at 100% which all VR headsets should be at
  • Added back light theme
    • For now this still requires an app restart to apply

Official Modules

  • Clear parameter cache on avatar change for Counter to avoid parameters with the same name having different types
  • Updated SteamVRStats to use the new role system
  • Updated SpeechToText to new upgraded speech interface

2024.812.0-v2

A fair amount of QoL and UI changes in this one. V2 is getting fairly close to being released bar a few things I'm looking into and the automatic updater.

App

  • TONS of UI improvements
    • Little things like text placement, hovering over draggable components, colour changes, etc etc
  • Standardisation of the UI
    • A lot of the custom components I've made have been redesigned and reimplemented in a way that's useful for module developers, but also has standardised app-wide behaviour
    • More of the app, like scrolling, should also work with touchscreen and touchscreen emulation
  • Changes from Page to UserControl for runtime pages and custom settings
    • Modules that implement a runtime view or should now use SetRuntimeView() and their Page should be changed to a UserControl
  • Added info button to modules that allows for linking to docs pages
  • Added prefabs button to modules to allow for linking to prefab downloads
  • Reimplemented most of the main pages to function better and add more visual flare
  • Added manual input for ChatBox
  • Fixed OpenVR throwing an error when SteamVR wasn't installed
  • Attempted to fix UTF16 characters not scrolling in clip variables correctly
  • Added bounce mode to all clip variables
  • Improved debug panel to make it expandable
  • Improved UX for bypassing ChatBox validation
  • Attempted to fix start with SteamVR
    • This one is a little more tricky and will require more work to get it working on the rest of people's computers (thanks Valve)
  • Allow clips to be copy-pasted
  • Attempted to fix WindowsMediaProvider race condition
  • Added start in tray functionality
  • Added metadata parameters to know which modules are currently running
  • Added control parameters to enable/disable the chatbox globally, and enable/disable certain layers
  • Added PasswordTextBox
  • Fixed some clip variables formatting incorrectly at extremes
  • Changed custom settings to include the module as a reference
    • The constructor for a custom setting's UserControl now requires (YourModule module, YourCustomSetting setting)
  • Removed RequestSerialisation from settings
    • This was too complicated to force module developers to implement a callback for every single setting, so it's been removed in favour of saving when the settings window closes. VRCOSC will still attempt to save as often as possible to reduce dataloss in the event of a crash
  • Silenced some exceptions that users don't need to care about
  • Ignore failed OSCQuery attempts
    • VRChat likes to leave the port in mDNS apparently, even after the game is closed, which caused VRCOSC to crash trying to contact a non-existent game
  • Fixed Observable<T> sometimes not notifying of changes
  • Created KeybindPicker

Official Modules

  • Create Keybinds module
    • This is a replacement for the Discord module
    • Add an instance, name it, enter the parameter(s) you want to trigger the keybinds. Add a new keybind, click on the component, it will turn red to record. Now you can press any key with any modifiers (ctrl, shift, alt, win) and it will record the presses.
    • To have this work successfully with Discord, you'll need to set the keybinds in Discord. To recreate the Discord module, go into Discord's keybinds in their app and add new keybinds for mute and deafen
  • Added Maths module
  • Added module info docs links where applicable
  • Added prefab download links where applicable
  • Updated a ton of custom UI to use the new standardised components
  • Added a button for obtaining an access token to Pulsoid
  • Changed textboxes to password textboxes where applicable
  • Moved max duration and max intensity from global to per shocker group for PiShock
  • Moved float threshold to being per counter and added an int threshold for Counter
  • Added milestones to Counter
  • Added outgoing parameters to Stopwatch

2024.724.0-v2

The app should feel a little snappier to open and do tasks as I've changed the build to use ready-to-run. Let me know if this borks anything.

App

  • Added the ability to retrieve built-in avatar parameters on module start and avatar change
    • This means the parameters are no longer nullable
  • Added axes player movement to Player
  • Added missing built-in avatar parameters to Player
  • Improved ProgressClipVariable rendering logic
  • Fixed app crashing if an incorrect Whisper model path was provided
  • Fixed VRCFury prefixes not being handled correctly (https://vrcosc.com/docs/V2/SDK/extras#vrcfury-parameters)
  • Fixed clips not noticing when the minimal background setting is changed while the ChatBox is running
  • Fixed Standable trackers being included in the SteamVR Stats info
  • Fixed the ChatBox disappearing if the text stayed the same for over 30 seconds
  • Fixed any Heartrate module not stopping correctly if the websocket was already disconnected
  • Fixed importing module configs breaking the app while modules were running
  • Fixed importing module configs breaking the ChatBox and putting it into a weird state
  • Fixed VRChatLogReader crashing when stopping modules if there's no log file
  • Fixed Repeater sometimes crashing in certain scenarios
  • Fixed the memory usage for integrated GPUs being infinity
  • Removed the Map method from the Module class in exchange for using the Interpolation class
  • Removed FontAwesome5 in exchange for FontAwesome6

Official Modules

  • Added Stopwatch module
  • Added Leash module
    • This does work with the OSCLeash prefab if you change the parameter names to match
    • Currently doesn't support the Y axis or turning as this was just a test

2024.713.0-v2

App

  • Changed to Whisper
    • This is a replacement for VOSK, the previous speech engine
    • You should find this is more accurate, and I've done my best to fine tune the settings for it but you may find that you need to adjust the confidence yourself depending on your microphone quality
  • Removed AvatarModule and ChatBoxModule
    • Given that VRChat won't be adding world OSC for quite some time I've elected to remove the inheritance of modules for the SDK
    • Developers now just need to have their modules extend Module
    • This does have the benefit of meaning if world OSC comes out then avatar modules and world modules won't be separated
  • Further improved module package and module loading to prevent errors and nicely present them
  • Removed a bunch of dependencies to make installer and installed size smaller
  • Rewrote WindowsMediaProvider
    • Those that were having problems on Windows 11, I've done my best to alleviate the problem but it seems to be a Windows 11 thing
    • Anyone else who was having errors before should find things are a lot more stable
  • Added an option for ChatBox states and events to use a minimal background
    • This uses some character tricks to force the ChatBox background to be skinny without affecting text
    • This is a lot less intrusive if you have a permanent ChatBox so give it a shot!
  • Added OSCQuery parameter type and name retrieving to the SDK
  • Added Progress clip variable
    • The Media module's progress resolution has been removed in favour of this new variable
    • This gives you the option of customising exactly how the progress visual looks as well as just showing a percentage
  • Changed the name of built-in Text variable to Custom Text for clarity
  • Fixed displaying identical names for the microphone input when using virtual audio cables
  • General UI improvements

Official Modules

  • Updated heartrate modules to SDK behaviour changes
  • Updated Speech To Text to handle new speech engine
  • Updated Media to new Windows Media Provider
  • Updated all modules inline with removal of AvatarModule and ChatBoxModule
  • Changed Media to use new Progress clip variable