Skip to content

v7.4.0-uplift.syncback.rc.11

Pre-release
Pre-release
Compare
Choose a tag to compare
@github-actions github-actions released this 07 May 21:41
· 57 commits to uplift since this release
f9ae0aa
This release has been superseded by v7.4.0-uplift.syncback.rc.12

This release continues the work on developing syncback. Since syncback is primarily feature complete at this point, this release primarily contains bug fixes.

Note that this is a pre-release build. Despite being labeled as a release candidate, it will almost certainly have bugs and you should be careful about using it for serious work. Among other things, syncback can delete files from your disk so you should be careful using it.

Please check out the section at the bottom of these notes for a list of changes.

If you are new to syncback, click here for a rundown!

Syncback is a feature designed to solve the long-standing problem of converting an existing place file into a Rojo project. It is configured by a new field in projects, and is invoked with a CLI subcommand rojo syncback.

The command itself is rojo syncback path/to/project --input path/to/file.rbxl. This will run syncback and pull things from the provided file to place on the operating system. Instances are attempted to be written in a reasonable manner but what Instances become what is still up in the air.

Instances will only be pulled from the file system if they are a descendant of a node in the provided project file. That is, in order to syncback the children of Workspace, Workspace must be in your project file. You may wish to have a separate project.json for running syncback as a result.

To control the behavior of syncback more, there's a new field in project files named syncbackRules:

    {
        "syncbackRules": {
            "ignoreTrees": [
                "DataModel/ServerStorage/ImportantSecrets",
            ],
            "ignorePaths": [
                "src/ServerStorage/Secrets/*"
            ],
            "ignoreProperties": {
                "BasePart": ["Color"]
            },
            "syncCurrentCamera": false,
            "syncUnscriptable": true,
            "ignoreReferents": false,
        }
    }

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 false.
  • ignoreReferents is a toggle for whether to sync back referent properties like Model.PrimaryPart. Defaults to false, which means that they will be included.

This feature will have bugs. Please report them to us as you encounter them!

Changes

  • rc.11
    • Updated rbx-dom to prevent Motor6Ds from duplicating under some circumstances
  • rc.10
    • Project files should now only reserialize when it's necessary
    • In the same vein, missing attributes should now correctly retrigger a serialization
    • Also, projects won't get properties when they don't need them as in the case of JSON models or a file with a meta.json
    • The old file from Project files are now always respected
    • Referent attributes should reserialize if a Rojo_Id is duplicated or if a Rojo target attribute points to a property that doesn't need to be set.
    • Properties like StringValue.Value and LocalScript.Source now serialize in project files if the node has no $path set
  • rc.9
    • Started using UniqueId for referent links instead of a random 128-bit integer
    • CSV files are now sorted by Key instead of Source and preserve the Example field now
    • All Value objects (StringValue, IntValue, etc.) now syncback as a JSON model by default
    • ignore_paths globs now ignore src if your glob is src/**. This behavior can be reverted by setting create_ignore_dir_paths to false in syncbackRules.
    • Made it so diffing takes place after referent links, fixing cases where referents wouldn't be linked in files that were otherwise identical
    • Improved performance of writing to file system
  • rc.8
    • Fixed a regression wherein Directories wouldn't fallback to syncing back as an Rbxm if the initial syncback attempt failed
  • rc.7
    • Rewrote the majority of the path resolution logic, resulting in much more accurate syncback of Project files
    • CSV files should now syncback correctly
    • Properties are filtered differently now, resulting in less data being stripped out of rbxm and rbxmx files as well as all JSON formats
    • SharedString properties should no longer show up unexpectedly in directory metadata
  • rc.6
    • Ported the fix for model pivots from 7.4.1
  • rc.5
    • Updated the version tags for Rojo's CLI and Plugin to actually say "7.4.0-uplift.syncback.rc.5" instead of "7.4.0"
  • rc.4
    • Rewrote syncback for project files to accurately run syncback on nodes with $path
    • This rewrite should correct a problem with nested projects, among other things
    • syncCurrentCamera now does what it says instead of the opposite
    • SharedString properties (such as the collision of MeshParts and Unions) are saved in rbxm and rbxmx models now
    • If a project cannot be serialized as a directory, it will instead be serialized as an rbxm file rather than raising an error
    • Syncback will now emit rbxmx files rather than rbxm if the enviroment variable ROJO_SYNCBACK_DEBUG is set to 1
    • Similarly, it will emit model.json files if it is set to 2.
  • rc.3
    • Fixes ref properties not saving correctly when a model is saved via syncback
  • rc.2
    • Fixes cross-file referent support
    • Fixes attribute/tag deletion
    • Fixes massive diffs
    • Added prompt to confirm before writing files. Bypass with -y or --non-interactive.