Disable App Store updater and bump release build number

This commit is contained in:
h3p 2026-04-17 10:08:57 +02:00
parent 55ae218ef4
commit 6f00a27504
No known key found for this signature in database
5 changed files with 57 additions and 41 deletions

1
.gitattributes vendored
View file

@ -1,2 +1,3 @@
*.sh text eol=lf *.sh text eol=lf
*.py text eol=lf *.py text eol=lf
.githooks/* text eol=lf

View file

@ -362,7 +362,7 @@
CODE_SIGNING_ALLOWED = YES; CODE_SIGNING_ALLOWED = YES;
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 596; CURRENT_PROJECT_VERSION = 598;
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = CS727NF72U; DEVELOPMENT_TEAM = CS727NF72U;
ENABLE_APP_SANDBOX = YES; ENABLE_APP_SANDBOX = YES;
@ -445,7 +445,7 @@
CODE_SIGNING_ALLOWED = YES; CODE_SIGNING_ALLOWED = YES;
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 596; CURRENT_PROJECT_VERSION = 598;
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = CS727NF72U; DEVELOPMENT_TEAM = CS727NF72U;
ENABLE_APP_SANDBOX = YES; ENABLE_APP_SANDBOX = YES;

View file

@ -18,11 +18,17 @@ enum ReleaseRuntimePolicy {
#if os(macOS) #if os(macOS)
static var isMacAppStoreDistribution: Bool { static var isMacAppStoreDistribution: Bool {
let receiptURL = Bundle.main.bundleURL // Treat both production and sandbox App Store receipts as App Store distribution.
if let appStoreReceiptURL = Bundle.main.appStoreReceiptURL,
FileManager.default.fileExists(atPath: appStoreReceiptURL.path) {
return true
}
let legacyReceiptURL = Bundle.main.bundleURL
.appendingPathComponent("Contents", isDirectory: true) .appendingPathComponent("Contents", isDirectory: true)
.appendingPathComponent("_MASReceipt", isDirectory: true) .appendingPathComponent("_MASReceipt", isDirectory: true)
.appendingPathComponent("receipt", isDirectory: false) .appendingPathComponent("receipt", isDirectory: false)
return FileManager.default.fileExists(atPath: receiptURL.path) return FileManager.default.fileExists(atPath: legacyReceiptURL.path)
} }
#endif #endif

View file

@ -3148,39 +3148,41 @@ struct NeonSettingsView: View {
private func diagnosticsSectionContent(events: [EditorPerformanceMonitor.FileOpenEvent]) -> some View { private func diagnosticsSectionContent(events: [EditorPerformanceMonitor.FileOpenEvent]) -> some View {
VStack(alignment: .leading, spacing: UI.space10) { VStack(alignment: .leading, spacing: UI.space10) {
Text("Updater") if ReleaseRuntimePolicy.isUpdaterEnabledForCurrentDistribution {
.font(.subheadline.weight(.semibold)) Text("Updater")
Text(localized("Last check result: %@", appUpdateManager.lastCheckResultSummary)) .font(.subheadline.weight(.semibold))
.font(Typography.footnote) Text(localized("Last check result: %@", appUpdateManager.lastCheckResultSummary))
.foregroundStyle(.secondary)
if let checkedAt = appUpdateManager.lastCheckedAt {
Text(localized("Last checked: %@", checkedAt.formatted(date: .abbreviated, time: .shortened)))
.font(Typography.footnote) .font(Typography.footnote)
.foregroundStyle(.secondary) .foregroundStyle(.secondary)
} if let checkedAt = appUpdateManager.lastCheckedAt {
if let pausedUntil = appUpdateManager.pausedUntil, pausedUntil > Date() { Text(localized("Last checked: %@", checkedAt.formatted(date: .abbreviated, time: .shortened)))
Text(localized("Auto-check pause active until %@ (%lld consecutive failures).", pausedUntil.formatted(date: .abbreviated, time: .shortened), appUpdateManager.consecutiveFailureCount)) .font(Typography.footnote)
.foregroundStyle(.secondary)
}
if let pausedUntil = appUpdateManager.pausedUntil, pausedUntil > Date() {
Text(localized("Auto-check pause active until %@ (%lld consecutive failures).", pausedUntil.formatted(date: .abbreviated, time: .shortened), appUpdateManager.consecutiveFailureCount))
.font(Typography.footnote)
.foregroundStyle(.orange)
}
Text(localized("Staged update: %@", appUpdateManager.stagedUpdateVersionSummary))
.font(Typography.footnote) .font(Typography.footnote)
.foregroundStyle(.orange) .foregroundStyle(.secondary)
} Text(localized("Last install attempt: %@", appUpdateManager.lastInstallAttemptSummary))
Text(localized("Staged update: %@", appUpdateManager.stagedUpdateVersionSummary)) .font(Typography.footnote)
.font(Typography.footnote) .foregroundStyle(.secondary)
.foregroundStyle(.secondary)
Text(localized("Last install attempt: %@", appUpdateManager.lastInstallAttemptSummary))
.font(Typography.footnote)
.foregroundStyle(.secondary)
Text("Recent updater log") Text("Recent updater log")
.font(.subheadline.weight(.semibold)) .font(.subheadline.weight(.semibold))
ScrollView { ScrollView {
Text(appUpdateManager.recentLogSnippet) Text(appUpdateManager.recentLogSnippet)
.font(Typography.monoBody) .font(Typography.monoBody)
.frame(maxWidth: .infinity, alignment: .leading) .frame(maxWidth: .infinity, alignment: .leading)
.textSelection(.enabled) .textSelection(.enabled)
} }
.frame(maxHeight: 140) .frame(maxHeight: 140)
Divider() Divider()
}
Text("File Open Timing") Text("File Open Timing")
.font(.subheadline.weight(.semibold)) .font(.subheadline.weight(.semibold))
@ -3234,16 +3236,18 @@ struct NeonSettingsView: View {
var lines: [String] = [] var lines: [String] = []
lines.append("Neon Vision Editor Diagnostics") lines.append("Neon Vision Editor Diagnostics")
lines.append("Timestamp: \(Date().formatted(date: .abbreviated, time: .shortened))") lines.append("Timestamp: \(Date().formatted(date: .abbreviated, time: .shortened))")
lines.append("Updater.lastCheckResult: \(AppUpdateManager.sanitizedDiagnosticSummary(appUpdateManager.lastCheckResultSummary))") if ReleaseRuntimePolicy.isUpdaterEnabledForCurrentDistribution {
lines.append("Updater.lastCheckedAt: \(appUpdateManager.lastCheckedAt?.formatted(date: .abbreviated, time: .shortened) ?? "never")") lines.append("Updater.lastCheckResult: \(AppUpdateManager.sanitizedDiagnosticSummary(appUpdateManager.lastCheckResultSummary))")
lines.append("Updater.stagedVersion: \(appUpdateManager.stagedUpdateVersionSummary)") lines.append("Updater.lastCheckedAt: \(appUpdateManager.lastCheckedAt?.formatted(date: .abbreviated, time: .shortened) ?? "never")")
lines.append("Updater.lastInstallAttempt: \(AppUpdateManager.sanitizedDiagnosticSummary(appUpdateManager.lastInstallAttemptSummary))") lines.append("Updater.stagedVersion: \(appUpdateManager.stagedUpdateVersionSummary)")
if let pausedUntil = appUpdateManager.pausedUntil, pausedUntil > Date() { lines.append("Updater.lastInstallAttempt: \(AppUpdateManager.sanitizedDiagnosticSummary(appUpdateManager.lastInstallAttemptSummary))")
lines.append("Updater.pauseUntil: \(pausedUntil.formatted(date: .abbreviated, time: .shortened))") if let pausedUntil = appUpdateManager.pausedUntil, pausedUntil > Date() {
lines.append("Updater.pauseUntil: \(pausedUntil.formatted(date: .abbreviated, time: .shortened))")
}
lines.append("Updater.consecutiveFailures: \(appUpdateManager.consecutiveFailureCount)")
lines.append("Updater.logSnippet:")
lines.append(appUpdateManager.recentLogSnippet)
} }
lines.append("Updater.consecutiveFailures: \(appUpdateManager.consecutiveFailureCount)")
lines.append("Updater.logSnippet:")
lines.append(appUpdateManager.recentLogSnippet)
lines.append("FileOpenEvents.count: \(events.count)") lines.append("FileOpenEvents.count: \(events.count)")
for event in events { for event in events {
lines.append( lines.append(

View file

@ -134,6 +134,11 @@ if [[ "$TAG" =~ ^v([0-9]+)\.([0-9]+)\.0$ ]]; then
scripts/update_release_history_svg.py "$TAG" scripts/update_release_history_svg.py "$TAG"
fi fi
if [[ -x "scripts/bump_build_number.sh" ]]; then
echo "Bumping CURRENT_PROJECT_VERSION for release commit..."
scripts/bump_build_number.sh "$PBXPROJ_FILE"
fi
git add README.md CHANGELOG.md "Neon Vision Editor/UI/PanelsAndHelpers.swift" "$PBXPROJ_FILE" \ git add README.md CHANGELOG.md "Neon Vision Editor/UI/PanelsAndHelpers.swift" "$PBXPROJ_FILE" \
docs/images/neon-vision-release-history-0.1-to-0.5.svg \ docs/images/neon-vision-release-history-0.1-to-0.5.svg \
docs/images/neon-vision-release-history-0.1-to-0.5-light.svg docs/images/neon-vision-release-history-0.1-to-0.5-light.svg