# Rojo Changelog ## Unreleased Changes * Added `projectName` to `/api/rojo` output. ## [6.0.0 Release Candidate 3](https://github.com/rojo-rbx/rojo/releases/tag/v6.0.0-rc.3) (November 19, 2020) * Fixed the Rojo plugin attempting to write the non-scriptable properties `Instance.SourceAssetId` and `HttpServer.HttpEnabled`. * Fixed the Rojo plugin's handling of null referents. ## [6.0.0 Release Candidate 2](https://github.com/rojo-rbx/rojo/releases/tag/v6.0.0-rc.2) (November 19, 2020) * Fixed crash when malformed CSV files are put into a project. ([#310](https://github.com/rojo-rbx/rojo/issues/310)) * Fixed incorrect string escaping when producing Lua code from JSON files. ([#314](https://github.com/rojo-rbx/rojo/issues/314)) * Fixed performance issues introduced in Rojo 6.0.0-rc.1. ([#317](https://github.com/rojo-rbx/rojo/issues/317)) * Fixed `rojo plugin install` subcommand failing for everyone except Rojo developers. ([#320](https://github.com/rojo-rbx/rojo/issues/320)) * Updated default place template to take advantage of [#210](https://github.com/rojo-rbx/rojo/pull/210). * Enabled glob ignore patterns by default and removed the `unstable_glob_ignore` feature. * `globIgnorePaths` can be set on a project to a list of globs to ignore. * The Rojo plugin now completes as much as it can from a patch without disconnecting. Warnings are shown in the console. * Fixed 6.0.0-rc.1 regression causing instances that changed ClassName to instead... not change ClassName. ## [6.0.0 Release Candidate 1](https://github.com/rojo-rbx/rojo/releases/tag/v6.0.0-rc.1) (March 29, 2020) This release jumped from 0.6.0 to 6.0.0. Rojo has been in use in production for many users for quite a long times, and so 6.0 is a more accurate reflection of Rojo's version than a pre-1.0 version. * Added basic settings panel to plugin, with two settings: * "Open Scripts Externally": When enabled, opening a script in Studio will instead open it in your default text editor. * "Two-Way Sync": When enabled, Rojo will attempt to save changes to your place back to the filesystem. **Very early feature, very broken, beware!** * Added `--color` option to force-enable or force-disable color in Rojo's output. * Added support for turning `.json` files into `ModuleScript` instances ([#308](https://github.com/rojo-rbx/rojo/pull/308)) * Added `rojo plugin install` and `rojo plugin uninstall` to allow Rojo to manage its Roblox Studio plugin. ([#304](https://github.com/rojo-rbx/rojo/pull/304)) * Class names no longer need to be specified for Roblox services in Rojo projects. ([#210](https://github.com/rojo-rbx/rojo/pull/210)) * The server half of **experimental** two-way sync is now enabled by default. * Increased default logging verbosity in commands like `rojo build`. * Rojo now requires a project file again, just like 0.5.4. ## [0.6.0 Alpha 3](https://github.com/rojo-rbx/rojo/releases/tag/v0.6.0-alpha.3) (March 13, 2020) * Added `--watch` argument to `rojo build`. ([#284](https://github.com/rojo-rbx/rojo/pull/284)) * Added dark theme support to plugin. ([#241](https://github.com/rojo-rbx/rojo/issues/241)) * Added a revamped `rojo init` command, which will now create more complete projects. * Added the `rojo doc` command, which opens Rojo's documentation in your browser. * Fixed many crashes from malformed projects and filesystem edge cases in `rojo serve`. * Simplified filesystem access code dramatically. * Improved error reporting and logging across the board. * Log messages have a less noisy prefix. * Any thread panicking now causes Rojo to abort instead of existing as a zombie. * Errors now have a list of causes, helping make many errors more clear. ## [0.6.0 Alpha 2](https://github.com/rojo-rbx/rojo/releases/tag/v0.6.0-alpha.2) (March 6, 2020) * Fixed `rojo upload` command always uploading models. * Removed `--kind` parameter to `rojo upload`; Rojo now automatically uploads the correct kind of asset based on your project file. ## [0.5.4](https://github.com/rojo-rbx/rojo/releases/tag/v0.5.4) (February 26, 2020) This is a general maintenance release for the Rojo 0.5.x release series. * Updated reflection database and other dependencies. * First stable release with binaries for macOS and Linux. ## [0.6.0 Alpha 1](https://github.com/rojo-rbx/rojo/releases/tag/v0.6.0-alpha.1) (January 22, 2020) ### General * Added support for nested project files. ([#95](https://github.com/rojo-rbx/rojo/issues/95)) * Added project file hot-reloading. ([#10](https://github.com/rojo-rbx/rojo/issues/10)]) * Fixed Rojo dropping Ref properties ([#142](https://github.com/rojo-rbx/rojo/issues/142)) * This means that properties like `PrimaryPart` now work! * Improved live sync protocol to reduce round-trips and improve syncing consistency. * Improved support for binary model files and places. ### Command Line * Added `--verbose`/`-v` flag, which can be specified multiple times to increase verbosity. * Added support for automatically finding Roblox Studio's auth cookie for `rojo upload` on Windows. * Added support for building, serving and uploading sources that aren't Rojo projects. * Improved feedback from `rojo serve`. * Removed support for legacy `roblox-project.json` projects, deprecated in an early Rojo 0.5.0 alpha. * Rojo no longer traverses directories upwards looking for project files. * Though undocumented, Rojo 0.5.x will search for a project file contained in any ancestor folders. This feature was removed to better support other 0.6.x features. ### Roblox Studio Plugin * Added "connecting" state to improve experience when live syncing. * Added "error" state to show errors in a place that isn't the output panel. * Improved diagnostics for when the Rojo plugin cannot create an instance. ## [0.5.3](https://github.com/rojo-rbx/rojo/releases/tag/v0.5.3) (October 15, 2019) * Fixed an issue where Rojo would throw an error when encountering recently-added instance classes. ## [0.5.2](https://github.com/rojo-rbx/rojo/releases/tag/v0.5.2) (October 14, 2019) * Fixed an issue where `LocalizationTable` instances would have their column order randomized. ([#173](https://github.com/rojo-rbx/rojo/issues/173)) ## [0.5.1](https://github.com/rojo-rbx/rojo/releases/tag/v0.5.1) (October 4, 2019) * Fixed an issue where Rojo would drop changes if they happened too quickly ([#252](https://github.com/rojo-rbx/rojo/issues/252)) * Improved diagnostics for when the Rojo plugin cannot create an instance. * Updated dependencies * This brings Rojo's reflection database from client release 395 to client release 404. ## [0.5.0](https://github.com/rojo-rbx/rojo/releases/tag/v0.5.0) (August 27, 2019) * Changed `.model.json` naming, which may require projects to migrate ambiguous cases: * The file name now takes precedence over the `Name` field in the model, like Rojo 0.4.x. * The `Name` field of the top-level instance is now optional. It's recommended that you remove it from your models. * Rojo will emit a warning when `Name` is specified and does not match the name from the file. * Fixed `Rect` values being set to `0, 0, 0, 0` when synced with the Rojo plugin. ([#201](https://github.com/rojo-rbx/rojo/issues/201)) * Fixed live-syncing of `PhysicalProperties`, `NumberSequence`, and `ColorSequence` values ## [0.5.0 Alpha 13](https://github.com/rojo-rbx/rojo/releases/tag/v0.5.0-alpha.13) (August 2, 2019) * Bumped minimum Rust version to 1.34.0. * Fixed default port documentation in `rojo serve --help` ([#219](https://github.com/rojo-rbx/rojo/issues/219)) * Fixed BrickColor support by upgrading Roblox-related dependencies ## [0.5.0 Alpha 12](https://github.com/rojo-rbx/rojo/releases/tag/v0.5.0-alpha.12) (July 2, 2019) * Added `.meta.json` files * `init.meta.json` files replace `init.model.json` files from Rojo 0.4.x ([#183](https://github.com/rojo-rbx/rojo/pull/183)) * Other `.meta.json` files allow attaching extra data to other files ([#189](https://github.com/rojo-rbx/rojo/pull/189)) * 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 support for live-syncing `CollectionService` tags. * 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](https://github.com/rojo-rbx/rojo/issues/191)) * Rojo now throws an error if unknown keys are found 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](https://github.com/rojo-rbx/rojo/issues/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 ## [0.5.0 Alpha 11](https://github.com/rojo-rbx/rojo/releases/tag/v0.5.0-alpha.11) (May 29, 2019) * Added support for implicit property values in JSON model files ([#154](https://github.com/rojo-rbx/rojo/pull/154)) * `Content` propertyes 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`. ## 0.5.0 Alpha 10 * This release was a dud due to [issue #176](https://github.com/rojo-rbx/rojo/issues/176) and was rolled back. ## [0.5.0 Alpha 9](https://github.com/rojo-rbx/rojo/releases/tag/v0.5.0-alpha.9) (April 4, 2019) * Changed `rojo build` to use buffered I/O, which can make it up to 2x faster in some cases. * Building [*Road Not Taken*](https://github.com/LPGhatguy/roads) 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](https://github.com/rojo-rbx/rojo/pull/149)) * Fixed CSV files with entries that parse as numbers causing Rojo to panic. ([#152](https://github.com/rojo-rbx/rojo/pull/152)) * Improved error messages when malformed CSV files are found in a Rojo project. ## [0.5.0 Alpha 8](https://github.com/rojo-rbx/rojo/releases/tag/v0.5.0-alpha.8) (March 29, 2019) * 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](https://github.com/rojo-rbx/rojo/pull/135)) * Fixed error being thrown when trying to unload the Rojo plugin. * Added partial fix for [issue #141](https://github.com/rojo-rbx/rojo/issues/141) for `Lighting.Technology`, which should restore live sync functionality for the default project file. ## [0.5.0 Alpha 6](https://github.com/rojo-rbx/rojo/releases/tag/v0.5.0-alpha.6) (March 19, 2019) * 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](https://github.com/rojo-rbx/rojo/issues/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](https://github.com/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 ## [0.5.0 Alpha 5](https://github.com/rojo-rbx/rojo/releases/tag/v0.5.0-alpha.5) (March 1, 2019) * 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](https://github.com/rojo-rbx/rojo/issues/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](https://github.com/rojo-rbx/rojo/pull/130)) * Made error messages from invalid and missing files more user-friendly ## [0.5.0 Alpha 4](https://github.com/rojo-rbx/rojo/releases/tag/v0.5.0-alpha.4) (February 8, 2019) * Added support for nested partitions ([#102](https://github.com/rojo-rbx/rojo/issues/102)) * Added support for 'transmuting' partitions ([#112](https://github.com/rojo-rbx/rojo/issues/112)) * Added support for aliasing filesystem paths ([#105](https://github.com/rojo-rbx/rojo/issues/105)) * Changed Windows builds to statically link the CRT ([#89](https://github.com/rojo-rbx/rojo/issues/89)) ## [0.5.0 Alpha 3](https://github.com/rojo-rbx/rojo/releases/tag/v0.5.0-alpha.3) (February 1, 2019) * Changed default project file name from `roblox-project.json` to `default.project.json` ([#120](https://github.com/rojo-rbx/rojo/pull/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](https://github.com/rojo-rbx/rojo/pull/119)) ## [0.5.0 Alpha 2](https://github.com/rojo-rbx/rojo/releases/tag/v0.5.0-alpha.2) (January 28, 2019) * 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](https://github.com/rojo-rbx/rojo/issues/110)) ## [0.5.0 Alpha 1](https://github.com/rojo-rbx/rojo/releases/tag/v0.5.0-alpha.1) (January 25, 2019) * Changed plugin UI to be way prettier * Thanks to [Reselim](https://github.com/Reselim) for the design! * Changed plugin error messages to be a little more useful * Removed unused 'Config' button in plugin UI * Fixed bug where bad server responses could cause the plugin to be in a bad state * Upgraded to rbx\_tree, rbx\_xml, and rbx\_binary 0.2.0, which dramatically expands the kinds of properties that Rojo can handle, especially in XML. ## [0.5.0 Alpha 0](https://github.com/rojo-rbx/rojo/releases/tag/v0.5.0-alpha.0) (January 14, 2019) * "Epiphany" rewrite, in progress since the beginning of time * New live sync protocol * Uses HTTP long polling to reduce request count and improve responsiveness * New project format * Hierarchical, preventing overlapping partitions * Added `rojo build` command * Generates `rbxm`, `rbxmx`, `rbxl`, or `rbxlx` files out of your project * Usage: `rojo build --output .rbxm` * Added `rojo upload` command * Generates and uploads a place or model to roblox.com out of your project * Usage: `rojo upload --cookie "" --asset_id ` * New plugin * Only one button now, "Connect" * New UI to pick server address and port * Better error reporting * Added support for `.csv` files turning into `LocalizationTable` instances * Added support for `.txt` files turning into `StringValue` instances * Added debug visualization code to diagnose problems * `/visualize/rbx` and `/visualize/imfs` show instance and file state respectively; they require GraphViz to be installed on your machine. * Added optional place ID restrictions to project files * This helps prevent syncing in content to the wrong place * Multiple places can be specified, like when building a multi-place game * Added support for specifying properties on services in project files ## [0.4.13](https://github.com/rojo-rbx/rojo/releases/tag/v0.4.13) (November 12, 2018) * When `rojo.json` points to a file or directory that does not exist, Rojo now issues a warning instead of throwing an error and exiting ## [0.4.12](https://github.com/rojo-rbx/rojo/releases/tag/v0.4.12) (June 21, 2018) * Fixed obscure assertion failure when renaming or deleting files ([#78](https://github.com/rojo-rbx/rojo/issues/78)) * Added a `PluginAction` for the sync in command, which should help with some automation scripts ([#80](https://github.com/rojo-rbx/rojo/pull/80)) ## [0.4.11](https://github.com/rojo-rbx/rojo/releases/tag/v0.4.11) (June 10, 2018) * Defensively insert existing instances into RouteMap; should fix most duplication cases when syncing into existing trees. * Fixed incorrect synchronization from `Plugin:_pull` that would cause polling to create issues * Fixed incorrect file routes being assigned to `init.lua` and `init.model.json` files * Untangled route handling-internals slightly ## [0.4.10](https://github.com/rojo-rbx/rojo/releases/tag/v0.4.10) (June 2, 2018) * Added support for `init.model.json` files, which enable versioning `Tool` instances (among other things) with Rojo. ([#66](https://github.com/rojo-rbx/rojo/issues/66)) * Fixed obscure error when syncing into an invalid service. * Fixed multiple sync processes occurring when a server ID mismatch is detected. ## [0.4.9](https://github.com/rojo-rbx/rojo/releases/tag/v0.4.9) (May 26, 2018) * Fixed warning when renaming or removing files that would sometimes corrupt the instance cache ([#72](https://github.com/rojo-rbx/rojo/pull/72)) * JSON models are no longer as strict -- `Children` and `Properties` are now optional. ## [0.4.8](https://github.com/rojo-rbx/rojo/releases/tag/v0.4.8) (May 26, 2018) * Hotfix to prevent errors from being thrown when objects managed by Rojo are deleted ## [0.4.7](https://github.com/rojo-rbx/rojo/releases/tag/v0.4.7) (May 25, 2018) * Added icons to the Rojo plugin, made by [@Vorlias](https://github.com/Vorlias)! ([#70](https://github.com/rojo-rbx/rojo/pull/70)) * Server will now issue a warning if no partitions are specified in `rojo serve` ([#40](https://github.com/rojo-rbx/rojo/issues/40)) ## [0.4.6](https://github.com/rojo-rbx/rojo/releases/tag/v0.4.6) (May 21, 2018) * Rojo handles being restarted by Roblox Studio more gracefully ([#67](https://github.com/rojo-rbx/rojo/issues/67)) * Folders should no longer get collapsed when syncing occurs. * **Significant** robustness improvements with regards to caching. * **This should catch all existing script duplication bugs.** * If there are any bugs with script duplication or caching in the future, restarting the Rojo server process will fix them for that session. * Fixed message in plugin not being prefixed with `Rojo: `. ## [0.4.5](https://github.com/rojo-rbx/rojo/releases/tag/v0.4.5) (May 1, 2018) * Rojo messages are now prefixed with `Rojo: ` to make them stand out in the output more. * Fixed server to notice file changes *much* more quickly. (200ms vs 1000ms) * Server now lists name of project when starting up. * Rojo now throws an error if no project file is found. ([#63](https://github.com/rojo-rbx/rojo/issues/63)) * Fixed multiple sync operations occuring at the same time. ([#61](https://github.com/rojo-rbx/rojo/issues/61)) * Partitions targeting files directly now work as expected. ([#57](https://github.com/rojo-rbx/rojo/issues/57)) ## [0.4.4](https://github.com/rojo-rbx/rojo/releases/tag/v0.4.4) (April 7, 2018) * Fix small regression introduced in 0.4.3 ## [0.4.3](https://github.com/rojo-rbx/rojo/releases/tag/v0.4.3) (April 7, 2018) * Plugin now automatically selects `HttpService` if it determines that HTTP isn't enabled ([#58](https://github.com/rojo-rbx/rojo/pull/58)) * Plugin now has much more robust handling and will wipe all state when the server changes. * This should fix issues that would otherwise be solved by restarting Roblox Studio. ## [0.4.2](https://github.com/rojo-rbx/rojo/releases/tag/v0.4.2) (April 4, 2018) * Fixed final case of duplicated instance insertion, caused by reconciled instances not being inserted into `RouteMap`. * The reconciler is still not a perfect solution, especially if script instances get moved around without being destroyed. I don't think this can be fixed before a big refactor. ## [0.4.1](https://github.com/rojo-rbx/rojo/releases/tag/v0.4.1) (April 1, 2018) * Merged plugin repository into main Rojo repository for easier tracking. * Improved `RouteMap` object tracking; this should fix some cases of duplicated instances being synced into the tree. ## [0.4.0](https://github.com/rojo-rbx/rojo/releases/tag/v0.4.0) (March 27, 2018) * Protocol version 1, which shifts more responsibility onto the server * This is a **major breaking** change! * The server now has a content of 'filter plugins', which transform data at various stages in the pipeline * The server now exposes Roblox instance objects instead of file contents, which lines up with how `rojo pack` will work, and paves the way for more robust syncing. * Added `*.model.json` files, which let you embed small Roblox objects into your Rojo tree. * Improved error messages in some cases ([#46](https://github.com/rojo-rbx/rojo/issues/46)) ## [0.3.2](https://github.com/rojo-rbx/rojo/releases/tag/v0.3.2) (December 20, 2017) * Fixed `rojo serve` failing to correctly construct an absolute root path when passed as an argument * Fixed intense CPU usage when running `rojo serve` ## [0.3.1](https://github.com/rojo-rbx/rojo/releases/tag/v0.3.1) (December 14, 2017) * Improved error reporting when invalid JSON is found in a `rojo.json` project * These messages are passed on from Serde ## [0.3.0](https://github.com/rojo-rbx/rojo/releases/tag/v0.3.0) (December 12, 2017) * Factored out the plugin into a separate repository * Fixed server when using a file as a partition * Previously, trailing slashes were put on the end of a partition even if the read request was an empty string. This broke file reading on Windows when a partition pointed to a file instead of a directory! * Started running automatic tests on Travis CI (#9) ## [0.2.3](https://github.com/rojo-rbx/rojo/releases/tag/v0.2.3) (December 4, 2017) * Plugin only release * Tightened `init` file rules to only match script files * Previously, Rojo would sometimes pick up the wrong file when syncing ## [0.2.2](https://github.com/rojo-rbx/rojo/releases/tag/v0.2.2) (December 1, 2017) * Plugin only release * Fixed broken reconciliation behavior with `init` files ## [0.2.1](https://github.com/rojo-rbx/rojo/releases/tag/v0.2.1) (December 1, 2017) * Plugin only release * Changes default port to 8000 ## [0.2.0](https://github.com/rojo-rbx/rojo/releases/tag/v0.2.0) (December 1, 2017) * Support for `init.lua` like rbxfs and rbxpacker * More robust syncing with a new reconciler ## [0.1.0](https://github.com/rojo-rbx/rojo/releases/tag/v0.1.0) (November 29, 2017) * Initial release, functionally very similar to [rbxfs](https://github.com/LPGhatguy/rbxfs)