From a98808b7389e32220839606e9895cb07dc3abd75 Mon Sep 17 00:00:00 2001 From: meh Date: Mon, 31 Aug 2026 20:21:59 +0700 Subject: [PATCH 1/2] build: take the engine at 0.4 and tauri-runtime-blitz at 0.3.2 ps-blitz published 0.4.0 (PR #79: selectable user agent, the display:contents hoist panic, the @import cross-thread panic). None of it could reach this repository, because a prerelease requirement only matches its own prerelease line: ^0.3.0-beta.6 accepts 0.3.0-beta.* and nothing else, not 0.3.6 and not 0.4.0. That is also why scripts/local-engine.sh appeared to do nothing. Cargo reported 'patch ... was not used in the crate graph' and carried on with the registry copy, so an edit to a local engine checkout changed no behaviour and read as a broken patch table rather than an unsatisfiable pin. tauri-runtime-blitz moves with it. ^0.1.0 does not build on rustc 1.97.1 (unstable str_as_str) and only survived here because a cached artifact existed in target/; a cargo clean would have stranded the repository. 0.3.2 is the release that takes ps-blitz ^0.4, so both sides of the cascade agree and cargo unifies the engine instead of putting two copies in the graph. --- Cargo.toml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 983bf78..571b95c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,14 +32,14 @@ homepage = "https://github.com/pathscale/chuzz" # the same crate rather than a second copy. To build against a working checkout, # see `scripts/local-engine.sh`; it is opt-in so the default exercises what a # release actually resolves. -blitz-dom = { package = "ps-blitz-dom", version = "^0.3.0-beta.6" } -blitz-html = { package = "ps-blitz-html", version = "^0.3.0-beta.6" } -blitz-net = { package = "ps-blitz-net", version = "^0.3.0-beta.6" } -blitz-script = { package = "ps-blitz-script", version = "^0.3.0-beta.6" } -blitz-traits = { package = "ps-blitz-traits", version = "^0.3.0-beta.6" } +blitz-dom = { package = "ps-blitz-dom", version = "^0.4" } +blitz-html = { package = "ps-blitz-html", version = "^0.4" } +blitz-net = { package = "ps-blitz-net", version = "^0.4" } +blitz-script = { package = "ps-blitz-script", version = "^0.4" } +blitz-traits = { package = "ps-blitz-traits", version = "^0.4" } # The wasmi host binding over blitz-dom-api, so a WebAssembly guest can build a # document with no JavaScript and no URL in the path. -blitz-wasm = { package = "ps-blitz-wasm", version = "^0.3.0-beta.6" } +blitz-wasm = { package = "ps-blitz-wasm", version = "^0.4" } dioxus-native = { package = "ps-dioxus-native", version = "^0.7.2", default-features = false } # The MCP framing the control server speaks, same source and feature as # tauri-runtime-blitz uses for its agent-control surface. @@ -76,7 +76,7 @@ anyrender = { package = "ps-anyrender", version = "^0.13.0" } # revision below closes the stack, snapshots, and reopens it, so glass renders # in the CPU paths as well as on the GPU. anyrender_vello_cpu = { package = "ps-anyrender-vello-cpu", version = "^0.17.0", features = ["filters"] } -blitz-paint = { package = "ps-blitz-paint", version = "^0.3.0-beta.6" } +blitz-paint = { package = "ps-blitz-paint", version = "^0.4" } png = "=0.18.1" # Naming `wasmi::Linker` is unavoidable: `blitz_wasm::add_to_linker` takes one, # and blitz-wasm does not re-export the runtime. This must stay on the same @@ -106,7 +106,7 @@ tauri = { version = "^2.11.5", default-features = false } # explaining. A window that would not paint could not be photographed by the # one thing that could photograph it, because the capability had been optimised # out of the binary that needed it. -tauri-runtime-blitz = { version = "^0.1.0", features = ["diagnostics"] } +tauri-runtime-blitz = { version = "^0.3.2", features = ["diagnostics"] } [profile.release] lto = "thin" From 19e33c82e1b3b069d9b78201e03ae38e08fb22fc Mon Sep 17 00:00:00 2001 From: meh Date: Mon, 31 Aug 2026 20:22:08 +0700 Subject: [PATCH 2/2] build: take endpoint-libs 3, the version the control surface now speaks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit tauri-runtime-blitz 0.3.2 reaches endpoint-libs through blitz-control-protocol 0.4, which requires ^3. This workspace asked for ^2.1.5, so the graph carried both 2.1.5 and 3.0.0 — two crates exporting the same MCP framing types, which is the same shape of fault as two engines and fails the same way once a value crosses between them. The manifest already said these should be the same source and feature as tauri-runtime-blitz uses for its agent-control surface. This makes that true rather than aspirational. WireMessage::Text carries Utf8Bytes rather than String in 3.0, so the three send sites convert. Nothing else in chuzz-control moved: the receive sides read through Deref and needed no change. --- Cargo.lock | 146 ++++++++++++++--------------- Cargo.toml | 2 +- crates/chuzz-control/src/client.rs | 2 +- crates/chuzz-control/src/server.rs | 11 ++- 4 files changed, 82 insertions(+), 79 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ce99e29..f661922 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -426,11 +426,12 @@ checksum = "6099cdc01846bc367c4e7dd630dc5966dccf36b652fae7a74e17b640411a91b2" [[package]] name = "blitz-control-protocol" -version = "0.1.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eca443ea23955ca693e482cb00f2051b47c6ca18aad324340aff8c6127eacff" +checksum = "684fe7da867ea3cc91f433d0c768a06726d47718242ca0b59555c5fcbcaae6f6" dependencies = [ "endpoint-libs", + "schemars 1.2.2", "serde", "serde_json", ] @@ -1666,8 +1667,6 @@ dependencies = [ [[package]] name = "dom-abi" version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b56cecd6b08e26fa2df2616cfbffd767107c063459b73bddaa3d67344a634e99" dependencies = [ "serde", ] @@ -1813,9 +1812,9 @@ dependencies = [ [[package]] name = "endpoint-libs" -version = "2.1.5" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5608ed7999ec93039de772a217bfa8c52175b42b41de1d2c1a73e7189ef92cb7" +checksum = "64708d7972a5c06112029ef04599061238abc55ba5e879a0e02dfc373d24df34" dependencies = [ "async-trait", "bytes", @@ -2807,9 +2806,9 @@ dependencies = [ [[package]] name = "http-cache" -version = "1.0.0-alpha.6" +version = "1.0.0-alpha.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d01e0b5d3afe17eadd68dad863adc0715b7ccfa887effbb9ea4de3c7c78c6c44" +checksum = "e5578f9c6c2ad8403802d209d1ffe8a2a15d3f89bfaabca9deaa977947dba241" dependencies = [ "bytes", "cacache", @@ -2829,9 +2828,9 @@ dependencies = [ [[package]] name = "http-cache-reqwest" -version = "1.0.0-alpha.6" +version = "1.0.0-alpha.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff1fa00fd5b0d38c26d5f24f1cf513e286a988b57880c2bf357304669268fa3" +checksum = "0fa15c101fcef1df74dc306d2943bbafb4c654b83449432e130eb8bdd3b39b05" dependencies = [ "anyhow", "async-trait", @@ -4889,8 +4888,6 @@ dependencies = [ [[package]] name = "ps-accesskit-xplat" version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e040e752d1d2d0cff2dc5cd15b17f8c94f68111fd0f7729636117f0aa220097" dependencies = [ "accesskit", "accesskit_macos", @@ -4982,9 +4979,9 @@ dependencies = [ [[package]] name = "ps-blitz-debug-control" -version = "0.3.0-beta.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb949b76f8ab3e9e8b64be0b052ee6e6b816159db8a758ae0cb72e314e3e42f" +checksum = "180b8153fc1464879b39f39caaad0eb49360eb694a5e1be6db25c7898fb32e73" dependencies = [ "getrandom 0.4.3", "serde", @@ -4993,9 +4990,7 @@ dependencies = [ [[package]] name = "ps-blitz-dom" -version = "0.3.0-beta.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e6b8ff7695ee4136693ad9d8e481eb6d7c32a79d8198dec8206968908453b9" +version = "0.4.0" dependencies = [ "accesskit", "app_units", @@ -5026,6 +5021,7 @@ dependencies = [ "skrifa 0.42.1", "slotmap", "smallvec", + "string_cache", "stylo", "stylo_dom", "stylo_static_prefs", @@ -5039,9 +5035,7 @@ dependencies = [ [[package]] name = "ps-blitz-dom-api" -version = "0.3.0-beta.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62e5b9fac50a9f1ac5cb11922bf87d2159b2a92b24bd924ab68e4a43d09214c4" +version = "0.4.0" dependencies = [ "markup5ever 0.39.0", "ps-blitz-dom", @@ -5049,9 +5043,7 @@ dependencies = [ [[package]] name = "ps-blitz-html" -version = "0.3.0-beta.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fe6d14c36a54614166ebf9177fa92148070fd0af22b1b1fddc7e6b0680ed0d5" +version = "0.4.0" dependencies = [ "html5ever 0.39.0", "ps-blitz-dom", @@ -5061,9 +5053,7 @@ dependencies = [ [[package]] name = "ps-blitz-net" -version = "0.3.0-beta.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f938d2bf87ad93200369181c690b92ca130f2edaa7fd842d77666c45af6c984" +version = "0.4.0" dependencies = [ "data-url", "directories", @@ -5078,9 +5068,7 @@ dependencies = [ [[package]] name = "ps-blitz-paint" -version = "0.3.0-beta.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42789f0e3d07922879392bf42b67e93695e90cbbcbd8f6197df3c72dd236bb47" +version = "0.4.0" dependencies = [ "color", "euclid", @@ -5099,18 +5087,14 @@ dependencies = [ [[package]] name = "ps-blitz-platform-api" -version = "0.3.0-beta.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d68d4ab916b39df9ab0294d6ac012a059200fb7ab20b0c8415785a367466701" +version = "0.4.0" dependencies = [ "ps-blitz-traits", ] [[package]] name = "ps-blitz-script" -version = "0.3.0-beta.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "103a6b9a8a2d2accee025e54f487a731d16ff4a89c479ef2c2824ef9225f375d" +version = "0.4.0" dependencies = [ "base64 0.22.1", "data-url", @@ -5136,9 +5120,7 @@ dependencies = [ [[package]] name = "ps-blitz-shell" -version = "0.3.0-beta.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08cbcc7c7a28123331620135cda504834c808d089caccc33ef8b5553958a5169" +version = "0.4.0" dependencies = [ "accesskit", "android-activity", @@ -5160,9 +5142,7 @@ dependencies = [ [[package]] name = "ps-blitz-traits" -version = "0.3.0-beta.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "543d757eec9cc725056b3bcb1f06ad1adedc9600392a25fed593701766eda60e" +version = "0.4.0" dependencies = [ "atomic_refcell", "bitflags 2.13.1", @@ -5177,9 +5157,7 @@ dependencies = [ [[package]] name = "ps-blitz-wasm" -version = "0.3.0-beta.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad1fc81467192323d0e58abe5db905c9d5c5f1d0ded811194714df44df6158ce" +version = "0.4.0" dependencies = [ "dom-abi", "ps-blitz-dom", @@ -5191,9 +5169,9 @@ dependencies = [ [[package]] name = "ps-boa-ast" -version = "1.0.0-dev" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76e1f505a952e293994286e9cc04686304bd0d5e633a0941bb0d1292ca4b10ba" +checksum = "fff890b125d485fd8c6642326eba3a091d3e394ef85c09ec1e5c31a964e5a9b9" dependencies = [ "bitflags 2.13.1", "indexmap 2.14.0", @@ -5207,9 +5185,9 @@ dependencies = [ [[package]] name = "ps-boa-engine" -version = "1.0.0-dev" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fa07fb527f2aff71c04ae73b60f89206e4d463b98b4c5e992c4f0bb57d0fd9" +checksum = "eb923dd84a7416dfa4a64300c3b9fc9a359a0634cf9ea9abcccc8c9b451b8422" dependencies = [ "aligned-vec", "arrayvec", @@ -5264,9 +5242,9 @@ dependencies = [ [[package]] name = "ps-boa-gc" -version = "1.0.0-dev" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3edc6420a0e4d3291239b9245cedaa98c0e64061d56def25310669ffd0420cd9" +checksum = "10c3da79aebdc7a14d51cb952170a2c54433895396aa7513fcffd85faf6791e3" dependencies = [ "arrayvec", "either", @@ -5278,9 +5256,9 @@ dependencies = [ [[package]] name = "ps-boa-interner" -version = "1.0.0-dev" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7592c28751f6c1f4baaf86c929755f5572323fc13c5ff66bccc9d02d7b256a48" +checksum = "140643a4462cca2bfb482305677a5f8d9e653297821f29b5cea66561de494236" dependencies = [ "hashbrown 0.17.1", "indexmap 2.14.0", @@ -5294,9 +5272,9 @@ dependencies = [ [[package]] name = "ps-boa-macros" -version = "1.0.0-dev" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291bead1f7cf7da4c8075223c59b7a3a704e21080d2bcd59f4bf64dcfb160271" +checksum = "5a7382e6e15a55421a322777a792cd4e6ab8cfc57b8871e9fdce6f0fd984207f" dependencies = [ "cfg-if", "cow-utils", @@ -5308,9 +5286,9 @@ dependencies = [ [[package]] name = "ps-boa-parser" -version = "1.0.0-dev" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e088d99f155ea5c0e174dae08ea7b267b836a1ef4eb45ee6b35886e006dfb26" +checksum = "eda0a3a1db82643c5f05228fc456006f81fc694b00e03b5ee9fd70633775bf0a" dependencies = [ "bitflags 2.13.1", "fast-float2", @@ -5326,9 +5304,9 @@ dependencies = [ [[package]] name = "ps-boa-runtime" -version = "1.0.0-dev" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c34f30373d8a260680d02ab3dd1b49be8e4b1701bab4b8c778dfd72efb1c9029" +checksum = "277b5c9913178c55c5e4c937337f26fa4d698bb6a77d16506a5113cf2e10f063" dependencies = [ "base64 0.22.1", "bytemuck", @@ -5346,9 +5324,9 @@ dependencies = [ [[package]] name = "ps-boa-string" -version = "1.0.0-dev" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233851129c85083e0a66d9d216cf54e9ffefa9fb0623d9adf6c72380bbce80d5" +checksum = "5e50d2653fadf918f8d32305ca6959220326179292a2c07b66a9357562ff4e2e" dependencies = [ "fast-float2", "itoa", @@ -5360,15 +5338,11 @@ dependencies = [ [[package]] name = "ps-debug-timer" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2387c1a4325992b45f525d6e940321efef1589962806eef948ad5660388d33d" +version = "0.1.4" [[package]] name = "ps-dioxus-native" version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7f282bf9c9820c51a79f0515aa3f752ec5194cd4a17636cee2ee3b7dee15c1" dependencies = [ "android-activity", "cfg-if", @@ -5407,8 +5381,6 @@ dependencies = [ [[package]] name = "ps-dioxus-native-dom" version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f97e6867ed11666ea134a9d844cc21ef0e2087e54f9bb6bfec3e4def0ab54996" dependencies = [ "dioxus-core", "dioxus-html", @@ -5437,9 +5409,7 @@ dependencies = [ [[package]] name = "ps-stylo-taffy" -version = "0.3.0-beta.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "195da035081c62b72c2ff8da00edeb785186a438d04c8724b63ba2dd20857eee" +version = "0.4.0" dependencies = [ "ps-taffy", "stylo", @@ -6113,7 +6083,7 @@ checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" dependencies = [ "dyn-clone", "indexmap 1.9.3", - "schemars_derive", + "schemars_derive 0.8.22", "serde", "serde_json", "url", @@ -6140,6 +6110,7 @@ checksum = "687274d293b6cdc6e73e0fee520bf2049650090d7164f87672d212a3c530cf4a" dependencies = [ "dyn-clone", "ref-cast", + "schemars_derive 1.2.2", "serde", "serde_json", ] @@ -6152,10 +6123,22 @@ checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" dependencies = [ "proc-macro2", "quote", - "serde_derive_internals", + "serde_derive_internals 0.29.1", "syn 2.0.119", ] +[[package]] +name = "schemars_derive" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d98c67716b46af2f0b8cf752abc930f6f9aecfbf671ecfb531db8a31dbe4e2ba" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals 0.30.0", + "syn 3.0.3", +] + [[package]] name = "scoped-tls" version = "1.0.1" @@ -6322,6 +6305,17 @@ dependencies = [ "syn 2.0.119", ] +[[package]] +name = "serde_derive_internals" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f852137cce035d6a4df67ccce505ff6b3e9fd3a10e3e52b24dc71e650bb1a9bd" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.3", +] + [[package]] name = "serde_json" version = "1.0.151" @@ -7199,21 +7193,23 @@ dependencies = [ [[package]] name = "tauri-runtime-blitz" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9faa026183d612fbd9fd0a869ab91932a41226158b4786274ca216c60ab805ad" +version = "0.3.2" dependencies = [ + "base64 0.22.1", "blitz-control-protocol", "endpoint-libs", "http", "keyboard-types 0.7.0", + "libc", "objc2 0.6.4", "objc2-app-kit 0.3.2", "objc2-foundation 0.3.2", "peniko", "ps-anyrender", "ps-anyrender-vello", + "ps-anyrender-vello-cpu", "ps-blitz-dom", + "ps-blitz-paint", "ps-blitz-script", "ps-blitz-shell", "ps-blitz-traits", diff --git a/Cargo.toml b/Cargo.toml index 571b95c..cbd403b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -43,7 +43,7 @@ blitz-wasm = { package = "ps-blitz-wasm", version = "^0.4" } dioxus-native = { package = "ps-dioxus-native", version = "^0.7.2", default-features = false } # The MCP framing the control server speaks, same source and feature as # tauri-runtime-blitz uses for its agent-control surface. -endpoint-libs = { version = "^2.1.5", default-features = false, features = ["agent-control"] } +endpoint-libs = { version = "^3", default-features = false, features = ["agent-control"] } brotli = { version = "8", default-features = false, features = ["std"] } image = { version = "^0.25.6", default-features = false } # Headless capture: renders a page to a buffer with the CPU rasteriser, so the diff --git a/crates/chuzz-control/src/client.rs b/crates/chuzz-control/src/client.rs index c8db406..af4bdfc 100644 --- a/crates/chuzz-control/src/client.rs +++ b/crates/chuzz-control/src/client.rs @@ -109,7 +109,7 @@ impl Client { "params": {"name": AGENT_CONTROL_TOOL, "arguments": request}, }); self.stream - .send(WireMessage::Text(serde_json::to_string(&envelope)?)) + .send(WireMessage::Text(serde_json::to_string(&envelope)?.into())) .await .map_err(|error| format!("could not send: {error}"))?; diff --git a/crates/chuzz-control/src/server.rs b/crates/chuzz-control/src/server.rs index f4171bd..da72103 100644 --- a/crates/chuzz-control/src/server.rs +++ b/crates/chuzz-control/src/server.rs @@ -185,7 +185,11 @@ async fn handle_connection(stream: UnixStream, bridge: ControlBridge) { error.to_string().replace('"', "'") ) }); - if stream.send(WireMessage::Text(encoded)).await.is_err() { + if stream + .send(WireMessage::Text(encoded.into())) + .await + .is_err() + { break; } } @@ -245,7 +249,10 @@ mod tests { include_attrs: crate::AttrScope::None, }) .unwrap(); - client.send(WireMessage::Text(request)).await.unwrap(); + client + .send(WireMessage::Text(request.into())) + .await + .unwrap(); let WireMessage::Text(reply) = client.recv().await.unwrap().unwrap() else { panic!("expected a text reply"); };