Skip to content

Releases: rojo-rbx/rojo

v0.5.0 Alpha 13

02 Aug 22:11
Compare
Choose a tag to compare
v0.5.0 Alpha 13 Pre-release
Pre-release

This is a fairly minor release that fixes up behaviors around BrickColor values. This means that SpawnLocation instances can now be correctly represented!

Rojo now also has its own website with fancy branding: https://rojo.space

Upgrading

This release changes the required minimum Rust compiler to 1.34. Please upgrade your Rust installation (rustup update) if you hit build errors when trying to compile Rojo.

To install the Rojo CLI, either download rojo.exe attached here or run:

cargo install rojo --version 0.5.0-alpha.13 --force

To install the plugin, either install it from Roblox (https://www.roblox.com/catalog/1997686364) or download Rojo.rbxm and put it into your Roblox Studio plugins folder.

Changes Since 0.5.0 Alpha 12

  • Bumped minimum Rust version to 1.34.0.
  • Fixed default port documentation in rojo serve --help (#219)
  • Fixed BrickColor support by upgrading Roblox-related dependencies

v0.5.0 Alpha 12

03 Jul 00:01
Compare
Choose a tag to compare
v0.5.0 Alpha 12 Pre-release
Pre-release

This is a large release with some new features, bug fixes, quality of life improvements, and new branding.

Along with this release, we've launched the new rojo-rbx GitHub organization! It's the home for all official Rojo projects, now including the VS Code Extension and rbxlx-to-rojo, an experimental project for converting existing games to Rojo.

Rojo now also has its own website with fancy branding: https://rojo.space

Rojo website

Upgrading

This release requires Rust 1.32 or newer!

To install the Rojo CLI, either download rojo.exe attached here or run:

cargo install rojo --version 0.5.0-alpha.12 --force

To install the plugin, either install it from Roblox (https://www.roblox.com/catalog/1997686364) or download Rojo.rbxm and put it into your Roblox Studio plugins folder.

Changes Since 0.5.0 Alpha 11

  • Added .meta.json files
    • init.meta.json files replace init.model.json files from Rojo 0.4.x (#183)
    • Other .meta.json files allow attaching extra data to other files (#189)
  • Added support for live-syncing CollectionService tags.
  • Added support for infinite and NaN values in types like Vector2 when building models and places.
    • These types aren't supported for live-syncing yet due to limitations around JSON encoding.
  • Added support for using SharedString values when building XML models and places.
  • Added a warning when building binary place files, since they're still experimental and have bugs.
  • Added a warning when trying to use Rojo 0.5.x with a Rojo 0.4.x-only project.
  • Added a warning when a Rojo project contains keys that start with $, which are reserved names. (#191)
  • Rojo now throws an error if unknown keys are found in most files.
  • Added an icon to the plugin's toolbar button
  • Changed the plugin to use a docking widget for all UI.
  • Changed the plugin to ignore unknown properties when live-syncing.
    • Rojo's approach to this problem might change later, like with a strict model mode (#190) or another approach.
  • Upgraded to reflection database from client release 388.
  • Updated Rojo's branding to shift the color palette to make it work better on dark backgrounds.

Meta Files

Meta files replace the functionality of init.model.json files in Rojo 0.4.x and do a lot more!

You can make tools with an init.meta.json:

{
    "className": "Tool"
}

You can create scripts with Disabled set by creating a meta file with the same base name, like foo.meta.json for foo.server.lua:

{
    "properties": {
        "Disabled": true
    }
}

Check out the new Meta Files section of the Sync Details page of the docs for more information on how you can take advantage of them.

Dock Widget Plugin UI!

A fairly long-requested feature, Rojo now sits in a dockable widget that is toggled by the toolbar button.

image

An update in the near future will add proper support for dark theme. Stay tuned!

CollectionService live-syncing

CollectionService tags can now be live-synced! This is part of improved support for lots of property types. If you had trouble live-syncing something before, it might work now in alpha 12!

New branding

There's a new branding repository, https://github.com/rojo-rbx/brand which contains all of the new assets we'll be using going forward.

v0.5.0 Alpha 11

29 May 21:36
Compare
Choose a tag to compare
v0.5.0 Alpha 11 Pre-release
Pre-release

This release brings along a slew of improvements from working on some of Rojo's core components in rbx-dom!

We skipped alpha 10 after a failed release with a pretty bad bug regression.

Upgrading

This release requires Rust 1.32 or newer!

To install the Rojo CLI, either download rojo.exe attached here or run:

cargo install rojo --version 0.5.0-alpha.11 --force

To install the plugin, either install it from Roblox (https://www.roblox.com/catalog/1997686364) or download Rojo.rbxm and put it into your Roblox Studio plugins folder.

Changes Since 0.5.0 Alpha 9

  • Added support for implicit property values in JSON model files (#154)
  • Content properties can now be specified in projects and model files as regular string literals.
  • Added support for BrickColor properties.
  • Added support for properties added in client release 384, like Lighting.Technology being set to "ShadowMap".
  • Improved performance when working with XML models and places
  • Fixed serializing empty Content properties as XML
  • Fixed serializing infinite and NaN floating point properties in XML
  • Improved compatibility with XML models
  • Plugin should now be able to live-sync more properties and ignore ones it can't, like Lighting.Technology.

Implicit Property Values

In .model.json files, it's now possible to specify properties with the handy "implicit" value syntax that has been usable in projects for awhile!

Before 0.5.0-alpha.11:

"Position": {
  "Type": "Vector3",
  "Value": [5, 6, 7]
}

After 0.5.0-alpha.11:

"Position": [5, 6, 7]

v0.5.0 Alpha 9

05 Apr 04:23
Compare
Choose a tag to compare
v0.5.0 Alpha 9 Pre-release
Pre-release

This release brings along significant performance improvements for rojo build and some fairly major fixes for localization tables.

Upgrading

This release requires Rust 1.32 or newer!

To install the Rojo CLI, either download rojo.exe attached here or run:

cargo install rojo --version 0.5.0-alpha.9 --force

To install the plugin, either install it from Roblox (https://www.roblox.com/catalog/1997686364) or download Rojo.rbxm and put it into your Roblox Studio plugins folder.

Changes Since 0.5.0 Alpha 8

  • Changed rojo build to use buffered I/O, which can make it up to 2x faster in some cases.
    • Building Road Not Taken to an rbxlx file dropped from 150ms to 70ms on my machine
  • Fixed LocalizationTable instances being made from csv files incorrectly interpreting empty rows and columns. (#149)
  • Fixed CSV files with entries that parse as numbers causing Rojo to panic. (#152)
  • Improved error messages when malformed CSV files are found in a Rojo project.

v0.5.0 Alpha 8

30 Mar 00:45
Compare
Choose a tag to compare
v0.5.0 Alpha 8 Pre-release
Pre-release

This is the 8th alpha for Rojo 0.5.0! We've skipped alpha 7 in order to stop having confusing version numbers.

This release brings along 100% practical coverage for the XML model format with the exception of refs (think Model.PrimaryPart or ObjectValue.Value). This should enable more projects to start being built using only Rojo and never checking a place file into Git.

Upgrading

This release requires Rust 1.32 or newer!

To install the Rojo CLI, either download rojo.exe attached here or run:

cargo install rojo --version 0.5.0-alpha.8 --force

To install the plugin, either install it from Roblox (https://www.roblox.com/catalog/1997686364) or download Rojo.rbxm and put it into your Roblox Studio plugins folder.

Changes Since 0.5.0-alpha.6

  • Added support for a bunch of new types when dealing with XML model/place files:
    • ColorSequence
    • Float64
    • Int64
    • NumberRange
    • NumberSequence
    • PhysicalProperties
    • Ray
    • Rect
    • Ref
  • Improved server instance ordering behavior when files are added during a live session (#135)
  • Fixed error being thrown when trying to unload the Rojo plugin.
  • Added partial fix for issue #141 for Lighting.Technology, which should restore live sync functionality for the default project file.

v0.5.0 Alpha 6

20 Mar 01:26
Compare
Choose a tag to compare
v0.5.0 Alpha 6 Pre-release
Pre-release

This is the 7th (zero-based indexing) alpha for Rojo 0.5.0!

This release is almost entirely bugfixes. It includes some internal refactoring to the plugin that should not impact users, but if they do, it is safe to revert the plugin to alpha 5 and keep the server at alpha 6.

Upgrading

This release requires Rust 1.32 or newer!

To install the Rojo CLI, either download rojo.exe attached here or run:

cargo install rojo --version 0.5.0-alpha.6 --force

To install the plugin, either install it from Roblox (https://www.roblox.com/library/1997686364/Rojo-0-5-0-alpha-6) or download Rojo.rbxm and put it into your Roblox Studio plugins folder.

Changes Since 0.5.0-alpha.5

  • Fixed rojo init giving unexpected results by upgrading to rbx_dom_weak 1.1.0
  • Fixed live server not responding when the Rojo plugin is connected (#133)
  • Updated default place file:
    • Improved default properties to be closer to Studio's built-in 'Baseplate' template
    • Added a baseplate to the project file (Thanks, @AmaranthineCodices!)
  • Added more type support to Rojo plugin
  • Fixed some cases where the Rojo plugin would leave around objects that it knows should be deleted
  • Updated plugin to correctly listen to Plugin.Unloading when installing or uninstalling new plugins

v0.5.0 Alpha 5

01 Mar 23:53
Compare
Choose a tag to compare
v0.5.0 Alpha 5 Pre-release
Pre-release

This is the 6th (zero-based indexing) alpha for Rojo 0.5.0!

This release features significant ergonomic improvements to the project format!

Upgrading

This release requires Rust 1.32 or newer!

To install the Rojo CLI, either download rojo.exe attached here or run:

cargo install rojo --version 0.5.0-alpha.5 --force

To install the plugin, either install it from Roblox (https://www.roblox.com/library/1997686364/Rojo-0-5-0-alpha-5) or download Rojo.rbxm and put it into your Roblox Studio plugins folder.

Changes Since 0.5.0-alpha.4

  • Upgraded core dependencies, which improves compatibility for lots of instance types
    • Upgraded from rbx_tree 0.2.0 to rbx_dom_weak 1.0.0
    • Upgraded from rbx_xml 0.2.0 to rbx_xml 0.4.0
    • Upgraded from rbx_binary 0.2.0 to rbx_binary 0.4.0
  • Added support for non-primitive types in the Rojo plugin.
    • Types like Color3 and CFrame can now be updated live!
  • Fixed plugin assets flashing in on first load (#121)
  • Changed Rojo's HTTP server from Rouille to Hyper, which reduced the release size by around a megabyte.
  • Added property type inference to projects, which makes specifying services a lot easier (#130)
  • Made error messages from invalid and missing files more user-friendly

Project Property Type Inference

Previously, you would specify a project with properties on services like this:
(diff markers added to draw attention)

{
	"name": "really-red-place",
	"tree": {
		"$className": "DataModel",
		"Lighting": {
			"$className": "Lighting",
			"$properties": {
+				"Ambient": {
+					"Type": "Color3",
+					"Value": [1, 0, 0]
+				},
+				"Technology": {
+					"Type": "Enum",
+					"Value": 1
+				}
			}
		},
		"HttpService": {
			"$className": "HttpService",
			"$properties": {
+				"HttpEnabled": {
+					"Type": "Bool",
+					"Value": true
+				}
			}
		}
	}
}

But starting in 0.5.0-alpha.5, Rojo can infer types where they should be obvious:

{
	"name": "really-red-place",
	"tree": {
		"$className": "DataModel",
		"Lighting": {
			"$className": "Lighting",
			"$properties": {
+				"Ambient": [1, 0, 0],
+				"Technology": "Voxel"
			}
		},
		"HttpService": {
			"$className": "HttpService",
			"$properties": {
+				"HttpEnabled": true
			}
		}
	}
}

This uses a brand new reflection database that now ships with Rojo called rbx_reflection!

Better Error Messages

Error messages that pop up when a file doesn't exist or is malformed should no longer blame Rojo.

Furthermore, if a file changes to stop being valid during a Rojo live sync session, Rojo will skip the upgrade and tell you in your console:

image

Dependency Upgrades

Rojo can now deserialize UDim, UDim2, and Content values. Support for these is present in the XML format (rbxlx, rbxmx) but not in the binary format (rbxm, rbxl) yet.

Non-Primitive Types

The Rojo plugin received an architectural changed that allows it to live-sync new property types like CFrame and Color3. Not all types are supported yet, and documentation for this is still a work in progress.

v0.5.0 Alpha 4

09 Feb 02:28
Compare
Choose a tag to compare
v0.5.0 Alpha 4 Pre-release
Pre-release

This is the fifth (zero-based indexing) alpha for Rojo 0.5.0!

This release features increased flexibility in the project format that should make it more feasible to use Rojo for versioning an entire game. The documentation site has received a huge upgrade to go along with this release.

Changes Since 0.5.0-alpha.3

  • Added support for nested partitions (#102)
  • Added support for 'transmuting' partitions (#112)
  • Added support for aliasing filesystem paths (#105)
  • Changed Windows builds to statically link the CRT (#89)

Nested Partitions

Previously, Rojo only allowed defining instance children if $path wasn't specified. Since 0.5.0-alpha.4 however, Rojo can handle projects that you'd expect to work, like:

{
    "name": "nested-as-heck",
    "tree": {
        "$path": "src",

        "Modules": {
            "$path": "Modules"
        }
    }
}

Transmuting Partitions

Instances defined in projects can now have $path as well as other options like $properties and $className, which can be used to put stuff directly into Roblox services:

{
    "name": "nested-as-heck",
    "tree": {
        "$className": "DataModel",
        
        "ReplicatedStorage": {
            "$className": "ReplicatedStorage",
            "$path": "ReplicatedStorage"
        }
    }
}

Aliasing File Paths

Rojo used to have bugs if you had multiple $path values pointing into the same place on the filesystem. Now it doesn't!

Static CRT

This fixes the need for installing any Microsoft Visual Studio Redistributibles! On the flipside, future releases will all be a little larger.

v0.5.0 Alpha 3

02 Feb 01:29
Compare
Choose a tag to compare
v0.5.0 Alpha 3 Pre-release
Pre-release

This is the fourth alpha for Rojo 0.5.0!

This release features one major bugfix for files not syncing into Studio, and changes the name of the default project format. Rojo will automatically let you know that you need to upgrade your project file name when you launch it!

Installing the 0.5.x Plugin

A new plugin has been uploaded to Roblox in order to let existing users of Rojo continue using 0.4.x.

You can install the plugin from one of two places:

Installing the 0.5.x Server

If you're on Windows, you can download the attached Windows executable, rojo.exe.

If you're not on Windows, or you'd rather install via Cargo, you can do that with:

cargo install rojo --version 0.5.0-alpha.3

If you already have Rojo installed, you'll need to add the --force flag to overwrite your current version.

Migrating Your Project to 0.5.x

There's a brand new set of docs for 0.5.x available that includes basic instructions on how to get started with 0.5.x. As we get closer to release, these docs will be updated and fleshed out.

If you're coming from 0.4.x, check out Migrating from 0.4.x to 0.5.x for a crash course in how to upgrade your project.

Changes Since 0.5.0-alpha.2

  • Changed default project file name from roblox-project.json to default.project.json (#120)
    • The old file name will still be supported until 0.5.0 is fully released.
  • Added warning when loading project files that don't end in .project.json
    • This new extension enables Rojo to distinguish project files from random JSON files, which is necessary to support nested projects.
  • Added new (empty) diagnostic page served from the server
  • Added better error messages for when a file is missing that's referenced by a Rojo project
  • Added support for visualization endpoints returning GraphViz source when Dot is not available
  • Fixed an in-memory filesystem regression introduced recently (#119)

v0.5.0 Alpha 2

28 Jan 23:51
Compare
Choose a tag to compare
v0.5.0 Alpha 2 Pre-release
Pre-release

This is the third alpha for Rojo 0.5.0!

Installing the 0.5.x Plugin

A new plugin has been uploaded to Roblox in order to let existing users of Rojo continue using 0.4.x.

You can install the plugin from one of two places:

Installing the 0.5.x Server

If you're on Windows, you can download the attached Windows executable, rojo.exe.

If you're not on Windows, or you'd rather install via Cargo, you can do that with:

cargo install rojo --version 0.5.0-alpha.2

If you already have Rojo installed, you'll need to add the --force flag to overwrite your current version.

Migrating Your Project to 0.5.x

There's a brand new set of docs for 0.5.x available that includes basic instructions on how to get started with 0.5.x. As we get closer to release, these docs will be updated and fleshed out.

If you're coming from 0.4.x, check out Migrating from 0.4.x to 0.5.x for a crash course in how to upgrade your project.

Changes Since 0.5.0-alpha.1

  • Added support for .model.json files, compatible with 0.4.x
  • Fixed in-memory filesystem not handling out-of-order filesystem change events
  • Fixed long-polling error caused by a promise mixup (#110)