-
v1.5.1: el shell dejaba de meterse dentro del editor de OnlyOffice en Windows
publicó esto
2026-07-29 07:12:22 -05:00 | 43 commits a main desde esta versiónOnlyOffice 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:
-
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. -
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. -
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. -
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
Descargas
-