OpenClaw macOS ریلیز (Sparkle)¶
یہ ایپ اب Sparkle آٹو‑اپڈیٹس کے ساتھ شپ ہوتی ہے۔ ریلیز بلڈز کو Developer ID سے سائن کیا جانا، زِپ کیا جانا، اور ایک سائن شدہ appcast انٹری کے ساتھ شائع کیا جانا ضروری ہے۔
پیشگی تقاضے¶
- Developer ID Application سرٹیفکیٹ انسٹال ہو (مثال:
Developer ID Application: <Developer Name> (<TEAMID>))۔ - Sparkle پرائیویٹ کی کی پاتھ ماحول میں
SPARKLE_PRIVATE_KEY_FILEکے طور پر سیٹ کریں (آپ کی Sparkle ed25519 پرائیویٹ کی کی پاتھ؛ پبلک کی Info.plist میں شامل ہوتی ہے)۔ اگر یہ موجود نہ ہو تو~/.profileچیک کریں۔ xcrun notarytoolکے لیے نوٹری اسناد (کی چین پروفائل یا API کلید)، اگر آپ Gatekeeper-محفوظ DMG/zip تقسیم چاہتے ہیں۔- ہم
openclaw-notaryنامی Keychain پروفائل استعمال کرتے ہیں، جو App Store Connect API کلید کے env vars سے آپ کے شیل پروفائل میں بنایا گیا ہے:APP_STORE_CONNECT_API_KEY_P8,APP_STORE_CONNECT_KEY_ID,APP_STORE_CONNECT_ISSUER_IDecho "$APP_STORE_CONNECT_API_KEY_P8" | sed 's/\\n/\n/g' > /tmp/openclaw-notary.p8xcrun notarytool store-credentials "openclaw-notary" --key /tmp/openclaw-notary.p8 --key-id "$APP_STORE_CONNECT_KEY_ID" --issuer "$APP_STORE_CONNECT_ISSUER_ID"
pnpmکی deps انسٹال ہوں (pnpm install --config.node-linker=hoisted)۔- Sparkle ٹولز SwiftPM کے ذریعے خودکار طور پر
apps/macos/.build/artifacts/sparkle/Sparkle/bin/پر حاصل کیے جاتے ہیں (sign_update,generate_appcast، وغیرہ)۔
بلڈ اور پیکیج¶
نوٹس:
APP_BUILD،CFBundleVersion/sparkle:versionسے میپ ہوتا ہے؛ اسے عددی اور یک سمت (monotonic) رکھیں (-betaنہیں)، ورنہ Sparkle اسے برابر سمجھتا ہے۔- ڈیفالٹ طور پر موجودہ آرکیٹیکچر (
$(uname -m)) استعمال ہوتا ہے۔ ریلیز/یونیورسل بلڈز کے لیےBUILD_ARCHS="arm64 x86_64"(یاBUILD_ARCHS=all) سیٹ کریں۔ - ریلیز آرٹیفیکٹس (zip + DMG + notarization) کے لیے
scripts/package-mac-dist.shاستعمال کریں۔ لوکل/ڈیولپمنٹ پیکیجنگ کے لیےscripts/package-mac-app.shاستعمال کریں۔
# From repo root; set release IDs so Sparkle feed is enabled.
# APP_BUILD must be numeric + monotonic for Sparkle compare.
BUNDLE_ID=bot.molt.mac \
APP_VERSION=2026.2.9 \
APP_BUILD="$(git rev-list --count HEAD)" \
BUILD_CONFIG=release \
SIGN_IDENTITY="Developer ID Application: <Developer Name> (<TEAMID>)" \
scripts/package-mac-app.sh
# Zip for distribution (includes resource forks for Sparkle delta support)
ditto -c -k --sequesterRsrc --keepParent dist/OpenClaw.app dist/OpenClaw-2026.2.9.zip
# Optional: also build a styled DMG for humans (drag to /Applications)
scripts/create-dmg.sh dist/OpenClaw.app dist/OpenClaw-2026.2.9.dmg
# Recommended: build + notarize/staple zip + DMG
# First, create a keychain profile once:
# xcrun notarytool store-credentials "openclaw-notary" \
# --apple-id "<apple-id>" --team-id "<team-id>" --password "<app-specific-password>"
NOTARIZE=1 NOTARYTOOL_PROFILE=openclaw-notary \
BUNDLE_ID=bot.molt.mac \
APP_VERSION=2026.2.9 \
APP_BUILD="$(git rev-list --count HEAD)" \
BUILD_CONFIG=release \
SIGN_IDENTITY="Developer ID Application: <Developer Name> (<TEAMID>)" \
scripts/package-mac-dist.sh
# Optional: ship dSYM alongside the release
ditto -c -k --keepParent apps/macos/.build/release/OpenClaw.app.dSYM dist/OpenClaw-2026.2.9.dSYM.zip
Appcast اندراج¶
ریلیز نوٹ جنریٹر استعمال کریں تاکہ Sparkle فارمیٹ شدہ HTML نوٹس رینڈر کرے:
SPARKLE_PRIVATE_KEY_FILE=/path/to/ed25519-private-key scripts/make_appcast.sh dist/OpenClaw-2026.2.9.zip https://raw.githubusercontent.com/openclaw/openclaw/main/appcast.xml
CHANGELOG.md سے HTML ریلیز نوٹس تیار کرتا ہے (بذریعہ scripts/changelog-to-html.sh) اور انہیں appcast انٹری میں ایمبیڈ کرتا ہے۔
شائع کرتے وقت ریلیز اثاثوں (zip + dSYM) کے ساتھ اپ ڈیٹ شدہ appcast.xml کمٹ کریں۔
شائع کریں اور توثیق کریں¶
- Upload
OpenClaw-2026.2.9.zip(andOpenClaw-2026.2.9.dSYM.zip) to the GitHub release for tagv2026.2.9. - یقینی بنائیں کہ raw appcast URL بیک کی ہوئی فیڈ سے مطابقت رکھتا ہو:
https://raw.githubusercontent.com/openclaw/openclaw/main/appcast.xml۔ - جانچ:
curl -I https://raw.githubusercontent.com/openclaw/openclaw/main/appcast.xml، 200 ریٹرن کرے۔- اثاثوں کے اپ لوڈ کے بعد
curl -I <enclosure url>، 200 ریٹرن کرے۔ - کسی پچھلی پبلک بلڈ پر، About ٹیب سے “Check for Updates…” چلائیں اور تصدیق کریں کہ Sparkle نئی بلڈ کو صاف طریقے سے انسٹال کرتا ہے۔
تعریفِ تکمیل: سائن شدہ ایپ اور appcast شائع ہوں، پرانی انسٹال شدہ ورژن سے اپ ڈیٹ فلو درست کام کرے، اور ریلیز اثاثے GitHub ریلیز کے ساتھ منسلک ہوں۔