Rojo enables Roblox developers to use professional-grade software engineering tools
This release contains a handful of bugfixes and small improvements.
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)
To install the Roblox Studio plugin, there are a few options:
rojo plugin install
from the Rojo CLIRojo.rbxm
and place it into your Roblox Studio plugins folderThere are also multiple ways to install the Rojo CLI:
Add a line to the [tools]
section in aftman.toml
:
rojo ="rojo-rbx/[email protected]"
Download one of the attached binaries on this release page!
[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
This release is a long time coming and carries with it the changes of the last 9 months. It is the first full release handled by Rojo's new maintainers.
Important Notice: There is a new place to install Rojo's plugin from Roblox's website. If you are using the version on the website, it now lives here.
Added support for .toml
files to $path
(#633)
Added support for Font
and CFrame
attributes (rbx-dom#299, rbx-dom#296)
Added the emitLegacyScripts
field to the project format (#765). The behavior is outlined below:
emitLegacyScripts Value |
Action Taken by Rojo |
---|---|
false | Rojo emits Scripts with the appropriate RunContext for *.client.lua and *.server.lua files in the project. |
true (default) | Rojo emits LocalScripts and Scripts with legacy RunContext (same behavior as previously). |
It can be used like this:
"emitLegacyScripts": false,
"name": "MyCoolRunContextProject",
"tree": {
"$path": "src"
}
Added Terrain
classname inference, similar to services (#771)
Terrain
may now be defined in projects without using $className
:
Workspace": {
"Terrain": {
"$path": "path/to/terrain.rbxm"
}
Added support for Terrain.MaterialColors
(#770)
Terrain.MaterialColors
is now represented in projects in a human readable format:
Workspace": {
"Terrain": {
"$path": "path/to/terrain.rbxm"
"$properties": {
"MaterialColors": {
"Grass": [10, 20, 30],
"Asphalt": [40, 50, 60],
"LeafyGrass": [255, 155, 55]
}
}
}
Added better support for Font
properties (#731)
FontFace
properties may now be defined using implicit property syntax:
TextBox": {
"$className": "TextBox",
"$properties": {
"FontFace": {
"family": "rbxasset://fonts/families/RobotoMono.json",
"weight": "Thin",
"style": "Normal"
}
}
Added a setting to control patch confirmation behavior (#774)
This is a new setting for controlling when the Rojo plugin prompts for confirmation before syncing. It has four options:
Added the ability to select Instances in patch visualizer (#709)
Double-clicking an instance in the patch visualizer sets Roblox Studio's selection to the instance.
Added a sync reminder notification. (#689)
Rojo detects if you have previously synced to a place, and displays a notification reminding you to sync again:
Added rich Source diffs in patch visualizer (#748)
A "View Diff" button for script sources is now present in the patch visualizer. Clicking it displays a side-by-side diff of the script changes:
Patch visualizer now indicates what changes failed to apply. (#717)
A clickable warning label is displayed when the Rojo plugin is unable to apply changes. Clicking the label displays precise information about which changes failed:
Added plugin
flag to the build
command that outputs to the local plugins folder (#735)
This is a flag that builds a Rojo project into Roblox Studio's plugins directory. This allows you to build a Rojo project and load it into Studio as a plugin without having to type the full path to the plugins directory. It can be used like this: rojo build <PATH-TO-PROJECT> --plugin <FILE-NAME>
Added new plugin template to the init
command (#738)
This is a new template geared towards plugins. It is similar to the model template, but creates a Script
instead of a ModuleScript
in the src
directory. It can be used like this: rojo init --kind plugin
Added protection against syncing non-place projects as a place. (#691)
Add buttons for navigation on the Connected page (#722)
rojo serve
and rojo build
on macOS. #830
rojo sourcemap
(#668)rojo init
now generates scripts with .luau
as the file extension rather than .lua
(#831)To install the Roblox Studio plugin, there are a few options:
rojo plugin install
from the Rojo CLIRojo.rbxm
and place it into your Roblox Studio plugins folderThere are also multiple ways to install the Rojo CLI:
Add a line to the [tools]
section in aftman.toml
:
rojo ="rojo-rbx/[email protected]"
Download one of the attached binaries on this release page!
You can use Cargo (1.70.0+) to build the release yourself from crates.io:
cargo install rojo --version 7.4.0
A very big thank you to @Barocena, @boatbomber, @Boegie19, @chriscerie, @Dekkonot, @filiptibell, @kennethloeffler, and @nezuo for their work in this release!
This release has been superseded by the full release of v7.4.0
. Please use that instead!
This is a release candidate for Rojo 7.4.0 and carries with it the changes of the last 6 months. As a result of being a release candidate, you must manage your own plugin. The version on the Roblox website will not be updated until a full release is made. The plugin for this release may be installed automatically by running rojo plugin install
or it may be manually installed by placing the Rojo.rbxm
file from this release into your local plugins folder.
There may be bugs in this release! Notably, the internals of the plugin have undergone a significant revision and a backend change was made on MacOS. While those are the most significant potential sources for bugs, please report anything else you encounter as well.
Changed sourcemap --watch
to only generate the sourcemap when it's necessary (#800)
Switched script source property getter and setter to ScriptEditorService
methods (#801)
This ensures that the script editor reflects any changes Rojo makes to a script while it is open in the script editor.
Fixed issues when handling SecurityCapabilities
values (#803, #807)
Fixed Rojo plugin erroring out when attempting to sync attributes with invalid names (#809)
Added support for .toml
files to $path
(#633)
Added support for Font
and CFrame
attributes (rbx-dom#299, rbx-dom#296)
Added the emitLegacyScripts
field to the project format (#765). The behavior is outlined below:
emitLegacyScripts Value |
Action Taken by Rojo |
---|---|
false | Rojo emits Scripts with the appropriate RunContext for *.client.lua and *.server.lua files in the project. |
true (default) | Rojo emits LocalScripts and Scripts with legacy RunContext (same behavior as previously). |
It can be used like this:
"emitLegacyScripts": false,
"name": "MyCoolRunContextProject",
"tree": {
"$path": "src"
}
Added Terrain
classname inference, similar to services (#771)
Terrain
may now be defined in projects without using $className
:
Workspace": {
"Terrain": {
"$path": "path/to/terrain.rbxm"
}
Added support for Terrain.MaterialColors
(#770)
Terrain.MaterialColors
is now represented in projects in a human readable format:
Workspace": {
"Terrain": {
"$path": "path/to/terrain.rbxm"
"$properties": {
"MaterialColors": {
"Grass": [10, 20, 30],
"Asphalt": [40, 50, 60],
"LeafyGrass": [255, 155, 55]
}
}
}
Added better support for Font
properties (#731)
FontFace
properties may now be defined using implicit property syntax:
TextBox": {
"$className": "TextBox",
"$properties": {
"FontFace": {
"family": "rbxasset://fonts/families/RobotoMono.json",
"weight": "Thin",
"style": "Normal"
}
}
Added a setting to control patch confirmation behavior (#774)
This is a new setting for controlling when the Rojo plugin prompts for confirmation before syncing. It has four options:
Added the ability to select Instances in patch visualizer (#709)
Double-clicking an instance in the patch visualizer sets Roblox Studio's selection to the instance.
Added a sync reminder notification. (#689)
Rojo detects if you have previously synced to a place, and displays a notification reminding you to sync again:
Added rich Source diffs in patch visualizer (#748)
A "View Diff" button for script sources is now present in the patch visualizer. Clicking it displays a side-by-side diff of the script changes:
Patch visualizer now indicates what changes failed to apply. (#717)
A clickable warning label is displayed when the Rojo plugin is unable to apply changes. Clicking the label displays precise information about which changes failed:
Added plugin
flag to the build
command that outputs to the local plugins folder (#735)
This is a flag that builds a Rojo project into Roblox Studio's plugins directory. This allows you to build a Rojo project and load it into Studio as a plugin without having to type the full path to the plugins directory. It can be used like this: rojo build <PATH-TO-PROJECT> --plugin <FILE-NAME>
Added new plugin template to the init
command (#738)
This is a new template geared towards plugins. It is similar to the model template, but creates a Script
instead of a ModuleScript
in the src
directory. It can be used like this: rojo init --kind plugin
Added protection against syncing non-place projects as a place. (#691)
Add buttons for navigation on the Connected page (#722)
rojo serve
and rojo build
on macOS. #783
rojo sourcemap
(#668)To install the Roblox Studio plugin, there are a few options:
rojo plugin install
from the Rojo CLIRojo.rbxm
and place it into your Roblox Studio plugins folderThere are also multiple ways to install the Rojo CLI:
Add a line to the [tools]
section in aftman.toml
:
rojo ="rojo-rbx/[email protected]"
Download one of the attached binaries on this release page!
You can use Cargo (1.70.0+) to build the release yourself from crates.io:
cargo install rojo --version 7.4.0-rc3
This release has been superseded by v7.4.0-rc3
. Please use that instead!
There may be bugs in this release! Notably, the internals of the plugin have undergone a significant revision and a backend change was made on MacOS. While those are the most significant potential sources for bugs, please report anything else you encounter as well.
Added support for .toml
files to $path
(#633)
Added support for Font
and CFrame
attributes (rbx-dom#299, rbx-dom#296)
Added the emitLegacyScripts
field to the project format (#765). The behavior is outlined below:
emitLegacyScripts Value |
Action Taken by Rojo |
---|---|
false | Rojo emits Scripts with the appropriate RunContext for *.client.lua and *.server.lua files in the project. |
true (default) | Rojo emits LocalScripts and Scripts with legacy RunContext (same behavior as previously). |
It can be used like this:
"emitLegacyScripts": false,
"name": "MyCoolRunContextProject",
"tree": {
"$path": "src"
}
Added Terrain
classname inference, similar to services (#771)
Terrain
may now be defined in projects without using $className
:
Workspace": {
"Terrain": {
"$path": "path/to/terrain.rbxm"
}
Added support for Terrain.MaterialColors
(#770)
Terrain.MaterialColors
is now represented in projects in a human readable format:
Workspace": {
"Terrain": {
"$path": "path/to/terrain.rbxm"
"$properties": {
"MaterialColors": {
"Grass": [10, 20, 30],
"Asphalt": [40, 50, 60],
"LeafyGrass": [255, 155, 55]
}
}
}
Added better support for Font
properties (#731)
FontFace
properties may now be defined using implicit property syntax:
TextBox": {
"$className": "TextBox",
"$properties": {
"FontFace": {
"family": "rbxasset://fonts/families/RobotoMono.json",
"weight": "Thin",
"style": "Normal"
}
}
Added a setting to control patch confirmation behavior (#774)
This is a new setting for controlling when the Rojo plugin prompts for confirmation before syncing. It has four options:
Added the ability to select Instances in patch visualizer (#709)
Double-clicking an instance in the patch visualizer sets Roblox Studio's selection to the instance.
Added a sync reminder notification. (#689)
Rojo detects if you have previously synced to a place, and displays a notification reminding you to sync again:
Added rich Source diffs in patch visualizer (#748)
A "View Diff" button for script sources is now present in the patch visualizer. Clicking it displays a side-by-side diff of the script changes:
Patch visualizer now indicates what changes failed to apply. (#717)
A clickable warning label is displayed when the Rojo plugin is unable to apply changes. Clicking the label displays precise information about which changes failed:
Added plugin
flag to the build
command that outputs to the local plugins folder (#735)
This is a flag that builds a Rojo project into Roblox Studio's plugins directory. This allows you to build a Rojo project and load it into Studio as a plugin without having to type the full path to the plugins directory. It can be used like this: rojo build <PATH-TO-PROJECT> --plugin <FILE-NAME>
Added new plugin template to the init
command (#738)
This is a new template geared towards plugins. It is similar to the model template, but creates a Script
instead of a ModuleScript
in the src
directory. It can be used like this: rojo init --kind plugin
Added protection against syncing non-place projects as a place. (#691)
Add buttons for navigation on the Connected page (#722)
rojo serve
and rojo build
on macOS. #783
rojo sourcemap
(#668)To install the Roblox Studio plugin, there are a few options:
rojo plugin install
from the Rojo CLIRojo.rbxm
and place it into you Roblox Studio plugins folderThere are also multiple ways to install the Rojo CLI:
Add a line to the [tools]
section in aftman.toml
:
rojo ="rojo-rbx/[email protected]"
Download one of the attached binaries on this release page!
You can use Cargo (1.70.0+) to build the release yourself from crates.io:
cargo install rojo --version 7.4.0-rc2
This release had a bug that rendered the plugin unusable! Please see the second release candidate.
This is a release candidate for Rojo 7.4.0 and carries with it the changes of the last 6 months. As a result of being a release candidate, you must manage your own plugin. The version on the Roblox website will not be updated until a full release is made. The plugin for this release may be installed automatically by running rojo plugin install
or it may be manually installed by placing the Rojo.rbxm
file from this release into your local plugins folder.
There may be bugs in this release! Notably, the internals of the plugin have undergone a significant revision and a backend change was made on MacOS. While those are the most significant potential sources for bugs, please report anything else you encounter as well.
Added support for .toml
files to $path
(#633)
Added support for Font
and CFrame
attributes (rbx-dom#299, rbx-dom#296)
Added the emitLegacyScripts
field to the project format (#765). The behavior is outlined below:
emitLegacyScripts Value |
Action Taken by Rojo |
---|---|
false | Rojo emits Scripts with the appropriate RunContext for *.client.lua and *.server.lua files in the project. |
true (default) | Rojo emits LocalScripts and Scripts with legacy RunContext (same behavior as previously). |
It can be used like this:
"emitLegacyScripts": false,
"name": "MyCoolRunContextProject",
"tree": {
"$path": "src"
}
Added Terrain
classname inference, similar to services (#771)
Terrain
may now be defined in projects without using $className
:
Workspace": {
"Terrain": {
"$path": "path/to/terrain.rbxm"
}
Added support for Terrain.MaterialColors
(#770)
Terrain.MaterialColors
is now represented in projects in a human readable format:
Workspace": {
"Terrain": {
"$path": "path/to/terrain.rbxm"
"$properties": {
"MaterialColors": {
"Grass": [10, 20, 30],
"Asphalt": [40, 50, 60],
"LeafyGrass": [255, 155, 55]
}
}
}
Added better support for Font
properties (#731)
FontFace
properties may now be defined using implicit property syntax:
TextBox": {
"$className": "TextBox",
"$properties": {
"FontFace": {
"family": "rbxasset://fonts/families/RobotoMono.json",
"weight": "Thin",
"style": "Normal"
}
}
Added a setting to control patch confirmation behavior (#774)
This is a new setting for controlling when the Rojo plugin prompts for confirmation before syncing. It has four options:
Added the ability to select Instances in patch visualizer (#709)
Double-clicking an instance in the patch visualizer sets Roblox Studio's selection to the instance.
Added a sync reminder notification. (#689)
Rojo detects if you have previously synced to a place, and displays a notification reminding you to sync again:
Added rich Source diffs in patch visualizer (#748)
A "View Diff" button for script sources is now present in the patch visualizer. Clicking it displays a side-by-side diff of the script changes:
Patch visualizer now indicates what changes failed to apply. (#717)
A clickable warning label is displayed when the Rojo plugin is unable to apply changes. Clicking the label displays precise information about which changes failed:
Added plugin
flag to the build
command that outputs to the local plugins folder (#735)
This is a flag that builds a Rojo project into Roblox Studio's plugins directory. This allows you to build a Rojo project and load it into Studio as a plugin without having to type the full path to the plugins directory. It can be used like this: rojo build <PATH-TO-PROJECT> --plugin <FILE-NAME>
Added new plugin template to the init
command (#738)
This is a new template geared towards plugins. It is similar to the model template, but creates a Script
instead of a ModuleScript
in the src
directory. It can be used like this: rojo init --kind plugin
Added protection against syncing non-place projects as a place. (#691)
Add buttons for navigation on the Connected page (#722)
rojo serve
and rojo build
on macOS. #783
rojo sourcemap
(#668)To install the Roblox Studio plugin, there are a few options:
rojo plugin install
from the Rojo CLIRojo.rbxm
and place it into you Roblox Studio plugins folderThere are also multiple ways to install the Rojo CLI:
Add a line to the [tools]
section in aftman.toml
:
rojo ="rojo-rbx/[email protected]"
Download one of the attached binaries on this release page!
You can use Cargo (1.70.0+) to build the release yourself from crates.io:
cargo install rojo --version 7.4.0-rc1
This release brings along tons of changes from the past year along with several compatibility fixes. It is the final release that I will be handling for Rojo.
$attributes
to project format. (#574)--watch
flag to rojo sourcemap
. (#602)init.csv
files. (#594)Common
to Shared
in the default Rojo project. (#611)rojo fmt-project
. (#581)To install the Roblox Studio plugin, there are a few options:
rojo plugin install
from the Rojo CLIRojo.rbxm
and place it into you Roblox Studio plugins folderThere are also multiple to install the Rojo CLI.
Add a line to the [tools]
section in foreman.toml
:
rojo = { source = "rojo-rbx/rojo", version = "=7.3.0" }
Download one of the attached binaries on this release page!
Change your release channel in the extension's setting page to 7.x
:
You can use Cargo (1.68.0+) to build the release yourself from crates.io:
cargo install rojo --version 7.3.0
This is a test release to ensure that our changes to the Rojo release workflow still work.
This is a Rojo prerelease with OpenSSL statically linked. It supports Ubuntu 20.04 and newer; Ubuntu 18.04 support has been dropped.
This fix addresses a couple issues introduced with the new notifications feature in Rojo 7.2.0.
To install the Roblox Studio plugin, there are a few options:
rojo plugin install
from the Rojo CLIRojo.rbxm
and place it into you Roblox Studio plugins folderThere are also multiple to install the Rojo CLI.
Add a line to the [tools]
section in foreman.toml
:
rojo = { source = "rojo-rbx/rojo", version = "=7.2.1" }
Download one of the attached binaries on this release page!
Change your release channel in the extension's setting page to 7.x
:
You can use Cargo (1.57.0+) to build the release yourself from crates.io:
cargo install rojo --version 7.2.1
This release includes a bunch of long-awaited improvements and several smaller fixes as well.
.luau
files. (#552)init.meta.json
when used with init.lua
and related files. (#549)camelCase
casing for JSON models, deprecating PascalCase
names. (#563)To install the Roblox Studio plugin, there are a few options:
rojo plugin install
from the Rojo CLIRojo.rbxm
and place it into you Roblox Studio plugins folderThere are also multiple to install the Rojo CLI.
Add a line to the [tools]
section in foreman.toml
:
rojo = { source = "rojo-rbx/rojo", version = "=7.2.0" }
Download one of the attached binaries on this release page!
Change your release channel in the extension's setting page to 7.x
:
You can use Cargo (1.57.0+) to build the release yourself from crates.io:
cargo install rojo --version 7.2.0