Implement Syncback to support converting Roblox files to a Rojo project (#937)

This is a very large commit.
Consider checking the linked PR for more information.
This commit is contained in:
Micah
2025-11-19 09:21:33 -08:00
committed by GitHub
parent 071b6e7e23
commit 9b5a07191b
239 changed files with 5325 additions and 225 deletions

View File

@@ -31,9 +31,46 @@ Making a new release? Simply add the new header with the version and date undern
## Unreleased
* A new command `rojo syncback` has been added. It can be used as `rojo syncback [path to project] --input [path to file]`. ([#937])
This command takes a Roblox file and pulls Instances out of it and places them in the correct position in the provided project.
Syncback is primarily controlled by the project file. Any Instances who are either referenced in the project file or a descendant
of one that is will be placed in an appropriate location.
In addition, a new field has been added to project files, `syncbackRules` to control how it behaves:
```json
{
"syncbackRules": {
"ignoreTrees": [
"ServerStorage/ImportantSecrets",
],
"ignorePaths": [
"src/ServerStorage/Secrets/*"
],
"ignoreProperties": {
"BasePart": ["Color"]
},
"syncCurrentCamera": false,
"syncUnscriptable": true,
}
}
```
A brief explanation of each field:
- `ignoreTrees` is a list of paths in the **roblox file** that should be ignored
- `ignorePaths` is a list of paths in the **file system** that should be ignored
- `ignoreProperties` is a list of properties that won't be synced back
- `syncCurrentCamera` is a toggle for whether to sync back the Workspace's CurrentCamera. Defaults to `false`.
- `syncUnscriptable` is a toggle for whether to sync back properties that cannot be set by the Roblox Studio plugin. Defaults to `true`.
If you are used to the `UpliftGames` version of this feature, there are a few notable differences:
- `syncUnscriptable` defaults to `true` instead of `false`
- `ignoreTrees` doesn't require the root of the project's name in it.
* Fixed bugs and improved performance & UX for the script diff viewer ([#994])
* Added support for `.jsonc` files for all JSON-related files (e.g. `.project.jsonc` and `.meta.jsonc`) to accompany JSONC support ([#1159])
[#937]: https://github.com/rojo-rbx/rojo/pull/937
[#994]: https://github.com/rojo-rbx/rojo/pull/994
[#1159]: https://github.com/rojo-rbx/rojo/pull/1159