2 Commits

Author SHA1 Message Date
sam 207923978d working mumble web tui
Build Mumble Web 2 / linux_build (push) Failing after 44s
Build Mumble Web 2 / macos_build (push) Successful in 1m0s
Build Mumble Web 2 / windows_build (push) Successful in 2m58s
Build Mumble Web 2 / android_build (push) Successful in 4m53s
Assisted-by: Claude:claude-opus-4-7
2026-05-05 00:15:35 -06:00
sam 4dca40ef61 make reactivity system pluggable 2026-05-04 23:37:14 -06:00
4 changed files with 11 additions and 17 deletions
+4 -11
View File
@@ -10,25 +10,18 @@ use crate::imp::SpawnHandle;
#[cfg(not(feature = "embed-denoiser"))] #[cfg(not(feature = "embed-denoiser"))]
async fn denoiser_model_bytes() -> color_eyre::Result<Cow<'static, [u8]>> { async fn denoiser_model_bytes() -> color_eyre::Result<Cow<'static, [u8]>> {
use color_eyre::eyre::eyre;
use manganis::{asset, Asset}; use manganis::{asset, Asset};
static DF_MODEL: Asset = asset!("/assets/DeepFilterNet3_ll_onnx.tar.gz"); static DF_MODEL: Asset = asset!("/assets/DeepFilterNet3_ll_onnx.tar.gz");
let bytes = dioxus_asset_resolver::read_asset_bytes(&DF_MODEL.to_string()) let bytes = dioxus_asset_resolver::read_asset_bytes(&DF_MODEL.to_string()).await?;
.await
.map_err(|err| eyre!("could not read denoising model: {err}"))?;
Ok(Cow::Owned(bytes)) Ok(Cow::Owned(bytes))
} }
#[cfg(feature = "embed-denoiser")] #[cfg(feature = "embed-denoiser")]
async fn denoiser_model_bytes() -> color_eyre::Result<Cow<'static, [u8]>> { async fn denoiser_model_bytes() -> color_eyre::Result<Cow<'static, [u8]>> {
static DF_MODEL: &[u8] = include_bytes!(concat!( static DF_MODEL: &[u8] =
env!("CARGO_MANIFEST_DIR"), include_bytes!(concat!(env!("CARGO_MANIFEST_DIR"), "/assets/DeepFilterNet3_ll_onnx.tar.gz"));
"/assets/DeepFilterNet3_ll_onnx.tar.gz"
));
Ok(Cow::Borrowed(DF_MODEL)) Ok(Cow::Borrowed(DF_MODEL))
} }
// TODO: make this user configurable. // TODO: make this user configurable.
static DEFAULT_NOISE_FLOOR: f32 = 0.001; static DEFAULT_NOISE_FLOOR: f32 = 0.001;
// 200ms hold at 48kHz sample rate // 200ms hold at 48kHz sample rate
@@ -67,7 +60,7 @@ fn with_denoising_model<O>(spawn: &SpawnHandle, func: impl FnOnce(&mut DfTract)
let model_bytes = match denoiser_model_bytes().await { let model_bytes = match denoiser_model_bytes().await {
Ok(b) => b, Ok(b) => b,
Err(e) => { Err(e) => {
error!("{e}"); error!("could not read denoising model: {e:?}");
return; return;
} }
}; };
+1 -1
View File
@@ -443,7 +443,7 @@ pub async fn network_connect(
username: String, username: String,
event_rx: &mut UnboundedReceiver<Command>, event_rx: &mut UnboundedReceiver<Command>,
overrides: &ProxyOverrides, overrides: &ProxyOverrides,
state: SharedState<impl Reactivity>, state: SharedState,
) -> Result<(), Error> { ) -> Result<(), Error> {
info!("connecting"); info!("connecting");
-2
View File
@@ -9,5 +9,3 @@ pub use imp::*;
pub use mainloop::*; pub use mainloop::*;
pub use mime_guess; pub use mime_guess;
pub use reqwest; pub use reqwest;
pub const VERSION: Option<&str> = option_env!("MUMBLE_WEB2_VERSION");
+6 -3
View File
@@ -3,10 +3,12 @@
use dioxus::prelude::*; use dioxus::prelude::*;
use mumble_web2_client::{ use mumble_web2_client::{
network_entrypoint, reqwest, AudioSettings, ChannelId, Command, ConfigSystem, network_entrypoint, reqwest, AudioSettings, ChannelId, Command, ConfigSystem,
ConfigSystemInterface as _, ConnectionState, Platform, PlatformInterface as _, UserId, ConfigSystemInterface as _, ConnectionState, Platform, PlatformInterface as _, ServerState,
UserState, VERSION, UserId, UserState,
}; };
use mumble_web2_common::{ProxyOverrides, ServerStatus}; use mumble_web2_common::{ProxyOverrides, ServerStatus};
use std::collections::{HashMap, HashSet};
use std::{fmt, sync::Arc};
use Command::*; use Command::*;
use ConnectionState::*; use ConnectionState::*;
@@ -593,12 +595,13 @@ pub fn LoginView(overrides: Resource<ProxyOverrides>) -> Element {
), ),
Connected => unreachable!(), Connected => unreachable!(),
}; };
let version = option_env!("MUMBLE_WEB2_VERSION");
rsx!( rsx!(
div { div {
class: "login", class: "login",
h1 { h1 {
"Mumble Web" "Mumble Web"
match VERSION { match version {
Some(v) => rsx!(" " span { class: "login_version", "({v})" }), Some(v) => rsx!(" " span { class: "login_version", "({v})" }),
None => rsx!(), None => rsx!(),
} }