Releases: casual-simulation/casualos
Releases Β· casual-simulation/casualos
v3.1.32
π Improvements
- Improved the backend to use a SQL Database instead of DynamoDB tables.
- This will make development quicker and easier in the future in addition to being more cost effective.
v3.1.31
π Improvements
- Added the
os.getCurrentInstUpdate()
function.- Returns a promise that resolves an inst update that represents the current local shared state of the inst.
- This function is useful for whenever you want a snapshot of the current
shared
space state and want to be able to restore it to an inst after it is wiped.
- Added the
os.mergeInstUpdates(updates)
function.- This function merges the given list of inst updates into a single update.
- Mostly useful for consolidation and maintenence of updates.
v3.1.30
π Improvements
-
Added the
meetPortalLanguage
tag.- Sets the language that is displayed in the meetPortal interface by default.
- If omitted, then the user-configured language will be used. (English if never changed)
- Must be set on the
meetPortalBot
before the meetPortal is loaded in order to take effect.
-
Added support for displaying a list of options using
os.showInput()
.-
To display a list, use the
list
type. -
The supported list subtypes are:
select
- Displays a dropdown list that the user can select from.multiSelect
- Displays a dropdown list of checkboxes that the user can check.checkbox
- Displays a list of checkboxes.radio
- Displays a list of radio buttons.
-
When using the
list
type, you should pass in an array of items that have the following structure:let item: { /** * The label that should be displayed for the item. */ label: string; /** * The value that is associated with the item. */ value: any; };
-
π Bug Fixes
- Fixed an issue where using the sheetPortal to delete a bot that had circular
creator
tag references would freeze CasualOS. - Fixed an issue where
#
symbols at the start of a tag value would be hidden in the multiline code editor.
v3.1.29
π 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.
v3.1.28
π Improvements
- Improved the mapPortal to be able to correctly show large bots which are placed past the horizion but should still be visible because they peak above the horizion.
π Bug Fixes
- Fixed an issue where moving the camera using the
cameraPositionOffset
tag while in point of view mode and while one of the mouse buttons is held down would result in the camera moving in a circle instead of where thecameraPositionOffset
specified.
v3.1.27
π Bug Fixes
- Fixed an issue where billboarded bots could break the mapPortal.
- Fixed an issue where quickly tapping on the screen in the mapPortal could cause user controls to stop working.
- Fixed an issue where large bots were visible through the Earth in the mapPortal and miniMapPortal.
v3.1.26
π Improvements
- Added additional configuration options for the Records system.
- It is now possible to indicate whether a subscription is purchasable. Setting this to
false
will prevent it from showing to users who haven't purchased a subscription. - It is also now possible to povide additional configuration options for Stripe Checkout sessions and Stripe Customer Portal management sessions.
- It is now possible to indicate whether a subscription is purchasable. Setting this to
- Improved the login system to evaluate email/sms rules on the server. As a result, existing users are no longer subject to the email/sms rules. This makes the rules effective for blocking specific emails/sms from signing up, but they won't interfere with already existing users.
v3.1.25
π Improvements
- Added the ability to configure Records system deployments to support Beta Program Subscriptions through Stripe.
- If configured, then users can subscribe to the Beta Program through their account portal.
- Once subscribed, they can store their OpenAI API Key in their account profile.
- This additional information will then be included in the
authBot
(returned fromos.requestAuthBot()
) as a couple tags:hasActiveSubscription
- Whether the user has a currently active beta program subscription.openAiKey
- The API Key that the user has saved in their account.
- If not configured, then every user will have access to all of the Beta Program features.
- Of course, since CausalOS is Open Source, anyone is free to take the source code and make their own deployments with all Beta Features enabled by default.
v3.1.24
π Bug Fixes
- Fixed an issue where the auth system prevent useres from logging in if their User ID was in an old format.
v3.1.23
π Improvements
- Improved the records system to authenticate and authorize requests much more quickly than before.
- In order to take advantage of the improvements, you may need to request a new record key.
- Updated the multi-line code editor to color-code parenthesis, curly braces, and square brackets so it is easier to tell which pairs go together.
π Bug Fixes
- Fixed an issue where the multi-line editor could get stuck in an infinite loop while trying to resize itself to fit on the screen.
- Fixed an issue where tag masks would return the serialized version of a value instead of the computed version of the value.
- Tag masks are designed to work a little differently from regular tags since it is much more common for tag mask values to be set programmatically instead of entered by hand.
- This means that tag masks are designed to preserve the saved type as much as possible, unless it is clear that the value should be converted to a native type.
- As a result, only marked values are converted from their string value into a native value.
- For example, the string
"123"
will remain"123"
, but the string"π’123"
will be converted to the number123
. The same goes for other values like"true"
and"false"
. - Possible marks are:
- Numbers:
π’
- Mods:
π§¬
- Dates:
π
- Vectors:
β‘οΈ
- Rotations:
π
- Numbers:
- Fixed an issue where JSX syntax highlighting would fail if the script contained a return statement.
- Fixed an issue where empty
{}
expressions in JSX would cause compilation to fail. - Fixed an issue where using
animateTag()
with a custom start time wouldn't work. - Fixed an issue where autocomplete would not work on instances with a large number of listeners.