feat(updates): choose the update source, with a CNB mirror (#1673)

* feat(updates): choose the update source, with a CNB mirror

System Settings › Updates › Update source: Automatic, GitHub or CNB (China
mirror). Automatic uses CNB for the Chinese UI and GitHub otherwise. The
chosen source is tried first and the other one when it fails or has no
manifest, for the check, the startup check and the install.

* feat(updates): offer the other update source after a failed download

A failed or cancelled update download now offers "Retry with CNB" (or
"Retry with GitHub"): it switches the update source and downloads again
from there. Checks need no such action: they already try both sources.

* fix(updates): keep GitHub untranslated in the text catalog
Цей коміт міститься в:
l0ng-ai authored and GitHub committed 2026-11-06 13:30:19 +08:00
1 джерело c1aa092d75
коміт 266e4eeb03
13 files changed
+246 -39

No files matched your search

+1
Переглянути файл
@@ -11,6 +11,7 @@ export const CLIENT_SETTINGS_KEYS = [
"general.reopenLastProject",
"general.confirmExit",
"general.openProjectIn",
"general.updateSource",
"general.dateFormat",
"editor.fontFamily",
"editor.fontSize",
+1
Переглянути файл
@@ -81,6 +81,7 @@
"app.update.progressUnknown": "{done} MB",
"app.update.restart": "Restart",
"app.update.retry": "Retry",
"app.update.retryWith": "Retry with {source}",
"app.window.desktopOnly": "Multiple windows require the desktop app",
"app.window.openFailed": "Cannot open {name}",
"app.window.pickFileTitle": "Open File",
+6 -1
Переглянути файл
@@ -37,5 +37,10 @@
"e.g. /var/www/html": "e.g. /var/www/html",
"Listening for Xdebug on port {port}": "Listening for Xdebug on port {port}",
"Port {port} is already in use: another IDE or debug session may be listening on it. Stop it or choose another port.": "Port {port} is already in use: another IDE or debug session may be listening on it. Stop it or choose another port.",
"Unable to load image: {path}": "Unable to load image: {path}"
"Unable to load image: {path}": "Unable to load image: {path}",
"Updates": "Updates",
"Update source": "Update source",
"Where updates are downloaded from. If it can't be reached, the other source is tried.": "Where updates are downloaded from. If it can't be reached, the other source is tried.",
"Automatic": "Automatic",
"CNB (China mirror)": "CNB (China mirror)"
}
+5 -1
Переглянути файл
@@ -6377,5 +6377,9 @@
"Force push anyway": "仍然强制推送",
"Stage and Retry": "暂存并重试",
"Show Files": "显示文件",
"Unable to load image: {path}": "无法加载图片:{path}"
"Unable to load image: {path}": "无法加载图片:{path}",
"Updates": "更新",
"Update source": "更新源",
"Where updates are downloaded from. If it can't be reached, the other source is tried.": "从哪里下载更新。无法连接时会改用另一个源。",
"CNB (China mirror)": "CNB(国内镜像)"
}
+1
Переглянути файл
@@ -94,6 +94,7 @@ const UNTRANSLATED = new Set<string>([
"oxfmt",
"Ruff",
"IntelliJ IDEA",
"GitHub",
"PHPStan",
// Docker run target placeholder values
"compose.yaml",
+1
Переглянути файл
@@ -81,6 +81,7 @@
"app.update.progressUnknown": "{done} MB",
"app.update.restart": "重启",
"app.update.retry": "重试",
"app.update.retryWith": "改用 {source} 重试",
"app.window.desktopOnly": "多窗口需要桌面应用",
"app.window.openFailed": "无法打开 {name}",
"app.window.pickFileTitle": "打开文件",