Skip to content

Releases: UpliftGames/rojo

v7.4.0-uplift.syncback.rc.19

05 Dec 22:27
359e32f
Compare
Choose a tag to compare
Pre-release

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.

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": [
                "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 true.
  • 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.19
    • Fixed an issue with unknown properties serializing poorly in project, model, and meta json files
    • When the dir to rbxm fallback occurs, the old file will be removed only if the new serialization succeeds
  • rc.18
    • Remove old folder when a folder is converted to rbxm due to invalid filenames for children.
    • Remove old file when rbxm fallback is otherwise triggered.
    • Adopt Ustr for string interning (potential performance improvements due to fewer string allocations)
    • Turn update checking off by default
    • Make ChannelTabsConfiguration serialize as a JSON model
  • rc.17
    • LuaSourceContainer.ScriptGuid no longer serializes in most cases
    • Internal attributes (such as RBX_OriginalTechnologyOnFileLoad) are now ignored
    • ignoreTrees is now respected when Instances are removed
    • Duplicate Rojo_Id attributes will now trigger reserialization
    • HumanoidDescription Instances will no longer serialize differently between runs
  • rc.16
    • Compatibility update for rc.14
  • rc.15
    • syncUnscriptable now defaults to true instead of false.
    • ignoreTrees does not include the root of the project's name anymore
    • Syncback now functions when using model files (rbxm/rbxmx) as input
    • Syncback now correctly serializes and syncs csv files
    • NumberRange properties will now only serialize if they are not the default
    • Removed files and directories now respect ignorePaths
    • Directories will no longer be serialized unless they've changed
    • Heavily reduced the amount of logging
    • Synchronized with the upstream Rojo's master branch, so all of the 7.4+ changes are now in this release
Prior changes
  • rc.14
    • Fix a crash caused by project nodes with a name other than their class name
    • Properties that do not serialize (like ScriptGuid) will no longer reserialize. This issue only occurred with XML files.
  • rc.13
    • Update rbx-dom to include reflection database v629
    • Write unknown properties when syncing back to xml
    • Instances with multiple potential syncback paths will no londer sync back to all of them
    • Improve error message when rbxmx fails to parse
    • Fix OptionalCFrame equality when both are null
  • rc.12
    • Update rbx-dom to include reflection database v628
    • Instances related to TextChatService will become model.json files by default now
    • NaN values will no longer cause spurious diffs
  • 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.

v7.4.0-uplift.syncback.rc.18

14 Nov 17:48
579baf7
Compare
Choose a tag to compare
Pre-release
This release has been superseded by v7.4.0-uplift.syncback.rc.19

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

Please look at the list of changes even if you have previously used syncback. A previous release included some potentially breaking changes.

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.

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": [
                "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 true.
  • 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.18
    • Remove old folder when a folder is converted to rbxm due to invalid filenames for children.
    • Remove old file when rbxm fallback is otherwise triggered.
    • Adopt Ustr for string interning (potential performance improvements due to fewer string allocations)
    • Turn update checking off by default
    • Make ChannelTabsConfiguration serialize as a JSON model
  • rc.17
    • LuaSourceContainer.ScriptGuid no longer serializes in most cases
    • Internal attributes (such as RBX_OriginalTechnologyOnFileLoad) are now ignored
    • ignoreTrees is now respected when Instances are removed
    • Duplicate Rojo_Id attributes will now trigger reserialization
    • HumanoidDescription Instances will no longer serialize differently between runs
  • rc.16
    • Compatibility update for rc.14
  • rc.15
    • syncUnscriptable now defaults to true instead of false.
    • ignoreTrees does not include the root of the project's name anymore
    • Syncback now functions when using model files (rbxm/rbxmx) as input
    • Syncback now correctly serializes and syncs csv files
    • NumberRange properties will now only serialize if they are not the default
    • Removed files and directories now respect ignorePaths
    • Directories will no longer be serialized unless they've changed
    • Heavily reduced the amount of logging
    • Synchronized with the upstream Rojo's master branch, so all of the 7.4+ changes are now in this release
Prior changes
  • rc.14
    • Fix a crash caused by project nodes with a name other than their class name
    • Properties that do not serialize (like ScriptGuid) will no longer reserialize. This issue only occurred with XML files.
  • rc.13
    • Update rbx-dom to include reflection database v629
    • Write unknown properties when syncing back to xml
    • Instances with multiple potential syncback paths will no londer sync back to all of them
    • Improve error message when rbxmx fails to parse
    • Fix OptionalCFrame equality when both are null
  • rc.12
    • Update rbx-dom to include reflection database v628
    • Instances related to TextChatService will become model.json files by default now
    • NaN values will no longer cause spurious diffs
  • 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.

v7.4.0-uplift.syncback.rc.17

24 Sep 22:34
133d46d
Compare
Choose a tag to compare
Pre-release
This release has been superseded by v7.4.0-uplift.syncback.rc.18

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

Please look at the list of changes even if you have previously used syncback. This release includes some potentially breaking changes.

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.

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": [
                "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 true.
  • 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.17
    • LuaSourceContainer.ScriptGuid no longer serializes in most cases
    • Internal attributes (such as RBX_OriginalTechnologyOnFileLoad) are now ignored
    • ignoreTrees is now respected when Instances are removed
    • Duplicate Rojo_Id attributes will now trigger reserialization
    • HumanoidDescription Instances will no longer serialize differently between runs
  • rc.16
    • Compatibility update for rc.14
  • rc.15
    • syncUnscriptable now defaults to true instead of false.
    • ignoreTrees does not include the root of the project's name anymore
    • Syncback now functions when using model files (rbxm/rbxmx) as input
    • Syncback now correctly serializes and syncs csv files
    • NumberRange properties will now only serialize if they are not the default
    • Removed files and directories now respect ignorePaths
    • Directories will no longer be serialized unless they've changed
    • Heavily reduced the amount of logging
    • Synchronized with the upstream Rojo's master branch, so all of the 7.4+ changes are now in this release
