Skip to content

Releases: casual-simulation/casualos

v3.1.32

17 Jun 16:31
Compare
Choose a tag to compare

πŸš€ 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

26 May 20:25
Compare
Choose a tag to compare

πŸš€ 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

25 May 21:16
Compare
Choose a tag to compare

πŸš€ 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

23 May 18:01
Compare
Choose a tag to compare

πŸš€ 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 is shared.
      • 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 of 1 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 the formOpacity value is used to modify each material's default opacity level.
    • A formOpacity value of 0 would effectively make the bot invisible.
  • 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 the formAddress 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 the transformer tag. Issue #276
  • 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 than audio/x-raw.
  • Fixed some potential issues with the tempShared and remoteTempShared 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

22 Mar 01:17
Compare
Choose a tag to compare

πŸš€ 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 the cameraPositionOffset specified.

v3.1.27

16 Mar 21:15
Compare
Choose a tag to compare

πŸ› 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

14 Mar 23:08
Compare
Choose a tag to compare

πŸš€ 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.
  • 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

10 Mar 20:36
Compare
Choose a tag to compare

πŸš€ 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 from os.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

23 Feb 22:06
Compare
Choose a tag to compare

πŸ› 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

23 Feb 20:33
Compare
Choose a tag to compare

πŸš€ 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 number 123. The same goes for other values like "true" and "false".
    • Possible marks are:
      • Numbers: πŸ”’
      • Mods: 🧬
      • Dates: πŸ“…
      • Vectors: ➑️
      • Rotations: πŸ”
  • 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.