github rojo-rbx/rojo v7.5.0

latest release: v7.5.1
4 months ago

This release contains a variety of changes. They are listed below.

Changes since Rojo 7.4.4

Additions

  • Added support for Roblox's Content type. This replaces the old Content type with ContentId to reflect Roblox's change.
    If you were previously using the fully-qualified syntax for Content you will need to switch it to ContentId.

  • Projects may now manually link Ref properties together using Attributes. (#843)
    This has two parts: using id or $id in JSON files or a Rojo_Target attribute, an Instance
    is given an ID. Then, that ID may be used elsewhere in the project to point to an Instance
    using an attribute named Rojo_Target_PROP_NAME, where PROP_NAME is the name of a property.

    As an example, here is a model.json for an ObjectValue that refers to itself:

    {
        "id": "arbitrary string",
        "attributes": {
            "Rojo_Target_Value": "arbitrary string"
        }
    }

    This is a very rough implementation and the usage will become more ergonomic
    over time.

  • Projects may now specify rules for syncing files as if they had a different file extension. (#813)
    This is specified via a new field on project files, syncRules:

     {
      	"syncRules": [
      	 	{
      	 	 	"pattern": "*.foo",
      	 	 	"use": "text",
                 "exclude": "*.exclude.foo",
      	 	},
      	 	{
      	 	 	"pattern": "*.bar.baz",
      	 	 	"use": "json",
      	 	 	"suffix": ".bar.baz",
      	 	},
      	],
      	"name": "SyncRulesAreCool",
      	"tree": {
      	 	"$path": "src"
      	}
     }

    The pattern field is a glob used to match the sync rule to files. If present, the suffix field allows you to specify parts of a file's name get cut off by Rojo to name the Instance, including the file extension. If it isn't specified, Rojo will only cut off the first part of the file extension, up to the first dot.

    Additionally, the exclude field allows files to be excluded from the sync rule if they match a pattern specified by it. If it's not present, all files that match pattern will be modified using the sync rule.

    The use field corresponds to one of the potential file type that Rojo will currently include in a project. Files that match the provided pattern will be treated as if they had the file extension for that file type.

    use value file extension
    serverScript .server.lua
    clientScript .client.lua
    moduleScript .lua
    json .json
    toml .toml
    csv .csv
    text .txt
    jsonModel .model.json
    rbxm .rbxm
    rbxmx .rbxmx
    project .project.json
    ignore None!

    Additionally, there are use values for specific script types (#909):

    use value script type
    legacyServerScript Script with Enum.RunContext.Legacy
    legacyClientScript LocalScript
    runContextServerScript Script with Enum.RunContext.Server
    runContextClientScript Script with Enum.RunContext.Client
    pluginScript Script with Enum.RunContext.Plugin

    All sync rules are reset between project files, so they must be specified in each one when nesting them. This is to ensure that nothing can break other projects by changing how files are synced!

  • Added support for Enum attributes

  • Added support for .plugin.lua(u) files - this applies the Plugin RunContext. (#1008)

  • Added blockedPlaceIds project field to allow blocking place ids from being live synced (#1021)

  • Added support for a $schema field in all special JSON files (.project.json, .model.json, and .meta.json) (#974)

  • Added popout diff visualizer for table properties like Attributes and Tags (#834)

  • Added update notifications for newer compatible versions in the Studio plugin. (#832)

  • Added experimental setting for Auto Connect in playtests (#840)

Fixes

  • Fixed an edge case that caused model pivots to not be built correctly in some cases (#1027)
  • Updated Undo/Redo history to be more robust (#915)
  • Fixed notification and tooltip text sometimes getting cut off (#988)

Changes

  • Significantly improved performance of .rbxm parsing
  • Updated Theme to use Studio colors (#838)
  • Improved patch visualizer UX (#883)
  • Improved settings UI (#886)
  • Open Scripts Externally option can now be changed while syncing (#911)
  • The sync reminder notification will now tell you what was last synced and when (#987)

Upgrading

To install the Roblox Studio plugin, there are a few options:

  • Run rojo plugin install from the Rojo CLI
  • Download the attached Rojo.rbxm and place it into your Roblox Studio plugins folder
  • Install from the Roblox plugin page

There are also multiple ways to install the Rojo CLI:

With Aftman or Rokit

Add a line to the [tools] section in aftman.toml or rokit.toml:

rojo = "rojo-rbx/rojo@7.5.0"

From GitHub Release

Download one of the attached binaries on this release page!

From Crates.io

You can use Cargo (1.70.0+) to build the release yourself from crates.io:

cargo install rojo --version 7.5.0

Don't miss a new rojo release

NewReleases is sending notifications on new releases.