Skip to content

Releases: rojo-rbx/rojo

v7.7.0

Choose a tag to compare

@github-actions github-actions released this 02 Jul 01:47
Immutable release. Only release title and notes can be modified.
bcadc97

This is the full release of Rojo 7.7.0. It contains a few significant upgrades to Rojo. The biggest change is that this release contains a new feature called syncback! Documentation is forthcoming, but you can read more about that here.

This release also swaps Rojo's core networking model to use websockets and MessagePack instead of long-polling and JSON. This should result in improved performance and reliability when syncing.

Changes since Rojo 7.6.1

Additions

  • Added rojo syncback. Syncback is a feature designed to solve the long-standing problem of converting an existing place file into a Rojo project. Go to the section in this release for more information. (#937)
  • Added support for .jsonc in all places where you can use .json. (#1159)
  • inf and nan values in properties are now synced (#1176)
  • Added a "Forget" option to the sync reminder notification to avoid being reminded for that place in the future (#1215)
  • Added missing support for init.plugin.lua and init.plugin.luau. (#1252)
  • Add support for gitignore-style negation in globIgnorePaths and syncback's ignorePaths (#1256)

Changes

  • Changed rojo serve to use websockets instead of long polling (#1142)
  • Added actors and bindable/remote event/function variants to be synced back as JSON files. (#1199)
  • rojo serve now validates the Host/Origin headers to protect the local/private server against DNS rebinding, gates /api/open to local clients, and warns when bound to a network-reachable address. The accepted hosts can be extended with the --allowed-hosts option or a project's serveAllowedHosts field, for example to reach a network-exposed server by hostname. (#1270)
  • Rojo's web API now uses MessagePack instead of JSON for all endpoints (#1176)

Fixes

  • Fixed a bug where passing --skip-git to rojo init would still create a file named gitignore.txt (#1172)
  • Fixed bugs and improved performance & UX for the script diff viewer (#994)
  • Fixed a bug caused by having reference properties (such as ObjectValue.Value) that point to an Instance not included in syncback. (#1179)
  • Fixed instance replacement fallback failing when too many instances needed to be replaced. (#1192)
  • Fixed a bug where MacOS paths weren't being handled correctly. (#1201)
  • Fixed a bug where the notification timeout thread would fail to cancel on unmount (#1211)
  • Improves relative path calculation for sourcemap generation to avoid issues with Windows UNC paths. (#1217)
  • Fixed the sync fallback scrambling sibling order; replacements are now re-parented ancestors-first and in their original child order. (#1265)
  • Instances that share a name and class are now robustly matched on resync by comparing their properties, instead of relying on child order alone. (#1266)
  • Rojo now reports a clear error instead of panicking in several cases, including when the serve port is already in use, when a synced file is read-only or locked, when the filesystem watcher can't be created, and when the working directory is inaccessible. (#1267)
  • Fixed /api/serialize returning success when a requested instance ID is missing from the serve session tree. (#1272)
  • Fixed syncback not removing stale $properties entries when Studio resets a property to its engine default. (#1244)

Syncback

Syncback is a feature designed to solve the long-standing problem of converting an existing place file into a Rojo project. It is configured by a new field in projects, and is invoked with a CLI subcommand rojo syncback.

The command itself is rojo syncback path/to/project --input path/to/file.rbxl. This will run syncback and pull things from the provided file to place on the operating system. Instances are attempted to be written in a reasonable manner but what Instances become what is still up in the air.

Instances will only be pulled from the file system if they are a descendant of a node in the provided project file. That is, in order to syncback the children of Workspace, Workspace must be in your project file. You may wish to have a separate project.json for running syncback as a result.

To control the behavior of syncback more, there's a new field in project files named syncbackRules:

    {
        "syncbackRules": {
            "ignoreTrees": [
                "ServerStorage/ImportantSecrets",
            ],
            "ignorePaths": [
                "src/ServerStorage/Secrets/*"
            ],
            "ignoreProperties": {
                "BasePart": ["Color"]
            },
            "syncCurrentCamera": false,
            "syncUnscriptable": true,
            "ignoreReferents": false,
        }
    }

A brief explanation of each field:

  • ignoreTrees is a list of paths in the roblox file that should be ignored
  • ignorePaths is a list of paths in the file system that should be ignored
  • ignoreProperties is a list of properties that won't be synced back
  • syncCurrentCamera is a toggle for whether to sync back the Workspace's CurrentCamera. Defaults to false.
  • syncUnscriptable is a toggle for whether to sync back properties that cannot be set by the Roblox Studio plugin. Defaults to true.
  • ignoreReferents is a toggle for whether to sync back referent properties like Model.PrimaryPart. Defaults to false, which means that they will be included.

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 Rokit

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

rojo = "rojo-rbx/rojo@7.7.0"

From GitHub Release

Download one of the attached binaries on this release page!

From Crates.io

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

cargo install rojo --version 7.7.0

v7.7.0-rc.1

v7.7.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 27 Nov 20:20
Immutable release. Only release title and notes can be modified.
42568b9

This is a release candidate for Rojo 7.7.0. It contains a rewrite of Rojo's core networking loop to use a websocket connection over long-polling. This should result in improved performance and reliablity when syncing, but it may also introduce bugs. While we've taken time to test for bugs, you should be wary of using this release for important work. Here be dragons.

If you encounter any behavior that is unexpected, please report it.

If you normally get the Rojo plugin from the Roblox Marketplace, you will have to manually install it to use this release. We will not update the plugin on Roblox until 7.7.0 fully releases.

Changes since Rojo 7.6.1

Additions

  • Added rojo syncback. Syncback is a feature designed to solve the long-standing problem of converting an existing place file into a Rojo project. Go to the section in this release for more information. (#937)
  • Added support for .jsonc in all places where you can use .json. (#1159)

Changes

Fixes

  • Fixed a bug where passing --skip-git to rojo init would still create a file named gitignore.txt (#1172)
  • Fixed bugs and improved performance & UX for the script diff viewer (#994)

Syncback

Syncback is a feature designed to solve the long-standing problem of converting an existing place file into a Rojo project. It is configured by a new field in projects, and is invoked with a CLI subcommand rojo syncback.

The command itself is rojo syncback path/to/project --input path/to/file.rbxl. This will run syncback and pull things from the provided file to place on the operating system. Instances are attempted to be written in a reasonable manner but what Instances become what is still up in the air.

Instances will only be pulled from the file system if they are a descendant of a node in the provided project file. That is, in order to syncback the children of Workspace, Workspace must be in your project file. You may wish to have a separate project.json for running syncback as a result.

To control the behavior of syncback more, there's a new field in project files named syncbackRules:

    {
        "syncbackRules": {
            "ignoreTrees": [
                "ServerStorage/ImportantSecrets",
            ],
            "ignorePaths": [
                "src/ServerStorage/Secrets/*"
            ],
            "ignoreProperties": {
                "BasePart": ["Color"]
            },
            "syncCurrentCamera": false,
            "syncUnscriptable": true,
            "ignoreReferents": false,
        }
    }

A brief explanation of each field:

  • ignoreTrees is a list of paths in the roblox file that should be ignored
  • ignorePaths is a list of paths in the file system that should be ignored
  • ignoreProperties is a list of properties that won't be synced back
  • syncCurrentCamera is a toggle for whether to sync back the Workspace's CurrentCamera. Defaults to false.
  • syncUnscriptable is a toggle for whether to sync back properties that cannot be set by the Roblox Studio plugin. Defaults to true.
  • ignoreReferents is a toggle for whether to sync back referent properties like Model.PrimaryPart. Defaults to false, which means that they will be included.

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

There are also multiple ways to install the Rojo CLI:

With Rokit

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

rojo = "rojo-rbx/rojo@7.7.0-rc.1"

From GitHub Release

Download one of the attached binaries on this release page!

From Crates.io

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

cargo install rojo --version 7.7.0-rc.1

v7.6.1

Choose a tag to compare

@github-actions github-actions released this 07 Nov 03:04
Immutable release. Only release title and notes can be modified.
825726c

Changes since Rojo 7.6.0

Additions

  • Added support for JSON comments and trailing commas in project, meta, and model json files (#1144)
  • Added sourcemap.json into the default .gitignore files (#1145)

Fixes

  • Fixed a bug where the last sync timestamp was not updating correctly in the plugin (#1132)
  • Improved the reliability of sync replacements by adding better error handling and recovery (#1135)
  • Small improvements to stability when syncing massive projects (#1140)

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 Rokit

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

rojo = "rojo-rbx/rojo@7.6.1"

From GitHub Release

Download one of the attached binaries on this release page!

From Crates.io

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

cargo install rojo --version 7.6.1

v7.6.0

Choose a tag to compare

@github-actions github-actions released this 11 Oct 02:31
Immutable release. Only release title and notes can be modified.
441c469

Changes since Rojo 7.5.1

Additions

  • Added flag to rojo init to skip initializing a git repository (#1122)

  • Added fallback method for when an Instance can't be synced through normal means (#1030)
    This should make it possible to sync MeshParts and Unions!

    The fallback involves deleting and recreating Instances. This will break
    properties that reference them that Rojo does not know about, so be weary.

  • Add support for the plugin auto-reconnecting to the Rojo server (#1096)

  • Added an option to make sync reminders more aggressive (#1096)

  • Add support for syncing yml and yaml files (behaves similar to JSON and TOML) (#1093)

  • Added an update indicator to the version header when a new version of the plugin is available. (#1069)

  • Added --absolute flag to the sourcemap subcommand, which will emit absolute paths instead of relative paths. (#1092)

Fixes

  • Fixed colors of Table diff (#1084)
  • Fixed sourcemap command outputting paths with OS-specific path separators (#1085)
  • Fixed nil -> nil properties showing up as failing to sync in plugin's patch visualizer (#1081)
  • Fixed Auto Connect Playtest Server no longer functioning due to Roblox change (#1066)
  • Fixed applying gameId and placeId before initial sync was accepted (#1104)

Changes

  • Changed the background of the server's in-browser UI to be gray instead of white (#1080)

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 Rokit or Aftman

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

rojo = "rojo-rbx/rojo@7.6.0"

From GitHub Release

Download one of the attached binaries on this release page!

From Crates.io

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

cargo install rojo --version 7.6.0

v7.5.1

Choose a tag to compare

@github-actions github-actions released this 25 Apr 21:10
b2c4f55

This release fixes a problem in the Rojo plugin that caused it to spam the output when syncing in .rbxm or .rbxmx files.

If you are looking for Rojo 7.5.0's changes, see https://github.com/rojo-rbx/rojo/releases/tag/v7.5.0.

Changes since Rojo 7.5.0

Fixes

  • Fixed an issue where having Instance.Capabilities set would cause the plugin to emit a warning (this property exists on every Instance loaded from a .rbxm or .rbxmx file)

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.1"

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.1

v7.5.0

Choose a tag to compare

@github-actions github-actions released this 25 Apr 19:21
4ddbefa

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

v7.4.4

Choose a tag to compare

@github-actions github-actions released this 22 Aug 18:39
5bd3c74

This release fixes a crash caused by a recent Roblox change and an edge case caused by setting Archivable to false for one Instance but not setting it for anything else.

Changes since Rojo 7.4.3

Fixes

  • Fixed an issue with reading recently generated Lighting files
  • Archivable is now set to true by default when building to binary (rbxm/rbxl) files, which fixes an edge case where it was set to false for one Instance but not set for anything else

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

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

rojo ="rojo-rbx/rojo@7.4.4"

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.4.4

v7.4.3

Choose a tag to compare

@github-actions github-actions released this 06 Aug 20:57
f4e2f5a

This release contains a bug fix for a breaking issue introduced in Rojo 7.4.2 when building binary (rbxm and rbxl) files. It also corrects some warnings that were emitted by the plugin on initial sync.

Changes since Rojo 7.4.2

Fixes

  • Fixed issue with building binary files introduced in 7.4.2
  • Fixed value of type nil cannot be converted to number warning spam in output. (#955)

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

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

rojo ="rojo-rbx/rojo@7.4.3"

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.4.3

v7.4.2

Choose a tag to compare

@github-actions github-actions released this 23 Jul 20:51
844f51d

This release contains a handful of bugfixes and a minor UX improvement to the property's patch confirmation.

Changes since Rojo 7.4.1

Fixes

  • Fixed removing trailing newlines in scripts (#903)
  • As always, the internal property database has been updated. This fixes an issue with SurfaceAppearance.Color among other things. (#948)

Changes

  • Added option to select 'Never' for plugin patch confirmation (#893)

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

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

rojo ="rojo-rbx/rojo@7.4.2"

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.4.1

v7.4.1

Choose a tag to compare

@github-actions github-actions released this 22 Feb 01:25
af9629c

This release contains a handful of bugfixes and small improvements.

Changes since Rojo 7.4.0

Fixes

  • Fixed incorrect results when building model pivots (#865)
  • Fixed incorrect results when serving model pivots (#868)
  • Fixed Rojo plugin failing to connect when project contains certain unreadable properties (#848)
  • Fixed various cases where patch visualizer would not display sync failures (#845, #844)
  • Fixed Rojo plugin erroring out after attempting to destroy services (#845)
  • Fixed http error handling so Rojo can be used in Github Codespaces (#847)

Changes

  • Made the name field optional on project files (#870)

    Files named default.project.json inherit the name of the folder they're in and all other projects
    are named as expect (e.g. foo.project.json becomes an Instance named foo)

    There is no change in behavior if name is set.

  • Rojo now converts any line endings to LF, preventing spurious diffs when syncing Lua files on Windows (#854)

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

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

rojo ="rojo-rbx/rojo@7.4.1"

From GitHub Release

Download one of the attached binaries on this release page!

From Crates.io

[WARNING: this method will not work because we've had some trouble publishing Rojo 7.4.1 to crates.io. We should have it resolved in a future patch, sorry!]

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

cargo install rojo --version 7.4.1