From 74ef18dd4f534e0aa05ab8c8f0966ffc0e908f95 Mon Sep 17 00:00:00 2001 From: Bohdan Triapitsyn Date: Tue, 17 Mar 2026 13:25:55 +0200 Subject: [PATCH] fix: tighten server update check handling (#694) Refine server update-check flow in runtime endpoints Improve package-manager update detection consistency --- packages/web/server/index.js | 19 ++----------------- packages/web/server/lib/package-manager.js | 8 ++++++-- 2 files changed, 8 insertions(+), 19 deletions(-) diff --git a/packages/web/server/index.js b/packages/web/server/index.js index 1ec130a1..f9efc4d8 100644 --- a/packages/web/server/index.js +++ b/packages/web/server/index.js @@ -7782,28 +7782,13 @@ async function main(options = {}) { if (value.includes('mobi') || value.includes('android') || value.includes('iphone')) return 'mobile'; return 'desktop'; }; - const inferArch = (ua) => { - const value = (ua || '').toLowerCase(); - if (!value) return 'unknown'; - if (value.includes('aarch64') || value.includes('arm64') || value.includes(' arm;') || value.includes('armv')) return 'arm64'; - if (value.includes('x86_64') || value.includes('x64') || value.includes('amd64') || value.includes('win64') || value.includes('x86-64')) return 'x64'; - return 'unknown'; - }; - const inferPlatform = (ua) => { - const value = (ua || '').toLowerCase(); - if (!value) return undefined; - if (value.includes('mac os') || value.includes('macintosh') || value.includes('darwin')) return 'macos'; - if (value.includes('windows') || value.includes('win32') || value.includes('win64')) return 'windows'; - if (value.includes('linux') || value.includes('x11')) return 'linux'; - return 'web'; - }; const userAgent = typeof req.headers['user-agent'] === 'string' ? req.headers['user-agent'] : ''; const updateInfo = await checkForUpdates({ appType: parseString(req.query.appType), deviceClass: parseString(req.query.deviceClass) || inferDeviceClass(userAgent), - platform: parseString(req.query.platform) || inferPlatform(userAgent), - arch: parseString(req.query.arch) || inferArch(userAgent), + platform: parseString(req.query.platform), + arch: parseString(req.query.arch), instanceMode: parseString(req.query.instanceMode), currentVersion: parseString(req.query.currentVersion), reportUsage: parseReportUsage(parseString(req.query.reportUsage)), diff --git a/packages/web/server/lib/package-manager.js b/packages/web/server/lib/package-manager.js index 070f61b0..1624a051 100644 --- a/packages/web/server/lib/package-manager.js +++ b/packages/web/server/lib/package-manager.js @@ -86,11 +86,15 @@ function normalizeArch(value) { async function checkForUpdatesFromApi(currentVersion, options = {}) { try { const appType = normalizeAppType(options.appType); + const hostPlatform = mapPlatform(process.platform); + const hostArch = mapArch(process.arch); + const platform = appType === 'vscode' ? normalizePlatform(options.platform) : hostPlatform; + const arch = appType === 'vscode' ? normalizeArch(options.arch) : hostArch; const payload = { appType, deviceClass: normalizeDeviceClass(options.deviceClass), - platform: normalizePlatform(options.platform), - arch: normalizeArch(options.arch), + platform, + arch, channel: 'stable', currentVersion, installId: getOrCreateInstallId(appType),