Rojo enables Roblox developers to use professional-grade software engineering tools https://rojo.space
Find a file
Noah Peeters 1d2dc326a0 Stop losing file changes on macOS when files are deleted (AI-assisted)
Vfs::commit_event calls StdBackend::unwatch for every removed path, but only the roots passed to
watch() are watched. unwatch forwarded every path to notify anyway, and notify's FSEvents backend
handles an unwatch by tearing down and restarting its event stream; whatever changed during the
restart was never reported. Deleting files while others change (a git checkout, a branch switch)
therefore dropped events, and the served tree went stale without any error.

Only call the watcher's unwatch for paths that are actually watched. The new test deletes 100
files (calling unwatch on each, as commit_event does) while creating 100 others: before this
change macOS reported 1 of the 100 creations, now all 100.
2026-10-19 17:09:52 +02: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 Stop losing file changes on macOS when files are deleted (AI-assisted) 2026-10-19 17:09:52 +02:00
plugin Release v7.7.1 (#1330) 2026-10-01 23:10:42 -07:00
rojo-test Consistent ordering of CSV fields (#1333) 2026-10-05 18:02:34 -07:00
scripts Plugin dev ux improvements (#992) 2024-11-10 15:53:58 -08:00
src Consistent ordering of CSV fields (#1333) 2026-10-05 18:02:34 -07:00
test-projects Improves sourcemap path handling with pathdiff (#1217) 2026-02-12 19:17:28 -08:00
tests Return 400 for missing /api/serialize IDs (#1272) 2026-06-10 18:48:33 -07: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
AGENTS.md Add an AI policy and an AGENTS.md file (#1280) 2026-07-04 12:47:33 -07:00
build.rs Upload plugin as part of release workflow (#1227) 2026-02-14 11:10:36 -08:00
Cargo.lock Release v7.7.1 (#1330) 2026-10-01 23:10:42 -07:00
Cargo.toml Release v7.7.1 (#1330) 2026-10-01 23:10:42 -07:00
CHANGELOG.md Consistent ordering of CSV fields (#1333) 2026-10-05 18:02:34 -07:00
CLAUDE.md Add an AI policy and an AGENTS.md file (#1280) 2026-07-04 12:47:33 -07:00
CONTRIBUTING.md Add an AI policy and an AGENTS.md file (#1280) 2026-07-04 12:47:33 -07: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 Update stale README and contributor documentation (#1269) 2026-06-02 09:11:41 -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
  • Pulling Instances from Roblox place and model files back into an existing Rojo project with rojo syncback

Rojo also has an optional two-way sync setting in the Studio plugin for syncing supported Studio edits back to the filesystem.

Some workflows, like fully automatic conversion of every existing game into a Rojo project, are still limited and may require manual project configuration.

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.