From b2ce199a37a3ca787b873efe1ef56add8c055d9c Mon Sep 17 00:00:00 2001 From: Joe Date: Sun, 1 Feb 2026 10:24:47 -0600 Subject: [PATCH] Update dependencies and improve build script - Updated `embed-resource` version in `Cargo.toml` and `Cargo.lock` to 3.0.6 for enhanced functionality. - Upgraded several dependencies including `dirs`, `dirs-sys`, `float-cmp`, and `hashbrown` to their latest versions for better performance and security. - Modified the build script to handle resource compilation more gracefully by using `embed_resource::NONE`. --- Cargo.lock | 170 ++++++++++-------- Cargo.toml | 12 +- build.rs | 2 +- .../Components/PatchVisualizer/DomLabel.lua | 63 ++++--- plugin/src/App/StatusPages/Confirming.lua | 6 +- plugin/src/App/StatusPages/NotConnected.lua | 6 +- rbx-dom | 2 +- src/web/api.rs | 10 ++ 8 files changed, 149 insertions(+), 122 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f06aacf1..e3511197 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -735,11 +735,11 @@ dependencies = [ [[package]] name = "dirs" -version = "5.0.1" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" dependencies = [ - "dirs-sys 0.4.1", + "dirs-sys 0.5.0", ] [[package]] @@ -755,14 +755,14 @@ dependencies = [ [[package]] name = "dirs-sys" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" dependencies = [ "libc", "option-ext", - "redox_users 0.4.6", - "windows-sys 0.48.0", + "redox_users 0.5.2", + "windows-sys 0.61.2", ] [[package]] @@ -790,15 +790,16 @@ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "embed-resource" -version = "1.8.0" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e62abb876c07e4754fae5c14cafa77937841f01740637e17d78dc04352f32a5e" +checksum = "55a075fc573c64510038d7ee9abc7990635863992f83ebc52c8b433b8411a02e" dependencies = [ "cc", + "memchr", "rustc_version 0.4.1", - "toml 0.5.11", + "toml", "vswhom", - "winreg 0.10.1", + "winreg 0.55.0", ] [[package]] @@ -903,9 +904,9 @@ dependencies = [ [[package]] name = "float-cmp" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" +checksum = "b09cf3155332e944990140d967ff5eceb70df778b34f77d8075db46e4704e6d8" dependencies = [ "num-traits", ] @@ -918,9 +919,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "form_urlencoded" @@ -1186,26 +1187,20 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash", ] -[[package]] -name = "hashbrown" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" - [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "ea0b22561a9c04a7cb1a302c013e0259cd3b4bb619f145b32f72b8b4bcbed230" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", ] [[package]] @@ -1568,9 +1563,9 @@ dependencies = [ [[package]] name = "jod-thread" -version = "0.1.2" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b23360e99b8717f20aaa4598f5a6541efbe30630039fbc7706cf954a87947ae" +checksum = "a037eddb7d28de1d0fc42411f501b53b75838d313908078d6698d064f3029b24" [[package]] name = "js-sys" @@ -1800,6 +1795,15 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "normpath" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf23ab2b905654b4cb177e30b629937b3868311d4e1cba859f899c041046e69b" +dependencies = [ + "windows-sys 0.61.2", +] + [[package]] name = "notify" version = "4.0.18" @@ -1881,12 +1885,13 @@ checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" [[package]] name = "opener" -version = "0.5.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "293c15678e37254c15bd2f092314abb4e51d7fdde05c2021279c12631b54f005" +checksum = "a2fa337e0cf13357c13ef1dc108df1333eb192f75fc170bea03fcf1fd404c2ee" dependencies = [ "bstr", - "winapi 0.3.9", + "normpath", + "windows-sys 0.61.2", ] [[package]] @@ -2268,14 +2273,14 @@ version = "6.1.0" dependencies = [ "rbx_types", "serde", - "thiserror 1.0.69", + "thiserror 2.0.18", ] [[package]] name = "rbx_reflection_database" version = "2.0.2+roblox-700" dependencies = [ - "dirs 5.0.1", + "dirs 6.0.0", "log", "rbx_reflection", "rmp-serde", @@ -2360,6 +2365,17 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "redox_users" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +dependencies = [ + "getrandom 0.2.17", + "libredox", + "thiserror 2.0.18", +] + [[package]] name = "regex" version = "1.12.2" @@ -2557,7 +2573,7 @@ dependencies = [ "termcolor", "thiserror 2.0.18", "tokio", - "toml 0.8.23", + "toml", "uuid", "walkdir", "winreg 0.10.1", @@ -2781,11 +2797,11 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.9" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -3306,53 +3322,42 @@ dependencies = [ [[package]] name = "toml" -version = "0.5.11" +version = "0.9.11+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - -[[package]] -name = "toml" -version = "0.8.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit", -] - -[[package]] -name = "toml_datetime" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_edit" -version = "0.22.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +checksum = "f3afc9a848309fe1aaffaed6e1546a7a14de1f935dc9d89d32afd9a44bab7c46" dependencies = [ "indexmap 2.13.0", - "serde", + "serde_core", "serde_spanned", "toml_datetime", - "toml_write", + "toml_parser", + "toml_writer", "winnow", ] [[package]] -name = "toml_write" -version = "0.1.2" +name = "toml_datetime" +version = "0.7.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_parser" +version = "1.0.6+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" +dependencies = [ + "winnow", +] + +[[package]] +name = "toml_writer" +version = "1.0.6+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" [[package]] name = "tower-service" @@ -3999,9 +4004,6 @@ name = "winnow" version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" -dependencies = [ - "memchr", -] [[package]] name = "winreg" @@ -4031,6 +4033,16 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "winreg" +version = "0.55.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" +dependencies = [ + "cfg-if 1.0.4", + "windows-sys 0.59.0", +] + [[package]] name = "wit-bindgen" version = "0.51.0" @@ -4070,9 +4082,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" dependencies = [ "arraydeque", "encoding_rs", diff --git a/Cargo.toml b/Cargo.toml index 7339b9b4..5545dd88 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -67,10 +67,10 @@ globset = "0.4.18" humantime = "2.3.0" hyper = { version = "0.14.32", features = ["server", "tcp", "http1"] } hyper-tungstenite = "0.11.1" -jod-thread = "0.1.2" +jod-thread = "1.0.0" log = "0.4.29" num_cpus = "1.17.0" -opener = "0.5.2" +opener = "0.8.4" rayon = "1.11.0" rbx_cookie = "0.1.5" reqwest = { version = "0.11.27", default-features = false, features = [ @@ -88,18 +88,18 @@ serde = { version = "1.0.228", features = ["derive", "rc"] } serde_json = "1.0.149" json5 = "1.3.0" strum = { version = "0.27", features = ["derive"] } -toml = "0.8" +toml = "0.9" termcolor = "1.4.1" thiserror = "2" tokio = { version = "1.49.0", features = ["rt", "rt-multi-thread", "macros"] } uuid = { version = "1.20.0", features = ["v4", "serde"] } clap = { version = "4", features = ["derive"] } profiling = "1.0.17" -yaml-rust2 = "0.10.4" +yaml-rust2 = "0.11.0" data-encoding = "2.10.0" blake3 = "1.8.3" -float-cmp = "0.9.0" +float-cmp = "0.10.0" indexmap = { version = "2.13.0", features = ["serde"] } rmp-serde = "1.3.1" serde_bytes = "0.11.19" @@ -110,7 +110,7 @@ winreg = "0.10.1" [build-dependencies] memofs = { version = "0.3.0", path = "crates/memofs" } -embed-resource = "1.8.0" +embed-resource = "3.0.6" anyhow = "1.0.100" bincode = "1.3.3" fs-err = "3" diff --git a/build.rs b/build.rs index b5384c72..21d96e69 100644 --- a/build.rs +++ b/build.rs @@ -107,7 +107,7 @@ fn main() -> Result<(), anyhow::Error> { println!("cargo:rerun-if-changed=build/windows/rojo-manifest.rc"); println!("cargo:rerun-if-changed=build/windows/rojo.manifest"); - embed_resource::compile("build/windows/rojo-manifest.rc"); + let _ = embed_resource::compile("build/windows/rojo-manifest.rc", embed_resource::NONE); Ok(()) } diff --git a/plugin/src/App/Components/PatchVisualizer/DomLabel.lua b/plugin/src/App/Components/PatchVisualizer/DomLabel.lua index f6a54403..ca875a32 100644 --- a/plugin/src/App/Components/PatchVisualizer/DomLabel.lua +++ b/plugin/src/App/Components/PatchVisualizer/DomLabel.lua @@ -68,21 +68,17 @@ function SelectionOption:render() local isParentOnly = props.isParentOnly local hasChildren = props.hasChildren - -- Determine if we should show the caret: - -- - Parent-only nodes: always show caret (they only do subtree operations) - -- - Normal nodes with children: show caret when already selected AND hovering - local showCaret = if isParentOnly then true elseif hasChildren and isSelected and isHovered then true else false - local bgColor = if isSelected then (if props.optionType == "push" - then Color3.fromHex("27AE60") + then Color3.fromHex("335FFF") elseif props.optionType == "pull" then Color3.fromHex("E74C3C") else Color3.fromHex("7F8C8D")) else theme.BorderedContainer.BackgroundColor local textColor = if isSelected then Color3.new(1, 1, 1) else theme.TextColor - local displayText = if showCaret then props.text .. " ▼" else props.text - local buttonWidth = if showCaret then 48 else 36 + local displayText = props.text + -- Use wider button for "Studio" text (6 chars vs 4 for others) + local buttonWidth = if props.text == "Studio" then 44 else 36 -- Transparency logic: -- - Parent-only nodes: more transparent when not hovered, less so when hovering button @@ -376,9 +372,8 @@ function DomLabel:render() PaddingLeft = UDim.new(0, 10), PaddingRight = UDim.new(0, 10), }), - Button = e("TextButton", { + Button = e("Frame", { BackgroundTransparency = 1, - Text = "", Size = UDim2.new(1, 0, 1, 0), [Roact.Event.MouseEnter] = function() self:setState({ isHovered = true }) @@ -386,30 +381,40 @@ function DomLabel:render() [Roact.Event.MouseLeave] = function() self:setState({ isHovered = false }) end, - [Roact.Event.Activated] = function(_rbx: Instance, _input: InputObject, clickCount: number) - if clickCount == 1 then + [Roact.Event.InputBegan] = function(_rbx: Instance, input: InputObject) + if input.UserInputType ~= Enum.UserInputType.MouseButton1 then + return + end + + -- Check for double click + local now = os.clock() + local lastClickTime = self.lastClickTime or 0 + self.lastClickTime = now + + if now - lastClickTime < 0.3 then -- Double click opens the instance in explorer - self.lastDoubleClickTime = os.clock() + self.lastDoubleClickTime = now if props.instance then SelectionService:Set({ props.instance }) end - elseif clickCount == 0 then - -- Single click expands the changes - task.wait(0.25) - if os.clock() - (self.lastDoubleClickTime or 0) <= 0.25 then - -- This is a double click, so don't expand - return - end + else + -- Single click expands the changes (after a delay to check for double click) + task.delay(0.3, function() + if os.clock() - (self.lastDoubleClickTime or 0) <= 0.35 then + -- This was a double click, so don't expand + return + end - if props.changeList then - self.expanded = not self.expanded - local goalHeight = 24 - + (if self.expanded then math.clamp(#props.changeList * 24, 24, 24 * 6) else 0) - self.motor:setGoal(Flipper.Spring.new(goalHeight, { - frequency = 5, - dampingRatio = 1, - })) - end + if props.changeList then + self.expanded = not self.expanded + local goalHeight = 24 + + (if self.expanded then math.clamp(#props.changeList * 24, 24, 24 * 6) else 0) + self.motor:setGoal(Flipper.Spring.new(goalHeight, { + frequency = 5, + dampingRatio = 1, + })) + end + end) end end, }), diff --git a/plugin/src/App/StatusPages/Confirming.lua b/plugin/src/App/StatusPages/Confirming.lua index 2f9d05a2..ea87f6de 100644 --- a/plugin/src/App/StatusPages/Confirming.lua +++ b/plugin/src/App/StatusPages/Confirming.lua @@ -173,9 +173,9 @@ function ConfirmingPage:render() }) else nil, - Accept = e(TextButton, { - text = if hasChanges then "Accept" else "OK", - style = if hasChanges then "Primary" else "Success", + Accept = e(TextButton, { + text = if hasChanges then "Accept" else "OK", + style = "Primary", transparency = self.props.transparency, layoutOrder = 2, onClick = function() diff --git a/plugin/src/App/StatusPages/NotConnected.lua b/plugin/src/App/StatusPages/NotConnected.lua index 28eade2c..74fcfaa4 100644 --- a/plugin/src/App/StatusPages/NotConnected.lua +++ b/plugin/src/App/StatusPages/NotConnected.lua @@ -124,9 +124,9 @@ function NotConnectedPage:render() }), }), - Connect = e(TextButton, { - text = "Sync", - style = "Solid", + Connect = e(TextButton, { + text = "Sync", + style = "Primary", transparency = self.props.transparency, layoutOrder = 2, onClick = self.props.onConnect, diff --git a/rbx-dom b/rbx-dom index 44bf8aeb..419046c5 160000 --- a/rbx-dom +++ b/rbx-dom @@ -1 +1 @@ -Subproject commit 44bf8aeb0c754a304917a622baaf028f5065bb6e +Subproject commit 419046c50ca45a27749a2cf6c1bc465fa845b19c diff --git a/src/web/api.rs b/src/web/api.rs index 09df7570..399abd11 100644 --- a/src/web/api.rs +++ b/src/web/api.rs @@ -1476,6 +1476,16 @@ impl ApiService { StatusCode::INTERNAL_SERVER_ERROR, ) } + _ => { + return msgpack( + ErrorResponse::internal_error(format!( + "Failed to open {}: {}", + script_path.display(), + error + )), + StatusCode::INTERNAL_SERVER_ERROR, + ) + } }, };