Prior changes
  • rc.14
    • Fix a crash caused by project nodes with a name other than their class name
    • Properties that do not serialize (like ScriptGuid) will no longer reserialize. This issue only occurred with XML files.
  • rc.13
    • Update rbx-dom to include reflection database v629
    • Write unknown properties when syncing back to xml
    • Instances with multiple potential syncback paths will no londer sync back to all of them
    • Improve error message when rbxmx fails to parse
    • Fix OptionalCFrame equality when both are null
  • rc.12
    • Update rbx-dom to include reflection database v628
    • Instances related to TextChatService will become model.json files by default now
    • NaN values will no longer cause spurious diffs
  • 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.

v7.4.0-uplift.syncback.rc.16

22 Aug 22:43
28f1305
Compare
Choose a tag to compare
Pre-release
This release has been superseded by v7.4.0-uplift.syncback.rc.17

This release continues the work on developing syncback. Since syncback is primarily feature complete at this point, this release contains maintenance more than major changes or features.

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": [
                "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.16
    • Updated internal parser and reflection database to latest version
  • rc.15
    • Broken release, do not use
  • rc.14
    • Fix a crash caused by project nodes with a name other than their class name
    • Properties that do not serialize (like ScriptGuid) will no longer reserialize. This issue only occurred with XML files.
  • rc.13
    • Update rbx-dom to include reflection database v629
    • Write unknown properties when syncing back to xml
    • Instances with multiple potential syncback paths will no londer sync back to all of them
    • Improve error message when rbxmx fails to parse
    • Fix OptionalCFrame equality when both are null
  • rc.12
    • Update rbx-dom to include reflection database v628
    • Instances related to TextChatService will become model.json files by default now
    • NaN values will no longer cause spurious diffs
  • 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.

v7.4.0-uplift.syncback.rc.15

22 Aug 17:54
92901d2
Compare
Choose a tag to compare
Pre-release
This release has been superseded by v7.4.0-uplift.syncback.rc.16

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

Please look at the list of changes even if you have previously used syncback. This release includes some potentially unwanted changes.

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.

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": [
                "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 true.
  • 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.15
    • **syncUnscriptable now defaults to true instead of false.
    • **ignoreTrees does not include the root of the project's name anymore
    • Syncback now functions when using model files (rbxm/rbxmx) as input
    • Syncback now correctly serializes and syncs csv files
    • NumberRange properties will now only serialize if they are not the default
    • Removed files and directories now respect ignorePaths
    • Directories will no longer be serialized unless they've changed
    • Heavily reduced the amount of logging
    • Synchronized with the upstream Rojo's master branch, so all of the 7.4+ changes are now in this release
  • rc.14
    • Fix a crash caused by project nodes with a name other than their class name
    • Properties that do not serialize (like ScriptGuid) will no longer reserialize. This issue only occurred with XML files.
  • rc.13
    • Update rbx-dom to include reflection database v629
    • Write unknown properties when syncing back to xml
    • Instances with multiple potential syncback paths will no londer sync back to all of them
    • Improve error message when rbxmx fails to parse
    • Fix OptionalCFrame equality when both are null
  • rc.12
    • Update rbx-dom to include reflection database v628
    • Instances related to TextChatService will become model.json files by default now
    • NaN values will no longer cause spurious diffs
  • 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.

v7.4.0-uplift.syncback.rc.14

24 Jun 20:30
e28c36c
Compare
Choose a tag to compare
Pre-release
This release has been superseded by v7.4.0-uplift.syncback.rc.15

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.14
    • Fix a crash caused by project nodes with a name other than their class name
    • Properties that do not serialize (like ScriptGuid) will no longer reserialize. This issue only occurred with XML files.
  • rc.13
    • Update rbx-dom to include reflection database v629
    • Write unknown properties when syncing back to xml
    • Instances with multiple potential syncback paths will no londer sync back to all of them
    • Improve error message when rbxmx fails to parse
    • Fix OptionalCFrame equality when both are null
  • rc.12
    • Update rbx-dom to include reflection database v628
    • Instances related to TextChatService will become model.json files by default now
    • NaN values will no longer cause spurious diffs
  • 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.

v7.4.0-uplift.syncback.rc.13

19 Jun 05:51
Compare
Choose a tag to compare
Pre-release
This release has been superseded by v7.4.0-uplift.syncback.rc.14

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.13
    • Update rbx-dom to include reflection database v629
    • Write unknown properties when syncing back to xml
    • Instances with multiple potential syncback paths will no londer sync back to all of them
    • Improve error message when rbxmx fails to parse
    • Fix OptionalCFrame equality when both are null
  • rc.12
    • Update rbx-dom to include reflection database v628
    • Instances related to TextChatService will become model.json files by default now
    • NaN values will no longer cause spurious diffs
  • 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.

v7.4.0-uplift.syncback.rc.12

06 Jun 01:19
8e6f2c9
Compare
Choose a tag to compare
Pre-release
This release has been superseded by v7.4.0-uplift.syncback.rc.13

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.12
    • Update rbx-dom to include reflection database v628
    • Instances related to TextChatService will become model.json files by default now
    • NaN values will no longer cause spurious diffs
  • 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.

v7.4.0-uplift.syncback.rc.11

07 May 21:41
f9ae0aa
Compare
Choose a tag to compare
Pre-release
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.

v7.4.0-uplift.syncback.rc.10

02 May 22:36
ea7f882
Compare
Choose a tag to compare
Pre-release
This release has been superseded by v7.4.0-uplift.syncback.rc.11

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