macOS companion app
Signature macOS
Signature mac (builds de débogage)
scripts/package-mac-app.sh compile et empaquette l’application dans un chemin fixe (dist/OpenClaw.app), puis appelle scripts/codesign-mac-app.sh pour la signer. Les autorisations TCC sont liées à l’identifiant du bundle et à la signature du code ; maintenir les deux stables (ainsi que l’application dans un chemin fixe) d’une recompilation à l’autre empêche macOS d’oublier les autorisations TCC (notifications, accessibilité, enregistrement de l’écran, microphone, reconnaissance vocale).
- L’identifiant du bundle de débogage est
ai.openclaw.mac.debugpar défaut (remplacez-le avecBUNDLE_ID=...). - Node :
>=22.22.3 <23,>=24.15.0 <25ou>=25.9.0(package.jsonenginesdu dépôt). L’outil d’empaquetage compile également l’interface de contrôle (pnpm ui:build). - Nécessite par défaut une véritable identité de signature ; le script de signature se termine avec une erreur si aucune identité n’est trouvée et si
ALLOW_ADHOC_SIGNINGn’est pas défini. La signature ad hoc (SIGN_IDENTITY="-") doit être explicitement activée et ne conserve pas les autorisations TCC d’une recompilation à l’autre. Consultez Autorisations macOS. - Lit
SIGN_IDENTITYdepuis l’environnement (par exempleexport SIGN_IDENTITY="Apple Development: Your Name (TEAMID)"ou un certificat Developer ID Application). En son absence,codesign-mac-app.shsélectionne automatiquement une identité dans cet ordre : Developer ID Application, Apple Distribution, Apple Development, puis la première identité de signature de code valide trouvée. CODESIGN_TIMESTAMP=auto(valeur par défaut) active les horodatages de confiance uniquement pour les signatures Developer ID Application. Définissezon/offpour imposer l’un ou l’autre comportement.- Ajoute à Info.plist
OpenClawBuildTimestamp(ISO8601 UTC) etOpenClawGitCommit(hachage court,unknowns’il n’est pas disponible), afin que l’onglet À propos puisse afficher la version de build, les informations git et le canal de débogage ou de publication. - Exécute un audit de l’identifiant d’équipe après la signature et échoue si un fichier Mach-O du bundle possède un identifiant d’équipe différent. Définissez
SKIP_TEAM_ID_CHECK=1pour contourner cet audit.
Utilisation
# depuis la racine du dépôtscripts/package-mac-app.sh # sélectionne automatiquement l’identité ; erreur si aucune n’est trouvéeSIGN_IDENTITY="Developer ID Application: Your Name" scripts/package-mac-app.sh # véritable certificatALLOW_ADHOC_SIGNING=1 scripts/package-mac-app.sh # ad hoc (les autorisations ne seront pas conservées)SIGN_IDENTITY="-" scripts/package-mac-app.sh # ad hoc explicite (même mise en garde)DISABLE_LIBRARY_VALIDATION=1 scripts/package-mac-app.sh # contournement réservé au développement pour une incompatibilité d’identifiant d’équipe SparkleRemarque sur la signature ad hoc
SIGN_IDENTITY="-" désactive l’environnement d’exécution renforcé (--options runtime) pour éviter les plantages lorsque l’application charge des frameworks intégrés (comme Sparkle) qui ne partagent pas le même identifiant d’équipe. Les signatures ad hoc empêchent également la conservation des autorisations TCC ; consultez Autorisations macOS pour connaître les étapes de récupération.
Métadonnées de build pour À propos
L’onglet À propos lit OpenClawBuildTimestamp et OpenClawGitCommit depuis Info.plist pour afficher la version, la date de build, le commit git et indiquer si le build est en mode DEBUG (via #if DEBUG). Réexécutez l’outil d’empaquetage après toute modification du code pour actualiser ces valeurs.