spb/forge-studio Public
The Instruments of LLM training — a native macOS cockpit for Forge. Train language models from scratch on Apple Silicon without a terminal.
Swift 95.7%
Shell 4.3%
1#!/bin/bash2# Author: Simon-Pierre Boucher — contact@spboucher.ai3# Developer ID signing, DMG, and notarization for Forge Studio.4# Identity and notarization flow reused from the zyquo-term pipeline5# (Team 3YM54G49SN, notarytool keychain profile "MacLustr-Notarize").6set -euo pipefail7cd "$(dirname "$0")/.."89IDENTITY="Developer ID Application: Simon-Pierre Boucher (3YM54G49SN)"10KEYCHAIN_PROFILE="MacLustr-Notarize"11APP_DIR="dist/ForgeStudio.app"12DMG_NAME="dist/ForgeStudio-0.2.0.dmg"1314./scripts/package-app.sh release1516echo "=== Signing (Developer ID, hardened runtime) ==="17codesign --force --options runtime --timestamp \18 --sign "$IDENTITY" "$APP_DIR/Contents/MacOS/ForgeStudio"19codesign --force --options runtime --timestamp \20 --sign "$IDENTITY" "$APP_DIR"21codesign --verify --deep --strict --verbose=2 "$APP_DIR"2223echo "=== DMG ==="24rm -f "$DMG_NAME"25if command -v create-dmg >/dev/null; then26 create-dmg --volname "Forge Studio" --app-drop-link 480 200 \27 --window-size 660 420 "$DMG_NAME" "$APP_DIR"28else29 hdiutil create -volname "Forge Studio" -srcfolder "$APP_DIR" \30 -ov -format UDZO "$DMG_NAME"31fi32codesign --force --sign "$IDENTITY" --timestamp "$DMG_NAME"3334echo "=== Notarizing (profile: $KEYCHAIN_PROFILE) ==="35xcrun notarytool submit "$DMG_NAME" --keychain-profile "$KEYCHAIN_PROFILE" --wait3637echo "=== Stapling ==="38xcrun stapler staple "$APP_DIR"39xcrun stapler staple "$DMG_NAME"40xcrun stapler validate "$DMG_NAME"41spctl -a -vv "$APP_DIR"42echo "OK: $DMG_NAME"43