Flutter UI fixes: - Fix stale channel badge/speaker when moved by others (derive current channel from ownClientId instead of optimistic local state) - Fix Linux PTT via focused fallback key handler - Distinguish ServerQuery clients with terminal icon in client list - Reduce duplicate current-channel badge display - Prevent PTT key-bind save from permanently closing voice settings - Fix Linux GTK reopen-after-close (quit app on window destroy) - Fix focused PTT: consume key events, release held keys on disconnect/leave-channel/mode/backend changes, suppress stale errors Flutter Rust bridge: - Thread is_server_query flag through protocol→bridge→Dart - Add own_client_id to BridgeSnapshot DTO - Add log_file_path_str() for platform log path queries Rust protocol: - Add ServerQuery test coverage (query_client_type_maps_to_server_query_flag) - Split reqwest TLS: native-tls for desktop/iOS, rustls for Android Rust audio: - Upgrade cpal 0.16→0.17.3 with API adjustments (SampleRate, description()) - Suppress Android-only dead-code warnings (open_log_file, keyring_account) Android build tooling: - tools/build-opus-android.sh: NDK auto-discovery, correct CMake Android variables (ANDROID_ABI, ANDROID_PLATFORM), portable baseline - tools/build-android-rust.sh: build+copy Rust cdylib for arm64-v8a, armeabi-v7a, x86_64 into android/app/src/main/jniLibs/ - Add jniLibs/ to .gitignore Rust bridge: - Guard open_log_file() on non-Android (Android uses logcat)
42 lines
1.9 KiB
TOML
42 lines
1.9 KiB
TOML
[package]
|
|
name = "chanora_protocol"
|
|
description = "Chanora protocol adapter — isolates tsclientlib behind a typed boundary. No tsclientlib types may cross out of this crate per SAD-067 / SysDes-011 / SysDes-029."
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
rust-version.workspace = true
|
|
authors.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
publish.workspace = true
|
|
|
|
[dependencies]
|
|
thiserror.workspace = true
|
|
tracing.workspace = true
|
|
serde.workspace = true
|
|
once_cell = "1"
|
|
|
|
# tsclientlib is git-only and not on crates.io. The "audio" feature
|
|
# pulls in `audiopus` only — `sdl2` is a dev-dep used by upstream
|
|
# examples; the library itself does not link SDL.
|
|
tsclientlib = { git = "https://github.com/ReSpeak/tsclientlib.git", rev = "04aa2491", default-features = false, features = ["audio"] }
|
|
# tsproto_packets exposes OutAudio / InAudioBuf / AudioData /
|
|
# CodecType / Direction. Pinning to the same git rev as tsclientlib
|
|
# avoids any version-skew confusion.
|
|
tsproto-packets = { git = "https://github.com/ReSpeak/tsclientlib.git", rev = "04aa2491" }
|
|
tsproto-types = { git = "https://github.com/ReSpeak/tsclientlib.git", rev = "04aa2491" }
|
|
|
|
# Async runtime utilities used by the connection task.
|
|
tokio = { version = "1", features = ["macros", "rt-multi-thread", "time", "sync"] }
|
|
futures = "0.3"
|
|
async-trait = "0.1"
|
|
|
|
[target.'cfg(not(target_os = "android"))'.dependencies]
|
|
# Desktop/iOS: native TLS maps to the platform TLS backend (Security.framework
|
|
# on Apple, SChannel on Windows, system OpenSSL on Linux/BSD).
|
|
reqwest = { version = "0.13", default-features = false, features = ["charset", "http2", "native-tls"] }
|
|
|
|
[target.'cfg(target_os = "android")'.dependencies]
|
|
# Android cross-builds should not pull OpenSSL. Use rustls here while keeping
|
|
# native-tls for Apple targets where aws-lc/rustls is problematic for iOS.
|
|
reqwest = { version = "0.13", default-features = false, features = ["charset", "http2", "rustls"] }
|