diff --git a/CHANGELOG.md b/CHANGELOG.md index f6e171f1..fc90f866 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,42 +1,130 @@ # Rojo Changelog ## Unreleased Changes -* Internally for themes, we use `Color3.fromHex` now instead of custom-made solution ([#761]). -* On failing to open a file from Roblox Studio, it is now logged appropriately instead of being ignored ([#745]). -* Significantly improved performance of `rojo sourcemap`. ([#668]) +### Additions +#### Project format +* 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: + ```json + { + "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`: + ```json + "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: + ```json + "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: + ```json + "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: + + ![Rojo reminds you to sync a place that you've synced previously](https://user-images.githubusercontent.com/40185666/242397435-ccdfddf2-a63f-420c-bc18-a6e3d6455bba.png) + +* 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: + + ![The patch visualizer contains a "view diff" button](https://user-images.githubusercontent.com/40185666/256065992-3f03558f-84b0-45a1-80eb-901f348cf067.png) + + ![The "View Diff" button opens a widget that displays a diff](https://user-images.githubusercontent.com/40185666/256066084-1d9d8fe8-7dad-4ee7-a542-b4aee35a5644.png) + +* 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: + + ![Patch visualizer displays a clickable warning label when changes fail to apply](https://user-images.githubusercontent.com/40185666/252063660-f08399ef-1e16-4f1c-bed8-552821f98cef.png) + + +#### Miscellaneous +* 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 --plugin ` + +* 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]) + +### Fixes +* 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]) -* Added sync reminder notification. ([#689]) -* Added protection against syncing a model to a place. ([#691]) -* Select Instances from diff tree view ([#709]) * Fix Rojo breaking when users undo/redo in Studio ([#708]) -* Improved sync info text on Connected page. ([#692]) -* Fix patch visualizer breaking when instances are removed during sync ([#713]) -* Patch visualizer now indicates what changes failed to apply. ([#717]) -* Add buttons for navigation on the Connected page ([#722]) * Improve tooltip behavior ([#723]) * Better settings controls ([#725]) -* Rework patch visualizer with many fixes and improvements ([#726]) -* Added support for syncing in `.toml` files ([#633]) -* Add `plugin` flag to the `build` command that outputs to the local plugins folder ([#735]) -* Added better support for `Font` properties ([#731]) -* Add new plugin template to the `init` command ([#738]) -* Added rich Source diffs in patch visualizer ([#748]) -* Fix PatchTree performance issues ([#755]) -* Don't override the initial enabled state for source diffing ([#760]) -* Added support for `Terrain.MaterialColors` ([#770]) -* Allow `Terrain` to be specified without a classname ([#771]) -* Add Confirmation Behavior setting ([#774]) -* Added the `emitLegacyScripts` field to the project format ([#765]). The behavior is outlined below: +* Rework patch visualizer with many fixes and improvements ([#713], [#726], [#755]) -| `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). | - -[#761]: https://github.com/rojo-rbx/rojo/pull/761 -[#745]: https://github.com/rojo-rbx/rojo/pull/745 [#668]: https://github.com/rojo-rbx/rojo/pull/668 [#674]: https://github.com/rojo-rbx/rojo/pull/674 [#675]: https://github.com/rojo-rbx/rojo/pull/675 @@ -45,7 +133,6 @@ [#691]: https://github.com/rojo-rbx/rojo/pull/691 [#709]: https://github.com/rojo-rbx/rojo/pull/709 [#708]: https://github.com/rojo-rbx/rojo/pull/708 -[#692]: https://github.com/rojo-rbx/rojo/pull/692 [#713]: https://github.com/rojo-rbx/rojo/pull/713 [#717]: https://github.com/rojo-rbx/rojo/pull/717 [#722]: https://github.com/rojo-rbx/rojo/pull/722 @@ -58,11 +145,12 @@ [#738]: https://github.com/rojo-rbx/rojo/pull/738 [#748]: https://github.com/rojo-rbx/rojo/pull/748 [#755]: https://github.com/rojo-rbx/rojo/pull/755 -[#760]: https://github.com/rojo-rbx/rojo/pull/760 [#765]: https://github.com/rojo-rbx/rojo/pull/765 [#770]: https://github.com/rojo-rbx/rojo/pull/770 [#771]: https://github.com/rojo-rbx/rojo/pull/771 [#774]: https://github.com/rojo-rbx/rojo/pull/774 +[rbx-dom#299]: https://github.com/rojo-rbx/rbx-dom/pull/299 +[rbx-dom#296]: https://github.com/rojo-rbx/rbx-dom/pull/296 ## [7.3.0] - April 22, 2023 * Added `$attributes` to project format. ([#574])