v3.1.29
·
2766 commits
to develop
since this release
π Improvements
- Added the
@onSpaceMaxSizeReached
shout.- This is a shout that is sent when a space has reached its maximum persistent storage size.
that
is an object with the following properties:space
- The space that reached is maximum storage size. Generally, this isshared
.maxSizeInBytes
- The maximum allowed size for the space in bytes.neededSizeInBytes
- The number of bytes that would be needed to store the data that was placed in the space.
- Note that this only applies to persistent storage. That is, if you create a bot in the
shared
space and receive this shout, then it is possible that the bot was not persistently stored and shared, but it is still available by scripts until the browser tab is refreshed or the PC is restarted. - Generally, if you receive this shout, then it is a good idea to backup your inst.
- Added configurable support for IP-based rate limiting.
- Applies to websockets as well as the API.
- Requires a Redis connection and is configurable by the following environment variables:
RATE_LIMIT_MAX
- The maximum number of requests that can be recieved from an IP address over the window.RATE_LIMIT_WINDOW_MS
- The size of the window for requests represented in miliseconds.
- If any of the above environment variables are not specified, then rate limiting will be disabled.
- Added API support for policies and roles.
- In the future, additional functions will be added to CasualOS to make accessing these new capabilities easier.
- Added
formOpacity
tag, which allows bots to be semi-transparent.- A
formOpacity
value of1
means that the bot's mesh materials are effectively in their default opacity and transparency state. - A
formOpacity
value< 1
means that the bot's mesh materials become transparent and that theformOpacity
value is used to modify each material's default opacity level. - A
formOpacity
value of0
would effectively make the bot invisible.
- A
- Added several functions to help manage policies and roles:
os.grantRecordMarkerPermission()
os.revokeRecordMarkerPermission()
os.grantInstAdminPermission()
os.grantUserRole()
os.grantInstRole()
os.revokeUserRole()
os.revokeInstRole()
- See the documentation for more information.
- Added the
@onSpaceRateLimitExceeded
shout which occurs when a space rejects a tag change or event because a rate limit was exceeded.
π Bug Fixes
- Fixed an issue where
os.getMediaPermission
would leave tracks in a MediaStream running. Some browsers/devices release these automatically, while others would leave the tracks running and cause issues with other systems that utilize audio and video hardware like augmented reality. - Fixed an issue where
data:
URLs would not work in theformAddress
tag without a workaround. - Fixed an issue where it was impossible to create record keys on deployments that did not have a subscription configuration.
- Fixed an issue where the bounding objects of a transformed bot did not update if its
transformer
moved.- This fixes a reported bug with
lineTo
to updating correctly while using thetransformer
tag. Issue #276
- This fixes a reported bug with
- Fixed an issue where the
color
tag would not apply to all materials in a gltf model. - Fixed an issue where gltf models with multiple materials and textures would not be properly disposed.
- Fixed an issue where
os.beginAudioRecording
would fail to provide audio chunks in stream mode if the mimeType was anything other thanaudio/x-raw
. - Fixed some potential issues with the
tempShared
andremoteTempShared
spaces. - Fixed an issue creating a bot with a
null
tag value would cause the null value to become visible after a refresh. - Fixed an issue where a player disconnect event may not be sent if the server failed to message the disconnected player before it processed the disconnection.