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. |
||
|---|---|---|
| .cargo | ||
| .github/workflows | ||
| .lune | ||
| .vscode | ||
| assets | ||
| benches | ||
| build/windows | ||
| crates | ||
| plugin | ||
| rojo-test | ||
| scripts | ||
| src | ||
| test-projects | ||
| tests | ||
| .dir-locals.el | ||
| .editorconfig | ||
| .git-blame-ignore-revs | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| AGENTS.md | ||
| build.rs | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| CONTRIBUTING.md | ||
| LICENSE.txt | ||
| plugin.project.json | ||
| README.md | ||
| rokit.toml | ||
| selene.toml | ||
| testez.yml | ||
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
rbxmxandrbxmmodels 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.
