Some checks are pending
build-and-push / image (push) Waiting to run
- Package.swift: add CxARA (via CxLLM-SDK) and CxDrive (via new CxLLM-Drive package dep) so the native shell links every mac-app-shaped module exported by the CxLLM-SDK and CxLLM-Drive families. - Sidebar: surface .repair (CxARA) and .drive (CxDrive) alongside the existing Web/Chat/Agent/MCP/Models/Code/AWS/Git/LangBridge/Telemetry tabs, with matching SF Symbols. - scripts/build-mac-bundle.sh: end-to-end pipeline (release build, .app bundle with rebranded Info.plist studio.cxai.ade 1.2.0, ad-hoc codesign, tar.gz, hdiutil UDZO dmg, publish to share/cxai-mac, write build-info.json with sha256/sizes/modules/git sha). - Makefile targets: swift-app 'make rebuild-mac', CxWebApp root 'make rebuild-mac'. - share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- dge- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- share/AR- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Ter refere- share/cxai-mac: replace Tauri 0- origin main 2>&1 | tail -5
118 lines
4.2 KiB
Bash
Executable File
118 lines
4.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Build, bundle, and publish CxAI ADE (CxWebAppMac) into ../share/cxai-mac/.
|
|
#
|
|
# Produces:
|
|
# share/cxai-mac/CxAI ADE.app
|
|
# share/cxai-mac/CxAI-ADE-<VERSION>-aarch64.app.tar.gz
|
|
# share/cxai-mac/CxAI-ADE-<VERSION>-aarch64.dmg
|
|
# share/cxai-mac/build-info.json
|
|
set -euo pipefail
|
|
|
|
cd "$(dirname "$0")/.."
|
|
SWIFT_APP_ROOT="$PWD"
|
|
REPO_ROOT="$(cd ../.. && pwd)"
|
|
SHARE_DIR="$REPO_ROOT/CxWebApp/share/cxai-mac"
|
|
|
|
VERSION="${VERSION:-1.2.0}"
|
|
ARCH="${ARCH:-aarch64}"
|
|
PRODUCT_NAME="CxAI ADE"
|
|
BUNDLE_ID="${BUNDLE_ID:-studio.cxai.ade}"
|
|
CHANNEL="${CHANNEL:-stable}"
|
|
|
|
STAGE="$SWIFT_APP_ROOT/build/stage"
|
|
APP_PATH="$STAGE/${PRODUCT_NAME}.app"
|
|
TGZ_NAME="CxAI-ADE-${VERSION}-${ARCH}.app.tar.gz"
|
|
DMG_NAME="CxAI-ADE-${VERSION}-${ARCH}.dmg"
|
|
|
|
echo "[1/6] swift build -c release"
|
|
swift build -c release
|
|
|
|
BIN="$(swift build -c release --show-bin-path)/CxWebAppMac"
|
|
[[ -x "$BIN" ]] || { echo "FATAL: $BIN not found" >&2; exit 1; }
|
|
|
|
echo "[2/6] assemble bundle $APP_PATH"
|
|
rm -rf "$STAGE"
|
|
mkdir -p "$APP_PATH/Contents/MacOS" "$APP_PATH/Contents/Resources"
|
|
cp "$BIN" "$APP_PATH/Contents/MacOS/CxWebAppMac"
|
|
cat > "$APP_PATH/Contents/Info.plist" <<PLIST
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
<plist version="1.0"><dict>
|
|
<key>CFBundleIdentifier</key> <string>${BUNDLE_ID}</string>
|
|
<key>CFBundleName</key> <string>${PRODUCT_NAME}</string>
|
|
<key>CFBundleDisplayName</key> <string>${PRODUCT_NAME}</string>
|
|
<key>CFBundleExecutable</key> <string>CxWebAppMac</string>
|
|
<key>CFBundlePackageType</key> <string>APPL</string>
|
|
<key>CFBundleShortVersionString</key> <string>${VERSION}</string>
|
|
<key>CFBundleVersion</key> <string>${VERSION}</string>
|
|
<key>LSMinimumSystemVersion</key> <string>13.0</string>
|
|
<key>NSHighResolutionCapable</key> <true/>
|
|
<key>NSAppTransportSecurity</key>
|
|
<dict><key>NSAllowsLocalNetworking</key><true/></dict>
|
|
<key>LSApplicationCategoryType</key> <string>public.app-category.developer-tools</string>
|
|
</dict></plist>
|
|
PLIST
|
|
|
|
echo "[3/6] codesign (ad-hoc)"
|
|
codesign --force --deep --sign - "$APP_PATH" >/dev/null 2>&1 || true
|
|
|
|
echo "[4/6] tar.gz"
|
|
( cd "$STAGE" && tar -czf "$TGZ_NAME" "${PRODUCT_NAME}.app" )
|
|
|
|
echo "[5/6] dmg"
|
|
DMG_TMP="$STAGE/$DMG_NAME"
|
|
rm -f "$DMG_TMP"
|
|
hdiutil create -volname "${PRODUCT_NAME} ${VERSION}" \
|
|
-srcfolder "$APP_PATH" -ov -format UDZO -quiet \
|
|
"$DMG_TMP"
|
|
|
|
echo "[6/6] publish -> $SHARE_DIR"
|
|
mkdir -p "$SHARE_DIR"
|
|
# Wipe any prior CxAI-ADE-* / CxAI ADE*.app set; keep folder, replace contents.
|
|
find "$SHARE_DIR" -maxdepth 1 \( -name "CxAI-ADE-*" -o -name "CxAI ADE*.app" -o -name "build-info.json" \) -exec rm -rf {} +
|
|
# Re-stage fresh artifacts.
|
|
ditto "$APP_PATH" "$SHARE_DIR/${PRODUCT_NAME}.app"
|
|
cp "$STAGE/$TGZ_NAME" "$SHARE_DIR/$TGZ_NAME"
|
|
cp "$DMG_TMP" "$SHARE_DIR/$DMG_NAME"
|
|
|
|
# Compute hashes & sizes.
|
|
sha_tgz=$(shasum -a 256 "$SHARE_DIR/$TGZ_NAME" | awk '{print $1}')
|
|
sha_dmg=$(shasum -a 256 "$SHARE_DIR/$DMG_NAME" | awk '{print $1}')
|
|
size_dmg=$(stat -f%z "$SHARE_DIR/$DMG_NAME")
|
|
size_tgz=$(stat -f%z "$SHARE_DIR/$TGZ_NAME")
|
|
built_at=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
|
|
# Best-effort git sha (outer iCloud repo).
|
|
git_sha=$( ( cd "$REPO_ROOT" && git rev-parse --short=12 HEAD 2>/dev/null ) || echo "unknown" )
|
|
|
|
cat > "$SHARE_DIR/build-info.json" <<JSON
|
|
{
|
|
"name": "${PRODUCT_NAME}",
|
|
"version": "${VERSION}",
|
|
"identifier": "${BUNDLE_ID}",
|
|
"channel": "${CHANNEL}",
|
|
"sha": "${git_sha}",
|
|
"built_at": "${built_at}",
|
|
"description": "Native AppKit/SwiftUI shell for CxAI Studio. Built from CxWebApp/swift-app (CxLLM-SDK + CxLLM-Drive).",
|
|
"platform": "macOS 13+ ${ARCH}",
|
|
"modules": [
|
|
"CxCode", "CxAWS", "CxGit", "CxAgent", "CxMCP",
|
|
"CxModels", "CxChat", "CxSPARenderer", "CxInstrument",
|
|
"CxLangBridge", "CxARA", "CxDrive"
|
|
],
|
|
"artifacts": {
|
|
"app_tar_gz": "${TGZ_NAME}",
|
|
"app_tar_gz_sha256": "${sha_tgz}",
|
|
"app_tar_gz_size": ${size_tgz},
|
|
"dmg": "${DMG_NAME}",
|
|
"dmg_sha256": "${sha_dmg}",
|
|
"dmg_size_bytes": ${size_dmg}
|
|
},
|
|
"download_url": "/static/cxai-mac/${DMG_NAME}"
|
|
}
|
|
JSON
|
|
|
|
echo
|
|
echo "Published to $SHARE_DIR"
|
|
ls -la "$SHARE_DIR"
|