2024.10.4.923 - Easing functions, ban status privacy improvement and more

Resonite

Enter a novel digital universe with infinite possibilities. Whether you resonate with people around the world in a casual conversation, playing games and socializing or you riff off each other when creating anything from art to programming complex games, you'll find your place here.

Hello everyone! I got another build for you! This one is more of a "cleanup" build, merging in and sorting out some of the issues that have been pushed to backburner for a bit with other stuff we were dealing with. There's a bunch of new cool goodies in this one! Lots of new nodes & functions for shaping/easing, more access to the eyebrow tracking data. You can now also mark worlds as "Readonly" to prevent accidental saves (e.g. when you archive things). There's also important privacy improvement in this one, which builds on the recent session networking handling rework: User's ban status is no longer included in the public API that can be queried by anyone - the information is now only accessible once for brief period when joining a session, which helps improve overall privacy. A bunch of things were fixed up too - issues with the finger posing system breaking, Resonite to Resonite account migration (this actually borked due to security fortification that was done a while back) and more! [h2]New Features:[/h2] - Added a set of new easing/shaping functions (issue #736, implemented by @ryuvi) -- Following easing functions are now supported: Sine, Quadradic, Cubic, Quartic, Quntic, Exponential, Circular, Rebound (Back), Elastic and Bounce -- These are available as Tween CurvePreset property -- There are also three ProtoFlux nodes for each - In, Out and InOut - Added eyebrow drivers to EyeLinearDriver (requested by @hazre, @gourry.gabriev, @natbard, issue #2303, implemented by @ryuvi) -- InnerBrowVerticalTarget, InnerBrowRaiseTarget, InnerBrowLowerTarget, OuterBrowVerticalTarget, OuterBrowRaiseTarget, OuterBrowlowerTarget - Added InnerBrowVertical & OuterBrowVertical to AvatarRawEye data (requested by @hazre, @gourry.gabriev, @natbard, issue #2303, implemented by @ryuvi) - Added "Readonly" flag for worlds (requested by @stiefeljackal, @rucio, @medravr, issue #2793) -- You can set this by editing the world's metadata and checking is "ReadOnly" checkbox -- When checked, you won't be able to save the world in-place or overwrite it -- If you want to make saving the world possible again, uncheck the flag first, before loading the world again -- Please note that this is only "soft" prevention and not a security/permission mechanism. The goal is to prevent accidental saves (e.g. for archived worlds) - AppConfig can now restrict which login methods are available with `availableLoginMethods` list property (implemented by @probableprime) -- Currently Login, Register and SAML are supported login methods -- This is useful for coporations/organizations which want to restrict which methods can be used to login - Added `forceStartMicrophoneMuted` setting to AppConfig, which allows to override the microphone to always start muted (implemented by @probableprime) - Bezier Curve node now outputs the tangent in addition to the curve point (implemented by @bluecyro) [h2]Tweaks:[/h2] - The hyphen symbol "-" is now a legal character in dynamic variable path names (requested by @badhaloninja, @gareth48, issue #3038) -- This makes it easy to directly use user/group ID's as part of the path [h2]Privacy:[/h2] - Restricted access to user's ban status through the public API (based on feedback by @rucio, @stiefeljackal and @dantetucker, issue #2619) -- This prevents anyone from determining whether arbitrary user is currently banned or not just by querying the API -- When joining a session, the host is given one-time access key to query the user's ban status. This ensures that the information is available only for a brief period to a single user and only when the user initiates join to a session [h2]Security:[/h2] - Improve validation when creating onetime access keys in the API [h2]Fixes:[/h2] - Fix finger pose processing components breaking when one of the source components only provides rotations with no positions (based on report by @modernballoonie, issue #2964) - Added filtering to session update events to prevent local status updates being triggered by irrelevant sessions -- This fixes the underlying issue behind "Session updated, forcing status update" log spam (reported by CZakarya, issue #2909) - Fix regression causing data migration between two Resonite accounts not working (reported by RuiNtD, @tumnusb, @wattlefoxxo, @mvak, issue #2347) -- This was caused due to session token security fortification implemented a while back - Fixed output of Bezier Curve being wrong (reported by @zozokasu, @rhenium_nv, @orange3134, @rucio, @banane9, ColinTimBarndt, Kemono-Kay, issue #1268, fixed by @bluecyro)