CHANGELOG.md 17 KB

Rojo Changelog

Unreleased Changes

  • 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
  • Improved diagnostics for when the Rojo plugin cannot create an instance.

0.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)
  • Fixed live-syncing of PhysicalProperties, NumberSequence, and ColorSequence values

0.5.0 Alpha 13 (August 2, 2019)

  • 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

0.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)
    • Other .meta.json files allow attaching extra data to other files (#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)
  • 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) 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 (May 29, 2019)

  • Added support for implicit property values in JSON model files (#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 and was rolled back.

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

0.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)
  • 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.

0.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)
  • 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

0.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)
  • 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

0.5.0 Alpha 4 (February 8, 2019)

  • 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)

0.5.0 Alpha 3 (February 1, 2019)

  • 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)

0.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)

0.5.0 Alpha 1 (January 25, 2019)

  • Changed plugin UI to be way prettier
    • Thanks to 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 (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 <PROJECT> --output <OUTPUT>.rbxm
  • Added rojo upload command
    • Generates and uploads a place or model to roblox.com out of your project
    • Usage: rojo upload <PROJECT> --cookie "<ROBLOSECURITY>" --asset_id <PLACE_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 (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 (June 21, 2018)

  • Fixed obscure assertion failure when renaming or deleting files (#78)
  • Added a PluginAction for the sync in command, which should help with some automation scripts (#80)

0.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 (June 2, 2018)

  • Added support for init.model.json files, which enable versioning Tool instances (among other things) with Rojo. (#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 (May 26, 2018)

  • Fixed warning when renaming or removing files that would sometimes corrupt the instance cache (#72)
  • JSON models are no longer as strict -- Children and Properties are now optional.

0.4.8 (May 26, 2018)

  • Hotfix to prevent errors from being thrown when objects managed by Rojo are deleted

0.4.7 (May 25, 2018)

  • Added icons to the Rojo plugin, made by @Vorlias! (#70)
  • Server will now issue a warning if no partitions are specified in rojo serve (#40)

0.4.6 (May 21, 2018)

  • Rojo handles being restarted by Roblox Studio more gracefully (#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 (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)
  • Fixed multiple sync operations occuring at the same time. (#61)
  • Partitions targeting files directly now work as expected. (#57)

0.4.4 (April 7, 2018)

  • Fix small regression introduced in 0.4.3

0.4.3 (April 7, 2018)

  • Plugin now automatically selects HttpService if it determines that HTTP isn't enabled (#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 (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 (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 (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)

0.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 (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 (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 (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 (December 1, 2017)

  • Plugin only release
  • Fixed broken reconciliation behavior with init files

0.2.1 (December 1, 2017)

  • Plugin only release
  • Changes default port to 8000

0.2.0 (December 1, 2017)

  • Support for init.lua like rbxfs and rbxpacker
  • More robust syncing with a new reconciler

0.1.0 (November 29, 2017)

  • Initial release, functionally very similar to rbxfs