From 53c2f3253bcf32886706fc023e794bbeb253c90f Mon Sep 17 00:00:00 2001 From: cdrci <78873720+cdrci@users.noreply.github.com> Date: Sat, 26 Sep 2026 09:12:50 +1000 Subject: [PATCH] Update Code to 1.139.1 (#8021) * Update Code to 1.139.1 * Bump proxy-addr to 2.0.8 * Add preinstall setup to build Already had this in the release build step, not sure why it is not in the main build step. But we started getting errors building native modules in ci, and this seems to be why. * Fix quick input It types too quickly, before the input is visible. --- .github/workflows/build.yaml | 20 ++++++++++++++++---- .node-version | 2 +- CHANGELOG.md | 11 +++++++++-- lib/vscode | 2 +- package-lock.json | 10 +++++++--- patches/copilot.diff | 2 +- patches/display-language.diff | 2 +- patches/getting-started.diff | 6 +++--- patches/local-storage.diff | 4 ++-- patches/marketplace.diff | 2 +- patches/sourcemaps.diff | 2 +- patches/update-check.diff | 2 +- test/e2e/extensions.test.ts | 6 +++--- test/e2e/models/CodeServer.ts | 1 + 14 files changed, 48 insertions(+), 24 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 35208c7c6..fad94320a 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -156,6 +156,7 @@ jobs: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} DISABLE_V8_COMPILE_CACHE: 1 VERSION: 0.0.0 + VSCODE_ARCH: x64 VSCODE_TARGET: linux-x64 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} ELECTRON_SKIP_BINARY_DOWNLOAD: 1 @@ -179,13 +180,13 @@ jobs: cache-dependency-path: | package-lock.json test/package-lock.json - - run: SKIP_SUBMODULE_DEPS=1 npm ci - - run: npm run build + # Get Code's git hash. When this changes it means the content is # different and we need to rebuild. - name: Get latest lib/vscode rev id: vscode-rev run: echo "rev=$(git rev-parse HEAD:./lib/vscode)" >> $GITHUB_OUTPUT + # We need to rebuild when we have a new version of Code, when any of the # patches changed, or when the code-server version changes (since it gets # embedded into the code). Use VSCODE_CACHE_VERSION to force a rebuild. @@ -198,10 +199,21 @@ jobs: - name: Build vscode if: steps.cache-vscode.outputs.cache-hit != 'true' run: | - pushd lib/vscode + cd lib/vscode/build npm ci - popd + cd .. + source ./build/azure-pipelines/linux/setup-env.sh + # Run preinstall script before root dependencies are installed + # so that v8 headers are patched correctly for native modules. + node build/npm/preinstall.ts + npm ci + cd ../.. npm run build:vscode + + # Build the code-server wrapper. + - run: SKIP_SUBMODULE_DEPS=1 npm ci + - run: npm run build + # Push up an artifact containing the linux-x64 release. - run: KEEP_MODULES=1 npm run release - run: tar -czf package.tar.gz release diff --git a/.node-version b/.node-version index 8dfc5cb1a..b7179aed0 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -24.18.1 +24.20.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f159ce41..04050433c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,10 +22,17 @@ Code v99.99.999 ## Unreleased +Code v1.139.1 + +### Changed + +- Update to Code 1.139.1 + ### Fixed -- `--idle-timeout-seconds` was only validated when passed as `--idle-timeout-seconds=`; - values of 60 or less passed as `--idle-timeout-seconds ` were silently accepted. +- `--idle-timeout-seconds` was only validated when passed as + `--idle-timeout-seconds=`; values of 60 or less passed as + `--idle-timeout-seconds ` were silently accepted. ## [4.138.0](https://github.com/coder/code-server/releases/tag/v4.138.0) - 2026-09-19 diff --git a/lib/vscode b/lib/vscode index 7debcd0e2..04c0d99f4 160000 --- a/lib/vscode +++ b/lib/vscode @@ -1 +1 @@ -Subproject commit 7debcd0e2acdea1c52de81bf9ee1620444407dda +Subproject commit 04c0d99f4fb0d8afe6ce4f0c58e31e183ac3e4b1 diff --git a/package-lock.json b/package-lock.json index fe1af8d11..91457d08d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5243,9 +5243,9 @@ } }, "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.8.tgz", + "integrity": "sha512-5nnx0yGyVUcY6t9RnWcARWtwT9F1D8O9rt08htPvnd49W1IgZtmLkhu9WfMzQj1cFxjHIO6connUNVW5k7AVyQ==", "license": "MIT", "dependencies": { "forwarded": "0.2.0", @@ -5253,6 +5253,10 @@ }, "engines": { "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/proxy-agent": { diff --git a/patches/copilot.diff b/patches/copilot.diff index c66ccdb09..22075a19a 100644 --- a/patches/copilot.diff +++ b/patches/copilot.diff @@ -44,7 +44,7 @@ Index: code-server/lib/vscode/build/lib/extensions.ts import watcher from './watch/index.ts'; import { createRequire } from 'module'; -@@ -491,6 +492,116 @@ export function packageCopilotExtensionS +@@ -487,6 +488,116 @@ export function packageCopilotExtensionS ).pipe(util2.setExecutableBit(['**/*.sh'])); } diff --git a/patches/display-language.diff b/patches/display-language.diff index ee643972d..361bf2f78 100644 --- a/patches/display-language.diff +++ b/patches/display-language.diff @@ -56,7 +56,7 @@ Index: code-server/lib/vscode/src/vs/server/node/remoteLanguagePacks.ts import type { INLSConfiguration } from '../../nls.js'; @@ -33,7 +35,94 @@ export async function getNLSConfiguratio if (!result) { - result = resolveNLSConfiguration({ userLocale: language, osLocale: language, commit: product.commit, userDataPath, nlsMetadataPath }); + result = resolveNLSConfiguration({ userLocale: language, osLocale: language, commit: product.commit, nlsMetadataHash: product.nlsMetadataHash, userDataPath, nlsMetadataPath }); nlsConfigurationCache.set(cacheKey, result); + // If the language pack does not yet exist, it defaults to English, which is + // then cached and you have to restart even if you then install the pack. diff --git a/patches/getting-started.diff b/patches/getting-started.diff index a8ba914df..dab9d4144 100644 --- a/patches/getting-started.diff +++ b/patches/getting-started.diff @@ -19,7 +19,7 @@ Index: code-server/lib/vscode/src/vs/workbench/contrib/welcomeGettingStarted/bro import { renderFormattedText } from '../../../../base/browser/formattedTextRenderer.js'; import { status } from '../../../../base/browser/ui/aria/aria.js'; import { StandardKeyboardEvent } from '../../../../base/browser/keyboardEvent.js'; -@@ -54,7 +54,7 @@ import { IRecentFolder, IRecentWorkspace +@@ -55,7 +55,7 @@ import { IRecentFolder, IRecentWorkspace import { OpenRecentAction } from '../../../browser/actions/windowActions.js'; import { OpenFileFolderAction, OpenFolderAction, OpenFolderViaWorkspaceAction } from '../../../browser/actions/workspaceActions.js'; import { EditorPane } from '../../../browser/parts/editor/editorPane.js'; @@ -28,7 +28,7 @@ Index: code-server/lib/vscode/src/vs/workbench/contrib/welcomeGettingStarted/bro import { IEditorOpenContext, IEditorSerializer } from '../../../common/editor.js'; import { IWebviewElement, IWebviewService } from '../../webview/browser/webview.js'; import './gettingStartedColors.js'; -@@ -928,6 +928,72 @@ export class GettingStartedPage extends +@@ -930,6 +930,72 @@ export class GettingStartedPage extends $('p.subtitle.description', {}, localize({ key: 'gettingStarted.editingEvolved', comment: ['Shown as subtitle on the Welcome page.'] }, "Editing evolved")) ); @@ -101,7 +101,7 @@ Index: code-server/lib/vscode/src/vs/workbench/contrib/welcomeGettingStarted/bro const leftColumn = $('.categories-column.categories-column-left', {},); const rightColumn = $('.categories-column.categories-column-right', {},); -@@ -977,6 +1043,9 @@ export class GettingStartedPage extends +@@ -980,6 +1046,9 @@ export class GettingStartedPage extends recentList.setLimit(5); reset(leftColumn, startList.getDomElement(), recentList.getDomElement()); } diff --git a/patches/local-storage.diff b/patches/local-storage.diff index c42dd189f..7799e532e 100644 --- a/patches/local-storage.diff +++ b/patches/local-storage.diff @@ -66,7 +66,7 @@ Index: code-server/lib/vscode/src/vs/workbench/services/configuration/browser/co =================================================================== --- code-server.orig/lib/vscode/src/vs/workbench/services/configuration/browser/configurationService.ts +++ code-server/lib/vscode/src/vs/workbench/services/configuration/browser/configurationService.ts -@@ -148,8 +148,10 @@ export class WorkspaceService extends Di +@@ -150,8 +150,10 @@ export class WorkspaceService extends Di this.workspaceConfiguration = this._register(new WorkspaceConfiguration(configurationCache, fileService, uriIdentityService, logService)); this._register(this.workspaceConfiguration.onDidUpdateConfiguration(fromCache => { this.onWorkspaceConfigurationChanged(fromCache).then(() => { @@ -79,7 +79,7 @@ Index: code-server/lib/vscode/src/vs/workbench/services/configuration/browser/co }); })); -@@ -561,6 +563,12 @@ export class WorkspaceService extends Di +@@ -563,6 +565,12 @@ export class WorkspaceService extends Di previousFolders = this.workspace.folders; this.workspace.update(workspace); } else { diff --git a/patches/marketplace.diff b/patches/marketplace.diff index efd76c2c0..5e867ee61 100644 --- a/patches/marketplace.diff +++ b/patches/marketplace.diff @@ -20,7 +20,7 @@ Index: code-server/lib/vscode/src/vs/platform/product/common/product.ts --- code-server.orig/lib/vscode/src/vs/platform/product/common/product.ts +++ code-server/lib/vscode/src/vs/platform/product/common/product.ts @@ -65,6 +65,17 @@ else if (globalThis._VSCODE_PRODUCT_JSON - Object.assign(product, { copilotVersions: { runtime, sdk } }); + Object.assign(product, { copilotVersions: { runtime: packageConfiguration.copilotRuntimeVersion, sdk } }); } } + diff --git a/patches/sourcemaps.diff b/patches/sourcemaps.diff index 22ca7ef04..fdf69d39a 100644 --- a/patches/sourcemaps.diff +++ b/patches/sourcemaps.diff @@ -6,7 +6,7 @@ Index: code-server/lib/vscode/build/gulpfile.reh.ts =================================================================== --- code-server.orig/lib/vscode/build/gulpfile.reh.ts +++ code-server/lib/vscode/build/gulpfile.reh.ts -@@ -344,10 +344,15 @@ function packageTask(type: string, platf +@@ -260,10 +260,15 @@ function packageTask(type: string, platf const destination = path.join(BUILD_ROOT, destinationFolderName); return () => { diff --git a/patches/update-check.diff b/patches/update-check.diff index 682faf18b..091f787e8 100644 --- a/patches/update-check.diff +++ b/patches/update-check.diff @@ -101,7 +101,7 @@ Index: code-server/lib/vscode/src/vs/base/common/product.ts readonly version: string; readonly date?: string; -@@ -145,6 +146,7 @@ export interface IProductConfiguration { +@@ -148,6 +149,7 @@ export interface IProductConfiguration { }; readonly extensionsGallery?: { diff --git a/test/e2e/extensions.test.ts b/test/e2e/extensions.test.ts index 70869c03c..376bdce3a 100644 --- a/test/e2e/extensions.test.ts +++ b/test/e2e/extensions.test.ts @@ -54,9 +54,9 @@ function runExternalUriTests(proxyEndpointTemplate?: string) { await codeServerPage.waitForTestExtensionLoaded() await codeServerPage.executeCommandViaMenus("code-server: asExternalUri test") - const inputBox = codeServerPage.page.locator(".quick-input-widget input") - await inputBox.fill(input) - await inputBox.press("Enter") + await codeServerPage.page.waitForSelector(".quick-input-widget:focus-within") + await codeServerPage.page.keyboard.type(input) + await codeServerPage.page.keyboard.press("Enter") // The test extension displays URI.toString(), which also encodes query delimiters. const output = `${proxyBase.replace(/\/$/, "")}${suffix}` diff --git a/test/e2e/models/CodeServer.ts b/test/e2e/models/CodeServer.ts index 4017445db..7423ac9f6 100644 --- a/test/e2e/models/CodeServer.ts +++ b/test/e2e/models/CodeServer.ts @@ -437,6 +437,7 @@ export class CodeServerPage { async executeCommandViaMenus(command: string) { await this.navigateMenus(["View", "Command Palette..."]) + await this.page.waitForSelector(".quick-input-widget:focus-within") await this.page.keyboard.type(command) await this.page.hover(`text=${command}`)