Repository navigation
v2026.9.16.0-beta
Pre-releaseVRCFaceTracking v2026.9.16.0-beta
What's Changed
Features
- feat(modules): uninstall modules without restarting the app by RealWhyKnot in 64b8cc6
- feat: add eye and mouth/brow assist tracking mutations by RealWhyKnot in f23c847
- feat: restart a crashed module process automatically by RealWhyKnot in 3e1cde7
- feat(registry): Fix module installation button states. by lumeyisnotyou in 6081c7a
Bug Fixes
- fix(modules): tell modules whether eye and expression tracking are in use by RealWhyKnot in b6dae1e
- fix(osc): stop parsing the avatar definition twice on OSCQuery load by RealWhyKnot in 3c866b8
- fix(osc): free message meta memory and dispose binary sub-parameters on reset by RealWhyKnot in 5913313
- fix(mutation): keep a mutation whose settings failed to load by RealWhyKnot in 14eb52a
- fix(osc): guard against the VRChat OSC directory not existing yet by RealWhyKnot in e1c744f
- fix: remove cross-thread races and leaks in the OSC, OpenVR, and updater paths by RealWhyKnot in 87080a4
- fix: survive network, file, and settings failures that crashed startup and the UI by RealWhyKnot in 7fc0c38
- fix(teardown): stop shutdown races being logged as module crashes by RealWhyKnot in 0f94541
- fix(ipc): keep the receive loop alive and validate packet bounds by RealWhyKnot in 7d7dfb6
- fix: keep the commit stamp out of the tracked version file by RealWhyKnot in 7b2fac9
- fix: Properly run teardown on avalonia exit by benaclejames in 2c244a1
- fix: gamescope crash due to gsettings probe by benaclejames in f164340
- fix: Use local ICU on linux by benaclejames in 32c4f86
- fix: publish linux build with self contained .net runtime by benaclejames in 622a181
- fix(core): Various cross platform and async fixes for core by benaclejames in c1b400e
Changes
- refactor(osc): replace the native fti_osc dll with a managed codec by RealWhyKnot in 8d7d895
- refactor: Various fixes incl better async and deprecating need for module uninstall restart by benaclejames in 41d6350
Documentation
- docs: cut the readme down to install and build by RealWhyKnot in 8f210d3
- docs: trim the readme by RealWhyKnot in 3d6fe2a
CI
- ci: prefix dependabot commits and accept revert subjects by RealWhyKnot in 4e0de9f
- ci(nightly): pass repo-specific paths to the beta gate by RealWhyKnot in 6b2a807
- ci: use the shared changelog-append and nightly-beta workflows by RealWhyKnot in 67e151e
- ci: use the shared resolve-tag action by RealWhyKnot in 038b86f
- ci: use the shared commit-msg-check workflow by RealWhyKnot in f181d34
- ci: fix up incorrect $(OS) identifier as we use Linux GH actions runners to build all versions now and these wouldn't work for Windows. Remove need for vcruntime too since we no longer use winui3 by benaclejames in 60b6c10
- ci: Make AnyCPU actually build with AnyCPU by benaclejames in b453ee4
Chores
- chore(core): stop copying vcruntime140.dll into the output by RealWhyKnot in 077ae95
- chore: use the shared commit hooks by RealWhyKnot in fb28989
Other
- style: fix indentation in the packet decoder by RealWhyKnot in 21b3057
- Include avatarinfo in parameter reset call to allow parameters to make more intelligent decisions and maintain backwards compat with osc json def by benaclejames in fa3514f
- Remove erroneous double parsing of legacy avatar definition. Dont send native when zero param list passed by benaclejames in c006dc5
- avatarinfo parsing tweaks by benaclejames in 0ddb523
- Fix up disposal in baseparameter, oscmessage, and binarybaseparameter by benaclejames in 9dc8f47
- Fix up localizations by benaclejames in 32a6f50
- Better conditionals for native=. Cleanup native definitions by benaclejames in 56e6849
- Experimental approach to ditch 10hz update loop in favor of module reply packet based send quorum by benaclejames in 7d6fe87
- Attempt to improve binary message send efficiency by benaclejames in 7d2ed42
- Better osc blob handling. Refactor shared mem buffer in attempt to reduce stuttering. Rebuild fti_osc incl macos arm64 by benaclejames in 2f59bce
- Adjust module image loader to support multiple images. Attempt to restore formatting from winui by benaclejames in bedc148
- add padding to module search box. fixed bug with local module in which app would crash due to missing file. reinit modules after local module install by benaclejames in cee3183
- module install from zip button and search by benaclejames in aa6a75b
- update rust osc lib; add binary support by benaclejames in c141d07
- Fix up usingeye usingexpression statuses. Clean up moduleprocess and unifiedlibmanager to separate out sandbox handling by benaclejames in 38ea184
- Include missing openvr_api.dlls for win64/32 by benaclejames in 2cd8b97
- Better view navigatedTo notification system. Fix issue on homepage where "no modules installed" would persist after install by benaclejames in ac59aa2
- Module registry status representation tweaks. Reinitialize libmanager after module uninstall by benaclejames in 6b7f7f0
- Fix up old namespaces. Clean up logging providers. Separate DI out between core and ui. by benaclejames in 508e5e8
- Remove redundant module sandboxing fields. Double check for null on teardown. Fix up horizontal scroll bar in output page obscuring latest log line and utilize autohiding. Improve autoscroll reliability. by benaclejames in f1fc591
- Attempt to speed up logging service and output page to avoid lockup upon log spam by benaclejames in 12f53a2
- Update module registry install state on change by benaclejames in f91a4bf
- Update gh action to support linux and diff branches by benaclejames in 021c437
- Avalonia styling, converters, views & general swapping of all related code. Remove windows dependencies. Fix up various cross platform issues. First party linux support with associated libs. ARM build support. Consider ethernet frame size in udp max transfer unit. Implement (jank) chunking in sandboxclient senddata byte array instead of only ipcpacket by benaclejames in 959f4c5
Full Changelog: v2026.9.8.0-beta...v2026.9.16.0-beta
File integrity
VRCFaceTracking-2026.9.16.0-beta-win-x64.zip(92.37 MiB), SHA256263c55344a222bf7b73deb1a09a4e3c5bbe4ce7e69f5c08f8251f186edd790fd- Hashes for every file in the zip are attached as
VRCFaceTracking-2026.9.16.0-beta-win-x64.integrity.tsv.
More
- README: https://github.com/RealWhyKnot/VRCFaceTracking
- Source: commit
077ae951b70aonmain - License: Apache-2.0
- Upstream project: benaclejames/VRCFaceTracking (avatar setup and module docs at https://docs.vrcft.io)
Install (fresh)
- Download
VRCFaceTracking-2026.9.16.0-beta-win-x64.zipfrom this release. - Extract it anywhere except
Program Files. - Run
VRCFaceTracking.exe. Install your tracking module from the Module Registry tab if you have not before. - Launch VRChat with OSC enabled. The Home tab shows the module as active once it is receiving data.
Settings and installed modules live in %AppData%\VRCFaceTracking and are shared with the Steam build, so an existing setup carries over.
Uninstall
Close VRCFaceTracking and delete the extracted folder. Settings and modules stay in %AppData%\VRCFaceTracking and logs in %LocalAppData%\VRCFaceTracking\logs; delete those two folders too for a clean removal.
What you need to do
Fresh install: follow the install steps above. Existing installs are offered this update when the app starts; accept it and the app downloads, verifies and applies the zip, then restarts. You can also close the app and extract this zip over the old folder by hand.
Beta releases log verbosely by default. Stable releases log warnings and errors only; turn on verbose logging under Settings, Diagnostics before reproducing a problem. When reporting a bug, attach the newest vrcft_*.log and vrcft_module_*.log from the log folder (Settings, Diagnostics, Open folder).