Refresh login screen with server list UI and refactor platform config
Build Mumble Web 2 / windows_build (push) Failing after 30s
Build Mumble Web 2 / linux_build (push) Failing after 29s
Build Mumble Web 2 / android_build (push) Failing after 27s

Redesign login view with server card list, add/edit/delete modals,
and per-server ping status display. Rename ProxyOverrides to ClientConfig,
remove ConfigSystemInterface in favor of direct platform methods
(load_config, load_username, set_default_username, load_server_url),
remove SharedState threading in favor of global STATE, simplify
network_loop and audio setup, update proxy endpoint from /overrides
to /config, and clean up desktop launch configuration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-05 04:10:50 +00:00
committed by Sam Sartor
parent 59afbdab7b
commit 8bbb3140ef
22 changed files with 1185 additions and 765 deletions
+16 -29
View File
@@ -1,16 +1,15 @@
/// Stub implementation of the platform interface, so that we can
/// `cargo check` without any --feature flags.
use crate::{app::SharedState, effects::AudioProcessor};
use crate::effects::AudioProcessor;
use color_eyre::eyre::Error;
use dioxus::hooks::UnboundedReceiver;
use mumble_web2_common::{ProxyOverrides, ServerEntry, ServerStatus};
use mumble_web2_common::{ClientConfig, ServerEntry, ServerStatus};
use std::future::Future;
pub struct StubPlatform;
impl super::PlatformInterface for StubPlatform {
type AudioSystem = StubAudioSystem;
type ConfigSystem = StubConfigSystem;
fn init_logging() {
panic!("stubbed platform")
@@ -24,8 +23,7 @@ impl super::PlatformInterface for StubPlatform {
_address: String,
_username: String,
_event_rx: &mut UnboundedReceiver<crate::app::Command>,
_overrides: &ProxyOverrides,
_state: SharedState,
_gui_config: &ClientConfig,
) -> impl Future<Output = Result<(), Error>> {
async { panic!("stubbed platform") }
}
@@ -43,10 +41,22 @@ impl super::PlatformInterface for StubPlatform {
async { panic!("stubbed platform") }
}
fn load_proxy_overrides() -> impl Future<Output = color_eyre::Result<ProxyOverrides>> {
fn load_config() -> impl Future<Output = color_eyre::Result<ClientConfig>> {
async { panic!("stubbed platform") }
}
fn load_username() -> Option<String> {
panic!("stubbed platform")
}
fn load_server_url() -> Option<String> {
panic!("stubbed platform")
}
fn set_default_username(_username: &str) -> Option<()> {
panic!("stubbed platform")
}
fn set_default_server(_server: &str) -> Option<()> {
panic!("stubbed platform")
}
@@ -97,29 +107,6 @@ impl super::AudioPlayerInterface for StubAudioPlayer {
}
}
#[derive(Clone)]
pub struct StubConfigSystem;
impl super::ConfigSystemInterface for StubConfigSystem {
fn new() -> Result<Self, Error> {
panic!("stubbed platform")
}
fn config_get<T>(&self, key: &str) -> Option<T>
where
T: serde::de::DeserializeOwned,
{
panic!("stubbed platform")
}
fn config_set<T>(&self, key: &str, value: &T)
where
T: serde::Serialize,
{
panic!("stubbed platform")
}
}
#[allow(unused)]
pub struct SpawnHandle;