Keep dropped-macOS updaters on their last compatible build and explain why (#38777)

* Keep dropped-macOS updaters on their last compatible build and explain why

Stamp minimumSystemVersion into every mac update manifest from the built
app's LSMinimumSystemVersion, and refuse to publish an ungated release.
When the updater withholds a newer release for this macOS, show a one-time
notice and say so in Settings and the update card.

* Trim the unsupported-Mac notice copy
This commit is contained in:
Neil
2026-11-05 18:29:16 -08:00
committed by GitHub
parent 4c49ddca3e
commit 3cb4853187
33 changed files with 678 additions and 25 deletions
+3
View File
@@ -1,6 +1,7 @@
import type { UiLanguageDetection } from '../../shared/ui-locale'
import type { WindowMaterial } from '../../shared/window-material'
import type { AppIdentity } from '../../shared/app-identity'
import type { MacosUpgradeSupport } from '../../shared/macos-upgrade-support'
import type { E2EConfig } from '../../shared/e2e-config'
import type { ExecutionHostId } from '../../shared/execution-host'
import type {
@@ -24,6 +25,8 @@ export type AppApi = {
getIdentity: () => Promise<AppIdentity>
/** Local Windows desktop elevation; null when unavailable. Does not describe remote hosts. */
getWindowsAdministratorStatus: () => Promise<boolean | null>
/** Local Mac only; optional for older clients. */
getMacosUpgradeSupport?: (minimumMacosVersion: string) => Promise<MacosUpgradeSupport>
/** Restarts the installed Windows desktop with administrator approval and replaces its local terminal host. */
restartAsAdministrator: () => Promise<void>
/** Append filenames to this base: Vite /@fs in dev, file:// resources when packaged. */
+3
View File
@@ -1,5 +1,6 @@
import { ipcRenderer } from 'electron'
import type { AppIdentity } from '../../shared/app-identity'
import type { MacosUpgradeSupport } from '../../shared/macos-upgrade-support'
import type { FloatingTerminalCwdRequest } from '../../shared/ui-chrome-types'
import type { MacCapturedDigitRowChord } from '../../shared/macos-symbolic-hotkeys'
import type { MarkdownDocument } from '../../shared/filesystem-entry-types'
@@ -26,6 +27,8 @@ export const appApi = {
getIdentity: (): Promise<AppIdentity> => ipcRenderer.invoke('app:getIdentity'),
getWindowsAdministratorStatus: (): Promise<boolean | null> =>
ipcRenderer.invoke('app:getWindowsAdministratorStatus'),
getMacosUpgradeSupport: (minimumMacosVersion: string): Promise<MacosUpgradeSupport> =>
ipcRenderer.invoke('app:getMacosUpgradeSupport', minimumMacosVersion),
restartAsAdministrator: (): Promise<void> =>
prepareAndInvokeAppRestart(
window,