From a10805c51b2b6b79f67fa603f61be9c2e1961d84 Mon Sep 17 00:00:00 2001 From: Munka Date: Mon, 14 Sep 2026 12:12:37 -0500 Subject: [PATCH] v1.14.0: las pestanas se presentan como navegador de escritorio Google degrada sus apps cuando detecta un WebView embebido: Sheets abria en blanco y la sesion no terminaba de asentarse aunque la cuenta ya estuviera iniciada. Ahora cada pestana declara un User-Agent de Chrome de escritorio (por plataforma), que es lo que hacen los clientes de escritorio que embeben Google. Co-Authored-By: Claude Opus 5 --- package.json | 2 +- src-tauri/Cargo.lock | 2 +- src-tauri/Cargo.toml | 2 +- src-tauri/src/lib.rs | 11 +++++++++++ src-tauri/tauri.conf.json | 2 +- 5 files changed, 15 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index f7e5063..0bf1be8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "labstream-desktop", - "version": "1.13.0", + "version": "1.14.0", "private": true, "description": "App de escritorio (Windows) que envuelve Labstream OS — cliente del servidor del NAS.", "scripts": { diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 51b3cac..f926608 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -2366,7 +2366,7 @@ dependencies = [ [[package]] name = "labstream-desktop" -version = "1.13.0" +version = "1.14.0" dependencies = [ "active-win-pos-rs", "device_query", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 232ea4d..f1ce527 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "labstream-desktop" -version = "1.13.0" +version = "1.14.0" description = "Cliente de escritorio de Labstream OS" authors = ["Labstream SAS"] edition = "2021" diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index a618bdc..7bcf2be 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -67,6 +67,16 @@ const GOOGLE_HOSTS: &[&str] = &[ "myaccount.google.com", ]; +// Cadena de navegador de escritorio. Sin esto, WebView2 se anuncia como control embebido y +// Google Sheets/Docs se quedan en blanco. Se declara por plataforma porque Google tambien +// mira la coherencia entre el sistema declarado y el resto de la cadena. +#[cfg(target_os = "windows")] +const UA_ESCRITORIO: &str = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"; +#[cfg(target_os = "macos")] +const UA_ESCRITORIO: &str = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"; +#[cfg(not(any(target_os = "windows", target_os = "macos")))] +const UA_ESCRITORIO: &str = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"; + fn is_google_host(host: &str) -> bool { let h = host.to_ascii_lowercase(); GOOGLE_HOSTS.iter().any(|d| h == *d || h.ends_with(&format!(".{}", d))) @@ -603,6 +613,7 @@ fn create_tab(app: &AppHandle, url: Option, activate: boo let init = INIT_JS_TPL.replace("__LABEL__", &label).replace("__ORIGIN__", SERVER_URL); let app_zoom = app.clone(); let builder = WebviewBuilder::new(&label, WebviewUrl::External(parsed)) + .user_agent(UA_ESCRITORIO) .initialization_script(&init) // Deja pasar las descargas (entregables, exportaciones) Y avisa al terminar. // El aviso no es un adorno: en WebView2 la interfaz de descargas queda SIEMPRE diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index a16afb5..04f5a5f 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "Labstream OS", - "version": "1.13.0", + "version": "1.14.0", "identifier": "co.labstream.os", "build": { "frontendDist": "../dist"