Releases: rojo-rbx/rojo
v7.5.1
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/[email protected]"
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
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 oldContent
type withContentId
to reflect Roblox's change.
If you were previously using the fully-qualified syntax forContent
you will need to switch it toContentId
. -
Projects may now manually link
Ref
properties together usingAttributes
. (#843)
This has two parts: usingid
or$id
in JSON files or aRojo_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 namedRojo_Target_PROP_NAME
, wherePROP_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, thesuffix
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 matchpattern
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
valuefile 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
valuescript type legacyServerScript
Script
withEnum.RunContext.Legacy
legacyClientScript
LocalScript
runContextServerScript
Script
withEnum.RunContext.Server
runContextClientScript
Script
withEnum.RunContext.Client
pluginScript
Script
withEnum.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 thePlugin
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/[email protected]"
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
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 totrue
by default when building to binary (rbxm
/rbxl
) files, which fixes an edge case where it was set tofalse
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/[email protected]"
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
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/[email protected]"
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
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/[email protected]"
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
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 namedfoo
)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/[email protected]"
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
v7.4.0
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.
Changes since Rojo 7.3.0
Additions
Project format
-
Added support for
.toml
files to$path
(#633) -
Added support for
Font
andCFrame
attributes (rbx-dom#299, rbx-dom#296) -
Added the
emitLegacyScripts
field to the project format (#765). The behavior is outlined below:emitLegacyScripts
ValueAction 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" } } }
Patch visualizer and notifications
-
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:
- Initial (default): prompts only once for a project in a given Studio session
- Always: always prompts for confirmation
- Large Changes: only prompts when there are more than X changed instances. The number of instances is configurable - an additional setting for the number of instances becomes available when this option is chosen
- Unlisted PlaceId: only prompts if the place ID is not present in servePlaceIds
-
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:
Miscellaneous
-
Added
plugin
flag to thebuild
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 aModuleScript
in thesrc
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)
Fixes
- Significantly improved performance of
rojo serve
androjo build
on macOS. #830 - Significantly improved performance of
rojo sourcemap
(#668) - Fixed the diff visualizer of connected sessions. (#674)
- Fixed disconnected session activity. (#675)
- Skip confirming patches that contain only a datamodel name change. (#688)
- Fix Rojo breaking when users undo/redo in Studio (#708)
- Improve tooltip behavior (#723)
- Better settings controls (#725)
- Rework patch visualizer with many fixes and improvements (#713, #726, #755)
Changes
rojo init
now generates scripts with.luau
as the file extension rather than.lua
(#831)
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/[email protected]"
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.0
New Contributors
- @Miizzuu made their first contribution in #669
- @u-train made their first contribution in #730
- @Corecii made their first contribution in #633
- @sasial-dev made their first contribution in #765
- @jackTabsCode made their first contribution in #816
- @cozywitchcraft made their first contribution in #819
Other Contributors
A very big thank you to @Barocena, @boatbomber, @Boegie19, @chriscerie, @Dekkonot, @filiptibell, @kennethloeffler, and @nezuo for their work in this release!
v7.4.0-rc3
This release has been superseded by the full release of v7.4.0
. Please use that instead!
See original release notes
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.
Changes since Rojo 7.4.0-rc2
-
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)
Changes since Rojo 7.3.0
Additions
Project format
-
Added support for
.toml
files to$path
(#633) -
Added support for
Font
andCFrame
attributes (rbx-dom#299, rbx-dom#296) -
Added the
emitLegacyScripts
field to the project format (#765). The behavior is outlined below:emitLegacyScripts
ValueAction 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" } } }
Patch visualizer and notifications
-
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:
- Initial (default): prompts only once for a project in a given Studio session
- Always: always prompts for confirmation
- Large Changes: only prompts when there are more than X changed instances. The number of instances is configurable - an additional setting for the number of instances becomes available when this option is chosen
- Unlisted PlaceId: only prompts if the place ID is not present in servePlaceIds
-
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:
Miscellaneous
-
Added
plugin
flag to thebuild
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 aModuleScript
in thesrc
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)
Fixes
- Significantly improved performance of
rojo serve
androjo build
on macOS. #783 - Significantly improved performance of
rojo sourcemap
(#668) - Fixed the diff visualizer of connected sessions. (#674)
- Fixed disconnected session activity. (#675)
- Skip confirming patches that contain only a datamodel name change. (#688)
- Fix Rojo breaking when users undo/redo in Studio (#708)
- Improve tooltip behavior (#723)
- Better settings controls (#725)
- Rework patch visualizer with many fixes and improvements (#713, #726, #755)
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 Aftman
Add a line to the [tools]
section in aftman.toml
:
rojo ="rojo-rbx/[email protected]"
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.0-rc3
v7.4.0-rc2
This release has been superseded by v7.4.0-rc3
. Please use that instead!
See original release notes
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.
Changes since Rojo 7.4.0-rc1
- Fixed a bug with parsing the version of the plugin (#797)
Changes since Rojo 7.3.0
Additions
Project format
-
Added support for
.toml
files to$path
(#633) -
Added support for
Font
andCFrame
attributes (rbx-dom#299, rbx-dom#296) -
Added the
emitLegacyScripts
field to the project format (#765). The behavior is outlined below:emitLegacyScripts
ValueAction 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" } } }
Patch visualizer and notifications
-
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:
- Initial (default): prompts only once for a project in a given Studio session
- Always: always prompts for confirmation
- Large Changes: only prompts when there are more than X changed instances. The number of instances is configurable - an additional setting for the number of instances becomes available when this option is chosen
- Unlisted PlaceId: only prompts if the place ID is not present in servePlaceIds
-
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:
Miscellaneous
-
Added
plugin
flag to thebuild
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 aModuleScript
in thesrc
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)
Fixes
- Significantly improved performance of
rojo serve
androjo build
on macOS. #783 - Significantly improved performance of
rojo sourcemap
(#668) - Fixed the diff visualizer of connected sessions. (#674)
- Fixed disconnected session activity. (#675)
- Skip confirming patches that contain only a datamodel name change. (#688)
- Fix Rojo breaking when users undo/redo in Studio (#708)
- Improve tooltip behavior (#723)
- Better settings controls (#725)
- Rework patch visualizer with many fixes and improvements (#713, #726, #755)
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 you Roblox Studio plugins folder
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/[email protected]"
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.0-rc2
v7.4.0-rc1
This release had a bug that rendered the plugin unusable! Please see the second release candidate.
See original release notes
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.
Changes since Rojo 7.3.0
Additions
Project format
-
Added support for
.toml
files to$path
(#633) -
Added support for
Font
andCFrame
attributes (rbx-dom#299, rbx-dom#296) -
Added the
emitLegacyScripts
field to the project format (#765). The behavior is outlined below:emitLegacyScripts
ValueAction 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" } } }
Patch visualizer and notifications
-
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:
- Initial (default): prompts only once for a project in a given Studio session
- Always: always prompts for confirmation
- Large Changes: only prompts when there are more than X changed instances. The number of instances is configurable - an additional setting for the number of instances becomes available when this option is chosen
- Unlisted PlaceId: only prompts if the place ID is not present in servePlaceIds
-
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:
Miscellaneous
-
Added
plugin
flag to thebuild
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 aModuleScript
in thesrc
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)
Fixes
- Significantly improved performance of
rojo serve
androjo build
on macOS. #783 - Significantly improved performance of
rojo sourcemap
(#668) - Fixed the diff visualizer of connected sessions. (#674)
- Fixed disconnected session activity. (#675)
- Skip confirming patches that contain only a datamodel name change. (#688)
- Fix Rojo breaking when users undo/redo in Studio (#708)
- Improve tooltip behavior (#723)
- Better settings controls (#725)
- Rework patch visualizer with many fixes and improvements (#713, #726, #755)
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 you Roblox Studio plugins folder
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/[email protected]"
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.0-rc1