⬆️ version bump to v0.3.6

- Bump crate and app versions from `v0.3.5` to v"\n- Add retry logic with exponential backoff in `fetchRenderers`
- Improve re-registration robustness in `useWebRenderer` (stale player handling, instanceId error recovery)
- Trigger forced renderer refresh after successful registration
This commit is contained in:
2026-04-05 22:37:15 +02:00
parent 1459958978
commit 813fc97fa1
8 changed files with 77 additions and 26 deletions

View File

@@ -0,0 +1,15 @@
pub fn extract_browser_name(ua: &str) -> &str {
if ua.contains("Edg/") || ua.contains("EdgA/") {
"Edge"
} else if ua.contains("OPR/") || ua.contains("Opera") {
"Opera"
} else if ua.contains("Chrome/") {
"Chrome"
} else if ua.contains("Firefox/") {
"Firefox"
} else if ua.contains("Safari/") {
"Safari"
} else {
"Browser"
}
}

View File

@@ -6,6 +6,7 @@
//! - Les commandes UPnP sont relayées vers le pipeline audio via PipelineControl
mod adapter;
mod helpers;
mod register;
mod stream;
@@ -13,6 +14,7 @@ mod stream;
mod config;
pub use adapter::BrowserAdapter;
pub use helpers::extract_browser_name;
#[cfg(feature = "pmoserver")]
pub use config::WebRendererExt;

View File

@@ -17,6 +17,7 @@ use pmomediarenderer::PipelineControl;
use pmomediarenderer::{DeviceCommand, MediaRendererRegistry};
use crate::adapter::BrowserAdapter;
use crate::helpers::extract_browser_name;
#[derive(Debug, serde::Deserialize)]
pub struct PlayerStateReport {
@@ -51,11 +52,15 @@ pub async fn register_handler(
"WebRenderer: register request"
);
let browser_name = extract_browser_name(&req.user_agent);
let friendly_name = format!("Web Audio {}", browser_name);
match registry
.register_or_reconnect(
&req.instance_id,
"/api/webrenderer",
"PMOMusic WebRenderer/2.0",
&friendly_name,
|state| Arc::new(BrowserAdapter::new(state)),
)
.await