Repository navigation
feat(macos): rFirma sabe quién abre afirma:// en macOS y deja elegirse - #2034
Merged
Merged
Conversation
added 3 commits
October 19, 2026 16:10
Implements #2017: rFirma sabe quién abre afirma:// en macOS y deja elegirse - LaunchServices tras la costura Workspace; NSWorkspace la implementa y se prueba a mano - Leer nunca escribe; retirar rFirma devuelve el esquema a otra aplicación que lo declare - Sale PendingMacosLaunchServices y su fila de la tabla del ADR-0040
…agent/developer/issue-2017 # Conflicts: # docs/adr/0040-macos-en-apple-silicon-como-tercera-plataforma.md # rfirma-app/src-tauri/Cargo.toml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #2017
What changed
desktop/adapters/registry/launch_services.rs: el registro de manejadores de macOS sobre LaunchServices, detrás de la costuraWorkspace. rFirma sale con el idrfirma.desktop, como en Windows, para que el panel de estado y la elección funcionen sin cambios; las demás aplicaciones, con la ruta de su.appy el nombre que da el Finder.launch_services/ns_workspace.rs:SystemWorkspacesobreNSWorkspace(URLsForApplicationsToOpenURL,URLForApplicationToOpenURL,setDefaultApplicationAtURL:toOpenURLsWithScheme:). La elección espera la confirmación del sistema hasta 120 s.PendingMacosLaunchServicesy su fila de la tabla del ADR-0040. Se activan las featuresNSWorkspacedeobjc2-app-kityNSArray/NSError/NSFileManager/NSURLdeobjc2-foundation;Cargo.lockno cambia.Decisiones donde la spec no decía nada:
remove_forse lo pasa a la primera otra aplicación que lo declare (AutoFirma, si está). Si no hay ninguna, no toca nada: el sistema lo olvida al borrar el.app. Si lo abre otra aplicación, no se escribe nada..appes rFirma. Es el.appque contiene el ejecutable en marcha. Fuera de un bundle (desarrollo), es el propio ejecutable;just dev-handleren macOS es otro sub-issue.Test plan
El caso de uso de manejadores respeta a AutoFirma, con un
Workspacedoble (launch_services/tests.rs, pasando porwho_handles,chosenywithdrawn):with_autofirma_chosen_both_are_listed_and_autofirma_is_currentchoosing_rfirma_makes_it_the_one_that_opens_the_schemechoosing_autofirma_again_gives_the_scheme_back_to_itchoosing_an_application_that_does_not_declare_the_scheme_fails_without_writingwithdrawing_rfirma_hands_the_scheme_back_to_autofirmaTodas se vieron en rojo contra un stub.
reading_who_handles_the_scheme_never_takes_itywithdrawing_while_autofirma_is_chosen_leaves_it_untouchedpasaban ya contra el stub, que no escribía nada. Se vieron en rojo contra una versión rota a propósito (leer escribe, retirar no mira de quién es el esquema) y luego se restauró la buena.rfirma_is_the_bundle_that_holds_the_running_executable, vista en rojo.outside_a_bundle_rfirma_is_the_executable_itselffija el caso por defecto, y el stub ya lo cumplía.Guardas estructurales en verde. El nuevo módulo no lleva ningún
cfgde sistema: cuelga del#[cfg(target_os = "macos")]deregistry.rs, que ya está enAUTHORISED_SITES.Sin hacer: hay que probarlo a mano con el
.appreal. Elegir rFirma, pulsar «Firmar» en una sede con rFirma cerrada y atender el trámite en frío. Volver a AutoFirma.SystemWorkspaceno tiene prueba automática (TD-135): en esta ejecución no lo arranqué contra LaunchServices de verdad, ni para leer ni para escribir.Clippy (
just check-rust) no corrió en el pre-push de este worktree. El veredicto es del CI.Merge de
origin/agent/developer/spec-2000antes de publicar. Hubo dos conflictos:Cargo.toml: se juntan las features de esta rama consecurity-framework.Después del merge corrí otra vez las pruebas de
desktop::y salieron en verde. Al elegir rFirma,choose_site_signature_handlerinstala además la CA local con el adaptador de confianza de macOS de la otra rama, así que en la prueba manual aparecerá el diálogo de contraseña del sistema.