Align onde, reqwest and ratatui with the rest of the Onde stack

siGit Code was the one agent on older versions of the shared base: onde 1.2.2 while Ed and MailX use 1.3.1, and reqwest 0.12 and ratatui 0.29 while OndeCode and SplitFire Agent use 0.13 and 0.30. That kept two copies of crossterm in the build and would block any crate shared between the agents. - onde 1.2.2 to 1.3.1. This brings the fix for a panic in send_message when a long message has a multi-byte character at byte 100. Onde 1.3 also reports Pulse events for streaming inference, which is the path on-device turns take; the changelog says so and names the ONDE_DISABLE_PULSE opt-out. - reqwest 0.12 to 0.13. 0.13 puts RequestBuilder::form behind a feature, so `form` is enabled for the browser sign-in token exchange. rustls-tls is renamed rustls. - ratatui 0.29 to 0.30, built with only the crossterm backend. Backends now carry their own error type, so the chat loop requires it to be Send + Sync for `?` into anyhow. crossterm 0.28 drops out and duplicate-version crates go from 82 to 77. reqwest 0.12 stays as a transitive dependency of hf-hub, openai-harmony and the smbCloud SDKs. aws-lc was already in the tree through onde, so no new native build comes in. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Seto Elkahfi committed Oct 8, 2026 at 16:58 UTC 954e63aaa363b4eb0129a2a018c541ac974973b0
4 files changed +201 -138
CHANGELOG.md
+11
@@ -25,6 +25,10 @@
25 warning and carried on in whichever directory was current. Nothing makes it
26 fail today, since a close waits for the turn, but the turn now ends as
27 cancelled instead of depending on that.
28 +- **Dependencies match the rest of the Onde stack.** Onde 1.2.2 to 1.3.1,
29 + reqwest 0.12 to 0.13 and ratatui 0.29 to 0.30, the versions Ed, OndeCode and
30 + SplitFire Agent use. ratatui is built with only its crossterm backend, which
31 + drops the second copy of crossterm (0.28) from the build.
32
33 ### Fixed
34
@@ -51,6 +55,13 @@
55 prompt also gets its own title back instead of keeping the permission
56 request's (#139).
57
58 +- **On-device inference no longer panics on some non-English text.** siGit Code
59 + now builds on Onde 1.3.1, which fixes a panic when a message longer than 100
60 + bytes had a multi-byte character (an accented letter, CJK, or an emoji) at
61 + byte 100. Onde 1.3 also reports Pulse events for streaming inference, which
62 + is the path on-device turns take, so those turns are now reported alongside
63 + model loads. `ONDE_DISABLE_PULSE=1` turns Pulse off.
64 +
65 ## 1.6.4
66
67 ### Added
Cargo.lock
+175 -133
@@ -32,7 +32,7 @@ dependencies = [
32 "futures",
33 "futures-concurrency",
34 "rustc-hash 2.1.3",
35 - "rustix 1.1.4",
35 + "rustix",
36 "schemars 1.2.2",
37 "serde",
38 "serde_json",
@@ -185,7 +185,7 @@ version = "1.1.5"
185 source = "registry+https://github.com/rust-lang/crates.io-index"
186 checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
187 dependencies = [
188 - "windows-sys 0.61.2",
188 + "windows-sys 0.60.2",
189 ]
190
191 [[package]]
@@ -196,7 +196,7 @@ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
196 dependencies = [
197 "anstyle",
198 "once_cell_polyfill",
199 - "windows-sys 0.61.2",
199 + "windows-sys 0.60.2",
200 ]
201
202 [[package]]
@@ -344,7 +344,7 @@ dependencies = [
344 "futures-lite",
345 "parking",
346 "polling",
347 - "rustix 1.1.4",
347 + "rustix",
348 "slab",
349 "windows-sys 0.61.2",
350 ]
@@ -375,7 +375,7 @@ dependencies = [
375 "cfg-if",
376 "event-listener",
377 "futures-lite",
378 - "rustix 1.1.4",
378 + "rustix",
379 ]
380
381 [[package]]
@@ -390,7 +390,7 @@ dependencies = [
390 "cfg-if",
391 "futures-core",
392 "futures-io",
393 - "rustix 1.1.4",
393 + "rustix",
394 "signal-hook-registry",
395 "slab",
396 "windows-sys 0.61.2",
@@ -663,6 +663,12 @@ version = "3.20.3"
663 source = "registry+https://github.com/rust-lang/crates.io-index"
664 checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
665
666 +[[package]]
667 +name = "by_address"
668 +version = "1.2.1"
669 +source = "registry+https://github.com/rust-lang/crates.io-index"
670 +checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06"
671 +
672 [[package]]
673 name = "bytemuck"
674 version = "1.25.2"
@@ -792,12 +798,6 @@ dependencies = [
798 "thiserror 2.0.20",
799 ]
800
795 -[[package]]
796 -name = "cassowary"
797 -version = "0.3.0"
798 -source = "registry+https://github.com/rust-lang/crates.io-index"
799 -checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53"
800 -
801 [[package]]
802 name = "castaway"
803 version = "0.2.4"
@@ -957,20 +957,6 @@ dependencies = [
957 "memchr",
958 ]
959
960 -[[package]]
961 -name = "compact_str"
962 -version = "0.8.2"
963 -source = "registry+https://github.com/rust-lang/crates.io-index"
964 -checksum = "7fd622ebbb56a5b2ccb651b32b911cdeb2a9b4b11776b2473bf26a26a286244e"
965 -dependencies = [
966 - "castaway",
967 - "cfg-if",
968 - "itoa",
969 - "rustversion",
970 - "ryu",
971 - "static_assertions",
972 -]
973 -
960 [[package]]
961 name = "compact_str"
962 version = "0.9.1"
@@ -1102,6 +1088,12 @@ dependencies = [
1088 "cfg-if",
1089 ]
1090
1091 +[[package]]
1092 +name = "critical-section"
1093 +version = "1.2.0"
1094 +source = "registry+https://github.com/rust-lang/crates.io-index"
1095 +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b"
1096 +
1097 [[package]]
1098 name = "crossbeam-deque"
1099 version = "0.8.7"
@@ -1127,22 +1119,6 @@ version = "0.8.22"
1119 source = "registry+https://github.com/rust-lang/crates.io-index"
1120 checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17"
1121
1130 -[[package]]
1131 -name = "crossterm"
1132 -version = "0.28.1"
1133 -source = "registry+https://github.com/rust-lang/crates.io-index"
1134 -checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6"
1135 -dependencies = [
1136 - "bitflags 2.13.1",
1137 - "crossterm_winapi",
1138 - "mio",
1139 - "parking_lot",
1140 - "rustix 0.38.44",
1141 - "signal-hook",
1142 - "signal-hook-mio",
1143 - "winapi",
1144 -]
1145 -
1122 [[package]]
1123 name = "crossterm"
1124 version = "0.29.0"
@@ -1156,7 +1132,7 @@ dependencies = [
1132 "futures-core",
1133 "mio",
1134 "parking_lot",
1159 - "rustix 1.1.4",
1135 + "rustix",
1136 "signal-hook",
1137 "signal-hook-mio",
1138 "winapi",
@@ -1543,7 +1519,7 @@ dependencies = [
1519 "libc",
1520 "option-ext",
1521 "redox_users",
1546 - "windows-sys 0.61.2",
1522 + "windows-sys 0.59.0",
1523 ]
1524
1525 [[package]]
@@ -1742,7 +1718,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1718 checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
1719 dependencies = [
1720 "libc",
1745 - "windows-sys 0.61.2",
1721 + "windows-sys 0.52.0",
1722 ]
1723
1724 [[package]]
@@ -2491,6 +2467,11 @@ name = "hashbrown"
2467 version = "0.17.1"
2468 source = "registry+https://github.com/rust-lang/crates.io-index"
2469 checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
2470 +dependencies = [
2471 + "allocator-api2",
2472 + "equivalent",
2473 + "foldhash 0.2.0",
2474 +]
2475
2476 [[package]]
2477 name = "heck"
@@ -2988,15 +2969,6 @@ version = "1.70.2"
2969 source = "registry+https://github.com/rust-lang/crates.io-index"
2970 checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
2971
2991 -[[package]]
2992 -name = "itertools"
2993 -version = "0.13.0"
2994 -source = "registry+https://github.com/rust-lang/crates.io-index"
2995 -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
2996 -dependencies = [
2997 - "either",
2998 -]
2999 -
2972 [[package]]
2973 name = "itertools"
2974 version = "0.14.0"
@@ -3135,6 +3107,17 @@ dependencies = [
3107 "wasm-bindgen",
3108 ]
3109
3110 +[[package]]
3111 +name = "kasuari"
3112 +version = "0.4.12"
3113 +source = "registry+https://github.com/rust-lang/crates.io-index"
3114 +checksum = "bde5057d6143cc94e861d90f591b9303d6716c6b9602309150bd068853c10899"
3115 +dependencies = [
3116 + "hashbrown 0.16.1",
3117 + "portable-atomic",
3118 + "thiserror 2.0.20",
3119 +]
3120 +
3121 [[package]]
3122 name = "landlock"
3123 version = "0.4.7"
@@ -3200,10 +3183,13 @@ dependencies = [
3183 ]
3184
3185 [[package]]
3203 -name = "linux-raw-sys"
3204 -version = "0.4.15"
3186 +name = "line-clipping"
3187 +version = "0.3.8"
3188 source = "registry+https://github.com/rust-lang/crates.io-index"
3206 -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
3189 +checksum = "e752191d037c44ad111a8caa762921926658402f01cc1253f7bef2020ece4f5e"
3190 +dependencies = [
3191 + "bitflags 2.13.1",
3192 +]
3193
3194 [[package]]
3195 name = "linux-raw-sys"
@@ -3292,11 +3278,11 @@ dependencies = [
3278
3279 [[package]]
3280 name = "lru"
3295 -version = "0.12.5"
3281 +version = "0.18.5"
3282 source = "registry+https://github.com/rust-lang/crates.io-index"
3297 -checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38"
3283 +checksum = "ef9ac18847474e638e3702b76c65d4eb93428471a74778ef0f1be711717f89b5"
3284 dependencies = [
3299 - "hashbrown 0.15.5",
3285 + "hashbrown 0.17.1",
3286 ]
3287
3288 [[package]]
@@ -3636,7 +3622,7 @@ version = "0.50.3"
3622 source = "registry+https://github.com/rust-lang/crates.io-index"
3623 checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
3624 dependencies = [
3639 - "windows-sys 0.61.2",
3625 + "windows-sys 0.59.0",
3626 ]
3627
3628 [[package]]
@@ -3740,6 +3726,15 @@ dependencies = [
3726 "libc",
3727 ]
3728
3729 +[[package]]
3730 +name = "num_threads"
3731 +version = "0.1.7"
3732 +source = "registry+https://github.com/rust-lang/crates.io-index"
3733 +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9"
3734 +dependencies = [
3735 + "libc",
3736 +]
3737 +
3738 [[package]]
3739 name = "number_prefix"
3740 version = "0.4.0"
@@ -3832,9 +3827,9 @@ checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
3827
3828 [[package]]
3829 name = "onde"
3835 -version = "1.2.2"
3830 +version = "1.3.1"
3831 source = "registry+https://github.com/rust-lang/crates.io-index"
3837 -checksum = "8d84f62e53e6ce8efce62baac8e769d08f83ff19ed6cd9d1a91eeb769fedd618"
3832 +checksum = "7145ab132138de1f7b57707d37a5f7dbcb0dee36560742689270c162359478b5"
3833 dependencies = [
3834 "anyhow",
3835 "cc",
@@ -4000,7 +3995,7 @@ dependencies = [
3995 "indexmap 2.14.1",
3996 "indicatif 0.18.6",
3997 "interprocess",
4003 - "itertools 0.14.0",
3998 + "itertools",
3999 "libc",
4000 "llguidance",
4001 "lrtable",
@@ -4196,7 +4191,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
4191 checksum = "2d96f4fcb4af06959bf9c9b81ace0502e2be2d11d7e037c94f3f7851bde720ea"
4192 dependencies = [
4193 "anyhow",
4199 - "crossterm 0.29.0",
4194 + "crossterm",
4195 "once_cell",
4196 ]
4197
@@ -4276,6 +4271,39 @@ dependencies = [
4271 "num-traits",
4272 ]
4273
4274 +[[package]]
4275 +name = "palette"
4276 +version = "0.7.7"
4277 +source = "registry+https://github.com/rust-lang/crates.io-index"
4278 +checksum = "ddeed8580d347d2abf3dcf06a5f0b3dc020258338526b277847cd4248a70fc64"
4279 +dependencies = [
4280 + "approx",
4281 + "libm",
4282 + "palette_derive",
4283 + "palette_math",
4284 +]
4285 +
4286 +[[package]]
4287 +name = "palette_derive"
4288 +version = "0.7.7"
4289 +source = "registry+https://github.com/rust-lang/crates.io-index"
4290 +checksum = "88537020289b719d81be994ccf1bbf4990f477e2f69ee52fe3e45f43a02e56be"
4291 +dependencies = [
4292 + "by_address",
4293 + "proc-macro2",
4294 + "quote",
4295 + "syn 2.0.119",
4296 +]
4297 +
4298 +[[package]]
4299 +name = "palette_math"
4300 +version = "0.7.7"
4301 +source = "registry+https://github.com/rust-lang/crates.io-index"
4302 +checksum = "6e6eb142958d64335fb0e345c5b9ead2ecd6fc438c307e9d7d3c4fd428dbaf12"
4303 +dependencies = [
4304 + "libm",
4305 +]
4306 +
4307 [[package]]
4308 name = "parking"
4309 version = "2.2.1"
@@ -4454,7 +4482,7 @@ dependencies = [
4482 "concurrent-queue",
4483 "hermit-abi 0.5.2",
4484 "pin-project-lite",
4457 - "rustix 1.1.4",
4485 + "rustix",
4486 "windows-sys 0.61.2",
4487 ]
4488
@@ -4676,7 +4704,7 @@ dependencies = [
4704 "once_cell",
4705 "socket2",
4706 "tracing",
4679 - "windows-sys 0.61.2",
4707 + "windows-sys 0.52.0",
4708 ]
4709
4710 [[package]]
@@ -4826,25 +4854,71 @@ dependencies = [
4854
4855 [[package]]
4856 name = "ratatui"
4829 -version = "0.29.0"
4857 +version = "0.30.2"
4858 source = "registry+https://github.com/rust-lang/crates.io-index"
4831 -checksum = "eabd94c2f37801c20583fc49dd5cd6b0ba68c716787c2dd6ed18571e1e63117b"
4859 +checksum = "3274ba0a2c5e1bcad2a2005d20f4dc59dad26b2eb0940fb094500dba4099d57d"
4860 dependencies = [
4833 - "bitflags 2.13.1",
4834 - "cassowary",
4835 - "compact_str 0.8.2",
4836 - "crossterm 0.28.1",
4837 - "indoc",
4861 "instability",
4839 - "itertools 0.13.0",
4862 + "ratatui-core",
4863 + "ratatui-crossterm",
4864 + "ratatui-widgets",
4865 + "serde",
4866 +]
4867 +
4868 +[[package]]
4869 +name = "ratatui-core"
4870 +version = "0.1.2"
4871 +source = "registry+https://github.com/rust-lang/crates.io-index"
4872 +checksum = "cbb175c433c8e28a809d1f5773a2ae96e68c0ce40db865cbab1020bf33ae479c"
4873 +dependencies = [
4874 + "bitflags 2.13.1",
4875 + "compact_str",
4876 + "critical-section",
4877 + "hashbrown 0.17.1",
4878 + "itertools",
4879 + "kasuari",
4880 "lru",
4841 - "paste",
4842 - "strum 0.26.3",
4881 + "palette",
4882 + "serde",
4883 + "strum 0.28.0",
4884 + "thiserror 2.0.20",
4885 "unicode-segmentation",
4886 "unicode-truncate",
4887 "unicode-width 0.2.0",
4888 ]
4889
4890 +[[package]]
4891 +name = "ratatui-crossterm"
4892 +version = "0.1.2"
4893 +source = "registry+https://github.com/rust-lang/crates.io-index"
4894 +checksum = "567584a3b0e6a8203c23de40b4861497266725eb5363dbfd18a1edd603cca9f0"
4895 +dependencies = [
4896 + "cfg-if",
4897 + "crossterm",
4898 + "instability",
4899 + "ratatui-core",
4900 +]
4901 +
4902 +[[package]]
4903 +name = "ratatui-widgets"
4904 +version = "0.3.2"
4905 +source = "registry+https://github.com/rust-lang/crates.io-index"
4906 +checksum = "66e3d19bcc9130ca376277d93b60767ff121ace3be06f5f95f81dd68956407d1"
4907 +dependencies = [
4908 + "bitflags 2.13.1",
4909 + "hashbrown 0.17.1",
4910 + "indoc",
4911 + "instability",
4912 + "itertools",
4913 + "line-clipping",
4914 + "ratatui-core",
4915 + "serde",
4916 + "strum 0.28.0",
4917 + "time",
4918 + "unicode-segmentation",
4919 + "unicode-width 0.2.0",
4920 +]
4921 +
4922 [[package]]
4923 name = "rav1e"
4924 version = "0.8.1"
@@ -4861,7 +4935,7 @@ dependencies = [
4935 "built",
4936 "cfg-if",
4937 "interpolate_name",
4864 - "itertools 0.14.0",
4938 + "itertools",
4939 "libc",
4940 "libfuzzer-sys",
4941 "log",
@@ -4927,7 +5001,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
5001 checksum = "2964d0cf57a3e7a06e8183d14a8b527195c706b7983549cd5462d5aa3747438f"
5002 dependencies = [
5003 "either",
4930 - "itertools 0.14.0",
5004 + "itertools",
5005 "rayon",
5006 ]
5007
@@ -5108,6 +5182,7 @@ dependencies = [
5182 "rustls-platform-verifier",
5183 "serde",
5184 "serde_json",
5185 + "serde_urlencoded",
5186 "sync_wrapper",
5187 "tokio",
5188 "tokio-rustls",
@@ -5230,19 +5305,6 @@ dependencies = [
5305 "transpose",
5306 ]
5307
5233 -[[package]]
5234 -name = "rustix"
5235 -version = "0.38.44"
5236 -source = "registry+https://github.com/rust-lang/crates.io-index"
5237 -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
5238 -dependencies = [
5239 - "bitflags 2.13.1",
5240 - "errno",
5241 - "libc",
5242 - "linux-raw-sys 0.4.15",
5243 - "windows-sys 0.59.0",
5244 -]
5245 -
5308 [[package]]
5309 name = "rustix"
5310 version = "1.1.4"
@@ -5252,8 +5314,8 @@ dependencies = [
5314 "bitflags 2.13.1",
5315 "errno",
5316 "libc",
5255 - "linux-raw-sys 0.12.1",
5256 - "windows-sys 0.61.2",
5317 + "linux-raw-sys",
5318 + "windows-sys 0.52.0",
5319 ]
5320
5321 [[package]]
@@ -5312,7 +5374,7 @@ dependencies = [
5374 "security-framework",
5375 "security-framework-sys",
5376 "webpki-root-certs",
5315 - "windows-sys 0.61.2",
5377 + "windows-sys 0.52.0",
5378 ]
5379
5380 [[package]]
@@ -5784,7 +5846,7 @@ dependencies = [
5846 "anyhow",
5847 "async-trait",
5848 "base64 0.22.1",
5787 - "crossterm 0.29.0",
5849 + "crossterm",
5850 "futures",
5851 "libc",
5852 "log",
@@ -5792,7 +5854,7 @@ dependencies = [
5854 "rand 0.9.5",
5855 "ratatui",
5856 "regex",
5795 - "reqwest 0.12.28",
5857 + "reqwest 0.13.4",
5858 "rpassword",
5859 "serde",
5860 "serde_json",
@@ -5966,7 +6028,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
6028 checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4"
6029 dependencies = [
6030 "libc",
5969 - "windows-sys 0.61.2",
6031 + "windows-sys 0.60.2",
6032 ]
6033
6034 [[package]]
@@ -6137,15 +6199,6 @@ dependencies = [
6199 "strum_macros 0.24.3",
6200 ]
6201
6140 -[[package]]
6141 -name = "strum"
6142 -version = "0.26.3"
6143 -source = "registry+https://github.com/rust-lang/crates.io-index"
6144 -checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06"
6145 -dependencies = [
6146 - "strum_macros 0.26.4",
6147 -]
6148 -
6202 [[package]]
6203 name = "strum"
6204 version = "0.27.2"
@@ -6177,19 +6230,6 @@ dependencies = [
6230 "syn 1.0.109",
6231 ]
6232
6180 -[[package]]
6181 -name = "strum_macros"
6182 -version = "0.26.4"
6183 -source = "registry+https://github.com/rust-lang/crates.io-index"
6184 -checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be"
6185 -dependencies = [
6186 - "heck 0.5.0",
6187 - "proc-macro2",
6188 - "quote",
6189 - "rustversion",
6190 - "syn 2.0.119",
6191 -]
6192 -
6233 [[package]]
6234 name = "strum_macros"
6235 version = "0.27.2"
@@ -6466,8 +6506,8 @@ dependencies = [
6506 "fastrand",
6507 "getrandom 0.4.3",
6508 "once_cell",
6469 - "rustix 1.1.4",
6470 - "windows-sys 0.61.2",
6509 + "rustix",
6510 + "windows-sys 0.52.0",
6511 ]
6512
6513 [[package]]
@@ -6496,8 +6536,8 @@ version = "0.4.4"
6536 source = "registry+https://github.com/rust-lang/crates.io-index"
6537 checksum = "230a1b821ccbd75b185820a1f1ff7b14d21da1e442e22c0863ea5f08771a8874"
6538 dependencies = [
6499 - "rustix 1.1.4",
6500 - "windows-sys 0.61.2",
6539 + "rustix",
6540 + "windows-sys 0.59.0",
6541 ]
6542
6543 [[package]]
@@ -6588,7 +6628,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
6628 checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134"
6629 dependencies = [
6630 "deranged",
6631 + "libc",
6632 "num-conv",
6633 + "num_threads",
6634 "powerfmt",
6635 "serde_core",
6636 "time-core",
@@ -6644,13 +6686,13 @@ checksum = "a620b996116a59e184c2fa2dfd8251ea34a36d0a514758c6f966386bd2e03476"
6686 dependencies = [
6687 "ahash",
6688 "aho-corasick",
6647 - "compact_str 0.9.1",
6689 + "compact_str",
6690 "dary_heap",
6691 "derive_builder",
6692 "esaxx-rs",
6693 "fancy-regex 0.14.0",
6694 "getrandom 0.3.4",
6653 - "itertools 0.14.0",
6695 + "itertools",
6696 "log",
6697 "macro_rules_attribute",
6698 "monostate",
@@ -6677,12 +6719,12 @@ checksum = "b238e22d44a15349529690fb07bd645cf58149a1b1e44d6cb5bd1641ff1a6223"
6719 dependencies = [
6720 "ahash",
6721 "aho-corasick",
6680 - "compact_str 0.9.1",
6722 + "compact_str",
6723 "dary_heap",
6724 "derive_builder",
6725 "esaxx-rs",
6726 "getrandom 0.3.4",
6685 - "itertools 0.14.0",
6727 + "itertools",
6728 "log",
6729 "macro_rules_attribute",
6730 "monostate",
@@ -7127,13 +7169,13 @@ checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8"
7169
7170 [[package]]
7171 name = "unicode-truncate"
7130 -version = "1.1.0"
7172 +version = "2.0.1"
7173 source = "registry+https://github.com/rust-lang/crates.io-index"
7132 -checksum = "b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf"
7174 +checksum = "16b380a1238663e5f8a691f9039c73e1cdae598a30e9855f541d29b08b53e9a5"
7175 dependencies = [
7134 - "itertools 0.13.0",
7176 + "itertools",
7177 "unicode-segmentation",
7136 - "unicode-width 0.1.14",
7178 + "unicode-width 0.2.0",
7179 ]
7180
7181 [[package]]
@@ -7682,7 +7724,7 @@ version = "0.1.11"
7724 source = "registry+https://github.com/rust-lang/crates.io-index"
7725 checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
7726 dependencies = [
7685 - "windows-sys 0.61.2",
7727 + "windows-sys 0.52.0",
7728 ]
7729
7730 [[package]]
Cargo.toml
+3 -3
@@ -27,7 +27,7 @@ agent-client-protocol = { version = "2.2", features = ["unstable_session_fork"]
27
28 # Onde Inference engine (local LLM)
29 # onde = { path = "../onde" }
30 -onde = "1.2.2"
30 +onde = "1.3.1"
31
32 # Async runtime
33 tokio = { version = "1", features = ["rt", "rt-multi-thread", "macros", "io-std", "io-util", "sync", "time", "process"] }
@@ -38,7 +38,7 @@ futures = "0.3"
38 # `unstable-rendered-line-info` exposes `Paragraph::line_count`, which we use to
39 # pin the message view to the bottom using the exact wrapped-row count (the same
40 # WordWrapper that rendering uses) rather than a hand-rolled estimate.
41 -ratatui = { version = "0.29", features = ["unstable-rendered-line-info"] }
41 +ratatui = { version = "0.30", default-features = false, features = ["crossterm", "layout-cache", "unstable-rendered-line-info"] }
42 crossterm = { version = "0.29", features = ["event-stream"] }
43
44 # Utilities
@@ -51,7 +51,7 @@ serde_json = "1"
51 toml = "0.8"
52 async-trait = "0.1"
53 regex = "1"
54 -reqwest = { version = "0.12", default-features = false, features = ["blocking", "json", "rustls-tls", "stream"] }
54 +reqwest = { version = "0.13", default-features = false, features = ["blocking", "form", "json", "rustls", "stream"] }
55 uuid = { version = "1", features = ["v4"] }
56 rpassword = "7"
57 # Browser sign-in: PKCE needs a SHA-256 and base64url, the verifier and state
src/chat.rs
+12 -2
@@ -3422,7 +3422,12 @@ mod tui {
3422 backend: Arc<dyn InferenceBackend>,
3423 load_rx: std_mpsc::Receiver<Result<(), String>>,
3424 load_model_name: String,
3425 - ) -> Result<()> {
3425 + ) -> Result<()>
3426 + where
3427 + // ratatui 0.30 gives each backend its own error type; `?` into anyhow needs it
3428 + // to be thread-safe.
3429 + B::Error: Send + Sync + 'static,
3430 + {
3431 event_loop(terminal, engine, backend, load_rx, load_model_name).await
3432 }
3433
@@ -3432,7 +3437,12 @@ mod tui {
3437 backend: Arc<dyn InferenceBackend>,
3438 load_rx: std_mpsc::Receiver<Result<(), String>>,
3439 load_model_name: String,
3435 - ) -> Result<()> {
3440 + ) -> Result<()>
3441 + where
3442 + // ratatui 0.30 gives each backend its own error type; `?` into anyhow needs it
3443 + // to be thread-safe.
3444 + B::Error: Send + Sync + 'static,
3445 + {
3446 let mut app = App::new(load_model_name, backend);
3447 let mut event_stream = EventStream::new();
3448