Repository navigation
feat(macos): rFirma se actualiza sola en macOS - #2039
Merged
Merged
Conversation
added 2 commits
October 19, 2026 16:48
Implements #2024: rFirma se actualiza sola en macOS - Canal propio `Channel::MacOs`: lee /macos/latest.json y exige su entrada darwin-aarch64 - El plugin updater también en macOS, con la misma pública minisign que Windows - La entrega empaqueta, firma y sirve el .app.tar.gz en /macos/ con su latest.json
…agent/developer/issue-2024
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 #2024
What changed
Channel::MacOs, etiquetamacos): antes macOS eraNativey preguntaba a GitHub sin poder instalar. Ahora consultahttps://rfirma.sgomez.me/macos/latest.jsone instala desde la aplicación, como Windows. No mira nada de Homebrew: una instalación por el cask es el mismo canal y el actualizador sigue activo.latest.jsonsolo anuncia versión si traeplatforms["windows-x86_64"]oplatforms["darwin-aarch64"](Channel::updater_target). Para Windows el feed ya la traía, así que no cambia nada.tauri-plugin-updatertambién en macOS.packaging/macos/tauri.macos.jsonlleva suendpointsy la mismapubkeyque Windows. Tras instalar, en macOS se pide reiniciar (request_restart), porque la.appnueva no corre hasta relanzarla. En Windows el NSIS ya cierra rFirma.just bundleen macOS deja al lado del.dmgunrfirma_<v>_aarch64.app.tar.gzsin firmar, ybuild.ymllo sube.packages-manifest.shlo registra como formatoupdatery su.sigcomominisign;packagesno lo lista, porqueverifica-contenido.shno sabe abrirlo.sign-updater.shfirma también los.app.tar.gzy comprueba cada firma contra la pública de su plataforma.build-tree.shsirve/macos/con la actualización y la.sigde cada versión estable que la trae, y escribe unlatest.jsoncon la entradadarwin-aarch64de la más alta. ElCaddyfilesirve/macos/*./macos/) y «La clave de actualizaciones de Windows» depackaging/repo/README.md, porque la pública ya no está en un solo sitio.Decisiones ante lo ambiguo:
latest.jsonpropio en/macos/y no la entradadarwin-aarch64dentro de/windows/latest.json: las versiones anteriores a macOS no tienen actualización de macOS y cada feed anuncia su última versión. Si ninguna estable trae la de macOS,build-tree.shno escribemacos/latest.jsony no falla.native(mark_of(Channel::MacOs)) para no regenerar la CA que ya está instalada.update_destination_for(MacOs)apunta areleases, como hacía antes macOS conNative.auto_updates: truedel cask queda para El tap de Homebrew instala rFirma y se actualiza solo #2023 (el tap) y la prueba manual N→N+1 para Validar a mano la actualización N→N+1 en macOS #2025.Para quien construya en paralelo: con este cambio,
Channel::detected()devuelveMacOsen macOS, noNative. Al vigilante de lectores (#2009) le toca comprobarChannel::MacOsenwatches_the_readersy noChannel::Native. En esta rama,Platform::MacOs => falsesigue igual.Test plan
darwin-aarch64:on_macos_the_darwin_aarch64_entry_of_latest_json_is_announced_and_installableya_latest_json_without_the_entry_of_this_platform_announces_nothing. Las vi en rojo primero.macos_is_its_own_channel_whatever_the_marker_says,a_homebrew_installation_does_not_turn_off_the_updaterywindows_and_macos_install_from_the_app_and_linux_does_not. Las vi en rojo primero.each_channel_asks_its_own_feed, vista en rojo primero.the_installer_of_each_platform_asks_the_same_feed_as_the_version_checkla vi en rojo rompiendo a propósito el endpoint detauri.macos.json.windows_and_macos_trust_the_same_update_keyvigila que las dos configuraciones lleven la misma pública.scripts/tests/packages_manifest_test.sh, vistos en rojo primero. Para que corriera en macOS añadítr -d ' 'a doswc -lque ya estaban.packaging/windows/sign-updater.test.sh, el caso «sin clave pública de macOS», visto en rojo contra el script anterior. El caso de la firma de verdad (con-macos) necesitaminisign, que no tengo en local: lo corre el CI.packaging/repo/build-tree.test.sh. En local solo pude correr la parte debuild-tree.shque no necesita herramientas, con unfindde prueba: «actualización de macOS sin.sig» y «el manifiesto nombra lo que no está» paran la publicación. Los casos de/macos/y sulatest.jsonnecesitan ostree y el resto de herramientas (ygpg, que el arnés necesita para crear la clave): los corre el CI.just bundleen macOS con el.app.tar.gzno lo he corrido en local (necesita la.dylibde GraalVM): lo valida el carril de macOS de la entrega. La sustitución de la.apppor el updater se prueba a mano en Validar a mano la actualización N→N+1 en macOS #2025.macos_keeps_marking_its_local_ca_as_nativeguarda el comportamiento que ya había. Pasó a la primera porque fija una rama de unmatch, no una conducta nueva.