Overview
MacDown's auto-update system is currently using obsolete Sparkle 1.18.1 with deprecated DSA signing. The appcast feeds are returning 503 errors, making auto-updates non-functional. With the new macdown.app domain and access to an Apple Developer account, we can restore auto-updates using modern Sparkle 2.
Current State
Sparkle Version: 1.18.1 (via CocoaPods)
Signing: DSA (deprecated, scheduled for removal)
Appcast URLs:
- Stable:
https://macdown.app/sparkle/macdown3000/stable/appcast.xml (503)
- Beta:
https://macdown.app/sparkle/macdown3000/testing/appcast.xml (503)
Code: Using deprecated SUUpdater API in MPMainController.m
Required Changes
1. Upgrade Sparkle Framework
- Update
Podfile: pod 'Sparkle', '~> 2.0'
- Run
bundle exec pod install
- Minimum macOS requirement will increase to 10.11+
2. Migrate Code to Sparkle 2 API
- Replace
#import <Sparkle/SUUpdater.h> with #import <Sparkle/SPUStandardUpdaterController.h>
- Update
MPMainController.m to use new SPUStandardUpdaterController class
- Remove singleton pattern usage
- Update delegate methods for Sparkle 2
3. Generate EdDSA Signing Keys
- Use Sparkle's tooling to generate new EdDSA (ed25519) keypair
- Store private key securely (offline, NOT in repository)
- Add public key to Info.plist
4. Update Info.plist
- Remove:
SUPublicDSAKeyFile and dsa_pub.pem reference
- Add:
SUPublicEDKey with new EdDSA public key
- Update appcast URLs if needed
5. Remove DSA Key File
- Delete
MacDown/Resources/dsa_pub.pem
6. Set Up Appcast Hosting
- Host appcast.xml files at macdown.app (HTTPS required)
- Use
generate_appcast tool for creating signed appcasts
- Document release workflow
Resources
Benefits
- Modern, maintained update framework
- Improved security with EdDSA signing
- Functional auto-updates for users
- Proper code signing with Developer account
Dependencies
- Apple Developer account (available)
- macdown.app domain control (available)
- HTTPS hosting setup for appcast files
Overview
MacDown's auto-update system is currently using obsolete Sparkle 1.18.1 with deprecated DSA signing. The appcast feeds are returning 503 errors, making auto-updates non-functional. With the new macdown.app domain and access to an Apple Developer account, we can restore auto-updates using modern Sparkle 2.
Current State
Sparkle Version: 1.18.1 (via CocoaPods)
Signing: DSA (deprecated, scheduled for removal)
Appcast URLs:
https://macdown.app/sparkle/macdown3000/stable/appcast.xml(503)https://macdown.app/sparkle/macdown3000/testing/appcast.xml(503)Code: Using deprecated
SUUpdaterAPI inMPMainController.mRequired Changes
1. Upgrade Sparkle Framework
Podfile:pod 'Sparkle', '~> 2.0'bundle exec pod install2. Migrate Code to Sparkle 2 API
#import <Sparkle/SUUpdater.h>with#import <Sparkle/SPUStandardUpdaterController.h>MPMainController.mto use newSPUStandardUpdaterControllerclass3. Generate EdDSA Signing Keys
4. Update Info.plist
SUPublicDSAKeyFileanddsa_pub.pemreferenceSUPublicEDKeywith new EdDSA public key5. Remove DSA Key File
MacDown/Resources/dsa_pub.pem6. Set Up Appcast Hosting
generate_appcasttool for creating signed appcastsResources
Benefits
Dependencies