From 5217737d9f2ef8e230698ee207b7444597069468 Mon Sep 17 00:00:00 2001 From: Asher <ash@coder.com> Date: Thu, 31 Oct 2024 11:49:03 -0800 Subject: [PATCH 1/6] Update VS Code to 1.95 --- CHANGELOG.md | 6 ++ lib/vscode | 2 +- patches/base-path.diff | 126 +++++++---------------------- patches/clipboard.diff | 8 +- patches/display-language.diff | 10 +-- patches/external-file-actions.diff | 2 +- patches/getting-started.diff | 6 +- patches/integration.diff | 67 +++++++++++---- patches/local-storage.diff | 2 +- patches/logout.diff | 2 +- patches/marketplace.diff | 4 +- patches/proxy-uri.diff | 4 +- patches/service-worker.diff | 2 +- patches/sourcemaps.diff | 8 +- patches/store-socket.diff | 6 +- patches/telemetry.diff | 2 +- patches/update-check.diff | 2 +- patches/webview.diff | 12 +-- 18 files changed, 119 insertions(+), 152 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02d3b4e9facb..9daa2c957b33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,12 @@ Code v99.99.999 ## Unreleased +Code v1.95.0 + +### Changed + +- Update to Code 1.95.0. + ## [4.93.1](https://github.com/coder/code-server/releases/tag/v4.93.1) - 2024-09-23 Code v1.93.1 diff --git a/lib/vscode b/lib/vscode index 384ff7382de6..65edc4939843 160000 --- a/lib/vscode +++ b/lib/vscode @@ -1 +1 @@ -Subproject commit 384ff7382de624fb94dbaf6da11977bba1ecd427 +Subproject commit 65edc4939843c90c34d61f4ce11704f09d3e5cb6 diff --git a/patches/base-path.diff b/patches/base-path.diff index dbca6a564149..ba6e054a8fe5 100644 --- a/patches/base-path.diff +++ b/patches/base-path.diff @@ -10,7 +10,7 @@ Index: code-server/lib/vscode/src/vs/base/common/network.ts =================================================================== --- code-server.orig/lib/vscode/src/vs/base/common/network.ts +++ code-server/lib/vscode/src/vs/base/common/network.ts -@@ -215,7 +215,9 @@ class RemoteAuthoritiesImpl { +@@ -220,7 +220,9 @@ class RemoteAuthoritiesImpl { return URI.from({ scheme: platform.isWeb ? this._preferredWebSchema : Schemas.vscodeRemoteResource, authority: `${host}:${port}`, @@ -46,18 +46,18 @@ Index: code-server/lib/vscode/src/vs/code/browser/workbench/workbench-dev.html + <link rel="icon" href="{{BASE}}/_static/src/browser/media/favicon-dark-support.svg" /> + <link rel="alternate icon" href="{{BASE}}/_static/src/browser/media/favicon.ico" type="image/x-icon" /> + <link rel="manifest" href="{{VS_BASE}}/manifest.json" crossorigin="use-credentials" /> - </head> + <style id="vscode-css-modules" type="text/css" media="screen"></style> - <body aria-label=""> + </head> @@ -39,7 +39,7 @@ - <script src="{{WORKBENCH_WEB_BASE_URL}}/out/vs/loader.js"></script> - <script src="{{WORKBENCH_WEB_BASE_URL}}/out/vs/webPackagePaths.js"></script> + + <!-- Startup (do not modify order of script tags!) --> <script> - const baseUrl = new URL('{{WORKBENCH_WEB_BASE_URL}}', window.location.origin).toString(); + const baseUrl = new URL('{{WORKBENCH_WEB_BASE_URL}}', window.location).toString(); - Object.keys(self.webPackagePaths).map(function (key, index) { - self.webPackagePaths[key] = `${baseUrl}/remote/web/node_modules/${key}/${self.webPackagePaths[key]}`; - }); + globalThis._VSCODE_FILE_ROOT = baseUrl + '/out/'; + </script> + <script> Index: code-server/lib/vscode/src/vs/code/browser/workbench/workbench.html =================================================================== --- code-server.orig/lib/vscode/src/vs/code/browser/workbench/workbench.html @@ -83,18 +83,18 @@ Index: code-server/lib/vscode/src/vs/code/browser/workbench/workbench.html + <link rel="icon" href="{{BASE}}/_static/src/browser/media/favicon-dark-support.svg" /> + <link rel="alternate icon" href="{{BASE}}/_static/src/browser/media/favicon.ico" type="image/x-icon" /> + <link rel="manifest" href="{{VS_BASE}}/manifest.json" crossorigin="use-credentials" /> - <link data-name="vs/workbench/workbench.web.main" rel="stylesheet" href="{{WORKBENCH_WEB_BASE_URL}}/out/vs/workbench/workbench.web.main.css"> + <link rel="stylesheet" href="{{WORKBENCH_WEB_BASE_URL}}/out/vs/code/browser/workbench/workbench.css"> </head> -@@ -40,7 +40,7 @@ - <script> +@@ -36,7 +36,7 @@ - // Packages + <!-- Startup (do not modify order of script tags!) --> + <script> - const baseUrl = new URL('{{WORKBENCH_WEB_BASE_URL}}', window.location.origin).toString(); + const baseUrl = new URL('{{WORKBENCH_WEB_BASE_URL}}', window.location).toString(); - Object.keys(self.webPackagePaths).map(function (key, index) { - self.webPackagePaths[key] = `${baseUrl}/node_modules/${key}/${self.webPackagePaths[key]}`; - }); + globalThis._VSCODE_FILE_ROOT = baseUrl + '/out/'; + </script> + <script> Index: code-server/lib/vscode/src/vs/platform/remote/browser/browserSocketFactory.ts =================================================================== --- code-server.orig/lib/vscode/src/vs/platform/remote/browser/browserSocketFactory.ts @@ -111,7 +111,7 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts =================================================================== --- code-server.orig/lib/vscode/src/vs/server/node/webClientServer.ts +++ code-server/lib/vscode/src/vs/server/node/webClientServer.ts -@@ -272,16 +272,15 @@ export class WebClientServer { +@@ -271,16 +271,15 @@ export class WebClientServer { return void res.end(); } @@ -133,7 +133,7 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts ); if (!remoteAuthority) { return serveError(req, res, 400, `Bad request.`); -@@ -308,8 +307,12 @@ export class WebClientServer { +@@ -307,8 +306,12 @@ export class WebClientServer { scopes: [['user:email'], ['repo']] } : undefined; @@ -146,7 +146,7 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts embedderIdentifier: 'server-distro', extensionsGallery: this._webExtensionResourceUrlTemplate && this._productService.extensionsGallery ? { ...this._productService.extensionsGallery, -@@ -338,7 +341,7 @@ export class WebClientServer { +@@ -337,7 +340,7 @@ export class WebClientServer { folderUri: resolveWorkspaceURI(this._environmentService.args['default-folder']), workspaceUri: resolveWorkspaceURI(this._environmentService.args['default-workspace']), productConfiguration, @@ -155,7 +155,7 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts }; const cookies = cookie.parse(req.headers.cookie || ''); -@@ -355,9 +358,11 @@ export class WebClientServer { +@@ -354,9 +357,11 @@ export class WebClientServer { const values: { [key: string]: string } = { WORKBENCH_WEB_CONFIGURATION: asJSON(workbenchWebConfiguration), WORKBENCH_AUTH_SESSION: authSessionInfo ? asJSON(authSessionInfo) : '', @@ -169,18 +169,16 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts }; // DEV --------------------------------------------------------------------------------------- -@@ -395,8 +400,8 @@ export class WebClientServer { +@@ -393,7 +398,7 @@ export class WebClientServer { + 'default-src \'self\';', 'img-src \'self\' https: data: blob:;', 'media-src \'self\';', - isESM ? -- `script-src 'self' 'unsafe-eval' ${WORKBENCH_NLS_BASE_URL ?? ''} blob: 'nonce-1nline-m4p' ${this._getScriptCspHashes(data).join(' ')} '${webWorkerExtensionHostIframeScriptSHA}' 'sha256-/r7rqQ+yrxt57sxLuQ6AMYcy/lUpvAIzHjIJt/OeLWU=' ${useTestResolver ? '' : `http://${remoteAuthority}`};` : // the sha is the same as in src/vs/workbench/services/extensions/worker/webWorkerExtensionHostIframe.esm.html -- `script-src 'self' 'unsafe-eval' ${WORKBENCH_NLS_BASE_URL ?? ''} ${this._getScriptCspHashes(data).join(' ')} '${webWorkerExtensionHostIframeScriptSHA}' ${useTestResolver ? '' : `http://${remoteAuthority}`};`, // the sha is the same as in src/vs/workbench/services/extensions/worker/webWorkerExtensionHostIframe.html -+ `script-src 'self' 'unsafe-eval' ${WORKBENCH_NLS_BASE_URL ?? ''} blob: 'nonce-1nline-m4p' ${this._getScriptCspHashes(data).join(' ')} '${webWorkerExtensionHostIframeScriptSHA}' 'sha256-/r7rqQ+yrxt57sxLuQ6AMYcy/lUpvAIzHjIJt/OeLWU=' ${useTestResolver ? '' : ``};` : // the sha is the same as in src/vs/workbench/services/extensions/worker/webWorkerExtensionHostIframe.esm.html -+ `script-src 'self' 'unsafe-eval' ${WORKBENCH_NLS_BASE_URL ?? ''} ${this._getScriptCspHashes(data).join(' ')} '${webWorkerExtensionHostIframeScriptSHA}' ${useTestResolver ? '' : ``};`, // the sha is the same as in src/vs/workbench/services/extensions/worker/webWorkerExtensionHostIframe.html +- `script-src 'self' 'unsafe-eval' ${WORKBENCH_NLS_BASE_URL ?? ''} blob: 'nonce-1nline-m4p' ${this._getScriptCspHashes(data).join(' ')} '${webWorkerExtensionHostIframeScriptSHA}' 'sha256-/r7rqQ+yrxt57sxLuQ6AMYcy/lUpvAIzHjIJt/OeLWU=' ${useTestResolver ? '' : `http://${remoteAuthority}`};`, // the sha is the same as in src/vs/workbench/services/extensions/worker/webWorkerExtensionHostIframe.html ++ `script-src 'self' 'unsafe-eval' ${WORKBENCH_NLS_BASE_URL ?? ''} blob: 'nonce-1nline-m4p' ${this._getScriptCspHashes(data).join(' ')} '${webWorkerExtensionHostIframeScriptSHA}' 'sha256-/r7rqQ+yrxt57sxLuQ6AMYcy/lUpvAIzHjIJt/OeLWU=' ${useTestResolver ? '' : ``};`, // the sha is the same as in src/vs/workbench/services/extensions/worker/webWorkerExtensionHostIframe.html 'child-src \'self\';', `frame-src 'self' https://*.vscode-cdn.net data:;`, 'worker-src \'self\' data: blob:;', -@@ -469,3 +474,70 @@ export class WebClientServer { +@@ -466,3 +471,70 @@ export class WebClientServer { return void res.end(data); } } @@ -267,7 +265,7 @@ Index: code-server/lib/vscode/src/vs/code/browser/workbench/workbench.ts =================================================================== --- code-server.orig/lib/vscode/src/vs/code/browser/workbench/workbench.ts +++ code-server/lib/vscode/src/vs/code/browser/workbench/workbench.ts -@@ -304,7 +304,8 @@ class LocalStorageURLCallbackProvider ex +@@ -317,7 +317,8 @@ class LocalStorageURLCallbackProvider ex this.startListening(); } @@ -277,7 +275,7 @@ Index: code-server/lib/vscode/src/vs/code/browser/workbench/workbench.ts } private startListening(): void { -@@ -550,17 +551,6 @@ class WorkspaceProvider implements IWork +@@ -563,17 +564,6 @@ class WorkspaceProvider implements IWork } } @@ -295,7 +293,7 @@ Index: code-server/lib/vscode/src/vs/code/browser/workbench/workbench.ts (function () { // Find config by checking for DOM -@@ -569,8 +559,8 @@ function readCookie(name: string): strin +@@ -582,8 +572,8 @@ function readCookie(name: string): strin if (!configElement || !configElementAttribute) { throw new Error('Missing web configuration element'); } @@ -319,73 +317,3 @@ Index: code-server/lib/vscode/src/vs/platform/extensionResourceLoader/common/ext } return undefined; } -Index: code-server/lib/vscode/src/vs/code/browser/workbench/workbench-dev.esm.html -=================================================================== ---- code-server.orig/lib/vscode/src/vs/code/browser/workbench/workbench-dev.esm.html -+++ code-server/lib/vscode/src/vs/code/browser/workbench/workbench-dev.esm.html -@@ -11,7 +11,8 @@ - <meta name="mobile-web-app-capable" content="yes" /> - <meta name="apple-mobile-web-app-capable" content="yes" /> - <meta name="apple-mobile-web-app-title" content="Code"> -- <link rel="apple-touch-icon" href="{{WORKBENCH_WEB_BASE_URL}}/resources/server/code-192.png" /> -+ <link rel="apple-touch-icon" sizes="192x192" href="{{BASE}}/_static/src/browser/media/pwa-icon-192.png" /> -+ <link rel="apple-touch-icon" sizes="512x512" href="{{BASE}}/_static/src/browser/media/pwa-icon-512.png" /> - - <!-- Disable pinch zooming --> - <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"> -@@ -26,8 +27,9 @@ - <meta id="vscode-workbench-builtin-extensions" data-settings="{{WORKBENCH_BUILTIN_EXTENSIONS}}"> - - <!-- Workbench Icon/Manifest/CSS --> -- <link rel="icon" href="{{WORKBENCH_WEB_BASE_URL}}/resources/server/favicon.ico" type="image/x-icon" /> -- <link rel="manifest" href="{{WORKBENCH_WEB_BASE_URL}}/resources/server/manifest.json" crossorigin="use-credentials" /> -+ <link rel="icon" href="{{BASE}}/_static/src/browser/media/favicon-dark-support.svg" /> -+ <link rel="alternate icon" href="{{BASE}}/_static/src/browser/media/favicon.ico" type="image/x-icon" /> -+ <link rel="manifest" href="{{VS_BASE}}/manifest.json" crossorigin="use-credentials" /> - <style id="vscode-css-modules" type="text/css" media="screen"></style> - - </head> -@@ -37,7 +39,7 @@ - - <!-- Startup (do not modify order of script tags!) --> - <script> -- const baseUrl = new URL('{{WORKBENCH_WEB_BASE_URL}}', window.location.origin).toString(); -+ const baseUrl = new URL('{{WORKBENCH_WEB_BASE_URL}}', window.location).toString(); - globalThis._VSCODE_FILE_ROOT = baseUrl + '/out/'; - </script> - <script> -Index: code-server/lib/vscode/src/vs/code/browser/workbench/workbench.esm.html -=================================================================== ---- code-server.orig/lib/vscode/src/vs/code/browser/workbench/workbench.esm.html -+++ code-server/lib/vscode/src/vs/code/browser/workbench/workbench.esm.html -@@ -11,7 +11,8 @@ - <meta name="mobile-web-app-capable" content="yes" /> - <meta name="apple-mobile-web-app-capable" content="yes" /> - <meta name="apple-mobile-web-app-title" content="Code"> -- <link rel="apple-touch-icon" href="{{WORKBENCH_WEB_BASE_URL}}/resources/server/code-192.png" /> -+ <link rel="apple-touch-icon" sizes="192x192" href="{{BASE}}/_static/src/browser/media/pwa-icon-192.png" /> -+ <link rel="apple-touch-icon" sizes="512x512" href="{{BASE}}/_static/src/browser/media/pwa-icon-512.png" /> - - <!-- Disable pinch zooming --> - <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"> -@@ -23,8 +24,9 @@ - <meta id="vscode-workbench-auth-session" data-settings="{{WORKBENCH_AUTH_SESSION}}"> - - <!-- Workbench Icon/Manifest/CSS --> -- <link rel="icon" href="{{WORKBENCH_WEB_BASE_URL}}/resources/server/favicon.ico" type="image/x-icon" /> -- <link rel="manifest" href="{{WORKBENCH_WEB_BASE_URL}}/resources/server/manifest.json" crossorigin="use-credentials" /> -+ <link rel="icon" href="{{BASE}}/_static/src/browser/media/favicon-dark-support.svg" /> -+ <link rel="alternate icon" href="{{BASE}}/_static/src/browser/media/favicon.ico" type="image/x-icon" /> -+ <link rel="manifest" href="{{VS_BASE}}/manifest.json" crossorigin="use-credentials" /> - <link rel="stylesheet" href="{{WORKBENCH_WEB_BASE_URL}}/out/vs/code/browser/workbench/workbench.css"> - - </head> -@@ -34,7 +36,7 @@ - - <!-- Startup (do not modify order of script tags!) --> - <script> -- const baseUrl = new URL('{{WORKBENCH_WEB_BASE_URL}}', window.location.origin).toString(); -+ const baseUrl = new URL('{{WORKBENCH_WEB_BASE_URL}}', window.location).toString(); - globalThis._VSCODE_FILE_ROOT = baseUrl + '/out/'; - </script> - <script> diff --git a/patches/clipboard.diff b/patches/clipboard.diff index 921f2c3aa951..a7a0a4c0fc14 100644 --- a/patches/clipboard.diff +++ b/patches/clipboard.diff @@ -10,8 +10,8 @@ Index: code-server/lib/vscode/src/vs/workbench/api/browser/mainThreadCLICommands import { CommandsRegistry, ICommandService } from '../../../platform/commands/common/commands.js'; import { IExtensionGalleryService, IExtensionManagementService } from '../../../platform/extensionManagement/common/extensionManagement.js'; import { ExtensionManagementCLI } from '../../../platform/extensionManagement/common/extensionManagementCLI.js'; -@@ -89,6 +90,11 @@ CommandsRegistry.registerCommand('_remot - return lines.join('\n'); +@@ -95,6 +96,11 @@ CommandsRegistry.registerCommand('_remot + }); +CommandsRegistry.registerCommand('_remoteCLI.setClipboard', function (accessor: ServicesAccessor, content: string) { @@ -102,7 +102,7 @@ Index: code-server/lib/vscode/src/vs/server/node/server.cli.ts =================================================================== --- code-server.orig/lib/vscode/src/vs/server/node/server.cli.ts +++ code-server/lib/vscode/src/vs/server/node/server.cli.ts -@@ -75,6 +75,7 @@ const isSupportedForPipe = (optionId: ke +@@ -76,6 +76,7 @@ const isSupportedForPipe = (optionId: ke case 'verbose': case 'remote': case 'locate-shell-integration-path': @@ -110,7 +110,7 @@ Index: code-server/lib/vscode/src/vs/server/node/server.cli.ts return true; default: return false; -@@ -292,6 +293,23 @@ export async function main(desc: Product +@@ -293,6 +294,23 @@ export async function main(desc: Product } } } else { diff --git a/patches/display-language.diff b/patches/display-language.diff index 9f541bc963b6..03ecfb6f04eb 100644 --- a/patches/display-language.diff +++ b/patches/display-language.diff @@ -160,8 +160,8 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts +import { getLocaleFromConfig, getBrowserNLSConfiguration } from './remoteLanguagePacks.js'; import { CharCode } from '../../base/common/charCode.js'; import { IExtensionManifest } from '../../platform/extensions/common/extensions.js'; - import { isESM } from '../../base/common/amd.js'; -@@ -99,6 +100,7 @@ export class WebClientServer { + import { ICSSDevelopmentService } from '../../platform/cssDev/node/cssDevService.js'; +@@ -98,6 +99,7 @@ export class WebClientServer { private readonly _webExtensionResourceUrlTemplate: URI | undefined; private readonly _staticRoute: string; @@ -169,7 +169,7 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts private readonly _callbackRoute: string; private readonly _webExtensionRoute: string; -@@ -114,6 +116,7 @@ export class WebClientServer { +@@ -113,6 +115,7 @@ export class WebClientServer { ) { this._webExtensionResourceUrlTemplate = this._productService.extensionsGallery?.resourceUrlTemplate ? URI.parse(this._productService.extensionsGallery.resourceUrlTemplate) : undefined; @@ -177,7 +177,7 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts this._staticRoute = `${serverRootPath}/static`; this._callbackRoute = `${serverRootPath}/callback`; this._webExtensionRoute = `/web-extension-resource`; -@@ -352,14 +355,22 @@ export class WebClientServer { +@@ -351,14 +354,22 @@ export class WebClientServer { }; const cookies = cookie.parse(req.headers.cookie || ''); @@ -355,7 +355,7 @@ Index: code-server/lib/vscode/build/gulpfile.reh.js =================================================================== --- code-server.orig/lib/vscode/build/gulpfile.reh.js +++ code-server/lib/vscode/build/gulpfile.reh.js -@@ -59,6 +59,7 @@ const serverResourceIncludes = [ +@@ -58,6 +58,7 @@ const serverResourceIncludes = [ // NLS 'out-build/nls.messages.json', diff --git a/patches/external-file-actions.diff b/patches/external-file-actions.diff index bb78042eedcf..aff613da8f3a 100644 --- a/patches/external-file-actions.diff +++ b/patches/external-file-actions.diff @@ -112,7 +112,7 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts =================================================================== --- code-server.orig/lib/vscode/src/vs/server/node/webClientServer.ts +++ code-server/lib/vscode/src/vs/server/node/webClientServer.ts -@@ -336,6 +336,8 @@ export class WebClientServer { +@@ -335,6 +335,8 @@ export class WebClientServer { serverBasePath: this._basePath, webviewEndpoint: vscodeBase + this._staticRoute + '/out/vs/workbench/contrib/webview/browser/pre', userDataPath: this._environmentService.userDataPath, diff --git a/patches/getting-started.diff b/patches/getting-started.diff index abf5aeecf10d..0e6513c44532 100644 --- a/patches/getting-started.diff +++ b/patches/getting-started.diff @@ -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'; -@@ -820,6 +820,72 @@ export class GettingStartedPage extends +@@ -826,6 +826,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', {},); -@@ -855,6 +921,9 @@ export class GettingStartedPage extends +@@ -861,6 +927,9 @@ export class GettingStartedPage extends recentList.setLimit(5); reset(leftColumn, startList.getDomElement(), recentList.getDomElement()); } @@ -201,7 +201,7 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts =================================================================== --- code-server.orig/lib/vscode/src/vs/server/node/webClientServer.ts +++ code-server/lib/vscode/src/vs/server/node/webClientServer.ts -@@ -340,6 +340,7 @@ export class WebClientServer { +@@ -339,6 +339,7 @@ export class WebClientServer { userDataPath: this._environmentService.userDataPath, isEnabledFileDownloads: !this._environmentService.args['disable-file-downloads'], isEnabledFileUploads: !this._environmentService.args['disable-file-uploads'], diff --git a/patches/integration.diff b/patches/integration.diff index f687f62c0841..4428faa050ed 100644 --- a/patches/integration.diff +++ b/patches/integration.diff @@ -3,11 +3,13 @@ Prepare Code for integration with code-server 1. We already have the arguments so allow passing them in. There is also a slight change in a few directories to preserve the directory structure we have been using and to not override passed-in arguments. -2. Modify the terminal environment to filter out code-server environment variables. -3. Add the code-server version to the help dialog. -4. Add ready events for use in an iframe. -5. Add our icons. -6. Use our own manifest. +2. Modify the entry point to allow importing the code, instead of just running + the server immediately. +3. Modify the terminal environment to filter out code-server environment variables. +4. Add the code-server version to the help dialog. +5. Add ready events for use in an iframe. +6. Add our icons and remove the existing ones. +7. Use our own manifest. Index: code-server/lib/vscode/src/vs/server/node/server.main.ts =================================================================== @@ -221,19 +223,18 @@ Index: code-server/lib/vscode/src/vs/code/browser/workbench/workbench-dev.html <!-- Disable pinch zooming --> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"> -@@ -26,9 +27,9 @@ +@@ -26,8 +27,9 @@ <meta id="vscode-workbench-builtin-extensions" data-settings="{{WORKBENCH_BUILTIN_EXTENSIONS}}"> <!-- Workbench Icon/Manifest/CSS --> - <link rel="icon" href="{{WORKBENCH_WEB_BASE_URL}}/resources/server/favicon.ico" type="image/x-icon" /> - <link rel="manifest" href="{{WORKBENCH_WEB_BASE_URL}}/resources/server/manifest.json" crossorigin="use-credentials" /> -- + <link rel="icon" href="/_static/src/browser/media/favicon-dark-support.svg" /> + <link rel="alternate icon" href="/_static/src/browser/media/favicon.ico" type="image/x-icon" /> + <link rel="manifest" href="/manifest.json" crossorigin="use-credentials" /> - </head> + <style id="vscode-css-modules" type="text/css" media="screen"></style> - <body aria-label=""> + </head> Index: code-server/lib/vscode/src/vs/code/browser/workbench/workbench.html =================================================================== --- code-server.orig/lib/vscode/src/vs/code/browser/workbench/workbench.html @@ -257,14 +258,14 @@ Index: code-server/lib/vscode/src/vs/code/browser/workbench/workbench.html + <link rel="icon" href="/_static/src/browser/media/favicon-dark-support.svg" /> + <link rel="alternate icon" href="/_static/src/browser/media/favicon.ico" type="image/x-icon" /> + <link rel="manifest" href="/manifest.json" crossorigin="use-credentials" /> - <link data-name="vs/workbench/workbench.web.main" rel="stylesheet" href="{{WORKBENCH_WEB_BASE_URL}}/out/vs/workbench/workbench.web.main.css"> + <link rel="stylesheet" href="{{WORKBENCH_WEB_BASE_URL}}/out/vs/code/browser/workbench/workbench.css"> </head> Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts =================================================================== --- code-server.orig/lib/vscode/src/vs/server/node/webClientServer.ts +++ code-server/lib/vscode/src/vs/server/node/webClientServer.ts -@@ -309,6 +309,7 @@ export class WebClientServer { +@@ -308,6 +308,7 @@ export class WebClientServer { } : undefined; const productConfiguration = { @@ -272,17 +273,49 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts embedderIdentifier: 'server-distro', extensionsGallery: this._webExtensionResourceUrlTemplate && this._productService.extensionsGallery ? { ...this._productService.extensionsGallery, -Index: code-server/lib/vscode/src/server-main.js +Index: code-server/lib/vscode/src/server-main.ts =================================================================== ---- code-server.orig/lib/vscode/src/server-main.js -+++ code-server/lib/vscode/src/server-main.js -@@ -339,4 +339,15 @@ function prompt(question) { +--- code-server.orig/lib/vscode/src/server-main.ts ++++ code-server/lib/vscode/src/server-main.ts +@@ -25,6 +25,9 @@ const __dirname = path.dirname(fileURLTo + perf.mark('code/server/start'); + (globalThis as any).vscodeServerStartTime = performance.now(); + ++// This is not indented to make the diff less noisy. We need to move this out ++// of the top-level so it will not run immediately and we can control the start. ++async function start() { + // Do a quick parse to determine if a server or the cli needs to be started + const parsedArgs = minimist(process.argv.slice(2), { + boolean: ['start-server', 'list-extensions', 'print-ip-address', 'help', 'version', 'accept-server-license-terms', 'update-extensions'], +@@ -153,6 +156,7 @@ if (shouldSpawnCli) { + } }); } ++} + + function sanitizeStringArg(val: any): string | undefined { + if (Array.isArray(val)) { // if an argument is passed multiple times, minimist creates an array +@@ -228,7 +232,6 @@ async function findFreePort(host: string + } --start(); + async function loadCode(nlsConfiguration: INLSConfiguration) { +- + // required for `bootstrap-esm` to pick up NLS messages + process.env['VSCODE_NLS_CONFIG'] = JSON.stringify(nlsConfiguration); + +@@ -283,3 +286,22 @@ function prompt(question: string): Promi + }); + }); + } ++ +async function loadCodeWithNls() { -+ const nlsConfiguration = await resolveNLSConfiguration({ userLocale: 'en', osLocale: 'en', commit: product.commit, userDataPath: '', nlsMetadataPath: __dirname }); ++ const nlsConfiguration = await resolveNLSConfiguration({ ++ userLocale: 'en', ++ osLocale: 'en', ++ commit: product.commit, ++ userDataPath: '', ++ nlsMetadataPath: __dirname, ++ }); + return loadCode(nlsConfiguration); +} + diff --git a/patches/local-storage.diff b/patches/local-storage.diff index a051dee29d3e..3e187b5ffb94 100644 --- a/patches/local-storage.diff +++ b/patches/local-storage.diff @@ -18,7 +18,7 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts =================================================================== --- code-server.orig/lib/vscode/src/vs/server/node/webClientServer.ts +++ code-server/lib/vscode/src/vs/server/node/webClientServer.ts -@@ -331,6 +331,7 @@ export class WebClientServer { +@@ -330,6 +330,7 @@ export class WebClientServer { remoteAuthority, serverBasePath: this._basePath, webviewEndpoint: vscodeBase + this._staticRoute + '/out/vs/workbench/contrib/webview/browser/pre', diff --git a/patches/logout.diff b/patches/logout.diff index 53a0ae0b3a70..32f4ecaf5de0 100644 --- a/patches/logout.diff +++ b/patches/logout.diff @@ -40,7 +40,7 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts =================================================================== --- code-server.orig/lib/vscode/src/vs/server/node/webClientServer.ts +++ code-server/lib/vscode/src/vs/server/node/webClientServer.ts -@@ -314,6 +314,7 @@ export class WebClientServer { +@@ -313,6 +313,7 @@ export class WebClientServer { codeServerVersion: this._productService.codeServerVersion, rootEndpoint: base, updateEndpoint: !this._environmentService.args['disable-update-check'] ? base + '/update/check' : undefined, diff --git a/patches/marketplace.diff b/patches/marketplace.diff index cc746add2b95..ccc809dbdc5d 100644 --- a/patches/marketplace.diff +++ b/patches/marketplace.diff @@ -40,7 +40,7 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts =================================================================== --- code-server.orig/lib/vscode/src/vs/server/node/webClientServer.ts +++ code-server/lib/vscode/src/vs/server/node/webClientServer.ts -@@ -116,7 +116,7 @@ export class WebClientServer { +@@ -115,7 +115,7 @@ export class WebClientServer { this._staticRoute = `${serverRootPath}/static`; this._callbackRoute = `${serverRootPath}/callback`; @@ -49,7 +49,7 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts } /** -@@ -314,14 +314,7 @@ export class WebClientServer { +@@ -313,14 +313,7 @@ export class WebClientServer { codeServerVersion: this._productService.codeServerVersion, rootEndpoint: base, embedderIdentifier: 'server-distro', diff --git a/patches/proxy-uri.diff b/patches/proxy-uri.diff index d80f1eb4ae07..2d2e014e3cf8 100644 --- a/patches/proxy-uri.diff +++ b/patches/proxy-uri.diff @@ -71,7 +71,7 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts =================================================================== --- code-server.orig/lib/vscode/src/vs/server/node/webClientServer.ts +++ code-server/lib/vscode/src/vs/server/node/webClientServer.ts -@@ -315,6 +315,7 @@ export class WebClientServer { +@@ -314,6 +314,7 @@ export class WebClientServer { rootEndpoint: base, updateEndpoint: !this._environmentService.args['disable-update-check'] ? base + '/update/check' : undefined, logoutEndpoint: this._environmentService.args['auth'] && this._environmentService.args['auth'] !== "none" ? base + '/logout' : undefined, @@ -104,7 +104,7 @@ Index: code-server/lib/vscode/src/vs/code/browser/workbench/workbench.ts import type { IURLCallbackProvider } from '../../../workbench/services/url/browser/urlService.js'; import { create } from '../../../workbench/workbench.web.main.internal.js'; -@@ -571,6 +572,39 @@ class WorkspaceProvider implements IWork +@@ -584,6 +585,39 @@ class WorkspaceProvider implements IWork settingsSyncOptions: config.settingsSyncOptions ? { enabled: config.settingsSyncOptions.enabled, } : undefined, workspaceProvider: WorkspaceProvider.create(config), urlCallbackProvider: new LocalStorageURLCallbackProvider(config.callbackRoute), diff --git a/patches/service-worker.diff b/patches/service-worker.diff index 9421774fd7eb..3adf246fbf30 100644 --- a/patches/service-worker.diff +++ b/patches/service-worker.diff @@ -54,7 +54,7 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts =================================================================== --- code-server.orig/lib/vscode/src/vs/server/node/webClientServer.ts +++ code-server/lib/vscode/src/vs/server/node/webClientServer.ts -@@ -316,6 +316,10 @@ export class WebClientServer { +@@ -315,6 +315,10 @@ export class WebClientServer { updateEndpoint: !this._environmentService.args['disable-update-check'] ? base + '/update/check' : undefined, logoutEndpoint: this._environmentService.args['auth'] && this._environmentService.args['auth'] !== "none" ? base + '/logout' : undefined, proxyEndpointTemplate: process.env.VSCODE_PROXY_URI ?? base + '/proxy/{{port}}/', diff --git a/patches/sourcemaps.diff b/patches/sourcemaps.diff index 29884d2fa2f3..18792a317e51 100644 --- a/patches/sourcemaps.diff +++ b/patches/sourcemaps.diff @@ -10,7 +10,7 @@ Index: code-server/lib/vscode/build/gulpfile.reh.js =================================================================== --- code-server.orig/lib/vscode/build/gulpfile.reh.js +++ code-server/lib/vscode/build/gulpfile.reh.js -@@ -289,8 +289,7 @@ function packageTask(type, platform, arc +@@ -253,8 +253,7 @@ function packageTask(type, platform, arc const src = gulp.src(sourceFolderName + '/**', { base: '.' }) .pipe(rename(function (path) { path.dirname = path.dirname.replace(new RegExp('^' + sourceFolderName), 'out'); })) @@ -20,7 +20,7 @@ Index: code-server/lib/vscode/build/gulpfile.reh.js const workspaceExtensionPoints = ['debuggers', 'jsonValidation']; const isUIExtension = (manifest) => { -@@ -329,9 +328,9 @@ function packageTask(type, platform, arc +@@ -293,9 +292,9 @@ function packageTask(type, platform, arc .map(name => `.build/extensions/${name}/**`); const extensions = gulp.src(extensionPaths, { base: '.build', dot: true }); @@ -32,9 +32,9 @@ Index: code-server/lib/vscode/build/gulpfile.reh.js let version = packageJson.version; const quality = product.quality; -@@ -505,7 +504,7 @@ function tweakProductForServerWeb(produc +@@ -454,7 +453,7 @@ function tweakProductForServerWeb(produc const minifyTask = task.define(`minify-vscode-${type}`, task.series( - optimizeTask, + bundleTask, util.rimraf(`out-vscode-${type}-min`), - optimize.minifyTask(`out-vscode-${type}`, `https://main.vscode-cdn.net/sourcemaps/${commit}/core`) + optimize.minifyTask(`out-vscode-${type}`, ``) diff --git a/patches/store-socket.diff b/patches/store-socket.diff index bb5e0dd4153f..ce173be3283e 100644 --- a/patches/store-socket.diff +++ b/patches/store-socket.diff @@ -29,9 +29,9 @@ Index: code-server/lib/vscode/src/vs/workbench/api/node/extHostExtensionService. import { ExtHostConsoleForwarder } from './extHostConsoleForwarder.js'; +import { IExtHostWorkspace } from '../common/extHostWorkspace.js'; import { ExtHostDiskFileSystemProvider } from './extHostDiskFileSystemProvider.js'; - // ESM-uncomment-begin import { createRequire } from 'node:module'; -@@ -101,6 +103,52 @@ export class ExtHostExtensionService ext + const require = createRequire(import.meta.url); +@@ -97,6 +99,52 @@ export class ExtHostExtensionService ext await interceptor.install(); performance.mark('code/extHost/didInitAPI'); @@ -96,7 +96,7 @@ Index: code-server/lib/vscode/src/vs/workbench/api/node/extensionHostProcess.ts import minimist from 'minimist'; import * as nativeWatchdog from 'native-watchdog'; import * as net from 'net'; -@@ -424,7 +425,28 @@ async function startExtensionHostProcess +@@ -422,7 +423,28 @@ async function startExtensionHostProcess ); // rewrite onTerminate-function to be a proper shutdown diff --git a/patches/telemetry.diff b/patches/telemetry.diff index b840476b4593..e72fade53587 100644 --- a/patches/telemetry.diff +++ b/patches/telemetry.diff @@ -134,7 +134,7 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts =================================================================== --- code-server.orig/lib/vscode/src/vs/server/node/webClientServer.ts +++ code-server/lib/vscode/src/vs/server/node/webClientServer.ts -@@ -320,6 +320,8 @@ export class WebClientServer { +@@ -319,6 +319,8 @@ export class WebClientServer { scope: vscodeBase + '/', path: base + '/_static/out/browser/serviceWorker.js', }, diff --git a/patches/update-check.diff b/patches/update-check.diff index c621cb7414ce..91dbca114738 100644 --- a/patches/update-check.diff +++ b/patches/update-check.diff @@ -105,7 +105,7 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts =================================================================== --- code-server.orig/lib/vscode/src/vs/server/node/webClientServer.ts +++ code-server/lib/vscode/src/vs/server/node/webClientServer.ts -@@ -313,6 +313,7 @@ export class WebClientServer { +@@ -312,6 +312,7 @@ export class WebClientServer { const productConfiguration = { codeServerVersion: this._productService.codeServerVersion, rootEndpoint: base, diff --git a/patches/webview.diff b/patches/webview.diff index 05a881d1a1e8..a85f1ea63da2 100644 --- a/patches/webview.diff +++ b/patches/webview.diff @@ -54,7 +54,7 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts =================================================================== --- code-server.orig/lib/vscode/src/vs/server/node/webClientServer.ts +++ code-server/lib/vscode/src/vs/server/node/webClientServer.ts -@@ -327,6 +327,7 @@ export class WebClientServer { +@@ -326,6 +326,7 @@ export class WebClientServer { const workbenchWebConfiguration = { remoteAuthority, serverBasePath: this._basePath, @@ -62,12 +62,12 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts _wrapWebWorkerExtHostInIframe, developmentOptions: { enableSmokeTestDriver: this._environmentService.args['enable-smoke-test-driver'] ? true : undefined, logLevel: this._logService.getLevel() }, settingsSyncOptions: !this._environmentService.isBuilt && this._environmentService.args['enable-sync'] ? { enabled: true } : undefined, -@@ -386,7 +387,7 @@ export class WebClientServer { +@@ -385,7 +386,7 @@ export class WebClientServer { return void res.end('Not found'); } -- const webWorkerExtensionHostIframeScriptSHA = isESM ? 'sha256-2Q+j4hfT09+1+imS46J2YlkCtHWQt0/BE79PXjJ0ZJ8=' : 'sha256-V28GQnL3aYxbwgpV3yW1oJ+VKKe/PBSzWntNyH8zVXA='; -+ const webWorkerExtensionHostIframeScriptSHA = isESM ? 'sha256-2Q+j4hfT09+1+imS46J2YlkCtHWQt0/BE79PXjJ0ZJ8=' : 'sha256-TMJESLUenkUgTCHw3qQlCngteoHhhRnn81kYP41UnCE='; +- const webWorkerExtensionHostIframeScriptSHA = 'sha256-2Q+j4hfT09+1+imS46J2YlkCtHWQt0/BE79PXjJ0ZJ8='; ++ const webWorkerExtensionHostIframeScriptSHA = 'sha256-3Q+j4hfT09+1+imS46J2YlkCtHWQt0/BE79PXjJ0ZJ8='; const cspDirectives = [ 'default-src \'self\';', @@ -122,8 +122,8 @@ Index: code-server/lib/vscode/src/vs/workbench/services/extensions/worker/webWor <meta http-equiv="Content-Security-Policy" content=" default-src 'none'; child-src 'self' data: blob:; -- script-src 'self' 'unsafe-eval' 'sha256-++yLFGtZAMsPOtftkIktNKpSEupSQGmZufZGVEWmSu4=' https: http://localhost:* blob:; -+ script-src 'self' 'unsafe-eval' 'sha256-4rX2QD6B1/qCqKZwkDoccbNoTT5ydjfFAztSSpcJKt0=' https: http://localhost:* blob:; +- script-src 'self' 'unsafe-eval' 'sha256-xM2KVDKIoeb8vVxk4ezEUsxdTZh5wFnKO3YmFhy9tkk=' https: http://localhost:* blob:; ++ script-src 'self' 'unsafe-eval' 'sha256-yM2KVDKIoeb8vVxk4ezEUsxdTZh5wFnKO3YmFhy9tkk=' https: http://localhost:* blob:; connect-src 'self' https: wss: http://localhost:* http://127.0.0.1:* ws://localhost:* ws://127.0.0.1:*;"/> </head> <body> From 998adb5bd20b3876061b8ce7d7a56b54eada98c9 Mon Sep 17 00:00:00 2001 From: Asher <ash@coder.com> Date: Thu, 31 Oct 2024 12:04:12 -0800 Subject: [PATCH 2/6] Update Node to 20.18.0 --- .node-version | 2 +- flake.lock | 17 ++++++++++------- flake.nix | 5 ++++- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/.node-version b/.node-version index 8ce7030825b5..2a393af592b8 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -20.16.0 +20.18.0 diff --git a/flake.lock b/flake.lock index 5c53c61c09f9..a877450fff10 100644 --- a/flake.lock +++ b/flake.lock @@ -20,15 +20,18 @@ }, "nixpkgs": { "locked": { - "lastModified": 1724224976, - "narHash": "sha256-Z/ELQhrSd7bMzTO8r7NZgi9g5emh+aRKoCdaAv5fiO0=", - "path": "/nix/store/j8pbrsb3nybdap3hhg9kw0ffqd4rlbx6-source", - "rev": "c374d94f1536013ca8e92341b540eba4c22f9c62", - "type": "path" + "lastModified": 1730359060, + "narHash": "sha256-Hkk0mf4pgvX9Ut0YA397nsFqMLhzFVBdFHc4PhBrxYE=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "e19cfce6f3f08d07653157d8826f5c920c770d7b", + "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "nixos", + "ref": "nixos-unstable-small", + "repo": "nixpkgs", + "type": "github" } }, "root": { diff --git a/flake.nix b/flake.nix index 123cc4717223..2fee8f28b6fd 100644 --- a/flake.nix +++ b/flake.nix @@ -1,7 +1,10 @@ { description = "code-server"; - inputs.flake-utils.url = "github:numtide/flake-utils"; + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable-small"; + flake-utils.url = "github:numtide/flake-utils"; + }; outputs = { self, nixpkgs, flake-utils }: flake-utils.lib.eachDefaultSystem From f2489265d220119bda621f3592a806094a3cd90b Mon Sep 17 00:00:00 2001 From: Asher <ash@coder.com> Date: Thu, 31 Oct 2024 12:30:00 -0800 Subject: [PATCH 3/6] Update build.yaml to use Ubuntu 22.04 Trying to see if this resolves the gcc error. --- .github/workflows/build.yaml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 3d6aaf8399bb..67969af2951a 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -24,7 +24,7 @@ concurrency: jobs: prettier: name: Format with Prettier - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 timeout-minutes: 5 steps: - name: Checkout repo @@ -37,7 +37,7 @@ jobs: doctoc: name: Doctoc markdown files - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 timeout-minutes: 5 steps: - name: Checkout repo @@ -68,7 +68,7 @@ jobs: lint-helm: name: Lint Helm chart - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 timeout-minutes: 5 steps: - name: Checkout repo @@ -97,7 +97,7 @@ jobs: lint-ts: name: Lint TypeScript files - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 timeout-minutes: 5 steps: - name: Checkout repo @@ -146,7 +146,7 @@ jobs: test-unit: name: Run unit tests - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 timeout-minutes: 5 steps: - name: Checkout repo @@ -187,7 +187,7 @@ jobs: build: name: Build code-server - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 timeout-minutes: 60 env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} @@ -269,7 +269,7 @@ jobs: test-e2e: name: Run e2e tests needs: build - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 timeout-minutes: 25 steps: - name: Checkout repo @@ -318,7 +318,7 @@ jobs: test-e2e-proxy: name: Run e2e tests behind proxy needs: build - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 timeout-minutes: 25 steps: - name: Checkout repo From b8ef4e3edc70aa78f1ba8fcc42b9d9858ea3ecb8 Mon Sep 17 00:00:00 2001 From: Asher <ash@coder.com> Date: Thu, 31 Oct 2024 15:29:53 -0800 Subject: [PATCH 4/6] Fix --stdin-to-clipboard With the switch to esm, this require is now failing. fs is already imported, so we can just use it anyway. Fixes #7056. --- patches/clipboard.diff | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/patches/clipboard.diff b/patches/clipboard.diff index a7a0a4c0fc14..84d6c8f84ebc 100644 --- a/patches/clipboard.diff +++ b/patches/clipboard.diff @@ -110,7 +110,7 @@ Index: code-server/lib/vscode/src/vs/server/node/server.cli.ts return true; default: return false; -@@ -293,6 +294,23 @@ export async function main(desc: Product +@@ -293,6 +294,22 @@ export async function main(desc: Product } } } else { @@ -119,7 +119,6 @@ Index: code-server/lib/vscode/src/vs/server/node/server.cli.ts + console.error("stdin has a tty."); + return; + } -+ const fs = require("fs"); + const stdinBuffer = fs.readFileSync(0); // STDIN_FILENO = 0 + const clipboardContent = stdinBuffer.toString(); + sendToPipe({ From bd6864658133e0ca03e436bc0d8e6bdb8ae5d8a5 Mon Sep 17 00:00:00 2001 From: Asher <ash@coder.com> Date: Fri, 1 Nov 2024 09:28:58 -0800 Subject: [PATCH 5/6] Fix mangled exports --- patches/integration.diff | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/patches/integration.diff b/patches/integration.diff index 4428faa050ed..2a9fa1a482fa 100644 --- a/patches/integration.diff +++ b/patches/integration.diff @@ -24,7 +24,7 @@ Index: code-server/lib/vscode/src/vs/server/node/server.main.ts import product from '../../platform/product/common/product.js'; import * as perf from '../../base/common/performance.js'; -@@ -34,38 +34,43 @@ const errorReporter: ErrorReporter = { +@@ -34,38 +34,47 @@ const errorReporter: ErrorReporter = { } }; @@ -80,7 +80,7 @@ Index: code-server/lib/vscode/src/vs/server/node/server.main.ts */ -export function spawnCli() { - runCli(args, REMOTE_DATA_FOLDER, serverOptions); -+export function spawnCli(args = parse()): Promise<void> { ++function spawnCli(args = parse()): Promise<void> { + return runCli(args, createDirs(args), serverOptions); } @@ -89,9 +89,13 @@ Index: code-server/lib/vscode/src/vs/server/node/server.main.ts */ -export function createServer(address: string | net.AddressInfo | null): Promise<IServerAPI> { - return doCreateServer(address, args, REMOTE_DATA_FOLDER); -+export function createServer(address: string | net.AddressInfo | null, args = parse()): Promise<IServerAPI> { ++function createServer(address: string | net.AddressInfo | null, args = parse()): Promise<IServerAPI> { + return doCreateServer(address, args, createDirs(args)); } ++ ++// The aliases prevent the names getting mangled during minification which would ++// make it difficult to import. ++export { spawnCli as spawnCli, createServer as createServer }; Index: code-server/lib/vscode/src/vs/base/common/processes.ts =================================================================== --- code-server.orig/lib/vscode/src/vs/base/common/processes.ts @@ -319,7 +323,7 @@ Index: code-server/lib/vscode/src/server-main.ts + return loadCode(nlsConfiguration); +} + -+// This alias prevents the name getting mangled during obfuscation which would ++// This alias prevents the name getting mangled during minification which would +// make it difficult to import. +export { loadCodeWithNls as loadCodeWithNls }; + From c4f5427c3c5c8df210b61bcb6fe53cceabfb9ae0 Mon Sep 17 00:00:00 2001 From: Asher <ash@coder.com> Date: Fri, 1 Nov 2024 11:31:07 -0800 Subject: [PATCH 6/6] Update CSP hashes --- patches/webview.diff | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/patches/webview.diff b/patches/webview.diff index a85f1ea63da2..aab7aa9309f8 100644 --- a/patches/webview.diff +++ b/patches/webview.diff @@ -62,15 +62,6 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts _wrapWebWorkerExtHostInIframe, developmentOptions: { enableSmokeTestDriver: this._environmentService.args['enable-smoke-test-driver'] ? true : undefined, logLevel: this._logService.getLevel() }, settingsSyncOptions: !this._environmentService.isBuilt && this._environmentService.args['enable-sync'] ? { enabled: true } : undefined, -@@ -385,7 +386,7 @@ export class WebClientServer { - return void res.end('Not found'); - } - -- const webWorkerExtensionHostIframeScriptSHA = 'sha256-2Q+j4hfT09+1+imS46J2YlkCtHWQt0/BE79PXjJ0ZJ8='; -+ const webWorkerExtensionHostIframeScriptSHA = 'sha256-3Q+j4hfT09+1+imS46J2YlkCtHWQt0/BE79PXjJ0ZJ8='; - - const cspDirectives = [ - 'default-src \'self\';', Index: code-server/lib/vscode/src/vs/workbench/contrib/webview/browser/pre/index.html =================================================================== --- code-server.orig/lib/vscode/src/vs/workbench/contrib/webview/browser/pre/index.html @@ -123,7 +114,7 @@ Index: code-server/lib/vscode/src/vs/workbench/services/extensions/worker/webWor default-src 'none'; child-src 'self' data: blob:; - script-src 'self' 'unsafe-eval' 'sha256-xM2KVDKIoeb8vVxk4ezEUsxdTZh5wFnKO3YmFhy9tkk=' https: http://localhost:* blob:; -+ script-src 'self' 'unsafe-eval' 'sha256-yM2KVDKIoeb8vVxk4ezEUsxdTZh5wFnKO3YmFhy9tkk=' https: http://localhost:* blob:; ++ script-src 'self' 'unsafe-eval' 'sha256-6eZXxikxkENULU0EOkVQSd4hglGixLg3Aow9psZ6u2Y=' https: http://localhost:* blob:; connect-src 'self' https: wss: http://localhost:* http://127.0.0.1:* ws://localhost:* ws://127.0.0.1:*;"/> </head> <body>