| privatevoice.src/build/config.yml | ●●●●● patch | view | raw | blame | history | |
| privatevoice.src/build/darwin/Info.plist | ●●●●● patch | view | raw | blame | history | |
| privatevoice.src/internal/startup/startup_darwin.go | ●●●●● patch | view | raw | blame | history | |
| privatevoice.src/scripts/build-macappstore-pkg-macos.sh | ●●●●● patch | view | raw | blame | history | |
| privatevoice.src/scripts/build-release-macos.sh | ●●●●● patch | view | raw | blame | history |
privatevoice.src/build/config.yml
@@ -3,7 +3,7 @@ info: companyName: "PrivateVoice" productName: "PrivateVoice Dictation" productIdentifier: "com.privatevoice.input" productIdentifier: "com.shanghai3168.privatevoicedictation" description: "Private offline voice input tool" copyright: "(c) 2026, PrivateVoice" comments: "Private. Offline." privatevoice.src/build/darwin/Info.plist
@@ -7,7 +7,7 @@ <key>CFBundleIconFile</key> <string>icon.icns</string> <key>CFBundleIdentifier</key> <string>com.privatevoice.input</string> <string>com.shanghai3168.privatevoicedictation</string> <key>CFBundleDevelopmentRegion</key> <string>en</string> <key>CFBundleName</key> privatevoice.src/internal/startup/startup_darwin.go
@@ -15,7 +15,7 @@ <plist version="1.0"> <dict> <key>Label</key> <string>com.privatevoice.input</string> <string>com.shanghai3168.privatevoicedictation</string> <key>ProgramArguments</key> <array> <string>{{.ExePath}}</string> @@ -26,7 +26,7 @@ </plist> ` const launchAgentID = "com.privatevoice.input" const launchAgentID = "com.shanghai3168.privatevoicedictation" var legacyLaunchAgentIDs = []string{"com.voicesnap.app"} privatevoice.src/scripts/build-macappstore-pkg-macos.sh
@@ -15,7 +15,7 @@ # Example: "3rd Party Mac Developer Installer: Example Team (TEAMID)" # # PRIVATEVOICE_APPSTORE_PROVISIONING_PROFILE # Path to the Mac App Store provisioning profile for com.privatevoice.input. # Path to the Mac App Store provisioning profile for com.shanghai3168.privatevoicedictation. # # Optional environment: # PRIVATEVOICE_SIGNING_KEYCHAIN @@ -47,6 +47,7 @@ VERSION="$(defaults read "$INFO_PLIST" CFBundleShortVersionString 2>/dev/null || echo "2.1.0")" BUILD_ID="$(defaults read "$INFO_PLIST" CFBundleVersion 2>/dev/null || date +%Y%m%d.%H%M)" BUNDLE_ID="$(defaults read "$INFO_PLIST" CFBundleIdentifier 2>/dev/null || echo "")" step() { echo "" @@ -129,6 +130,7 @@ [[ -n "$APPSTORE_PROVISIONING_PROFILE" ]] || fail "PRIVATEVOICE_APPSTORE_PROVISIONING_PROFILE is required" [[ -f "$APPSTORE_PROVISIONING_PROFILE" ]] || fail "Provisioning profile not found: $APPSTORE_PROVISIONING_PROFILE" [[ -f "$INFO_PLIST" ]] || fail "Info.plist not found at $INFO_PLIST" [[ -n "$BUNDLE_ID" ]] || fail "CFBundleIdentifier is missing from $INFO_PLIST" [[ -f "$ENTITLEMENTS" ]] || fail "App Store entitlements not found at $ENTITLEMENTS" [[ -f "$PROJECT_DIR/build/darwin/icon.icns" ]] || fail "icon.icns not found" [[ -d "$SHERPA_LIB_DIR" ]] || fail "sherpa-onnx dylibs not found at $SHERPA_LIB_DIR" @@ -142,6 +144,15 @@ command -v productbuild >/dev/null || fail "productbuild not found" command -v pkgutil >/dev/null || fail "pkgutil not found" PROFILE_PLIST="$(mktemp)" trap 'rm -f "$PROFILE_PLIST"' EXIT security cms -D -i "$APPSTORE_PROVISIONING_PROFILE" >"$PROFILE_PLIST" || fail "Unable to decode provisioning profile: $APPSTORE_PROVISIONING_PROFILE" PROFILE_APP_IDENTIFIER="$(/usr/libexec/PlistBuddy -c "Print :Entitlements:com.apple.application-identifier" "$PROFILE_PLIST" 2>/dev/null || true)" PROFILE_BUNDLE_ID="${PROFILE_APP_IDENTIFIER#*.}" [[ "$PROFILE_BUNDLE_ID" == "$BUNDLE_ID" ]] || fail "Provisioning profile bundle ID mismatch: profile has $PROFILE_BUNDLE_ID, app has $BUNDLE_ID" step "Cleaning old Mac App Store build" rm -rf "$BUILD_DIR" mkdir -p "$BUILD_DIR" privatevoice.src/scripts/build-release-macos.sh
@@ -20,7 +20,7 @@ KEYCHAIN_PROFILE="privatevoice" APP_NAME="PrivateVoice Dictation" BUNDLE_ID="com.privatevoice.input" BUNDLE_ID="com.shanghai3168.privatevoicedictation" SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"