Rojo enables Roblox developers to use professional-grade software engineering tools https://rojo.space
Find a file
Floyd Horng 70e6e3c5e8 Fix syncback not removing stale $properties at engine defaults
When a property in a project file's $properties has a non-default value
and Studio resets it to the engine default, syncback didn't remove the
stale entry. This happened because the Roblox binary format omits
default-valued properties, so they're absent from the deserialized
instance. filter_properties correctly excludes them, but
project_node_property_syncback only inserted/updated — never removed.

The fix adds a retain pass after the insertion loop that removes entries
from node.properties where the property is not in the filtered set AND
has a known default in rbx_reflection_database. Unknown properties are
conservatively kept.

Also updates the reserialization logic to detect when stale properties
were removed, since project_node_should_reserialize only compares
forward through current properties.

Fixes #1243
2026-04-03 16:55:17 -05:00
.cargo Use new Cargo config.toml convention 2021-07-12 13:19:36 -04:00
.github/workflows Upload plugin as part of release workflow (#1227) 2026-02-14 11:10:36 -08:00
.lune Upload plugin as part of release workflow (#1227) 2026-02-14 11:10:36 -08:00
.vscode Plugin dev ux improvements (#992) 2024-11-10 15:53:58 -08:00
assets Update default gitignores to include sourcemap (#1145) 2025-10-28 17:28:55 -07:00
benches Add plugin build flag (#735) 2023-07-17 19:15:40 -07:00
build/windows Support long file paths on Windows (past 256 limit) (#464) 2021-08-23 15:21:01 -04:00
crates Implement VFS Path normalization for improved cross-platform tree synchronization (#1201) 2026-01-19 15:04:59 -08:00
plugin Upload plugin as part of release workflow (#1227) 2026-02-14 11:10:36 -08:00
rojo-test Ensure that pruned Instances aren't treated as existing in syncback (#1179) 2025-11-29 21:21:48 -08:00
scripts Plugin dev ux improvements (#992) 2024-11-10 15:53:58 -08:00
src Fix syncback not removing stale $properties at engine defaults 2026-04-03 16:55:17 -05:00
test-projects Improves sourcemap path handling with pathdiff (#1217) 2026-02-12 19:17:28 -08:00
tests Use msgpack for API (#1176) 2026-02-12 18:37:24 -08:00
.dir-locals.el Plugin dev ux improvements (#992) 2024-11-10 15:53:58 -08:00
.editorconfig Changed file extensions of init command from lua to luau (#831) 2024-01-05 16:00:49 -08:00
.git-blame-ignore-revs Create .git-blame-ignore-revs & Add Stylua pr (#787) 2023-09-19 05:56:39 +00:00
.gitattributes Set linguist language of lua files to luau (#956) 2024-08-02 10:03:57 -07:00
.gitignore Implement VFS Path normalization for improved cross-platform tree synchronization (#1201) 2026-01-19 15:04:59 -08:00
.gitmodules Upload plugin as part of release workflow (#1227) 2026-02-14 11:10:36 -08:00
build.rs Upload plugin as part of release workflow (#1227) 2026-02-14 11:10:36 -08:00
Cargo.lock Improves sourcemap path handling with pathdiff (#1217) 2026-02-12 19:17:28 -08:00
Cargo.toml Improves sourcemap path handling with pathdiff (#1217) 2026-02-12 19:17:28 -08:00
CHANGELOG.md Fix syncback not removing stale $properties at engine defaults 2026-04-03 16:55:17 -05:00
CONTRIBUTING.md Improves sourcemap path handling with pathdiff (#1217) 2026-02-12 19:17:28 -08:00
LICENSE.txt Tweak bottom of README, move LICENSE to LICENSE.txt 2019-01-18 20:57:19 -08:00
plugin.project.json Upload plugin as part of release workflow (#1227) 2026-02-14 11:10:36 -08:00
README.md Add JSONC Support for Project, Meta, and Model JSON files (#1144) 2025-10-28 17:29:57 -07:00
rokit.toml Upload plugin as part of release workflow (#1227) 2026-02-14 11:10:36 -08:00
selene.toml Move to using Rokit, update tools, and don't install unnecessary tools (#1109) 2025-08-29 18:45:15 -07:00
testez.yml Update selene (#550) 2022-06-12 03:41:49 -04:00

Rojo
 
Actions status Latest server version Rojo Documentation

Rojo is a tool designed to enable Roblox developers to use professional-grade software engineering tools.

With Rojo, it's possible to use industry-leading tools like Visual Studio Code and Git.

Rojo is designed for power users who want to use the best tools available for building games, libraries, and plugins.

Features

Rojo enables:

  • Working on scripts and models from the filesystem, in your favorite editor
  • Versioning your game, library, or plugin using Git or another VCS
  • Streaming rbxmx and rbxm models into your game in real time
  • Packaging and deploying your project to Roblox.com from the command line

In the future, Rojo will be able to:

  • Sync instances from Roblox Studio to the filesystem
  • Automatically convert your existing game to work with Rojo
  • Import custom instances like MoonScript code

Documentation

Documentation is hosted in the rojo.space repository.

Contributing

Check out our contribution guide for detailed instructions for helping work on Rojo!

Pull requests are welcome!

Rojo supports Rust 1.88 and newer. The minimum supported version of Rust is based on the latest versions of the dependencies that Rojo has.

License

Rojo is available under the terms of the Mozilla Public License, Version 2.0. See LICENSE.txt for details.