Merge remote-tracking branch 'origin/master' into rojo-open

This commit is contained in:
= 2026-10-02 11:52:50 -07:00
commit 63a370e624
10 changed files with 4431 additions and 1691 deletions

View file

@ -32,14 +32,19 @@ Making a new release? Simply add the new header with the version and date undern
## Unreleased
* Added the `rojo open` command, which serves a project and opens a place in Roblox Studio that automatically connects to it. The place can be an existing place file (`--place`), a fresh build of the project (`--output`), or a published place (`--place-id` and `--universe-id`). ([#1326])
[#1326]: https://github.com/rojo-rbx/rojo/pull/1326
## [7.7.1] (October 1st, 2026)
* Fixed `$path` values that point outside the project folder failing to match `syncRule`s on Windows, which broke `rojo sourcemap` with a "could not be turned into a Roblox Instance" error. ([#1290])
* Fixed `rojo serve` silently stopping syncing file changes on Windows when the served project path was a verbatim (`\\?\`) path, because tree paths and file-watcher event paths were canonicalized to different forms. ([#1290])
* Fixed `rojo sourcemap --absolute` emitting verbatim (`\\?\`) paths on Windows, which broke require types in luau-lsp. ([#1290])
* The plugin now disables the `Check for Updates` setting if you block access to `api.github.com`. ([#1297])
[7.7.1]: https://github.com/rojo-rbx/rojo/releases/tag/v7.7.1
[#1290]: https://github.com/rojo-rbx/rojo/pull/1290
[#1297]: https://github.com/rojo-rbx/rojo/pull/1297
[#1326]: https://github.com/rojo-rbx/rojo/pull/1326
## [7.7.0] (July 1st, 2026)
@ -60,6 +65,7 @@ Making a new release? Simply add the new header with the version and date undern
* `rojo serve` now validates the `Host`/`Origin` headers to protect the local/private server against DNS rebinding, gates `/api/open` to local clients, and warns when bound to a network-reachable address. The accepted hosts can be extended with the `--allowed-hosts` option or a project's `serveAllowedHosts` field, for example to reach a network-exposed server by hostname. ([#1270])
* Fixed syncback not removing stale `$properties` entries when Studio resets a property to its engine default. ([#1244])
[7.7.0]: https://github.com/rojo-rbx/rojo/releases/tag/v7.7.0
[#1176]: https://github.com/rojo-rbx/rojo/pull/1176
[#1179]: https://github.com/rojo-rbx/rojo/pull/1179
[#1192]: https://github.com/rojo-rbx/rojo/pull/1192

14
Cargo.lock generated
View file

@ -1806,9 +1806,9 @@ dependencies = [
[[package]]
name = "rbx_binary"
version = "3.0.0"
version = "3.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d0a6f15a595fab79d15d50799335543ac5b97618c31ad3d0c93e2713a8bf8d34"
checksum = "4f57d390e10fc236919088e9d973774bf006dcab137b443d1341a39317ebee4a"
dependencies = [
"ahash",
"log",
@ -1847,9 +1847,9 @@ dependencies = [
[[package]]
name = "rbx_reflection_database"
version = "3.0.0+roblox-728"
version = "3.0.1+roblox-741"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f5dd357c4c95d43e12283b9065b8b7b41788219db7a0f3a77a6e111f51522e6"
checksum = "74d54d92786425d3fd3e4ba8f006b17d83f5e93dad6eb4fccf6f1d9d86222a7b"
dependencies = [
"dirs 6.0.0",
"log",
@ -1875,9 +1875,9 @@ dependencies = [
[[package]]
name = "rbx_xml"
version = "3.0.0"
version = "3.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2e38c283450c4874262c61e68f70f037c9394a08b36fd59468657a4d8761e5e"
checksum = "df4dba3154bef50fe1ba41cf06a066b9cd33bcfbf1c103e8db0818d8b4528b31"
dependencies = [
"ahash",
"base64 0.13.1",
@ -2062,7 +2062,7 @@ dependencies = [
[[package]]
name = "rojo"
version = "7.7.0"
version = "7.7.1"
dependencies = [
"anyhow",
"backtrace",

View file

@ -1,6 +1,6 @@
[package]
name = "rojo"
version = "7.7.0"
version = "7.7.1"
rust-version = "1.88"
authors = [
"Lucien Greathouse <me@lpghatguy.com>",
@ -57,11 +57,11 @@ memofs = { version = "0.4.0", path = "crates/memofs" }
# rbx_reflection_database = { path = "../rbx-dom/rbx_reflection_database" }
# rbx_xml = { path = "../rbx-dom/rbx_xml" }
rbx_binary = { version = "3.0.0", features = ["unstable_text_format"] }
rbx_binary = { version = "3.0.1", features = ["unstable_text_format"] }
rbx_dom_weak = "4.2.0"
rbx_reflection = "7.0.0"
rbx_reflection_database = "3.0.0"
rbx_xml = "3.0.0"
rbx_reflection_database = "3.0.1"
rbx_xml = "3.0.1"
anyhow = "1.0.80"
backtrace = "0.3.69"

View file

@ -1 +1 @@
7.7.0
7.7.1

File diff suppressed because it is too large Load diff

View file

@ -304,7 +304,7 @@ fn find_descriptor(
return Some(descriptor);
}
current_class_name = class.superclass.as_deref()?;
current_class_name = class.superclass?;
}
}

View file

@ -481,7 +481,7 @@ fn get_property_filter(project: &Project, new_inst: &Instance) -> Option<UstrSet
}
let class = database.classes.get(current_class_name)?;
if let Some(super_class) = class.superclass.as_ref() {
if let Some(super_class) = class.superclass {
current_class_name = super_class;
} else {
break;

View file

@ -101,7 +101,7 @@ fn should_property_serialize(class_name: &str, prop_name: &str) -> bool {
}
kind => unimplemented!("unknown property kind {kind:?}"),
};
} else if let Some(super_class) = class_data.superclass.as_ref() {
} else if let Some(super_class) = class_data.superclass {
current_class_name = super_class;
} else {
break;

View file

@ -8,10 +8,8 @@ use rbx_dom_weak::{
ustr, Instance, Ustr, WeakDom,
};
use crate::{
multimap::MultiMap, syncback::snapshot::inst_path, REF_ID_ATTRIBUTE_NAME,
REF_POINTER_ATTRIBUTE_PREFIX,
};
use crate::syncback::snapshot::inst_path;
use crate::{multimap::MultiMap, REF_ID_ATTRIBUTE_NAME, REF_POINTER_ATTRIBUTE_PREFIX};
pub struct RefLinks {
/// A map of referents to each of their Ref properties.

View file

@ -222,19 +222,7 @@ pub fn filter_out_property(inst: &Instance, prop_name: &str) -> bool {
}
pub fn inst_path(dom: &WeakDom, referent: Ref) -> String {
let mut path = Vec::new();
let mut inst = dom.get_by_ref(referent);
while let Some(instance) = inst {
path.push(instance.name.as_str());
inst = dom.get_by_ref(instance.parent());
}
// This is to avoid the root's name from appearing in the path. Not
// optimal, but should be fine.
path.pop();
path.reverse();
path.join("/")
dom.full_path_of(referent, "/")
}
#[cfg(test)]