Der Selbst-Update-Pfad ist vollständig vorbereitet, aber die Sparkle-Binärabhängigkeit ist noch nicht eingebunden.
Stand
Sources/OpenFreshrCore/Update/SelfUpdate.swift — UI-freier SelfUpdateChecker, nutzt die vorhandene Appcast- und Versionslogik wieder, 8 Tests.
Sources/OpenFreshrApp/SelfUpdateController.swift — #if canImport(Sparkle) schaltet auf den echten Updater; ohne Sparkle öffnet ein Fallback nur die Releases-Seite.
- Menüpunkt „Nach OpenFreshr-Updates suchen …" vorhanden, klar getrennt von den Updates fremder Apps.
docs/appcast.xml als leeres Gerüst, SUPublicEDKey als Platzhalter.
Das Hindernis
swift package resolve scheitert auf dieser Maschine an der globalen Git-Einstellung safe.bareRepository=explicit. Ein kaputter Build wäre schlechter als ein verschobenes Feature, deshalb hält die canImport-Guard alles grün.
Zu tun
Der Selbst-Update-Pfad ist vollständig vorbereitet, aber die Sparkle-Binärabhängigkeit ist noch nicht eingebunden.
Stand
Sources/OpenFreshrCore/Update/SelfUpdate.swift— UI-freierSelfUpdateChecker, nutzt die vorhandene Appcast- und Versionslogik wieder, 8 Tests.Sources/OpenFreshrApp/SelfUpdateController.swift—#if canImport(Sparkle)schaltet auf den echten Updater; ohne Sparkle öffnet ein Fallback nur die Releases-Seite.docs/appcast.xmlals leeres Gerüst,SUPublicEDKeyals Platzhalter.Das Hindernis
swift package resolvescheitert auf dieser Maschine an der globalen Git-Einstellungsafe.bareRepository=explicit. Ein kaputter Build wäre schlechter als ein verschobenes Feature, deshalb hält diecanImport-Guard alles grün.Zu tun
canImport(Sparkle)im Release-Build greiftmake appundmake runweiterhin ohne Signing-Secrets laufen