From 951a0a1314c633dc23cf20be51183042f4a9744d Mon Sep 17 00:00:00 2001 From: Max Heimbrock <43608204+MaxHeimbrock@users.noreply.github.com> Date: Wed, 22 Jul 2026 15:18:31 +0200 Subject: [PATCH 01/11] Adds token source tab --- src/connect.rs | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/connect.rs b/src/connect.rs index 6a52589..496920a 100644 --- a/src/connect.rs +++ b/src/connect.rs @@ -12,6 +12,7 @@ pub enum Auth { identity: String, room: String, }, + TokenSource{sandbox_id: String} } impl Auth { @@ -35,6 +36,7 @@ impl Auth { }) .to_jwt() .map_err(|e| e.to_string()), + Auth::TokenSource{sandbox_id} => Ok("".to_string()), } } } @@ -59,6 +61,7 @@ enum AuthMethod { #[default] ApiKey, Token, + TokenSource } /// The root window: a welcome screen holding the only connect form in the app. @@ -74,6 +77,7 @@ pub struct ConnectView { method: AuthMethod, url: String, token: String, + sandbox_id: String, api_key: String, api_secret: String, identity: String, @@ -101,6 +105,7 @@ impl Default for ConnectView { method: AuthMethod::default(), url: env_or("LIVEKIT_URL", "ws://localhost:7880"), token: env_or("LIVEKIT_TOKEN", ""), + sandbox_id: "sandbox-id".to_string(), api_key: env_or("LIVEKIT_API_KEY", "devkey"), api_secret: env_or("LIVEKIT_API_SECRET", "secret"), identity: "participant-0".to_string(), @@ -127,6 +132,7 @@ impl ConnectView { && !self.room.trim().is_empty() } AuthMethod::Token => !self.token.trim().is_empty(), + AuthMethod::TokenSource => !self.sandbox_id.trim().is_empty() } } @@ -139,6 +145,7 @@ impl ConnectView { room: self.room.clone(), }, AuthMethod::Token => Auth::Token(self.token.clone()), + AuthMethod::TokenSource => Auth::TokenSource{sandbox_id: self.sandbox_id.clone()}, }; ConnectSettings { url: self.url.clone(), @@ -224,6 +231,7 @@ impl egui::Widget for ConnectForm<'_> { ui.horizontal(|ui| { ui.selectable_value(&mut view.method, AuthMethod::ApiKey, "API Key"); ui.selectable_value(&mut view.method, AuthMethod::Token, "Token"); + ui.selectable_value(&mut view.method, AuthMethod::TokenSource, "TokenSource"); ui.with_layout(egui::Layout::right_to_left(egui::Align::Center), |ui| { let toggle = ui .add(egui::Button::selectable(view.show_secrets, "👁")) @@ -239,10 +247,12 @@ impl egui::Widget for ConnectForm<'_> { // the eye toggle above is on. let mask = !view.show_secrets; - // Scope each method's fields under a distinct id so switching tabs - // is seen as a layout change, not an unstable widget id (egui warns - // when a rect's id changes between passes under the same parent). - ui.push_id(view.method, |ui| match view.method { + // Scope the method's fields under a *constant* id. The single-field + // tabs (Token / TokenSource) render the same full-width widget at the + // same rect, so a per-method salt would give that rect a different id + // each switch — which is exactly what egui's "rect changed id between + // passes" warning flags. A stable salt keeps the id constant. + ui.push_id("auth_method_fields", |ui| match view.method { AuthMethod::Token => { ui.add(LabeledTextEdit::singleline("Token", &mut view.token).password(mask)); ui.add_space(8.0); @@ -264,6 +274,10 @@ impl egui::Widget for ConnectForm<'_> { columns[1].add(LabeledTextEdit::singleline("Room", &mut view.room)); }); ui.add_space(8.0); + }, + AuthMethod::TokenSource => { + ui.add(LabeledTextEdit::singleline("Sandbox Id", &mut view.sandbox_id)); + ui.add_space(8.0); } }); From 869c6da2176c844f3945ae6739368d115a6933e3 Mon Sep 17 00:00:00 2001 From: Max Heimbrock <43608204+MaxHeimbrock@users.noreply.github.com> Date: Wed, 22 Jul 2026 16:02:18 +0200 Subject: [PATCH 02/11] Sandbox id works, but no other fields possible yet --- src/connect.rs | 84 ++++++++++++++++++++++++++++++++++------------ src/lib.rs | 2 +- src/room/window.rs | 13 ++----- src/service.rs | 27 +++++++++++---- 4 files changed, 86 insertions(+), 40 deletions(-) diff --git a/src/connect.rs b/src/connect.rs index 496920a..818ed24 100644 --- a/src/connect.rs +++ b/src/connect.rs @@ -1,27 +1,36 @@ use crate::ui::{labeled_field::LabeledTextEdit, prominent_button::ProminentButton}; +use livekit_token_source::{TokenSourceSandbox, TokenSourceFetchOptions}; -/// How a room connection is authenticated. -#[derive(Clone)] +/// How a room connection is authenticated. The methods that target a known +/// server carry its URL; the token-source method learns it from the sandbox. +#[derive(Clone, Debug)] pub enum Auth { /// A pre-generated access token (the room is encoded in it). - Token(String), + Token { url: String, token: String }, /// API credentials from which a join token is generated on demand. ApiKey { + url: String, api_key: String, api_secret: String, identity: String, room: String, }, - TokenSource{sandbox_id: String} + /// A LiveKit Cloud sandbox token server, which provides both the server + /// URL and the join token. + TokenSource { sandbox_id: String }, } impl Auth { - /// Resolve to a room-connection JWT, generating one from the API credentials - /// when this is the API-key method. - pub fn access_token(&self) -> Result { + /// Resolve to `(server_url, token)`: the JWT is generated locally for the + /// API-key method, fetched over HTTP for the token-source method. + /// + /// Async because of that fetch — call it from the service task, not the UI + /// thread. + pub async fn connection_details(&self) -> Result<(String, String), String> { match self { - Auth::Token(token) => Ok(token.clone()), + Auth::Token { url, token } => Ok((url.clone(), token.clone())), Auth::ApiKey { + url, api_key, api_secret, identity, @@ -35,8 +44,30 @@ impl Auth { ..Default::default() }) .to_jwt() + .map(|token| (url.clone(), token)) .map_err(|e| e.to_string()), - Auth::TokenSource{sandbox_id} => Ok("".to_string()), + Auth::TokenSource { sandbox_id } => { + let options = TokenSourceFetchOptions { + agent_name: Some("Church".to_string()), + ..Default::default() + }; + + let token_source = TokenSourceSandbox::new(sandbox_id.to_owned()); + let response = token_source + .fetch(&options) + .await + .map_err(|e| e.to_string())?; + Ok((response.server_url, response.participant_token)) + } + } + } + + /// Short label of the connection target for window titles: the server URL + /// when known up front, otherwise the sandbox id. + pub fn target_label(&self) -> &str { + match self { + Auth::Token { url, .. } | Auth::ApiKey { url, .. } => url, + Auth::TokenSource { sandbox_id } => sandbox_id, } } } @@ -45,7 +76,6 @@ impl Auth { /// per application, passed to each room window as it is opened. #[derive(Clone)] pub struct ConnectSettings { - pub url: String, pub auth: Auth, pub key: String, pub auto_subscribe: bool, @@ -121,34 +151,41 @@ impl Default for ConnectView { impl ConnectView { fn is_connect_enabled(&self) -> bool { - if self.url.trim().is_empty() { - return false; - } + // The URL only matters for the methods that use it; the token-source + // method gets its server URL from the sandbox response. match self.method { AuthMethod::ApiKey => { - !self.api_key.trim().is_empty() + !self.url.trim().is_empty() + && !self.api_key.trim().is_empty() && !self.api_secret.trim().is_empty() && !self.identity.trim().is_empty() && !self.room.trim().is_empty() } - AuthMethod::Token => !self.token.trim().is_empty(), - AuthMethod::TokenSource => !self.sandbox_id.trim().is_empty() + AuthMethod::Token => { + !self.url.trim().is_empty() && !self.token.trim().is_empty() + } + AuthMethod::TokenSource => !self.sandbox_id.trim().is_empty(), } } fn current_settings(&self) -> ConnectSettings { let auth = match self.method { AuthMethod::ApiKey => Auth::ApiKey { + url: self.url.clone(), api_key: self.api_key.clone(), api_secret: self.api_secret.clone(), identity: self.identity.clone(), room: self.room.clone(), }, - AuthMethod::Token => Auth::Token(self.token.clone()), - AuthMethod::TokenSource => Auth::TokenSource{sandbox_id: self.sandbox_id.clone()}, + AuthMethod::Token => Auth::Token { + url: self.url.clone(), + token: self.token.clone(), + }, + AuthMethod::TokenSource => Auth::TokenSource { + sandbox_id: self.sandbox_id.clone(), + }, }; ConnectSettings { - url: self.url.clone(), auth, key: self.key.clone(), auto_subscribe: self.auto_subscribe, @@ -225,9 +262,6 @@ impl egui::Widget for ConnectForm<'_> { ui.label(egui::RichText::new("Connect to a Room").text_style(egui::TextStyle::Heading)); ui.add_space(8.0); - ui.add(LabeledTextEdit::singleline("URL", &mut view.url)); - ui.add_space(8.0); - ui.horizontal(|ui| { ui.selectable_value(&mut view.method, AuthMethod::ApiKey, "API Key"); ui.selectable_value(&mut view.method, AuthMethod::Token, "Token"); @@ -252,12 +286,18 @@ impl egui::Widget for ConnectForm<'_> { // same rect, so a per-method salt would give that rect a different id // each switch — which is exactly what egui's "rect changed id between // passes" warning flags. A stable salt keeps the id constant. + // The URL lives inside the Token / API Key tabs (shared between + // them): the token-source method gets its URL from the sandbox. ui.push_id("auth_method_fields", |ui| match view.method { AuthMethod::Token => { + ui.add(LabeledTextEdit::singleline("URL", &mut view.url)); + ui.add_space(8.0); ui.add(LabeledTextEdit::singleline("Token", &mut view.token).password(mask)); ui.add_space(8.0); } AuthMethod::ApiKey => { + ui.add(LabeledTextEdit::singleline("URL", &mut view.url)); + ui.add_space(8.0); ui.columns(2, |columns| { columns[0].add( LabeledTextEdit::singleline("API Key", &mut view.api_key) diff --git a/src/lib.rs b/src/lib.rs index 9c027d7..1c33b69 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -67,7 +67,7 @@ impl AppRoot { let id = self.next_window_id; self.next_window_id += 1; - let title = format!("{} - {}", APP_NAME, request.url); + let title = format!("{} - {}", APP_NAME, request.auth.target_label()); let window = RoomWindow::new( id, self.async_runtime.handle().clone(), diff --git a/src/room/window.rs b/src/room/window.rs index 075be27..a223e7b 100644 --- a/src/room/window.rs +++ b/src/room/window.rs @@ -54,19 +54,10 @@ impl RoomWindow { } fn connect(&mut self) { - let token = match self.request.auth.access_token() { - Ok(token) => token, - Err(err) => { - self.connecting = false; - self.connection_failure = Some(err); - return; - } - }; self.connecting = true; self.connection_failure = None; let _ = self.service.send(AsyncCmd::RoomConnect { - url: self.request.url.clone(), - token, + auth: self.request.auth.clone(), auto_subscribe: self.request.auto_subscribe, dynacast: self.request.dynacast, enable_e2ee: self.request.enable_e2ee, @@ -85,7 +76,7 @@ impl RoomWindow { UiCmd::ConnectResult { result } => { self.connecting = false; if let Err(err) = result { - self.connection_failure = Some(err.to_string()); + self.connection_failure = Some(err); } } UiCmd::DataTrackPublished { track } => { diff --git a/src/service.rs b/src/service.rs index addf4f9..1c38177 100644 --- a/src/service.rs +++ b/src/service.rs @@ -1,3 +1,4 @@ +use crate::connect::Auth; use crate::media::{LogoTrack, MicTrack, SineParameters, SineTrack}; use livekit::{ SimulateScenario, StreamByteOptions, StreamTextOptions, @@ -12,8 +13,7 @@ use tokio::sync::mpsc::{self, error::SendError}; #[derive(Debug)] pub enum AsyncCmd { RoomConnect { - url: String, - token: String, + auth: Auth, auto_subscribe: bool, dynacast: bool, enable_e2ee: bool, @@ -64,7 +64,9 @@ pub enum DataStreamPayload { #[derive(Debug)] pub enum UiCmd { ConnectResult { - result: RoomResult<()>, + /// `Err` is a human-readable message: token resolution and room + /// connection can each fail, with different error types. + result: Result<(), String>, }, RoomEvent { event: RoomEvent, @@ -161,13 +163,24 @@ async fn service_task(inner: Arc, mut cmd_rx: mpsc::UnboundedRecei while let Some(event) = cmd_rx.recv().await { match event { AsyncCmd::RoomConnect { - url, - token, + auth, auto_subscribe, dynacast, enable_e2ee, key, } => { + // Resolved here rather than UI-side: the token-source method + // fetches the connection details over HTTP, which must not + // block the UI. + let (url, token) = match auth.connection_details().await { + Ok(details) => details, + Err(err) => { + log::error!("failed to resolve connection details: {err}"); + let _ = inner.ui_tx.send(UiCmd::ConnectResult { result: Err(err) }); + continue; + } + }; + log::info!("connecting to room: {}", url); let key_provider = @@ -217,7 +230,9 @@ async fn service_task(inner: Arc, mut cmd_rx: mpsc::UnboundedRecei let _ = inner.ui_tx.send(UiCmd::ConnectResult { result: Ok(()) }); } else if let Err(err) = res { log::error!("failed to connect to room: {:?}", err); - let _ = inner.ui_tx.send(UiCmd::ConnectResult { result: Err(err) }); + let _ = inner.ui_tx.send(UiCmd::ConnectResult { + result: Err(err.to_string()), + }); } } AsyncCmd::RoomDisconnect => { From 7350fd085eabfca7810e1149e2702064e0bf4313 Mon Sep 17 00:00:00 2001 From: Max Heimbrock <43608204+MaxHeimbrock@users.noreply.github.com> Date: Wed, 22 Jul 2026 16:02:32 +0200 Subject: [PATCH 03/11] Cargo changes for local dev --- Cargo.lock | 106 +++++++++++++++++++++++++++++++++++------------------ Cargo.toml | 9 +++-- 2 files changed, 76 insertions(+), 39 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 72b1d95..638f105 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -382,6 +382,18 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "async-compression" +version = "0.4.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3976abdc8fe7d1133d43d304afd42abdf5bc3e1319d263d223bde07b5efc4be8" +dependencies = [ + "compression-codecs", + "compression-core", + "futures-io", + "pin-project-lite", +] + [[package]] name = "async-executor" version = "1.14.0" @@ -933,6 +945,22 @@ dependencies = [ "memchr", ] +[[package]] +name = "compression-codecs" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce2548391e9c1929c21bf6aa2680af86fe4c1b33e6cea9ac1cfeec0bd11218cf" +dependencies = [ + "compression-core", + "flate2", +] + +[[package]] +name = "compression-core" +version = "0.4.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc14f565cf027a105f7a44ccf9e5b424348421a1d8952a8fc9d499d313107789" + [[package]] name = "concurrent-queue" version = "2.5.0" @@ -1163,8 +1191,6 @@ checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" [[package]] name = "device-info" version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2ca8e71544c1b67dcdbc2699ab258828aff985e5bc8d5f6b486d90d7df2f848" dependencies = [ "core-foundation 0.10.1", "jni 0.21.1", @@ -2716,9 +2742,7 @@ dependencies = [ [[package]] name = "libwebrtc" -version = "0.3.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f5497ff0694ddcee8f88129c78139defa5ec3fc434c3e182906ed0a72372bd9" +version = "0.3.43" dependencies = [ "cxx", "jni 0.21.1", @@ -2779,14 +2803,13 @@ checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" [[package]] name = "livekit" -version = "0.7.53" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa8ed793e154d63b588397ea7a84cfb3606b6d049f4d24137d9d9e0384617059" +version = "0.8.1" dependencies = [ "base64 0.22.1", "bmrng", "bytes", "chrono", + "flate2", "futures-util", "lazy_static", "libloading", @@ -2810,19 +2833,17 @@ dependencies = [ [[package]] name = "livekit-api" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e827d3444235ddccf360fc1d4737034e86ee2ea2c0a696f148ecc08e7249bfd3" +version = "0.6.1" dependencies = [ "base64 0.21.7", "bytes", "device-info", "flate2", - "futures-util", "hmac", "http", "jsonwebtoken", "livekit-common", + "livekit-net", "livekit-protocol", "livekit-runtime", "log", @@ -2832,7 +2853,6 @@ dependencies = [ "prost", "rand", "reqwest", - "rustls-native-certs", "scopeguard", "serde", "serde_json", @@ -2840,30 +2860,25 @@ dependencies = [ "signature", "thiserror 2.0.18", "tokio", - "tokio-rustls", - "tokio-tungstenite", "url", ] [[package]] name = "livekit-common" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42a76cd816c062654d105b697ebab136da87d14126ee77b2f13280cb895bcb58" +version = "0.1.1" dependencies = [ "livekit-protocol", ] [[package]] name = "livekit-data-stream" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69ad1cca8f05fbe29026d99931884641199df544c33777d1f1b321df6f1031dd" +version = "0.1.1" dependencies = [ + "async-compression", "bmrng", "bytes", "chrono", - "flate2", + "from_variants", "futures-util", "livekit-common", "livekit-protocol", @@ -2872,14 +2887,13 @@ dependencies = [ "prost", "thiserror 2.0.18", "tokio", + "tokio-stream", "uuid", ] [[package]] name = "livekit-datatrack" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "201bec4becf4db2b0af616a73ff3b2421f6af3693c287b82f5182028ee36e5f5" +version = "0.1.13" dependencies = [ "anyhow", "bytes", @@ -2896,11 +2910,28 @@ dependencies = [ "tokio-stream", ] +[[package]] +name = "livekit-net" +version = "0.1.2" +dependencies = [ + "async-trait", + "base64 0.21.7", + "bytes", + "futures-util", + "http", + "livekit-runtime", + "log", + "reqwest", + "rustls-native-certs", + "tokio", + "tokio-rustls", + "tokio-tungstenite", + "url", +] + [[package]] name = "livekit-protocol" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d26880e94e2f9bab298445e7d86a3794453d211a12ddbd051bd9991a343f9ff" +version = "0.7.12" dependencies = [ "pbjson", "pbjson-types", @@ -2911,13 +2942,21 @@ dependencies = [ [[package]] name = "livekit-runtime" version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "532e84c6cdc5fe774f2b5d9912597b5f3bea561927a48296d03e24549d21c3f6" dependencies = [ "tokio", "tokio-stream", ] +[[package]] +name = "livekit-token-source" +version = "0.1.0" +dependencies = [ + "livekit-net", + "serde", + "serde_json", + "thiserror 2.0.18", +] + [[package]] name = "lock_api" version = "0.4.14" @@ -4444,6 +4483,7 @@ dependencies = [ "image", "livekit", "livekit-api", + "livekit-token-source", "log", "parking_lot", "serde", @@ -5810,9 +5850,7 @@ dependencies = [ [[package]] name = "webrtc-sys" -version = "0.3.39" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a555de886b8d4961e6c2878ac3ca1f716b75c77f60311c5cf6ed136d0df14e1" +version = "0.3.40" dependencies = [ "cc", "cxx", @@ -5826,8 +5864,6 @@ dependencies = [ [[package]] name = "webrtc-sys-build" version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d46da6b5a5cbd091fae0400f77189f4ca4807c0d9442b85838a584f28720570" dependencies = [ "anyhow", "fs2", diff --git a/Cargo.toml b/Cargo.toml index 117bc0f..bd5d921 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,14 +18,15 @@ tokio = { version = "1", features = ["full", "parking_lot"] } # egui-wgpu 0.35 requires wgpu ^29.0; "29.0" resolves to a compatible 29.0.x. wgpu = "29.0" winit = { version = "0.30.13", features = [ "android-native-activity" ] } -livekit = { version = "0.7.49", features = ["rustls-tls-native-roots"] } -livekit-api = { version = "0.5.4", default-features = false, features = ["access-token"] } +# livekit = { version = "0.7.49", features = ["rustls-tls-native-roots"] } +# livekit-api = { version = "0.5.4", default-features = false, features = ["access-token"] } # For local SDK development, comment out the two lines above and uncomment these # (clone https://github.com/livekit/rust-sdks to ../rust-sdks first; see # "Building against a local rust-sdks" in README.md): -# livekit = { path = "../rust-sdks/livekit", features = ["rustls-tls-native-roots"] } -# livekit-api = { path = "../rust-sdks/livekit-api", default-features = false, features = ["access-token"] } +livekit = { path = "../rust-sdks/livekit", features = ["rustls-tls-native-roots"] } +livekit-api = { path = "../rust-sdks/livekit-api", default-features = false, features = ["access-token"] } +livekit-token-source = { path = "../rust-sdks/livekit-token-source" } [package.metadata.bundle] name = "LiveKit Client" From a8014c170af71cbe5c9dc85ece5b0e6d5903d52f Mon Sep 17 00:00:00 2001 From: Max Heimbrock <43608204+MaxHeimbrock@users.noreply.github.com> Date: Wed, 22 Jul 2026 16:11:25 +0200 Subject: [PATCH 04/11] Also have fields for all fetch options --- src/connect.rs | 102 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 89 insertions(+), 13 deletions(-) diff --git a/src/connect.rs b/src/connect.rs index 818ed24..466ce6f 100644 --- a/src/connect.rs +++ b/src/connect.rs @@ -16,8 +16,12 @@ pub enum Auth { room: String, }, /// A LiveKit Cloud sandbox token server, which provides both the server - /// URL and the join token. - TokenSource { sandbox_id: String }, + /// URL and the join token. `options` parameterizes the request; unset + /// fields are left to server defaults. + TokenSource { + sandbox_id: String, + options: TokenSourceFetchOptions, + }, } impl Auth { @@ -46,15 +50,13 @@ impl Auth { .to_jwt() .map(|token| (url.clone(), token)) .map_err(|e| e.to_string()), - Auth::TokenSource { sandbox_id } => { - let options = TokenSourceFetchOptions { - agent_name: Some("Church".to_string()), - ..Default::default() - }; - + Auth::TokenSource { + sandbox_id, + options, + } => { let token_source = TokenSourceSandbox::new(sandbox_id.to_owned()); let response = token_source - .fetch(&options) + .fetch(options) .await .map_err(|e| e.to_string())?; Ok((response.server_url, response.participant_token)) @@ -67,7 +69,7 @@ impl Auth { pub fn target_label(&self) -> &str { match self { Auth::Token { url, .. } | Auth::ApiKey { url, .. } => url, - Auth::TokenSource { sandbox_id } => sandbox_id, + Auth::TokenSource { sandbox_id, .. } => sandbox_id, } } } @@ -108,6 +110,15 @@ pub struct ConnectView { url: String, token: String, sandbox_id: String, + // Token-source fetch options (`ts_` to keep them apart from the API-key + // tab's identity/room). Empty means "omit, let the server default". + ts_room_name: String, + ts_participant_name: String, + ts_participant_identity: String, + ts_participant_metadata: String, + ts_agent_name: String, + ts_agent_metadata: String, + ts_agent_deployment: String, api_key: String, api_secret: String, identity: String, @@ -136,6 +147,13 @@ impl Default for ConnectView { url: env_or("LIVEKIT_URL", "ws://localhost:7880"), token: env_or("LIVEKIT_TOKEN", ""), sandbox_id: "sandbox-id".to_string(), + ts_room_name: String::new(), + ts_participant_name: String::new(), + ts_participant_identity: String::new(), + ts_participant_metadata: String::new(), + ts_agent_name: String::new(), + ts_agent_metadata: String::new(), + ts_agent_deployment: String::new(), api_key: env_or("LIVEKIT_API_KEY", "devkey"), api_secret: env_or("LIVEKIT_API_SECRET", "secret"), identity: "participant-0".to_string(), @@ -181,9 +199,27 @@ impl ConnectView { url: self.url.clone(), token: self.token.clone(), }, - AuthMethod::TokenSource => Auth::TokenSource { - sandbox_id: self.sandbox_id.clone(), - }, + AuthMethod::TokenSource => { + // Empty (or whitespace-only) fields are omitted from the + // request so the token server applies its defaults. + let opt = |s: &str| { + let s = s.trim(); + (!s.is_empty()).then(|| s.to_string()) + }; + Auth::TokenSource { + sandbox_id: self.sandbox_id.clone(), + options: TokenSourceFetchOptions { + room_name: opt(&self.ts_room_name), + participant_name: opt(&self.ts_participant_name), + participant_identity: opt(&self.ts_participant_identity), + participant_metadata: opt(&self.ts_participant_metadata), + agent_name: opt(&self.ts_agent_name), + agent_metadata: opt(&self.ts_agent_metadata), + agent_deployment: opt(&self.ts_agent_deployment), + ..Default::default() + }, + } + } }; ConnectSettings { auth, @@ -318,6 +354,46 @@ impl egui::Widget for ConnectForm<'_> { AuthMethod::TokenSource => { ui.add(LabeledTextEdit::singleline("Sandbox Id", &mut view.sandbox_id)); ui.add_space(8.0); + + ui.label( + egui::RichText::new("Optional overrides — empty fields use server defaults") + .text_style(egui::TextStyle::Small), + ); + ui.add_space(8.0); + ui.columns(2, |columns| { + columns[0] + .add(LabeledTextEdit::singleline("Room Name", &mut view.ts_room_name)); + columns[1].add(LabeledTextEdit::singleline( + "Participant Name", + &mut view.ts_participant_name, + )); + }); + ui.add_space(8.0); + ui.columns(2, |columns| { + columns[0].add(LabeledTextEdit::singleline( + "Participant Identity", + &mut view.ts_participant_identity, + )); + columns[1].add(LabeledTextEdit::singleline( + "Participant Metadata", + &mut view.ts_participant_metadata, + )); + }); + ui.add_space(8.0); + ui.columns(2, |columns| { + columns[0] + .add(LabeledTextEdit::singleline("Agent Name", &mut view.ts_agent_name)); + columns[1].add(LabeledTextEdit::singleline( + "Agent Deployment", + &mut view.ts_agent_deployment, + )); + }); + ui.add_space(8.0); + ui.add(LabeledTextEdit::singleline( + "Agent Metadata", + &mut view.ts_agent_metadata, + )); + ui.add_space(8.0); } }); From cd699e1e1a11dab14698e46807a807dc5d471f94 Mon Sep 17 00:00:00 2001 From: Max Heimbrock <43608204+MaxHeimbrock@users.noreply.github.com> Date: Wed, 22 Jul 2026 16:50:33 +0200 Subject: [PATCH 05/11] Some cleanup after CI complained --- AGENTS.md | 3 +++ Cargo.lock | 7 ++++++- Cargo.toml | 13 +++++++------ src/connect.rs | 35 +++++++++++++++++++++-------------- src/room/window.rs | 2 +- src/service.rs | 4 +++- 6 files changed, 41 insertions(+), 23 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 1c82cba..7cc1b71 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -61,10 +61,13 @@ - Adhere to requirements in [_CONTRIBUTING.md_](./CONTRIBUTING.md) - Always format using `cargo fmt` + - CI enforces this via `cargo fmt --check` - Always address all issues, both clippy and compiler warnings + - Verify with the same invocation CI uses: `cargo clippy --all-targets -- -D warnings --no-deps` - Do not reach for `#[allow(...)]` to bypass warnings unless it is unavoidable in the context - Be explicit when you are bypassing warnings - Always run cspell and fix spelling issues + - `npx cspell --no-progress "**"` checks all files, matching CI - If a flagged word is valid project terminology, add it to _cspell.yml_ and sort the list alphabetically ## Release process diff --git a/Cargo.lock b/Cargo.lock index 638f105..1e02758 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1191,6 +1191,8 @@ checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" [[package]] name = "device-info" version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2ca8e71544c1b67dcdbc2699ab258828aff985e5bc8d5f6b486d90d7df2f848" dependencies = [ "core-foundation 0.10.1", "jni 0.21.1", @@ -2942,6 +2944,8 @@ dependencies = [ [[package]] name = "livekit-runtime" version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "532e84c6cdc5fe774f2b5d9912597b5f3bea561927a48296d03e24549d21c3f6" dependencies = [ "tokio", "tokio-stream", @@ -4483,7 +4487,6 @@ dependencies = [ "image", "livekit", "livekit-api", - "livekit-token-source", "log", "parking_lot", "serde", @@ -5864,6 +5867,8 @@ dependencies = [ [[package]] name = "webrtc-sys-build" version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d46da6b5a5cbd091fae0400f77189f4ca4807c0d9442b85838a584f28720570" dependencies = [ "anyhow", "fs2", diff --git a/Cargo.toml b/Cargo.toml index bd5d921..5df2831 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,15 +18,16 @@ tokio = { version = "1", features = ["full", "parking_lot"] } # egui-wgpu 0.35 requires wgpu ^29.0; "29.0" resolves to a compatible 29.0.x. wgpu = "29.0" winit = { version = "0.30.13", features = [ "android-native-activity" ] } -# livekit = { version = "0.7.49", features = ["rustls-tls-native-roots"] } -# livekit-api = { version = "0.5.4", default-features = false, features = ["access-token"] } +livekit = { version = "0.7.49", features = ["rustls-tls-native-roots"] } +livekit-api = { version = "0.5.4", default-features = false, features = ["access-token"] } +livekit-token-source = { version = "0.1.0" } -# For local SDK development, comment out the two lines above and uncomment these +# For local SDK development, comment out the three lines above and uncomment these # (clone https://github.com/livekit/rust-sdks to ../rust-sdks first; see # "Building against a local rust-sdks" in README.md): -livekit = { path = "../rust-sdks/livekit", features = ["rustls-tls-native-roots"] } -livekit-api = { path = "../rust-sdks/livekit-api", default-features = false, features = ["access-token"] } -livekit-token-source = { path = "../rust-sdks/livekit-token-source" } +# livekit = { path = "../rust-sdks/livekit", features = ["rustls-tls-native-roots"] } +# livekit-api = { path = "../rust-sdks/livekit-api", default-features = false, features = ["access-token"] } +# livekit-token-source = { path = "../rust-sdks/livekit-token-source" } [package.metadata.bundle] name = "LiveKit Client" diff --git a/src/connect.rs b/src/connect.rs index 466ce6f..7b54966 100644 --- a/src/connect.rs +++ b/src/connect.rs @@ -1,5 +1,5 @@ use crate::ui::{labeled_field::LabeledTextEdit, prominent_button::ProminentButton}; -use livekit_token_source::{TokenSourceSandbox, TokenSourceFetchOptions}; +use livekit_token_source::{TokenSourceFetchOptions, TokenSourceSandbox}; /// How a room connection is authenticated. The methods that target a known /// server carry its URL; the token-source method learns it from the sandbox. @@ -16,7 +16,7 @@ pub enum Auth { room: String, }, /// A LiveKit Cloud sandbox token server, which provides both the server - /// URL and the join token. `options` parameterizes the request; unset + /// URL and the join token. `options` customizes the request; unset /// fields are left to server defaults. TokenSource { sandbox_id: String, @@ -93,7 +93,7 @@ enum AuthMethod { #[default] ApiKey, Token, - TokenSource + TokenSource, } /// The root window: a welcome screen holding the only connect form in the app. @@ -179,9 +179,7 @@ impl ConnectView { && !self.identity.trim().is_empty() && !self.room.trim().is_empty() } - AuthMethod::Token => { - !self.url.trim().is_empty() && !self.token.trim().is_empty() - } + AuthMethod::Token => !self.url.trim().is_empty() && !self.token.trim().is_empty(), AuthMethod::TokenSource => !self.sandbox_id.trim().is_empty(), } } @@ -350,19 +348,26 @@ impl egui::Widget for ConnectForm<'_> { columns[1].add(LabeledTextEdit::singleline("Room", &mut view.room)); }); ui.add_space(8.0); - }, + } AuthMethod::TokenSource => { - ui.add(LabeledTextEdit::singleline("Sandbox Id", &mut view.sandbox_id)); + ui.add(LabeledTextEdit::singleline( + "Sandbox Id", + &mut view.sandbox_id, + )); ui.add_space(8.0); ui.label( - egui::RichText::new("Optional overrides — empty fields use server defaults") - .text_style(egui::TextStyle::Small), + egui::RichText::new( + "Optional overrides — empty fields use server defaults", + ) + .text_style(egui::TextStyle::Small), ); ui.add_space(8.0); ui.columns(2, |columns| { - columns[0] - .add(LabeledTextEdit::singleline("Room Name", &mut view.ts_room_name)); + columns[0].add(LabeledTextEdit::singleline( + "Room Name", + &mut view.ts_room_name, + )); columns[1].add(LabeledTextEdit::singleline( "Participant Name", &mut view.ts_participant_name, @@ -381,8 +386,10 @@ impl egui::Widget for ConnectForm<'_> { }); ui.add_space(8.0); ui.columns(2, |columns| { - columns[0] - .add(LabeledTextEdit::singleline("Agent Name", &mut view.ts_agent_name)); + columns[0].add(LabeledTextEdit::singleline( + "Agent Name", + &mut view.ts_agent_name, + )); columns[1].add(LabeledTextEdit::singleline( "Agent Deployment", &mut view.ts_agent_deployment, diff --git a/src/room/window.rs b/src/room/window.rs index a223e7b..3d29219 100644 --- a/src/room/window.rs +++ b/src/room/window.rs @@ -57,7 +57,7 @@ impl RoomWindow { self.connecting = true; self.connection_failure = None; let _ = self.service.send(AsyncCmd::RoomConnect { - auth: self.request.auth.clone(), + auth: Box::new(self.request.auth.clone()), auto_subscribe: self.request.auto_subscribe, dynacast: self.request.dynacast, enable_e2ee: self.request.enable_e2ee, diff --git a/src/service.rs b/src/service.rs index 1c38177..7c7595c 100644 --- a/src/service.rs +++ b/src/service.rs @@ -13,7 +13,9 @@ use tokio::sync::mpsc::{self, error::SendError}; #[derive(Debug)] pub enum AsyncCmd { RoomConnect { - auth: Auth, + /// Boxed to keep `AsyncCmd` small (clippy: `result_large_err` on + /// [`LkService::send`]); the token-source options make `Auth` large. + auth: Box, auto_subscribe: bool, dynacast: bool, enable_e2ee: bool, From ec7f6b2a364609d1709268887aec353088c3c171 Mon Sep 17 00:00:00 2001 From: Max Heimbrock <43608204+MaxHeimbrock@users.noreply.github.com> Date: Fri, 24 Jul 2026 16:32:19 +0200 Subject: [PATCH 06/11] Adapt to fetch options builder --- src/connect.rs | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/src/connect.rs b/src/connect.rs index 7b54966..9c100ea 100644 --- a/src/connect.rs +++ b/src/connect.rs @@ -198,24 +198,37 @@ impl ConnectView { token: self.token.clone(), }, AuthMethod::TokenSource => { - // Empty (or whitespace-only) fields are omitted from the - // request so the token server applies its defaults. + // Empty (or whitespace-only) fields are left unset so the + // token server applies its defaults. let opt = |s: &str| { let s = s.trim(); (!s.is_empty()).then(|| s.to_string()) }; + let mut options = TokenSourceFetchOptions::new(); + if let Some(v) = opt(&self.ts_room_name) { + options = options.with_room_name(v); + } + if let Some(v) = opt(&self.ts_participant_name) { + options = options.with_participant_name(v); + } + if let Some(v) = opt(&self.ts_participant_identity) { + options = options.with_participant_identity(v); + } + if let Some(v) = opt(&self.ts_participant_metadata) { + options = options.with_participant_metadata(v); + } + if let Some(v) = opt(&self.ts_agent_name) { + options = options.with_agent_name(v); + } + if let Some(v) = opt(&self.ts_agent_metadata) { + options = options.with_agent_metadata(v); + } + if let Some(v) = opt(&self.ts_agent_deployment) { + options = options.with_agent_deployment(v); + } Auth::TokenSource { sandbox_id: self.sandbox_id.clone(), - options: TokenSourceFetchOptions { - room_name: opt(&self.ts_room_name), - participant_name: opt(&self.ts_participant_name), - participant_identity: opt(&self.ts_participant_identity), - participant_metadata: opt(&self.ts_participant_metadata), - agent_name: opt(&self.ts_agent_name), - agent_metadata: opt(&self.ts_agent_metadata), - agent_deployment: opt(&self.ts_agent_deployment), - ..Default::default() - }, + options, } } }; From fb09c1252d0e0a01c2f199dd5c3e4fbce70806ff Mon Sep 17 00:00:00 2001 From: Max Heimbrock <43608204+MaxHeimbrock@users.noreply.github.com> Date: Mon, 3 Aug 2026 14:25:49 +0200 Subject: [PATCH 07/11] Using factory pattern --- Cargo.lock | 7 +------ Cargo.toml | 12 ++++++------ src/connect.rs | 32 ++++++++++++++++---------------- 3 files changed, 23 insertions(+), 28 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1e02758..638f105 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1191,8 +1191,6 @@ checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" [[package]] name = "device-info" version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2ca8e71544c1b67dcdbc2699ab258828aff985e5bc8d5f6b486d90d7df2f848" dependencies = [ "core-foundation 0.10.1", "jni 0.21.1", @@ -2944,8 +2942,6 @@ dependencies = [ [[package]] name = "livekit-runtime" version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "532e84c6cdc5fe774f2b5d9912597b5f3bea561927a48296d03e24549d21c3f6" dependencies = [ "tokio", "tokio-stream", @@ -4487,6 +4483,7 @@ dependencies = [ "image", "livekit", "livekit-api", + "livekit-token-source", "log", "parking_lot", "serde", @@ -5867,8 +5864,6 @@ dependencies = [ [[package]] name = "webrtc-sys-build" version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d46da6b5a5cbd091fae0400f77189f4ca4807c0d9442b85838a584f28720570" dependencies = [ "anyhow", "fs2", diff --git a/Cargo.toml b/Cargo.toml index 5df2831..fd83b34 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,16 +18,16 @@ tokio = { version = "1", features = ["full", "parking_lot"] } # egui-wgpu 0.35 requires wgpu ^29.0; "29.0" resolves to a compatible 29.0.x. wgpu = "29.0" winit = { version = "0.30.13", features = [ "android-native-activity" ] } -livekit = { version = "0.7.49", features = ["rustls-tls-native-roots"] } -livekit-api = { version = "0.5.4", default-features = false, features = ["access-token"] } -livekit-token-source = { version = "0.1.0" } +# livekit = { version = "0.7.49", features = ["rustls-tls-native-roots"] } +# livekit-api = { version = "0.5.4", default-features = false, features = ["access-token"] } +# livekit-token-source = { version = "0.1.0" } # For local SDK development, comment out the three lines above and uncomment these # (clone https://github.com/livekit/rust-sdks to ../rust-sdks first; see # "Building against a local rust-sdks" in README.md): -# livekit = { path = "../rust-sdks/livekit", features = ["rustls-tls-native-roots"] } -# livekit-api = { path = "../rust-sdks/livekit-api", default-features = false, features = ["access-token"] } -# livekit-token-source = { path = "../rust-sdks/livekit-token-source" } +livekit = { path = "../rust-sdks/livekit", features = ["rustls-tls-native-roots"] } +livekit-api = { path = "../rust-sdks/livekit-api", default-features = false, features = ["access-token"] } +livekit-token-source = { path = "../rust-sdks/livekit-token-source" } [package.metadata.bundle] name = "LiveKit Client" diff --git a/src/connect.rs b/src/connect.rs index 9c100ea..0c7329d 100644 --- a/src/connect.rs +++ b/src/connect.rs @@ -1,8 +1,8 @@ use crate::ui::{labeled_field::LabeledTextEdit, prominent_button::ProminentButton}; -use livekit_token_source::{TokenSourceFetchOptions, TokenSourceSandbox}; +use livekit_token_source::{TokenSource, TokenSourceFetchOptions}; /// How a room connection is authenticated. The methods that target a known -/// server carry its URL; the token-source method learns it from the sandbox. +/// server carry its URL; the token-source method learns it from the development token server. #[derive(Clone, Debug)] pub enum Auth { /// A pre-generated access token (the room is encoded in it). @@ -15,11 +15,11 @@ pub enum Auth { identity: String, room: String, }, - /// A LiveKit Cloud sandbox token server, which provides both the server + /// A LiveKit Cloud development token server, which provides both the server /// URL and the join token. `options` customizes the request; unset /// fields are left to server defaults. TokenSource { - sandbox_id: String, + token_server_id: String, options: TokenSourceFetchOptions, }, } @@ -51,10 +51,10 @@ impl Auth { .map(|token| (url.clone(), token)) .map_err(|e| e.to_string()), Auth::TokenSource { - sandbox_id, + token_server_id, options, } => { - let token_source = TokenSourceSandbox::new(sandbox_id.to_owned()); + let token_source = TokenSource::development_token_server(token_server_id.to_owned()); let response = token_source .fetch(options) .await @@ -65,11 +65,11 @@ impl Auth { } /// Short label of the connection target for window titles: the server URL - /// when known up front, otherwise the sandbox id. + /// when known up front, otherwise the token server id. pub fn target_label(&self) -> &str { match self { Auth::Token { url, .. } | Auth::ApiKey { url, .. } => url, - Auth::TokenSource { sandbox_id, .. } => sandbox_id, + Auth::TokenSource { token_server_id, .. } => token_server_id, } } } @@ -109,7 +109,7 @@ pub struct ConnectView { method: AuthMethod, url: String, token: String, - sandbox_id: String, + token_server_id: String, // Token-source fetch options (`ts_` to keep them apart from the API-key // tab's identity/room). Empty means "omit, let the server default". ts_room_name: String, @@ -146,7 +146,7 @@ impl Default for ConnectView { method: AuthMethod::default(), url: env_or("LIVEKIT_URL", "ws://localhost:7880"), token: env_or("LIVEKIT_TOKEN", ""), - sandbox_id: "sandbox-id".to_string(), + token_server_id: "token-server-id".to_string(), ts_room_name: String::new(), ts_participant_name: String::new(), ts_participant_identity: String::new(), @@ -170,7 +170,7 @@ impl Default for ConnectView { impl ConnectView { fn is_connect_enabled(&self) -> bool { // The URL only matters for the methods that use it; the token-source - // method gets its server URL from the sandbox response. + // method gets its server URL from the development token server response. match self.method { AuthMethod::ApiKey => { !self.url.trim().is_empty() @@ -180,7 +180,7 @@ impl ConnectView { && !self.room.trim().is_empty() } AuthMethod::Token => !self.url.trim().is_empty() && !self.token.trim().is_empty(), - AuthMethod::TokenSource => !self.sandbox_id.trim().is_empty(), + AuthMethod::TokenSource => !self.token_server_id.trim().is_empty(), } } @@ -227,7 +227,7 @@ impl ConnectView { options = options.with_agent_deployment(v); } Auth::TokenSource { - sandbox_id: self.sandbox_id.clone(), + token_server_id: self.token_server_id.clone(), options, } } @@ -334,7 +334,7 @@ impl egui::Widget for ConnectForm<'_> { // each switch — which is exactly what egui's "rect changed id between // passes" warning flags. A stable salt keeps the id constant. // The URL lives inside the Token / API Key tabs (shared between - // them): the token-source method gets its URL from the sandbox. + // them): the token-source method gets its URL from the development token server. ui.push_id("auth_method_fields", |ui| match view.method { AuthMethod::Token => { ui.add(LabeledTextEdit::singleline("URL", &mut view.url)); @@ -364,8 +364,8 @@ impl egui::Widget for ConnectForm<'_> { } AuthMethod::TokenSource => { ui.add(LabeledTextEdit::singleline( - "Sandbox Id", - &mut view.sandbox_id, + "Token Server Id", + &mut view.token_server_id, )); ui.add_space(8.0); From 4c6cfedece16692366835870c3af50a3a47285fd Mon Sep 17 00:00:00 2001 From: Max Heimbrock <43608204+MaxHeimbrock@users.noreply.github.com> Date: Mon, 3 Aug 2026 14:27:34 +0200 Subject: [PATCH 08/11] Make cargo toml use real deps --- Cargo.lock | 1708 +++------------------------------------------------- Cargo.toml | 12 +- 2 files changed, 104 insertions(+), 1616 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 638f105..4a76050 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -204,7 +204,7 @@ dependencies = [ "android-properties", "bitflags 2.13.0", "cc", - "jni 0.22.4", + "jni", "libc", "log", "ndk", @@ -319,7 +319,7 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -382,18 +382,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "async-compression" -version = "0.4.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3976abdc8fe7d1133d43d304afd42abdf5bc3e1319d263d223bde07b5efc4be8" -dependencies = [ - "compression-codecs", - "compression-core", - "futures-io", - "pin-project-lite", -] - [[package]] name = "async-executor" version = "1.14.0" @@ -463,7 +451,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -498,7 +486,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -608,18 +596,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - -[[package]] -name = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - [[package]] name = "bit-set" version = "0.9.1" @@ -665,15 +641,6 @@ dependencies = [ "no_std_io2", ] -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - [[package]] name = "block2" version = "0.5.1" @@ -705,16 +672,6 @@ dependencies = [ "piper", ] -[[package]] -name = "bmrng" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54df9073108f1558f90ae6c5bf5ab9c917c4185f5527b280c87a993cbead0ac" -dependencies = [ - "futures-core", - "tokio", -] - [[package]] name = "built" version = "0.8.1" @@ -744,15 +701,9 @@ checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - [[package]] name = "byteorder-lite" version = "0.1.0" @@ -828,12 +779,6 @@ dependencies = [ "shlex", ] -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - [[package]] name = "cfg-if" version = "1.0.4" @@ -855,45 +800,6 @@ dependencies = [ "libc", ] -[[package]] -name = "chrono" -version = "0.4.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" -dependencies = [ - "iana-time-zone", - "js-sys", - "num-traits", - "wasm-bindgen", - "windows-link", -] - -[[package]] -name = "clap" -version = "4.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" -dependencies = [ - "clap_builder", -] - -[[package]] -name = "clap_builder" -version = "4.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" -dependencies = [ - "anstyle", - "clap_lex", - "strsim 0.11.1", -] - -[[package]] -name = "clap_lex" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" - [[package]] name = "clipboard-win" version = "5.4.1" @@ -945,22 +851,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "compression-codecs" -version = "0.4.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce2548391e9c1929c21bf6aa2680af86fe4c1b33e6cea9ac1cfeec0bd11218cf" -dependencies = [ - "compression-core", - "flate2", -] - -[[package]] -name = "compression-core" -version = "0.4.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc14f565cf027a105f7a44ccf9e5b424348421a1d8952a8fc9d499d313107789" - [[package]] name = "concurrent-queue" version = "2.5.0" @@ -1020,15 +910,6 @@ dependencies = [ "libc", ] -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - [[package]] name = "crc32fast" version = "1.5.0" @@ -1069,149 +950,12 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - [[package]] name = "cursor-icon" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" -[[package]] -name = "cxx" -version = "1.0.194" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "747d8437319e3a2f43d93b341c137927ca70c0f5dabeea7a005a73665e247c7e" -dependencies = [ - "cc", - "cxx-build", - "cxxbridge-cmd", - "cxxbridge-flags", - "cxxbridge-macro", - "foldhash 0.2.0", - "link-cplusplus", -] - -[[package]] -name = "cxx-build" -version = "1.0.194" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0f4697d190a142477b16aef7da8a99bfdc41e7e8b1687583c0d23a79c7afc1e" -dependencies = [ - "cc", - "codespan-reporting", - "indexmap", - "proc-macro2", - "quote", - "scratch", - "syn 2.0.117", -] - -[[package]] -name = "cxxbridge-cmd" -version = "1.0.194" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0956799fa8678d4c50eed028f2de1c0552ae183c76e976cf7ca8c4e36a7c328" -dependencies = [ - "clap", - "codespan-reporting", - "indexmap", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "cxxbridge-flags" -version = "1.0.194" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23384a836ab4f0ad98ace7e3955ad2de39de42378ab487dc28d3990392cb283a" - -[[package]] -name = "cxxbridge-macro" -version = "1.0.194" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6acc6b5822b9526adfb4fc377b67128fdd60aac757cc4a741a6278603f763cf" -dependencies = [ - "indexmap", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "darling" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim 0.10.0", - "syn 1.0.109", -] - -[[package]] -name = "darling_macro" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" -dependencies = [ - "darling_core", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "data-encoding" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" - -[[package]] -name = "device-info" -version = "0.1.1" -dependencies = [ - "core-foundation 0.10.1", - "jni 0.21.1", - "libc", - "thiserror 2.0.18", - "wasm-bindgen", - "web-sys", - "windows-sys 0.59.0", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", - "subtle", -] - [[package]] name = "dispatch" version = "0.2.0" @@ -1236,7 +980,7 @@ checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -1330,7 +1074,7 @@ dependencies = [ "bitflags 2.13.0", "emath", "epaint", - "itertools 0.14.0", + "itertools", "log", "nohash-hasher", "profiling", @@ -1438,7 +1182,7 @@ checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -1449,7 +1193,7 @@ checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -1524,7 +1268,7 @@ checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -1643,12 +1387,6 @@ dependencies = [ "miniz_oxide", ] -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - [[package]] name = "foldhash" version = "0.1.5" @@ -1689,7 +1427,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -1707,37 +1445,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "from_variants" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e859c8f2057687618905dbe99fc76e836e0a69738865ef90e46fc214a41bbf2" -dependencies = [ - "from_variants_impl", -] - -[[package]] -name = "from_variants_impl" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55a5e644a80e6d96b2b4910fa7993301d7b7926c045b475b62202b20a36ce69e" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "fs2" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "futures" version = "0.3.33" @@ -1807,7 +1514,7 @@ checksum = "2d6d3cde68c518367be28956066ddfef33813991b77a55005a69dae04bf3b10b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -1839,16 +1546,6 @@ dependencies = [ "slab", ] -[[package]] -name = "generic-array" -version = "0.14.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" -dependencies = [ - "typenum", - "version_check", -] - [[package]] name = "gethostname" version = "1.1.0" @@ -1859,19 +1556,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - [[package]] name = "getrandom" version = "0.3.4" @@ -1879,11 +1563,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi 5.3.0", "wasip2", - "wasm-bindgen", ] [[package]] @@ -1942,12 +1624,6 @@ dependencies = [ "vello_common", ] -[[package]] -name = "glob" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" - [[package]] name = "glow" version = "0.17.0" @@ -2122,12 +1798,6 @@ dependencies = [ "foldhash 0.2.0", ] -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - [[package]] name = "heck" version = "0.5.0" @@ -2152,15 +1822,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest", -] - [[package]] name = "home" version = "0.5.12" @@ -2171,179 +1832,57 @@ dependencies = [ ] [[package]] -name = "http" -version = "1.4.2" +name = "icu_collections" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" dependencies = [ - "bytes", - "itoa", + "displaydoc", + "potential_utf", + "utf8_iter", + "yoke", + "zerofrom", + "zerovec", ] [[package]] -name = "http-body" -version = "1.0.1" +name = "icu_locale_core" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" dependencies = [ - "bytes", - "http", + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", ] [[package]] -name = "http-body-util" -version = "0.1.3" +name = "icu_normalizer" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" dependencies = [ - "bytes", - "futures-core", - "http", - "http-body", - "pin-project-lite", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", ] [[package]] -name = "httparse" -version = "1.10.1" +name = "icu_normalizer_data" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" [[package]] -name = "hyper" -version = "1.10.1" +name = "icu_properties" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498" -dependencies = [ - "atomic-waker", - "bytes", - "futures-channel", - "futures-core", - "http", - "http-body", - "httparse", - "itoa", - "pin-project-lite", - "smallvec", - "tokio", - "want", -] - -[[package]] -name = "hyper-rustls" -version = "0.27.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" -dependencies = [ - "http", - "hyper", - "hyper-util", - "rustls", - "rustls-native-certs", - "tokio", - "tokio-rustls", - "tower-service", -] - -[[package]] -name = "hyper-util" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" -dependencies = [ - "base64 0.22.1", - "bytes", - "futures-channel", - "futures-util", - "http", - "http-body", - "hyper", - "ipnet", - "libc", - "percent-encoding", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.65" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "log", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "icu_collections" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" -dependencies = [ - "displaydoc", - "potential_utf", - "utf8_iter", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" -dependencies = [ - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" - -[[package]] -name = "icu_properties" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" dependencies = [ "icu_collections", "icu_locale_core", @@ -2380,12 +1919,6 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - [[package]] name = "idna" version = "1.1.0" @@ -2467,39 +2000,15 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] -[[package]] -name = "ipnet" -version = "2.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" - [[package]] name = "is_terminal_polyfill" version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.14.0" @@ -2536,23 +2045,7 @@ checksum = "782d32378dddf207193ac91cefb848ad41abb58195c95168e1291227a0832b47" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", -] - -[[package]] -name = "jni" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" -dependencies = [ - "cesu8", - "cfg-if", - "combine", - "jni-sys 0.3.1", - "log", - "thiserror 1.0.69", - "walkdir", - "windows-sys 0.45.0", + "syn", ] [[package]] @@ -2582,7 +2075,7 @@ dependencies = [ "quote", "rustc_version", "simd_cesu8", - "syn 2.0.117", + "syn", ] [[package]] @@ -2610,7 +2103,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" dependencies = [ "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -2634,21 +2127,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "jsonwebtoken" -version = "10.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eba32bfb4ffdeaca3e34431072faf01745c9b26d25504aa7a6cf5684334fc4fc" -dependencies = [ - "base64 0.22.1", - "getrandom 0.2.17", - "js-sys", - "serde", - "serde_json", - "signature", - "zeroize", -] - [[package]] name = "khronos-egl" version = "6.0.0" @@ -2678,12 +2156,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" - [[package]] name = "leb128fmt" version = "0.1.0" @@ -2740,43 +2212,12 @@ dependencies = [ "redox_syscall 0.8.1", ] -[[package]] -name = "libwebrtc" -version = "0.3.43" -dependencies = [ - "cxx", - "jni 0.21.1", - "js-sys", - "lazy_static", - "livekit-runtime", - "log", - "parking_lot", - "rtrb", - "serde", - "serde_json", - "thiserror 2.0.18", - "tokio", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webrtc-sys", -] - [[package]] name = "linebender_resource_handle" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4a5ff6bcca6c4867b1c4fd4ef63e4db7436ef363e0ad7531d1558856bae64f4" -[[package]] -name = "link-cplusplus" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f78c730aaa7d0b9336a299029ea49f9ee53b0ed06e9202e8cb7db9bae7b8c82" -dependencies = [ - "cc", -] - [[package]] name = "linux-raw-sys" version = "0.4.15" @@ -2799,163 +2240,7 @@ checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" name = "litrs" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" - -[[package]] -name = "livekit" -version = "0.8.1" -dependencies = [ - "base64 0.22.1", - "bmrng", - "bytes", - "chrono", - "flate2", - "futures-util", - "lazy_static", - "libloading", - "libwebrtc", - "livekit-api", - "livekit-common", - "livekit-data-stream", - "livekit-datatrack", - "livekit-protocol", - "livekit-runtime", - "log", - "parking_lot", - "prost", - "semver", - "serde", - "serde_json", - "thiserror 1.0.69", - "tokio", - "tokio-stream", -] - -[[package]] -name = "livekit-api" -version = "0.6.1" -dependencies = [ - "base64 0.21.7", - "bytes", - "device-info", - "flate2", - "hmac", - "http", - "jsonwebtoken", - "livekit-common", - "livekit-net", - "livekit-protocol", - "livekit-runtime", - "log", - "os_info", - "parking_lot", - "pbjson-types", - "prost", - "rand", - "reqwest", - "scopeguard", - "serde", - "serde_json", - "sha2", - "signature", - "thiserror 2.0.18", - "tokio", - "url", -] - -[[package]] -name = "livekit-common" -version = "0.1.1" -dependencies = [ - "livekit-protocol", -] - -[[package]] -name = "livekit-data-stream" -version = "0.1.1" -dependencies = [ - "async-compression", - "bmrng", - "bytes", - "chrono", - "from_variants", - "futures-util", - "livekit-common", - "livekit-protocol", - "log", - "parking_lot", - "prost", - "thiserror 2.0.18", - "tokio", - "tokio-stream", - "uuid", -] - -[[package]] -name = "livekit-datatrack" -version = "0.1.13" -dependencies = [ - "anyhow", - "bytes", - "from_variants", - "futures-core", - "futures-util", - "indexmap", - "livekit-protocol", - "livekit-runtime", - "log", - "rand", - "thiserror 2.0.18", - "tokio", - "tokio-stream", -] - -[[package]] -name = "livekit-net" -version = "0.1.2" -dependencies = [ - "async-trait", - "base64 0.21.7", - "bytes", - "futures-util", - "http", - "livekit-runtime", - "log", - "reqwest", - "rustls-native-certs", - "tokio", - "tokio-rustls", - "tokio-tungstenite", - "url", -] - -[[package]] -name = "livekit-protocol" -version = "0.7.12" -dependencies = [ - "pbjson", - "pbjson-types", - "prost", - "serde", -] - -[[package]] -name = "livekit-runtime" -version = "0.4.0" -dependencies = [ - "tokio", - "tokio-stream", -] - -[[package]] -name = "livekit-token-source" -version = "0.1.0" -dependencies = [ - "livekit-net", - "serde", - "serde_json", - "thiserror 2.0.18", -] +checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" [[package]] name = "lock_api" @@ -2981,12 +2266,6 @@ dependencies = [ "imgref", ] -[[package]] -name = "lru-slab" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" - [[package]] name = "maybe-rayon" version = "0.1.1" @@ -3052,12 +2331,6 @@ dependencies = [ "pxfm", ] -[[package]] -name = "multimap" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" - [[package]] name = "naga" version = "29.0.3" @@ -3120,18 +2393,6 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" -[[package]] -name = "nix" -version = "0.31.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d" -dependencies = [ - "bitflags 2.13.0", - "cfg-if", - "cfg_aliases", - "libc", -] - [[package]] name = "no_std_io2" version = "0.9.4" @@ -3180,7 +2441,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -3232,7 +2493,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -3270,8 +2531,8 @@ dependencies = [ "block2 0.5.1", "libc", "objc2 0.5.2", - "objc2-core-data 0.2.2", - "objc2-core-image 0.2.2", + "objc2-core-data", + "objc2-core-image", "objc2-foundation 0.2.2", "objc2-quartz-core 0.2.2", ] @@ -3298,21 +2559,10 @@ dependencies = [ "bitflags 2.13.0", "block2 0.5.1", "objc2 0.5.2", - "objc2-core-location 0.2.2", + "objc2-core-location", "objc2-foundation 0.2.2", ] -[[package]] -name = "objc2-cloud-kit" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c" -dependencies = [ - "bitflags 2.13.0", - "objc2 0.6.4", - "objc2-foundation 0.3.2", -] - [[package]] name = "objc2-contacts" version = "0.2.2" @@ -3336,16 +2586,6 @@ dependencies = [ "objc2-foundation 0.2.2", ] -[[package]] -name = "objc2-core-data" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" -dependencies = [ - "objc2 0.6.4", - "objc2-foundation 0.3.2", -] - [[package]] name = "objc2-core-foundation" version = "0.3.2" @@ -3382,16 +2622,6 @@ dependencies = [ "objc2-metal 0.2.2", ] -[[package]] -name = "objc2-core-image" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006" -dependencies = [ - "objc2 0.6.4", - "objc2-foundation 0.3.2", -] - [[package]] name = "objc2-core-location" version = "0.2.2" @@ -3404,28 +2634,6 @@ dependencies = [ "objc2-foundation 0.2.2", ] -[[package]] -name = "objc2-core-location" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca347214e24bc973fc025fd0d36ebb179ff30536ed1f80252706db19ee452009" -dependencies = [ - "objc2 0.6.4", - "objc2-foundation 0.3.2", -] - -[[package]] -name = "objc2-core-text" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" -dependencies = [ - "bitflags 2.13.0", - "objc2 0.6.4", - "objc2-core-foundation", - "objc2-core-graphics", -] - [[package]] name = "objc2-encode" version = "4.1.0" @@ -3453,7 +2661,6 @@ checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ "bitflags 2.13.0", "block2 0.6.2", - "libc", "objc2 0.6.4", "objc2-core-foundation", ] @@ -3550,16 +2757,16 @@ dependencies = [ "bitflags 2.13.0", "block2 0.5.1", "objc2 0.5.2", - "objc2-cloud-kit 0.2.2", - "objc2-core-data 0.2.2", - "objc2-core-image 0.2.2", - "objc2-core-location 0.2.2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", "objc2-foundation 0.2.2", "objc2-link-presentation", "objc2-quartz-core 0.2.2", "objc2-symbols", "objc2-uniform-type-identifiers", - "objc2-user-notifications 0.2.2", + "objc2-user-notifications", ] [[package]] @@ -3569,18 +2776,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" dependencies = [ "bitflags 2.13.0", - "block2 0.6.2", "objc2 0.6.4", - "objc2-cloud-kit 0.3.2", - "objc2-core-data 0.3.2", "objc2-core-foundation", - "objc2-core-graphics", - "objc2-core-image 0.3.2", - "objc2-core-location 0.3.2", - "objc2-core-text", "objc2-foundation 0.3.2", - "objc2-quartz-core 0.3.2", - "objc2-user-notifications 0.3.2", ] [[package]] @@ -3603,20 +2801,10 @@ dependencies = [ "bitflags 2.13.0", "block2 0.5.1", "objc2 0.5.2", - "objc2-core-location 0.2.2", + "objc2-core-location", "objc2-foundation 0.2.2", ] -[[package]] -name = "objc2-user-notifications" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9df9128cbbfef73cda168416ccf7f837b62737d748333bfe9ab71c245d76613e" -dependencies = [ - "objc2 0.6.4", - "objc2-foundation 0.3.2", -] - [[package]] name = "object" version = "0.37.3" @@ -3638,12 +2826,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" -[[package]] -name = "openssl-probe" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" - [[package]] name = "orbclient" version = "0.3.55" @@ -3673,22 +2855,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "os_info" -version = "3.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf20a545b305cf1da722b236b5155c9bb35f1d5ceb28c048bd96ca842f41b5b" -dependencies = [ - "android_system_properties", - "log", - "nix", - "objc2 0.6.4", - "objc2-foundation 0.3.2", - "objc2-ui-kit 0.3.2", - "serde", - "windows-sys 0.61.2", -] - [[package]] name = "owned_ttf_parser" version = "0.25.1" @@ -3741,43 +2907,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec" -[[package]] -name = "pbjson" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1030c719b0ec2a2d25a5df729d6cff1acf3cc230bf766f4f97833591f7577b90" -dependencies = [ - "base64 0.21.7", - "serde", -] - -[[package]] -name = "pbjson-build" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2580e33f2292d34be285c5bc3dba5259542b083cfad6037b6d70345f24dcb735" -dependencies = [ - "heck 0.4.1", - "itertools 0.11.0", - "prost", - "prost-types", -] - -[[package]] -name = "pbjson-types" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18f596653ba4ac51bdecbb4ef6773bc7f56042dc13927910de1684ad3d32aa12" -dependencies = [ - "bytes", - "chrono", - "pbjson", - "pbjson-build", - "prost", - "prost-build", - "serde", -] - [[package]] name = "peniko" version = "0.6.1" @@ -3838,7 +2967,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -3867,7 +2996,7 @@ checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -3987,7 +3116,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.117", + "syn", ] [[package]] @@ -4024,60 +3153,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4488a4a36b9a4ba6b9334a32a39971f77c1436ec82c38707bce707699cc3bbcb" dependencies = [ "quote", - "syn 2.0.117", -] - -[[package]] -name = "prost" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" -dependencies = [ - "bytes", - "prost-derive", -] - -[[package]] -name = "prost-build" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4" -dependencies = [ - "bytes", - "heck 0.5.0", - "itertools 0.12.1", - "log", - "multimap", - "once_cell", - "petgraph", - "prettyplease", - "prost", - "prost-types", - "regex", - "syn 2.0.117", - "tempfile", -] - -[[package]] -name = "prost-derive" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" -dependencies = [ - "anyhow", - "itertools 0.12.1", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "prost-types" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0" -dependencies = [ - "prost", + "syn", ] [[package]] @@ -4111,61 +3187,6 @@ dependencies = [ "serde", ] -[[package]] -name = "quinn" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" -dependencies = [ - "bytes", - "cfg_aliases", - "pin-project-lite", - "quinn-proto", - "quinn-udp", - "rustc-hash 2.1.2", - "rustls", - "socket2", - "thiserror 2.0.18", - "tokio", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-proto" -version = "0.11.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" -dependencies = [ - "bytes", - "getrandom 0.3.4", - "lru-slab", - "rand", - "ring", - "rustc-hash 2.1.2", - "rustls", - "rustls-pki-types", - "slab", - "thiserror 2.0.18", - "tinyvec", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-udp" -version = "0.5.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" -dependencies = [ - "cfg_aliases", - "libc", - "once_cell", - "socket2", - "tracing", - "windows-sys 0.60.2", -] - [[package]] name = "quote" version = "1.0.45" @@ -4194,7 +3215,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ "rand_chacha", - "rand_core 0.9.5", + "rand_core", ] [[package]] @@ -4204,16 +3225,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.5", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.17", + "rand_core", ] [[package]] @@ -4247,7 +3259,7 @@ dependencies = [ "built", "cfg-if", "interpolate_name", - "itertools 0.14.0", + "itertools", "libc", "libfuzzer-sys", "log", @@ -4391,66 +3403,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" -[[package]] -name = "reqwest" -version = "0.12.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" -dependencies = [ - "base64 0.22.1", - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-rustls", - "hyper-util", - "js-sys", - "log", - "percent-encoding", - "pin-project-lite", - "quinn", - "rustls", - "rustls-native-certs", - "rustls-pki-types", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "tokio", - "tokio-rustls", - "tower", - "tower-http", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - [[package]] name = "rgb" version = "0.8.53" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" -[[package]] -name = "ring" -version = "0.17.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" -dependencies = [ - "cc", - "cfg-if", - "getrandom 0.2.17", - "libc", - "untrusted", - "windows-sys 0.52.0", -] - [[package]] name = "ron" version = "0.12.2" @@ -4465,12 +3423,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "rtrb" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ade083ccbb4bf536df69d1f6432cc23deb7acccff86b183f3923a6fd56a1153" - [[package]] name = "rust-dev-client" version = "0.1.0" @@ -4481,9 +3433,6 @@ dependencies = [ "env_logger", "futures", "image", - "livekit", - "livekit-api", - "livekit-token-source", "log", "parking_lot", "serde", @@ -4545,82 +3494,19 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "rustls" -version = "0.23.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b" -dependencies = [ - "log", - "once_cell", - "ring", - "rustls-pki-types", - "rustls-webpki", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls-native-certs" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dab5152771c58876a2146916e53e35057e1a4dfa2b9df0f0305b07f611fdea4d" -dependencies = [ - "openssl-probe", - "rustls-pki-types", - "schannel", - "security-framework", -] - -[[package]] -name = "rustls-pki-types" -version = "1.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9" -dependencies = [ - "web-time", - "zeroize", -] - -[[package]] -name = "rustls-webpki" -version = "0.103.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" -dependencies = [ - "ring", - "rustls-pki-types", - "untrusted", -] - [[package]] name = "rustversion" version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" -[[package]] -name = "ryu" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" - [[package]] name = "same-file" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "schannel" -version = "0.1.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" dependencies = [ - "windows-sys 0.61.2", + "winapi-util", ] [[package]] @@ -4635,12 +3521,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "scratch" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d68f2ec51b097e4c1a75b681a8bec621909b5e91f15bb7b840c4f2f7b01148b2" - [[package]] name = "sctk-adwaita" version = "0.10.1" @@ -4654,29 +3534,6 @@ dependencies = [ "tiny-skia", ] -[[package]] -name = "security-framework" -version = "3.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" -dependencies = [ - "bitflags 2.13.0", - "core-foundation 0.10.1", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "self_cell" version = "1.2.2" @@ -4716,7 +3573,11 @@ checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", +<<<<<<< HEAD "syn 3.0.3", +======= + "syn", +>>>>>>> 8eb1c82 (Make cargo toml use real deps) ] [[package]] @@ -4740,41 +3601,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", + "syn", ] [[package]] @@ -4793,15 +3620,6 @@ dependencies = [ "libc", ] -[[package]] -name = "signature" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" -dependencies = [ - "rand_core 0.6.4", -] - [[package]] name = "simd-adler32" version = "0.3.9" @@ -4982,35 +3800,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - [[package]] name = "syn" version = "2.0.117" @@ -5023,6 +3812,7 @@ dependencies = [ ] [[package]] +<<<<<<< HEAD name = "syn" version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -5043,6 +3833,8 @@ dependencies = [ ] [[package]] +======= +>>>>>>> 8eb1c82 (Make cargo toml use real deps) name = "synstructure" version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -5050,7 +3842,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -5101,7 +3893,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -5112,7 +3904,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -5164,21 +3956,6 @@ dependencies = [ "zerovec", ] -[[package]] -name = "tinyvec" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - [[package]] name = "tokio" version = "1.53.1" @@ -5204,58 +3981,7 @@ checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", -] - -[[package]] -name = "tokio-rustls" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" -dependencies = [ - "rustls", - "tokio", -] - -[[package]] -name = "tokio-stream" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", - "tokio-util", -] - -[[package]] -name = "tokio-tungstenite" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f72a05e828585856dacd553fba484c242c46e391fb0e58917c942ee9202915c" -dependencies = [ - "futures-util", - "log", - "rustls", - "rustls-native-certs", - "rustls-pki-types", - "tokio", - "tokio-rustls", - "tungstenite", -] - -[[package]] -name = "tokio-util" -version = "0.7.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", + "syn", ] [[package]] @@ -5288,51 +4014,6 @@ dependencies = [ "winnow", ] -[[package]] -name = "tower" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" -dependencies = [ - "futures-core", - "futures-util", - "pin-project-lite", - "sync_wrapper", - "tokio", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-http" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" -dependencies = [ - "bitflags 2.13.0", - "bytes", - "futures-util", - "http", - "http-body", - "pin-project-lite", - "tower", - "tower-layer", - "tower-service", - "url", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - [[package]] name = "tracing" version = "0.1.44" @@ -5353,7 +4034,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -5365,37 +4046,12 @@ dependencies = [ "once_cell", ] -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - [[package]] name = "ttf-parser" version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" -[[package]] -name = "tungstenite" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c01152af293afb9c7c2a57e4b559c5620b421f6d133261c60dd2d0cdb38e6b8" -dependencies = [ - "bytes", - "data-encoding", - "http", - "httparse", - "log", - "rand", - "rustls", - "rustls-pki-types", - "sha1", - "thiserror 2.0.18", - "url", -] - [[package]] name = "type-map" version = "0.5.1" @@ -5411,12 +4067,6 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" -[[package]] -name = "typenum" -version = "1.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" - [[package]] name = "uds_windows" version = "1.2.1" @@ -5458,12 +4108,6 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" -[[package]] -name = "untrusted" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" - [[package]] name = "url" version = "2.5.8" @@ -5494,7 +4138,6 @@ version = "1.23.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "144d6b123cef80b301b8f72a9e2ca4370ddec21950d0a103dd22c437006d2db7" dependencies = [ - "getrandom 0.4.2", "js-sys", "serde_core", "wasm-bindgen", @@ -5555,15 +4198,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - [[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" @@ -5630,7 +4264,7 @@ dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn", "wasm-bindgen-shared", ] @@ -5839,7 +4473,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fc95580916af1e68ff6a7be07446fc5db73ebf71cf092de939bbf5f7e189f72" dependencies = [ "core-foundation 0.10.1", - "jni 0.22.4", + "jni", "log", "ndk-context", "objc2 0.6.4", @@ -5848,32 +4482,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "webrtc-sys" -version = "0.3.40" -dependencies = [ - "cc", - "cxx", - "cxx-build", - "glob", - "log", - "pkg-config", - "webrtc-sys-build", -] - -[[package]] -name = "webrtc-sys-build" -version = "0.3.18" -dependencies = [ - "anyhow", - "fs2", - "regex", - "reqwest", - "scratch", - "semver", - "zip", -] - [[package]] name = "weezl" version = "0.1.12" @@ -6058,22 +4666,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - [[package]] name = "winapi-util" version = "0.1.11" @@ -6083,12 +4675,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - [[package]] name = "windows" version = "0.62.2" @@ -6142,7 +4728,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -6153,7 +4739,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -6190,15 +4776,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - [[package]] name = "windows-sys" version = "0.52.0" @@ -6235,21 +4812,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - [[package]] name = "windows-targets" version = "0.52.6" @@ -6292,12 +4854,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -6310,12 +4866,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -6328,12 +4878,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -6358,12 +4902,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -6376,12 +4914,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -6394,12 +4926,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -6412,12 +4938,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -6513,7 +5033,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" dependencies = [ "anyhow", - "heck 0.5.0", + "heck", "wit-parser", ] @@ -6524,10 +5044,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" dependencies = [ "anyhow", - "heck 0.5.0", + "heck", "indexmap", "prettyplease", - "syn 2.0.117", + "syn", "wasm-metadata", "wit-bindgen-core", "wit-component", @@ -6543,7 +5063,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.117", + "syn", "wit-bindgen-core", "wit-bindgen-rust", ] @@ -6679,7 +5199,7 @@ checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", "synstructure", ] @@ -6736,7 +5256,7 @@ checksum = "10da05367f3a7b7553c8cdf8fa91aee6b64afebe32b51c95177957efc47ca3a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", "zbus-lockstep", "zbus_xml", "zvariant", @@ -6751,7 +5271,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.117", + "syn", "zbus_names", "zvariant", "zvariant_utils", @@ -6797,7 +5317,7 @@ checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -6817,30 +5337,10 @@ checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", "synstructure", ] -[[package]] -name = "zeroize" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "zerotrie" version = "0.2.4" @@ -6871,19 +5371,7 @@ checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", -] - -[[package]] -name = "zip" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" -dependencies = [ - "byteorder", - "crc32fast", - "crossbeam-utils", - "flate2", + "syn", ] [[package]] @@ -6939,7 +5427,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.117", + "syn", "zvariant_utils", ] @@ -6952,6 +5440,6 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", + "syn", "winnow", ] diff --git a/Cargo.toml b/Cargo.toml index fd83b34..5df2831 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,16 +18,16 @@ tokio = { version = "1", features = ["full", "parking_lot"] } # egui-wgpu 0.35 requires wgpu ^29.0; "29.0" resolves to a compatible 29.0.x. wgpu = "29.0" winit = { version = "0.30.13", features = [ "android-native-activity" ] } -# livekit = { version = "0.7.49", features = ["rustls-tls-native-roots"] } -# livekit-api = { version = "0.5.4", default-features = false, features = ["access-token"] } -# livekit-token-source = { version = "0.1.0" } +livekit = { version = "0.7.49", features = ["rustls-tls-native-roots"] } +livekit-api = { version = "0.5.4", default-features = false, features = ["access-token"] } +livekit-token-source = { version = "0.1.0" } # For local SDK development, comment out the three lines above and uncomment these # (clone https://github.com/livekit/rust-sdks to ../rust-sdks first; see # "Building against a local rust-sdks" in README.md): -livekit = { path = "../rust-sdks/livekit", features = ["rustls-tls-native-roots"] } -livekit-api = { path = "../rust-sdks/livekit-api", default-features = false, features = ["access-token"] } -livekit-token-source = { path = "../rust-sdks/livekit-token-source" } +# livekit = { path = "../rust-sdks/livekit", features = ["rustls-tls-native-roots"] } +# livekit-api = { path = "../rust-sdks/livekit-api", default-features = false, features = ["access-token"] } +# livekit-token-source = { path = "../rust-sdks/livekit-token-source" } [package.metadata.bundle] name = "LiveKit Client" From 203cc2264470973d380680b057eaf87aaef6f5a4 Mon Sep 17 00:00:00 2001 From: Max Heimbrock <43608204+MaxHeimbrock@users.noreply.github.com> Date: Mon, 3 Aug 2026 14:32:33 +0200 Subject: [PATCH 09/11] Needed for rebase --- Cargo.lock | 7 ------- 1 file changed, 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4a76050..cdbc86a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3573,11 +3573,7 @@ checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", -<<<<<<< HEAD "syn 3.0.3", -======= - "syn", ->>>>>>> 8eb1c82 (Make cargo toml use real deps) ] [[package]] @@ -3812,7 +3808,6 @@ dependencies = [ ] [[package]] -<<<<<<< HEAD name = "syn" version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3833,8 +3828,6 @@ dependencies = [ ] [[package]] -======= ->>>>>>> 8eb1c82 (Make cargo toml use real deps) name = "synstructure" version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" From c00f5550a9eafd0d4af71e930c0689912f85d365 Mon Sep 17 00:00:00 2001 From: Max Heimbrock <43608204+MaxHeimbrock@users.noreply.github.com> Date: Mon, 3 Aug 2026 14:34:05 +0200 Subject: [PATCH 10/11] Adapt to stream options builder API StreamTextOptions and StreamByteOptions no longer implement Default in the local rust-sdks checkout; construct them via new_with_topic and with_destination_identities instead. Co-Authored-By: Claude Fable 5 --- src/service.rs | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/service.rs b/src/service.rs index 7c7595c..847879c 100644 --- a/src/service.rs +++ b/src/service.rs @@ -372,19 +372,13 @@ async fn service_task(inner: Arc, mut cmd_rx: mpsc::UnboundedRecei tokio::spawn(async move { let result = match payload { DataStreamPayload::Text(text) => { - let options = StreamTextOptions { - topic, - destination_identities, - ..Default::default() - }; + let options = StreamTextOptions::new_with_topic(topic) + .with_destination_identities(destination_identities); local.send_text(&text, options).await.map(|info| info.id) } DataStreamPayload::Bytes(bytes) => { - let options = StreamByteOptions { - topic, - destination_identities, - ..Default::default() - }; + let options = StreamByteOptions::new_with_topic(topic) + .with_destination_identities(destination_identities); local.send_bytes(bytes, options).await.map(|info| info.id) } }; From 9dc6b7cfc77ec41fc030b84ab52ffc6bd755560c Mon Sep 17 00:00:00 2001 From: Max Heimbrock <43608204+MaxHeimbrock@users.noreply.github.com> Date: Wed, 5 Aug 2026 12:28:46 +0200 Subject: [PATCH 11/11] Adapted to newest version --- src/connect.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/connect.rs b/src/connect.rs index 0c7329d..d36d58e 100644 --- a/src/connect.rs +++ b/src/connect.rs @@ -1,5 +1,5 @@ use crate::ui::{labeled_field::LabeledTextEdit, prominent_button::ProminentButton}; -use livekit_token_source::{TokenSource, TokenSourceFetchOptions}; +use livekit_token_source::{TokenSource, TokenSourceConfigurable, TokenSourceFetchOptions}; /// How a room connection is authenticated. The methods that target a known /// server carry its URL; the token-source method learns it from the development token server. @@ -54,7 +54,8 @@ impl Auth { token_server_id, options, } => { - let token_source = TokenSource::development_token_server(token_server_id.to_owned()); + let token_source = + TokenSource::development_token_server(token_server_id.to_owned()); let response = token_source .fetch(options) .await @@ -69,7 +70,9 @@ impl Auth { pub fn target_label(&self) -> &str { match self { Auth::Token { url, .. } | Auth::ApiKey { url, .. } => url, - Auth::TokenSource { token_server_id, .. } => token_server_id, + Auth::TokenSource { + token_server_id, .. + } => token_server_id, } } } @@ -224,7 +227,7 @@ impl ConnectView { options = options.with_agent_metadata(v); } if let Some(v) = opt(&self.ts_agent_deployment) { - options = options.with_agent_deployment(v); + options = options.with_deployment(v); } Auth::TokenSource { token_server_id: self.token_server_id.clone(),