OnlyOffice fallaba al editar y al descargar SOLO en la app de escritorio de Windows. En el navegador y en la app de macOS iba bien. La causa estaba en el propio shell, no en el servidor de documentos. En Windows, wry inyecta los scripts de inicio en TODOS los marcos e ignora for_main_frame_only (wry-0.55.1/src/webview2/mod.rs:492-495, documentado en su lib.rs:990); macOS si respeta la bandera (wkwebview/mod.rs:643-645). Y __TAURI__ viaja con ellos, asi que la guarda «if (!T || !T.event) return» no frenaba nada. Resultado: INIT_JS_TPL corria DENTRO del iframe del Document Server con ORIGIN apuntando todavia a la app; como alli location.href es el de docs.*, cada enlace del editor se resolvia contra ese origen, daba isExt() = true y se desviaba al navegador del sistema —que no tiene la sesion: «no se puede acceder»—, y window.open devolvia null. Cambios: 1. Guarda de marco y origen al principio del script inyectado: solo actua en el documento PRINCIPAL y solo en el origen de la app. En macOS es un no-op (alli nunca corrio en subframes). De paso arregla que en Windows el shell tambien secuestrara los enlaces de las paginas de SSO. 2. El manejador de atajos ignora e.altKey. AltGr enciende ctrlKey en Windows, asi que escribir [ o ] con teclado espanol disparaba history.back()/forward() en vez de escribir el caracter — en el editor y en cualquier campo de la app. 3. Aviso nativo al terminar una descarga. No es un adorno: wry trae un manejador de descargas por defecto (wry-0.55.1/src/lib.rs:830), de modo que en WebView2 siempre se registra DownloadStarting y siempre responde SetHandled(true) (webview2/mod.rs:858-861), lo que apaga la interfaz de descargas de Windows. El archivo bajaba a Descargas pero nada lo decia y parecia roto. Quitar el manejador NO devuelve la interfaz nativa: el de wry sigue puesto. 4. Feature «devtools» de tauri: el inspector queda disponible tambien en release. Sin el, un fallo que solo aparece en la app instalada no se puede mirar por dentro. Descartado a proposito: registrar on_new_window. En macOS el delegado ejecuta webview.window().unwrap() y current_window.screen().unwrap() ANTES del match (wry-0.55.1/src/wkwebview/class/wry_web_view_ui_delegate.rs:150-154), tambien en la rama Deny; y este shell oculta la ventana al cerrar, con lo que NSWindow.screen puede ser nil y la app entera abortaria. Cambiar un fallo de Windows por un crash en macOS no compensa. Verificado: cargo check limpio; sintaxis del script inyectado validada con node; y simulacion de la guarda — marco principal + origen propio interviene, iframe de OnlyOffice no interviene, origen ajeno no interviene. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
51 líneas
1.4 KiB
JSON
51 líneas
1.4 KiB
JSON
{
|
|
"$schema": "https://schema.tauri.app/config/2",
|
|
"productName": "Labstream OS",
|
|
"version": "1.5.1",
|
|
"identifier": "co.labstream.os",
|
|
"build": {
|
|
"frontendDist": "../dist"
|
|
},
|
|
"app": {
|
|
"withGlobalTauri": true,
|
|
"windows": [],
|
|
"security": {
|
|
"csp": null
|
|
}
|
|
},
|
|
"plugins": {
|
|
"updater": {
|
|
"endpoints": [
|
|
"https://github.com/Labstream2026/labstream-desktop/releases/latest/download/latest.json"
|
|
],
|
|
"pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IERDNjE5MUE3NjlGRUMxRjEKUldUeHdmNXBwNUZoM05sZ1lSTDVaalJ6NGU2NUNEQUF3Z211SnhhU0EvWm1VREdlVnM0N0pHS00K"
|
|
}
|
|
},
|
|
"bundle": {
|
|
"active": true,
|
|
"targets": "all",
|
|
"createUpdaterArtifacts": true,
|
|
"publisher": "Labstream SAS",
|
|
"category": "Productivity",
|
|
"shortDescription": "Espacio de trabajo de Labstream",
|
|
"longDescription": "Cliente de escritorio de Labstream OS para Windows y macOS. Abre el espacio de trabajo de Labstream en su propia ventana.",
|
|
"icon": [
|
|
"icons/32x32.png",
|
|
"icons/128x128.png",
|
|
"icons/128x128@2x.png",
|
|
"icons/icon.icns",
|
|
"icons/icon.ico"
|
|
],
|
|
"windows": {
|
|
"nsis": {
|
|
"installMode": "currentUser",
|
|
"languages": ["Spanish", "SpanishInternational", "English"]
|
|
}
|
|
},
|
|
"macOS": {
|
|
"minimumSystemVersion": "10.15",
|
|
"entitlements": "Entitlements.plist"
|
|
}
|
|
}
|
|
}
|