Skip to content

fix(macos): la ventana de sede queda delante del escritorio, no deja iconos en el Dock y Spotlight abre el escritorio con una sede abierta - #2057

Merged
sgomez merged 5 commits into
mainfrom
fix/macos-site-window-focus
Oct 20, 2026
Merged

sgomez merged 5 commits into
mainfrom
fix/macos-site-window-focus

Conversation

@sgomez

@sgomez sgomez commented Oct 20, 2026

Copy link
Copy Markdown
Owner

Qué cambia

En macOS, al firmar en una sede:

  • La ventana de sede queda delante. Con rFirma de escritorio abierto, macOS le entregaba la afirma:// y lo traía al frente, y la ventana de sede se quedaba detrás. Ahora el escritorio cede el primer plano al proceso de sede (yieldActivationToApplication).
  • Sin icono en el Dock mientras el proceso de sede espera. El cierre diferido sigue igual (ADR-0024: 90 s sin órdenes con service), pero al ocultar su ventana el proceso de sede sale del Dock y vuelve a entrar al mostrarla. Firmar varios documentos ya no deja un icono por proceso.
  • Spotlight y el Dock abren el escritorio aunque haya una sede viva. macOS reabría el proceso de sede en vez de lanzar otro, y no salía nada. Ahora el proceso de sede atiende ese «reabrir» lanzando el escritorio, le cede el primer plano y vuelve a salir del Dock.

Para desarrollar en macOS:

  • just certs install y las pruebas de Rust que usan el token encuentran el SoftHSM de Homebrew (tests/support/softhsm.rs, dado de alta en AUTHORISED_SITES).
  • just keychain-certs install|uninstall mete los .p12 de testdata/fnmt en un llavero aparte, el que ve la app instalada, y lo borra entero al quitarlo.
  • .gitignore excluye .claude/worktrees/: biome no lee el gitignore global y se encontraba varias configuraciones raíz.

Pruebas

  • A mano con el dmg instalado en macOS: sede delante del escritorio abierto; icono fuera del Dock tras firmar o cancelar; Spotlight con una sede en segundo plano abre el escritorio delante y no deja el icono de la sede al cerrarlo.
  • just lint-rust y just structural-guards en macOS.
  • En macOS, con SoftHSM de Homebrew: pkcs11_token, remembered_certificate y site_token_signing en verde. installed_signing sigue con dos rojos que ya lo estaban antes (el Almacén NSS de rFirma en macOS).
  • just keychain-certs instalado, quitado y reinstalado: los 11 .p12 entran y la lista de búsqueda queda como estaba.

packaging/flatpak/sources.lock se actualizó a mano con el sha256 de Cargo.lock (sin uv en local); Cargo.lock solo añade libc a las dependencias de objc2-app-kit.

@sgomez sgomez left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CLEAN

Alcance completo (primera revisión), origin/main...a6556f4e. La PR no cierra ningún issue: sin spec, la fidelidad se mide contra la descripción de la PR.

Checks aún en marcha en a6556f4e: Plataformas / macOS, Plataformas / Windows, Imagen nativa, Cadena Rust, Cadena TypeScript, Analyze (rust). No se han corrido en local.

[fix]

  • event_loop.rs:28: el proceso de sede lanza el escritorio en cada Reopen, también con la ventana de sede a la vista. Pinchar en el Dock el icono de una sede que está firmando abre el escritorio y le cede el primer plano, que tapa la ventana de sede, justo el problema que arregla esta PR. Con la ventana de sede visible, el Reopen debería traerla al frente (show_the_site_window); el escritorio solo se lanza si está oculta.

[note]

  • testdata/keychain/certs.sh: openssl pkcs12 -legacy no existe en el LibreSSL de /usr/bin/openssl, así que la receta necesita el openssl de Homebrew en el PATH. Además, si una importación falla a medias, el llavero queda creado y el siguiente install responde «ya existe» sin completarlo.
  • Serving::from_the_start() ya no solo dice «ventana arriba desde el principio»: ahora también marca el rol de sede (reopens_the_desktop). El nombre se queda corto.
  • El pegamento de AppKit (yield_the_foreground_to, launch_the_desktop_on_reopen, Dock) no tiene pruebas automáticas; es razonable, porque solo se puede probar a mano en macOS, y la PR documenta esas pruebas manuales.

if !desktop::adapters::process::launch_the_delivered_urls(app, &event, window_is_up) {
serving.only_for_links.store(true, Ordering::SeqCst);
}
if serving.reopens_the_desktop

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[fix] Con la ventana de sede visible, un Reopen (clic en el Dock) lanza igualmente el escritorio y le cede el primer plano, que tapa la sede a mitad de trámite. Lanza el escritorio solo si la ventana de sede está oculta; si está a la vista, tráela al frente con show_the_site_window.

@sgomez
sgomez merged commit 4cc00c2 into main Oct 20, 2026
15 checks passed
@sgomez
sgomez deleted the fix/macos-site-window-focus branch October 20, 2026 07:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant