@ondeinference / ed / commits / 73873f2

Pin workspace uniffi to 0.31.0 to match onde's metadata format

The onde crate (v1.2.5) pins uniffi =0.31.0, so building ed-agent-ffi with uniffi 0.32.1 compiled two uniffi versions into the staticlib. The 0.32.1 bindgen then failed to extract 0.31.0-format metadata from onde's object files ("Invalid string data / invalid utf-8 sequence" on _UNIFFI_META_ONDE_CONSTRUCTOR_ONDECHATENGINE_NEW), breaking the Swift XCFramework build in CI. Align the workspace dep, the uniffi-bindgen CLI, and drop the unused uniffi build-dependency from ed-agent-ffi (build.rs only needs cc). Verified locally: staticlib builds with cargo +stable and uniffi-bindgen 0.31.0 generates the Swift bindings cleanly. Co-Authored-By: siGit Code <noreply@sigit.si>

Seto Elkahfi committed Sep 13, 2026 at 11:51 UTC 73873f23e671a6d84ac0d817a91e71cfa91cb2ba
4 files changed +48 -264
Cargo.lock
+43 -261
@@ -151,7 +151,7 @@ version = "1.1.5"
151 source = "registry+https://github.com/rust-lang/crates.io-index"
152 checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
153 dependencies = [
154 - "windows-sys 0.61.2",
154 + "windows-sys 0.60.2",
155 ]
156
157 [[package]]
@@ -162,7 +162,7 @@ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
162 dependencies = [
163 "anstyle",
164 "once_cell_polyfill",
165 - "windows-sys 0.61.2",
165 + "windows-sys 0.60.2",
166 ]
167
168 [[package]]
@@ -236,20 +236,7 @@ version = "0.14.0"
236 source = "registry+https://github.com/rust-lang/crates.io-index"
237 checksum = "f75363874b771be265f4ffe307ca705ef6f3baa19011c149da8674a87f1b75c4"
238 dependencies = [
239 - "askama_derive 0.14.0",
240 - "itoa",
241 - "percent-encoding",
242 - "serde",
243 - "serde_json",
244 -]
245 -
246 -[[package]]
247 -name = "askama"
248 -version = "0.16.1"
249 -source = "registry+https://github.com/rust-lang/crates.io-index"
250 -checksum = "6024d73179f43f15ccd2b881bfea6fee7f3a46ec53f33b52210dea749ebebaa4"
251 -dependencies = [
252 - "askama_macros",
239 + "askama_derive",
240 "itoa",
241 "percent-encoding",
242 "serde",
@@ -262,7 +249,7 @@ version = "0.14.0"
249 source = "registry+https://github.com/rust-lang/crates.io-index"
250 checksum = "129397200fe83088e8a68407a8e2b1f826cf0086b21ccdb866a722c8bcd3a94f"
251 dependencies = [
265 - "askama_parser 0.14.0",
252 + "askama_parser",
253 "basic-toml",
254 "memchr",
255 "proc-macro2",
@@ -273,33 +260,6 @@ dependencies = [
260 "syn 2.0.119",
261 ]
262
276 -[[package]]
277 -name = "askama_derive"
278 -version = "0.16.1"
279 -source = "registry+https://github.com/rust-lang/crates.io-index"
280 -checksum = "071ee5ebf2138e3ad180e0aacf6940c2cab5e6d8333741d9925c7bee2b153f39"
281 -dependencies = [
282 - "askama_parser 0.16.1",
283 - "basic-toml",
284 - "glob",
285 - "memchr",
286 - "proc-macro2",
287 - "quote",
288 - "rustc-hash 2.1.3",
289 - "serde",
290 - "serde_derive",
291 - "syn 3.0.5",
292 -]
293 -
294 -[[package]]
295 -name = "askama_macros"
296 -version = "0.16.1"
297 -source = "registry+https://github.com/rust-lang/crates.io-index"
298 -checksum = "643e1c7cbb6aec1d920332fe51a7c0d8219e273dcb8602db03f5263e4d16487b"
299 -dependencies = [
300 - "askama_derive 0.16.1",
301 -]
302 -
263 [[package]]
264 name = "askama_parser"
265 version = "0.14.0"
@@ -312,19 +272,6 @@ dependencies = [
272 "winnow 0.7.15",
273 ]
274
315 -[[package]]
316 -name = "askama_parser"
317 -version = "0.16.1"
318 -source = "registry+https://github.com/rust-lang/crates.io-index"
319 -checksum = "2c5ae75772275d268b03ab8bdccdd12117b6169ee23256942b34e46c9f476583"
320 -dependencies = [
321 - "rustc-hash 2.1.3",
322 - "serde",
323 - "serde_derive",
324 - "unicode-ident",
325 - "winnow 1.0.4",
326 -]
327 -
275 [[package]]
276 name = "async-compat"
277 version = "0.2.6"
@@ -788,16 +735,6 @@ dependencies = [
735 "serde",
736 ]
737
791 -[[package]]
792 -name = "cargo-platform"
793 -version = "0.3.3"
794 -source = "registry+https://github.com/rust-lang/crates.io-index"
795 -checksum = "dd0061da739915fae12ea00e16397555ed4371a6bb285431aab930f61b0aa4ba"
796 -dependencies = [
797 - "serde",
798 - "serde_core",
799 -]
800 -
738 [[package]]
739 name = "cargo_metadata"
740 version = "0.19.2"
@@ -805,21 +742,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
742 checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba"
743 dependencies = [
744 "camino",
808 - "cargo-platform 0.1.9",
809 - "semver",
810 - "serde",
811 - "serde_json",
812 - "thiserror 2.0.20",
813 -]
814 -
815 -[[package]]
816 -name = "cargo_metadata"
817 -version = "0.23.1"
818 -source = "registry+https://github.com/rust-lang/crates.io-index"
819 -checksum = "ef987d17b0a113becdd19d3d0022d04d7ef41f9efe4f3fb63ac44ba61df3ade9"
820 -dependencies = [
821 - "camino",
822 - "cargo-platform 0.3.3",
745 + "cargo-platform",
746 "semver",
747 "serde",
748 "serde_json",
@@ -1643,7 +1566,7 @@ dependencies = [
1566 "libc",
1567 "option-ext",
1568 "redox_users",
1646 - "windows-sys 0.61.2",
1569 + "windows-sys 0.59.0",
1570 ]
1571
1572 [[package]]
@@ -1819,7 +1742,7 @@ dependencies = [
1742 "serde_json",
1743 "smbcloud-gresiq-sdk",
1744 "thiserror 2.0.20",
1822 - "uniffi 0.32.1",
1745 + "uniffi",
1746 ]
1747
1748 [[package]]
@@ -1836,7 +1759,7 @@ dependencies = [
1759 name = "ed-uniffi-bindgen"
1760 version = "0.1.0"
1761 dependencies = [
1839 - "uniffi 0.32.1",
1762 + "uniffi",
1763 ]
1764
1765 [[package]]
@@ -1986,7 +1909,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1909 checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
1910 dependencies = [
1911 "libc",
1989 - "windows-sys 0.61.2",
1912 + "windows-sys 0.52.0",
1913 ]
1914
1915 [[package]]
@@ -2163,15 +2086,6 @@ dependencies = [
2086 "autocfg",
2087 ]
2088
2166 -[[package]]
2167 -name = "fs-err"
2168 -version = "3.3.1"
2169 -source = "registry+https://github.com/rust-lang/crates.io-index"
2170 -checksum = "b91aa448ca50d7e79433bdf3ee8d99215430d2ec02ade5aefab2a073a1822e8a"
2171 -dependencies = [
2172 - "autocfg",
2173 -]
2174 -
2089 [[package]]
2090 name = "fs_extra"
2091 version = "1.3.0"
@@ -4113,7 +4027,7 @@ dependencies = [
4027 "png 0.18.1",
4028 "serde",
4029 "thiserror 2.0.20",
4116 - "windows-sys 0.61.2",
4030 + "windows-sys 0.60.2",
4031 ]
4032
4033 [[package]]
@@ -4266,7 +4180,7 @@ version = "0.50.3"
4180 source = "registry+https://github.com/rust-lang/crates.io-index"
4181 checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
4182 dependencies = [
4269 - "windows-sys 0.61.2",
4183 + "windows-sys 0.59.0",
4184 ]
4185
4186 [[package]]
@@ -4660,7 +4574,7 @@ dependencies = [
4574 "thiserror 2.0.20",
4575 "tokio",
4576 "tsync",
4663 - "uniffi 0.31.0",
4577 + "uniffi",
4578 ]
4579
4580 [[package]]
@@ -5523,7 +5437,7 @@ dependencies = [
5437 "once_cell",
5438 "socket2",
5439 "tracing",
5526 - "windows-sys 0.61.2",
5440 + "windows-sys 0.52.0",
5441 ]
5442
5443 [[package]]
@@ -6051,7 +5965,7 @@ dependencies = [
5965 "errno",
5966 "libc",
5967 "linux-raw-sys",
6054 - "windows-sys 0.61.2",
5968 + "windows-sys 0.52.0",
5969 ]
5970
5971 [[package]]
@@ -6110,7 +6024,7 @@ dependencies = [
6024 "security-framework",
6025 "security-framework-sys",
6026 "webpki-root-certs",
6113 - "windows-sys 0.61.2",
6027 + "windows-sys 0.52.0",
6028 ]
6029
6030 [[package]]
@@ -6820,7 +6734,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
6734 checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4"
6735 dependencies = [
6736 "libc",
6823 - "windows-sys 0.61.2",
6737 + "windows-sys 0.60.2",
6738 ]
6739
6740 [[package]]
@@ -7589,7 +7503,7 @@ checksum = "3e176a18e67764923c4f1ce66f25ae4abe5f688384d5eb1a0fa6c77f3d90f887"
7503 dependencies = [
7504 "anyhow",
7505 "brotli",
7592 - "cargo_metadata 0.19.2",
7506 + "cargo_metadata",
7507 "ctor",
7508 "dom_query",
7509 "dunce",
@@ -7612,7 +7526,7 @@ dependencies = [
7526 "serde_with",
7527 "swift-rs",
7528 "thiserror 2.0.20",
7615 - "toml 1.1.5+spec-1.1.0",
7529 + "toml 0.9.12+spec-1.1.0",
7530 "url",
7531 "urlpattern",
7532 "uuid 1.26.1",
@@ -7637,10 +7551,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
7551 checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
7552 dependencies = [
7553 "fastrand",
7640 - "getrandom 0.4.3",
7554 + "getrandom 0.3.4",
7555 "once_cell",
7556 "rustix",
7643 - "windows-sys 0.61.2",
7557 + "windows-sys 0.52.0",
7558 ]
7559
7560 [[package]]
@@ -7670,7 +7584,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
7584 checksum = "230a1b821ccbd75b185820a1f1ff7b14d21da1e442e22c0863ea5f08771a8874"
7585 dependencies = [
7586 "rustix",
7673 - "windows-sys 0.61.2",
7587 + "windows-sys 0.59.0",
7588 ]
7589
7590 [[package]]
@@ -8232,7 +8146,7 @@ dependencies = [
8146 "png 0.18.1",
8147 "serde",
8148 "thiserror 2.0.20",
8235 - "windows-sys 0.61.2",
8149 + "windows-sys 0.60.2",
8150 ]
8151
8152 [[package]]
@@ -8430,31 +8344,16 @@ name = "uniffi"
8344 version = "0.31.0"
8345 source = "registry+https://github.com/rust-lang/crates.io-index"
8346 checksum = "b8c6dec3fc6645f71a16a3fa9ff57991028153bd194ca97f4b55e610c73ce66a"
8433 -dependencies = [
8434 - "anyhow",
8435 - "cargo_metadata 0.19.2",
8436 - "uniffi_bindgen 0.31.0",
8437 - "uniffi_build 0.31.0",
8438 - "uniffi_core 0.31.0",
8439 - "uniffi_macros 0.31.0",
8440 - "uniffi_pipeline 0.31.0",
8441 -]
8442 -
8443 -[[package]]
8444 -name = "uniffi"
8445 -version = "0.32.1"
8446 -source = "registry+https://github.com/rust-lang/crates.io-index"
8447 -checksum = "edf78ecfb9bb8d7c4f8da11e8eb2ab6304e8ec0adb3ab32d8fc77c21a5bb0b86"
8347 dependencies = [
8348 "anyhow",
8349 "camino",
8451 - "cargo_metadata 0.23.1",
8350 + "cargo_metadata",
8351 "clap 4.6.6",
8453 - "uniffi_bindgen 0.32.1",
8454 - "uniffi_build 0.32.1",
8455 - "uniffi_core 0.32.1",
8456 - "uniffi_macros 0.32.1",
8457 - "uniffi_pipeline 0.32.1",
8352 + "uniffi_bindgen",
8353 + "uniffi_build",
8354 + "uniffi_core",
8355 + "uniffi_macros",
8356 + "uniffi_pipeline",
8357 ]
8358
8359 [[package]]
@@ -8464,10 +8363,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
8363 checksum = "4ed0150801958d4825da56a41c71f000a457ac3a4613fa9647df78ac4b6b6881"
8364 dependencies = [
8365 "anyhow",
8467 - "askama 0.14.0",
8366 + "askama",
8367 "camino",
8469 - "cargo_metadata 0.19.2",
8470 - "fs-err 2.11.0",
8368 + "cargo_metadata",
8369 + "fs-err",
8370 "glob",
8371 "goblin",
8372 "heck 0.5.0",
@@ -8477,36 +8376,10 @@ dependencies = [
8376 "tempfile",
8377 "textwrap 0.16.3",
8378 "toml 0.9.12+spec-1.1.0",
8480 - "uniffi_internal_macros 0.31.0",
8481 - "uniffi_meta 0.31.0",
8482 - "uniffi_pipeline 0.31.0",
8483 - "uniffi_udl 0.31.0",
8484 -]
8485 -
8486 -[[package]]
8487 -name = "uniffi_bindgen"
8488 -version = "0.32.1"
8489 -source = "registry+https://github.com/rust-lang/crates.io-index"
8490 -checksum = "cdea7c4574723928bef87dfc04b203d96321d0bf34ab295a56379e633be579f3"
8491 -dependencies = [
8492 - "anyhow",
8493 - "askama 0.16.1",
8494 - "camino",
8495 - "cargo_metadata 0.23.1",
8496 - "fs-err 3.3.1",
8497 - "glob",
8498 - "goblin",
8499 - "heck 0.5.0",
8500 - "indexmap 2.14.2",
8501 - "once_cell",
8502 - "serde",
8503 - "tempfile",
8504 - "textwrap 0.16.3",
8505 - "toml 1.1.5+spec-1.1.0",
8506 - "uniffi_internal_macros 0.32.1",
8507 - "uniffi_meta 0.32.1",
8508 - "uniffi_pipeline 0.32.1",
8509 - "uniffi_udl 0.32.1",
8379 + "uniffi_internal_macros",
8380 + "uniffi_meta",
8381 + "uniffi_pipeline",
8382 + "uniffi_udl",
8383 ]
8384
8385 [[package]]
@@ -8517,18 +8390,7 @@ checksum = "b78fd9271a4c2e85bd2c266c5a9ede1fac676eb39fd77f636c27eaf67426fd5f"
8390 dependencies = [
8391 "anyhow",
8392 "camino",
8520 - "uniffi_bindgen 0.31.0",
8521 -]
8522 -
8523 -[[package]]
8524 -name = "uniffi_build"
8525 -version = "0.32.1"
8526 -source = "registry+https://github.com/rust-lang/crates.io-index"
8527 -checksum = "dfe2d9769b6c0c15d7c7832d53eaa595c683bb80a30512614a67268ce16132f9"
8528 -dependencies = [
8529 - "anyhow",
8530 - "camino",
8531 - "uniffi_bindgen 0.32.1",
8393 + "uniffi_bindgen",
8394 ]
8395
8396 [[package]]
@@ -8544,19 +8406,6 @@ dependencies = [
8406 "static_assertions",
8407 ]
8408
8547 -[[package]]
8548 -name = "uniffi_core"
8549 -version = "0.32.1"
8550 -source = "registry+https://github.com/rust-lang/crates.io-index"
8551 -checksum = "f8b1c62ee415b805f063c82e8ef6bbcaa1b87f8eed360cf217537b7724e05601"
8552 -dependencies = [
8553 - "anyhow",
8554 - "async-compat",
8555 - "bytes",
8556 - "once_cell",
8557 - "static_assertions",
8558 -]
8559 -
8409 [[package]]
8410 name = "uniffi_internal_macros"
8411 version = "0.31.0"
@@ -8570,19 +8419,6 @@ dependencies = [
8419 "syn 2.0.119",
8420 ]
8421
8573 -[[package]]
8574 -name = "uniffi_internal_macros"
8575 -version = "0.32.1"
8576 -source = "registry+https://github.com/rust-lang/crates.io-index"
8577 -checksum = "c79d4a3129d6c2c15e367d3954886a0533dd3e85d445ce4d93379f62c6949d7b"
8578 -dependencies = [
8579 - "anyhow",
8580 - "indexmap 2.14.2",
8581 - "proc-macro2",
8582 - "quote",
8583 - "syn 2.0.119",
8584 -]
8585 -
8422 [[package]]
8423 name = "uniffi_macros"
8424 version = "0.31.0"
@@ -8590,31 +8426,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
8426 checksum = "db9d12529f1223d014fd501e5f29ca0884d15d6ed5ddddd9f506e55350327dc3"
8427 dependencies = [
8428 "camino",
8593 - "fs-err 2.11.0",
8429 + "fs-err",
8430 "once_cell",
8431 "proc-macro2",
8432 "quote",
8433 "serde",
8434 "syn 2.0.119",
8435 "toml 0.9.12+spec-1.1.0",
8600 - "uniffi_meta 0.31.0",
8601 -]
8602 -
8603 -[[package]]
8604 -name = "uniffi_macros"
8605 -version = "0.32.1"
8606 -source = "registry+https://github.com/rust-lang/crates.io-index"
8607 -checksum = "2f6a9826a83f1140b2ec67c7944f562e1ef616e6eaf40e76247adccbd5b8a091"
8608 -dependencies = [
8609 - "camino",
8610 - "fs-err 3.3.1",
8611 - "once_cell",
8612 - "proc-macro2",
8613 - "quote",
8614 - "serde",
8615 - "syn 2.0.119",
8616 - "toml 1.1.5+spec-1.1.0",
8617 - "uniffi_meta 0.32.1",
8436 + "uniffi_meta",
8437 ]
8438
8439 [[package]]
@@ -8625,20 +8444,8 @@ checksum = "9df6d413db2827c68588f8149d30d49b71d540d46539e435b23a7f7dbd4d4f86"
8444 dependencies = [
8445 "anyhow",
8446 "siphasher",
8628 - "uniffi_internal_macros 0.31.0",
8629 - "uniffi_pipeline 0.31.0",
8630 -]
8631 -
8632 -[[package]]
8633 -name = "uniffi_meta"
8634 -version = "0.32.1"
8635 -source = "registry+https://github.com/rust-lang/crates.io-index"
8636 -checksum = "cf233eb014b595e8997c98df4ac6863b486a4ac6d54bd00230c7700753d7ef13"
8637 -dependencies = [
8638 - "anyhow",
8639 - "siphasher",
8640 - "uniffi_internal_macros 0.32.1",
8641 - "uniffi_pipeline 0.32.1",
8447 + "uniffi_internal_macros",
8448 + "uniffi_pipeline",
8449 ]
8450
8451 [[package]]
@@ -8651,20 +8458,7 @@ dependencies = [
8458 "heck 0.5.0",
8459 "indexmap 2.14.2",
8460 "tempfile",
8654 - "uniffi_internal_macros 0.31.0",
8655 -]
8656 -
8657 -[[package]]
8658 -name = "uniffi_pipeline"
8659 -version = "0.32.1"
8660 -source = "registry+https://github.com/rust-lang/crates.io-index"
8661 -checksum = "55179706fbb6e7a23e729780d2c6165e6afe1ce725fa63754bcf217b440afc04"
8662 -dependencies = [
8663 - "anyhow",
8664 - "heck 0.5.0",
8665 - "indexmap 2.14.2",
8666 - "tempfile",
8667 - "uniffi_internal_macros 0.32.1",
8461 + "uniffi_internal_macros",
8462 ]
8463
8464 [[package]]
@@ -8675,19 +8469,7 @@ checksum = "0d1a7339539bf6f6fa3e9b534dece13f778bda2d54b1a6d4e40b4d6090ac26e7"
8469 dependencies = [
8470 "anyhow",
8471 "textwrap 0.16.3",
8678 - "uniffi_meta 0.31.0",
8679 - "weedle2",
8680 -]
8681 -
8682 -[[package]]
8683 -name = "uniffi_udl"
8684 -version = "0.32.1"
8685 -source = "registry+https://github.com/rust-lang/crates.io-index"
8686 -checksum = "421a9add7a19c5a264a2aba760514125ef3840a8b246ec88237fc91e3f2f79b1"
8687 -dependencies = [
8688 - "anyhow",
8689 - "textwrap 0.16.3",
8690 - "uniffi_meta 0.32.1",
8472 + "uniffi_meta",
8473 "weedle2",
8474 ]
8475
@@ -9200,7 +8982,7 @@ version = "0.1.11"
8982 source = "registry+https://github.com/rust-lang/crates.io-index"
8983 checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
8984 dependencies = [
9203 - "windows-sys 0.61.2",
8985 + "windows-sys 0.52.0",
8986 ]
8987
8988 [[package]]
Cargo.toml
+4 -1
@@ -25,7 +25,10 @@ log = "0.4"
25 thiserror = "2"
26 tokio = { version = "1", features = ["sync", "rt"] }
27 tauri = { version = "2", features = [] }
28 -uniffi = { version = "=0.32.1", features = ["tokio"] }
28 +# Must match on the uniffi version `onde` is built with (=0.31.0). The
29 +# bindgen extracts metadata that every crate in the staticlib embeds; mixed
30 +# versions break extraction with "Invalid string data" errors.
31 +uniffi = { version = "=0.31.0", features = ["tokio"] }
32 smbcloud-gresiq-sdk = "0.4.7"
33
34 # Internal
crates/ed-agent-ffi/Cargo.toml
-1
@@ -25,4 +25,3 @@ smbcloud-gresiq-sdk.workspace = true
25
26 [build-dependencies]
27 cc = "1"
28 -uniffi = { version = "=0.32.1", features = ["build"] }
uniffi-bindgen/Cargo.toml
+1 -1
@@ -9,4 +9,4 @@ name = "uniffi-bindgen"
9 path = "uniffi-bindgen.rs"
10
11 [dependencies]
12 -uniffi = { version = "=0.32.1", features = ["cli"] }
12 +uniffi = { version = "=0.31.0", features = ["cli"] }