#!/bin/bash # Build Montana v3.18.0 — NTS Anchor — 36 Global Atomic Time Servers (RFC 8915) set -e DIR="$(cd "$(dirname "$0")" && pwd)" APP="$DIR/Montana.app" echo "Building Montana v3.18.0..." # Clean rm -rf "$APP" rm -rf "$DIR/MontanaPresence.app" # ═══════════════════════════════════════════════════════════════ # Compile libargon2 (reference C implementation) # ═══════════════════════════════════════════════════════════════ echo " Building libargon2..." ARGON2_DIR="$DIR/Crypto/argon2" ARGON2_BUILD="$ARGON2_DIR/build" mkdir -p "$ARGON2_BUILD" ARGON2_CFLAGS="-O2 -target arm64-apple-macos14.0 -I$ARGON2_DIR/include -I$ARGON2_DIR/src" cc $ARGON2_CFLAGS -c "$ARGON2_DIR/src/argon2.c" -o "$ARGON2_BUILD/argon2.o" cc $ARGON2_CFLAGS -c "$ARGON2_DIR/src/core.c" -o "$ARGON2_BUILD/core.o" cc $ARGON2_CFLAGS -c "$ARGON2_DIR/src/thread.c" -o "$ARGON2_BUILD/thread.o" cc $ARGON2_CFLAGS -c "$ARGON2_DIR/src/encoding.c" -o "$ARGON2_BUILD/encoding.o" cc $ARGON2_CFLAGS -c "$ARGON2_DIR/src/ref.c" -o "$ARGON2_BUILD/ref.o" cc $ARGON2_CFLAGS -c "$ARGON2_DIR/src/blake2/blake2b.c" -o "$ARGON2_BUILD/blake2b.o" ar rcs "$ARGON2_BUILD/libargon2.a" \ "$ARGON2_BUILD/argon2.o" \ "$ARGON2_BUILD/core.o" \ "$ARGON2_BUILD/thread.o" \ "$ARGON2_BUILD/encoding.o" \ "$ARGON2_BUILD/ref.o" \ "$ARGON2_BUILD/blake2b.o" echo " libargon2 built: $ARGON2_BUILD/libargon2.a" # ═══════════════════════════════════════════════════════════════ # Compile Swift + link liboqs + libargon2 # ═══════════════════════════════════════════════════════════════ swiftc \ -o "$DIR/MontanaPresence" \ -import-objc-header "$DIR/Crypto/Montana-Bridging-Header.h" \ -I "$DIR/Crypto/liboqs/include" \ -L "$DIR/Crypto/liboqs/lib" \ -loqs \ -I "$DIR/Crypto/argon2/include" \ -L "$DIR/Crypto/argon2/build" \ -largon2 \ -framework SwiftUI \ -framework Security \ -framework ServiceManagement \ -framework CoreImage \ -framework Network \ -framework NetworkExtension \ -framework WebKit \ -target arm64-apple-macos14.0 \ -parse-as-library \ "$DIR/Crypto/BIP39Wordlist.swift" \ "$DIR/Crypto/MontanaSeed.swift" \ "$DIR/Crypto/MLDSA65.swift" \ "$DIR/KeychainManager.swift" \ "$DIR/CryptoManager.swift" \ "$DIR/LanguageManager.swift" \ "$DIR/MontanaAPIClient.swift" \ "$DIR/PresenceEngine.swift" \ "$DIR/VPNManager.swift" \ "$DIR/SharedSidebar.swift" \ "$DIR/SendView.swift" \ "$DIR/ReceiveView.swift" \ "$DIR/TimeChainExplorerView.swift" \ "$DIR/UpdateManager.swift" \ "$DIR/JunonaView.swift" \ "$DIR/MainWindowView.swift" \ "$DIR/WalletTabView.swift" \ "$DIR/MenuBarView.swift" \ "$DIR/HistoryView.swift" \ "$DIR/NTSAnchorView.swift" \ "$DIR/SettingsView.swift" \ "$DIR/MontanaPresenceApp.swift" # Create .app bundle mkdir -p "$APP/Contents/MacOS" mkdir -p "$APP/Contents/Resources" mv "$DIR/MontanaPresence" "$APP/Contents/MacOS/" cp "$DIR/Info.plist" "$APP/Contents/" cp "$DIR/Montana.icns" "$APP/Contents/Resources/" 2>/dev/null || true # Copy logo images to Resources cp "$DIR/JunonaLogo.jpg" "$APP/Contents/Resources/" 2>/dev/null || true cp "$DIR/JunonaReverse.jpg" "$APP/Contents/Resources/" 2>/dev/null || true cp "$DIR/NetworkLogo.png" "$APP/Contents/Resources/" 2>/dev/null || true cp "$DIR/TimeCoin.png" "$APP/Contents/Resources/" 2>/dev/null || true # Sign with entitlements (ad-hoc) codesign --force --sign - --entitlements "$DIR/Entitlements.plist" "$APP" # Create zip for distribution cd "$DIR" rm -f Montana.app.zip zip -r -q Montana.app.zip Montana.app # ═══════════════════════════════════════════════════════════════ # AUTO-DEPLOY to /Applications/ — единственная точка запуска # Это предотвращает запуск старых версий из Launchpad/Spotlight # ═══════════════════════════════════════════════════════════════ # Kill old Montana process (if running) pkill -f "Montana.app/Contents/MacOS/MontanaPresence" 2>/dev/null || true sleep 1 # Remove old copy from /Applications/ rm -rf "/Applications/Montana.app" # Install fresh build to /Applications/ cp -R "$APP" "/Applications/Montana.app" # Reset Launchpad cache so only /Applications/ copy shows defaults write com.apple.dock ResetLaunchPad -bool true killall Dock 2>/dev/null || true echo "" echo "═══════════════════════════════════════════════════════" echo " Montana v3.18.0 — BUILD + DEPLOY COMPLETE" echo "═══════════════════════════════════════════════════════" echo " Built: $APP" echo " Installed: /Applications/Montana.app" echo " Package: $DIR/Montana.app.zip" echo "" echo " Launching..." open "/Applications/Montana.app"