mirror of
https://github.com/coder/code-server.git
synced 2026-05-06 20:41:59 +02:00
Compare commits
2 Commits
v4.19.1-rc
...
v4.19.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0c98611e6b | ||
|
|
73cb236535 |
@@ -12,9 +12,9 @@ Index: code-server/lib/vscode/src/vs/workbench/browser/web.api.ts
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- code-server.orig/lib/vscode/src/vs/workbench/browser/web.api.ts
|
--- code-server.orig/lib/vscode/src/vs/workbench/browser/web.api.ts
|
||||||
+++ code-server/lib/vscode/src/vs/workbench/browser/web.api.ts
|
+++ code-server/lib/vscode/src/vs/workbench/browser/web.api.ts
|
||||||
@@ -276,6 +276,11 @@ export interface IWorkbenchConstructionO
|
@@ -281,6 +281,11 @@ export interface IWorkbenchConstructionO
|
||||||
*/
|
*/
|
||||||
readonly configurationDefaults?: Record<string, any>;
|
readonly userDataPath?: string
|
||||||
|
|
||||||
+ /**
|
+ /**
|
||||||
+ * Whether the "Download..." option is enabled for files.
|
+ * Whether the "Download..." option is enabled for files.
|
||||||
@@ -40,9 +40,9 @@ Index: code-server/lib/vscode/src/vs/workbench/services/environment/browser/envi
|
|||||||
* Gets whether a resolver extension is expected for the environment.
|
* Gets whether a resolver extension is expected for the environment.
|
||||||
*/
|
*/
|
||||||
readonly expectsResolverExtension: boolean;
|
readonly expectsResolverExtension: boolean;
|
||||||
@@ -110,6 +115,13 @@ export class BrowserWorkbenchEnvironment
|
@@ -111,6 +116,13 @@ export class BrowserWorkbenchEnvironment
|
||||||
@memoize
|
return this.options.userDataPath;
|
||||||
get cacheHome(): URI { return joinPath(this.userRoamingDataHome, 'caches'); }
|
}
|
||||||
|
|
||||||
+ get isEnabledFileDownloads(): boolean {
|
+ get isEnabledFileDownloads(): boolean {
|
||||||
+ if (typeof this.options.isEnabledFileDownloads === "undefined") {
|
+ if (typeof this.options.isEnabledFileDownloads === "undefined") {
|
||||||
@@ -52,7 +52,7 @@ Index: code-server/lib/vscode/src/vs/workbench/services/environment/browser/envi
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
@memoize
|
@memoize
|
||||||
get workspaceStorageHome(): URI { return joinPath(this.userRoamingDataHome, 'workspaceStorage'); }
|
get argvResource(): URI { return joinPath(this.userRoamingDataHome, 'argv.json'); }
|
||||||
|
|
||||||
Index: code-server/lib/vscode/src/vs/server/node/serverEnvironmentService.ts
|
Index: code-server/lib/vscode/src/vs/server/node/serverEnvironmentService.ts
|
||||||
===================================================================
|
===================================================================
|
||||||
@@ -78,10 +78,10 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- code-server.orig/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
|
+++ code-server/lib/vscode/src/vs/server/node/webClientServer.ts
|
||||||
@@ -331,6 +331,7 @@ export class WebClientServer {
|
@@ -332,6 +332,7 @@ export class WebClientServer {
|
||||||
const workbenchWebConfiguration = {
|
|
||||||
remoteAuthority,
|
remoteAuthority,
|
||||||
webviewEndpoint: vscodeBase + this._staticRoute + '/out/vs/workbench/contrib/webview/browser/pre',
|
webviewEndpoint: vscodeBase + this._staticRoute + '/out/vs/workbench/contrib/webview/browser/pre',
|
||||||
|
userDataPath: this._environmentService.userDataPath,
|
||||||
+ isEnabledFileDownloads: !this._environmentService.args['disable-file-downloads'],
|
+ isEnabledFileDownloads: !this._environmentService.args['disable-file-downloads'],
|
||||||
_wrapWebWorkerExtHostInIframe,
|
_wrapWebWorkerExtHostInIframe,
|
||||||
developmentOptions: { enableSmokeTestDriver: this._environmentService.args['enable-smoke-test-driver'] ? true : undefined, logLevel: this._logService.getLevel() },
|
developmentOptions: { enableSmokeTestDriver: this._environmentService.args['enable-smoke-test-driver'] ? true : undefined, logLevel: this._logService.getLevel() },
|
||||||
|
|||||||
@@ -220,7 +220,7 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts
|
|||||||
import { CharCode } from 'vs/base/common/charCode';
|
import { CharCode } from 'vs/base/common/charCode';
|
||||||
import { getRemoteServerRootPath } from 'vs/platform/remote/common/remoteHosts';
|
import { getRemoteServerRootPath } from 'vs/platform/remote/common/remoteHosts';
|
||||||
import { IExtensionManifest } from 'vs/platform/extensions/common/extensions';
|
import { IExtensionManifest } from 'vs/platform/extensions/common/extensions';
|
||||||
@@ -343,6 +344,8 @@ export class WebClientServer {
|
@@ -344,6 +345,8 @@ export class WebClientServer {
|
||||||
callbackRoute: this._callbackRoute
|
callbackRoute: this._callbackRoute
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -229,7 +229,7 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts
|
|||||||
const nlsBaseUrl = this._productService.extensionsGallery?.nlsBaseUrl;
|
const nlsBaseUrl = this._productService.extensionsGallery?.nlsBaseUrl;
|
||||||
const values: { [key: string]: string } = {
|
const values: { [key: string]: string } = {
|
||||||
WORKBENCH_WEB_CONFIGURATION: asJSON(workbenchWebConfiguration),
|
WORKBENCH_WEB_CONFIGURATION: asJSON(workbenchWebConfiguration),
|
||||||
@@ -351,6 +354,7 @@ export class WebClientServer {
|
@@ -352,6 +355,7 @@ export class WebClientServer {
|
||||||
WORKBENCH_NLS_BASE_URL: vscodeBase + (nlsBaseUrl ? `${nlsBaseUrl}${!nlsBaseUrl.endsWith('/') ? '/' : ''}${this._productService.commit}/${this._productService.version}/` : ''),
|
WORKBENCH_NLS_BASE_URL: vscodeBase + (nlsBaseUrl ? `${nlsBaseUrl}${!nlsBaseUrl.endsWith('/') ? '/' : ''}${this._productService.commit}/${this._productService.version}/` : ''),
|
||||||
BASE: base,
|
BASE: base,
|
||||||
VS_BASE: vscodeBase,
|
VS_BASE: vscodeBase,
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ Index: code-server/lib/vscode/src/vs/workbench/browser/web.api.ts
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- code-server.orig/lib/vscode/src/vs/workbench/browser/web.api.ts
|
--- code-server.orig/lib/vscode/src/vs/workbench/browser/web.api.ts
|
||||||
+++ code-server/lib/vscode/src/vs/workbench/browser/web.api.ts
|
+++ code-server/lib/vscode/src/vs/workbench/browser/web.api.ts
|
||||||
@@ -281,6 +281,11 @@ export interface IWorkbenchConstructionO
|
@@ -286,6 +286,11 @@ export interface IWorkbenchConstructionO
|
||||||
*/
|
*/
|
||||||
readonly isEnabledFileDownloads?: boolean
|
readonly isEnabledFileDownloads?: boolean
|
||||||
|
|
||||||
@@ -163,7 +163,7 @@ Index: code-server/lib/vscode/src/vs/workbench/services/environment/browser/envi
|
|||||||
* Gets whether a resolver extension is expected for the environment.
|
* Gets whether a resolver extension is expected for the environment.
|
||||||
*/
|
*/
|
||||||
readonly expectsResolverExtension: boolean;
|
readonly expectsResolverExtension: boolean;
|
||||||
@@ -122,6 +127,13 @@ export class BrowserWorkbenchEnvironment
|
@@ -123,6 +128,13 @@ export class BrowserWorkbenchEnvironment
|
||||||
return this.options.isEnabledFileDownloads;
|
return this.options.isEnabledFileDownloads;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -175,7 +175,7 @@ Index: code-server/lib/vscode/src/vs/workbench/services/environment/browser/envi
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
@memoize
|
@memoize
|
||||||
get workspaceStorageHome(): URI { return joinPath(this.userRoamingDataHome, 'workspaceStorage'); }
|
get argvResource(): URI { return joinPath(this.userRoamingDataHome, 'argv.json'); }
|
||||||
|
|
||||||
Index: code-server/lib/vscode/src/vs/server/node/serverEnvironmentService.ts
|
Index: code-server/lib/vscode/src/vs/server/node/serverEnvironmentService.ts
|
||||||
===================================================================
|
===================================================================
|
||||||
@@ -201,9 +201,9 @@ Index: code-server/lib/vscode/src/vs/server/node/webClientServer.ts
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- code-server.orig/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
|
+++ code-server/lib/vscode/src/vs/server/node/webClientServer.ts
|
||||||
@@ -334,6 +334,7 @@ export class WebClientServer {
|
@@ -335,6 +335,7 @@ export class WebClientServer {
|
||||||
remoteAuthority,
|
|
||||||
webviewEndpoint: vscodeBase + this._staticRoute + '/out/vs/workbench/contrib/webview/browser/pre',
|
webviewEndpoint: vscodeBase + this._staticRoute + '/out/vs/workbench/contrib/webview/browser/pre',
|
||||||
|
userDataPath: this._environmentService.userDataPath,
|
||||||
isEnabledFileDownloads: !this._environmentService.args['disable-file-downloads'],
|
isEnabledFileDownloads: !this._environmentService.args['disable-file-downloads'],
|
||||||
+ isEnabledCoderGettingStarted: !this._environmentService.args['disable-getting-started-override'],
|
+ isEnabledCoderGettingStarted: !this._environmentService.args['disable-getting-started-override'],
|
||||||
_wrapWebWorkerExtHostInIframe,
|
_wrapWebWorkerExtHostInIframe,
|
||||||
|
|||||||
94
patches/local-storage.diff
Normal file
94
patches/local-storage.diff
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
Make storage local to the remote server
|
||||||
|
|
||||||
|
This makes user settings will be stored in the file system instead of in browser
|
||||||
|
storage. Using browser storage makes sharing or seeding settings between
|
||||||
|
browsers difficult and remote settings is not a sufficient replacement because
|
||||||
|
some settings are only allowed to be set on the user level.
|
||||||
|
|
||||||
|
Unfortunately this does not affect state which uses a separate method with
|
||||||
|
IndexedDB and does not appear nearly as easy to redirect to disk.
|
||||||
|
|
||||||
|
To test change settings from the UI and on disk while making sure they appear on
|
||||||
|
the other side.
|
||||||
|
|
||||||
|
This patch also resolves a bug where a global value for workspace initialization
|
||||||
|
is used in a non async-safe way.
|
||||||
|
|
||||||
|
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 {
|
||||||
|
const workbenchWebConfiguration = {
|
||||||
|
remoteAuthority,
|
||||||
|
webviewEndpoint: vscodeBase + this._staticRoute + '/out/vs/workbench/contrib/webview/browser/pre',
|
||||||
|
+ userDataPath: this._environmentService.userDataPath,
|
||||||
|
_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,
|
||||||
|
Index: code-server/lib/vscode/src/vs/workbench/browser/web.api.ts
|
||||||
|
===================================================================
|
||||||
|
--- code-server.orig/lib/vscode/src/vs/workbench/browser/web.api.ts
|
||||||
|
+++ code-server/lib/vscode/src/vs/workbench/browser/web.api.ts
|
||||||
|
@@ -276,6 +276,11 @@ export interface IWorkbenchConstructionO
|
||||||
|
*/
|
||||||
|
readonly configurationDefaults?: Record<string, any>;
|
||||||
|
|
||||||
|
+ /**
|
||||||
|
+ * Path to the user data directory.
|
||||||
|
+ */
|
||||||
|
+ readonly userDataPath?: string
|
||||||
|
+
|
||||||
|
//#endregion
|
||||||
|
|
||||||
|
//#region Profile options
|
||||||
|
Index: code-server/lib/vscode/src/vs/workbench/services/environment/browser/environmentService.ts
|
||||||
|
===================================================================
|
||||||
|
--- code-server.orig/lib/vscode/src/vs/workbench/services/environment/browser/environmentService.ts
|
||||||
|
+++ code-server/lib/vscode/src/vs/workbench/services/environment/browser/environmentService.ts
|
||||||
|
@@ -102,7 +102,14 @@ export class BrowserWorkbenchEnvironment
|
||||||
|
get logFile(): URI { return joinPath(this.windowLogsPath, 'window.log'); }
|
||||||
|
|
||||||
|
@memoize
|
||||||
|
- get userRoamingDataHome(): URI { return URI.file('/User').with({ scheme: Schemas.vscodeUserData }); }
|
||||||
|
+ get userRoamingDataHome(): URI { return joinPath(URI.file(this.userDataPath).with({ scheme: Schemas.vscodeRemote }), 'User'); }
|
||||||
|
+
|
||||||
|
+ get userDataPath(): string {
|
||||||
|
+ if (!this.options.userDataPath) {
|
||||||
|
+ throw new Error('userDataPath was not provided to the browser');
|
||||||
|
+ }
|
||||||
|
+ return this.options.userDataPath;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
@memoize
|
||||||
|
get argvResource(): URI { return joinPath(this.userRoamingDataHome, 'argv.json'); }
|
||||||
|
Index: code-server/lib/vscode/src/vs/workbench/services/configuration/browser/configurationService.ts
|
||||||
|
===================================================================
|
||||||
|
--- 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
|
||||||
|
@@ -143,8 +143,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(() => {
|
||||||
|
- this.workspace.initialized = this.workspaceConfiguration.initialized;
|
||||||
|
- this.checkAndMarkWorkspaceComplete(fromCache);
|
||||||
|
+ if (this.workspace) { // The workspace may not have been created yet.
|
||||||
|
+ this.workspace.initialized = this.workspaceConfiguration.initialized;
|
||||||
|
+ this.checkAndMarkWorkspaceComplete(fromCache);
|
||||||
|
+ }
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
|
||||||
|
@@ -550,6 +552,12 @@ export class WorkspaceService extends Di
|
||||||
|
previousFolders = this.workspace.folders;
|
||||||
|
this.workspace.update(workspace);
|
||||||
|
} else {
|
||||||
|
+ // It is possible for the configuration to become initialized in between
|
||||||
|
+ // when the workspace was created and this function was called, so check
|
||||||
|
+ // the configuration again now.
|
||||||
|
+ if (!workspace.initialized && this.workspaceConfiguration.initialized) {
|
||||||
|
+ workspace.initialized = true;
|
||||||
|
+ }
|
||||||
|
this.workspace = workspace;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -10,6 +10,7 @@ logout.diff
|
|||||||
store-socket.diff
|
store-socket.diff
|
||||||
proxy-uri.diff
|
proxy-uri.diff
|
||||||
unique-db.diff
|
unique-db.diff
|
||||||
|
local-storage.diff
|
||||||
service-worker.diff
|
service-worker.diff
|
||||||
sourcemaps.diff
|
sourcemaps.diff
|
||||||
disable-downloads.diff
|
disable-downloads.diff
|
||||||
|
|||||||
Reference in New Issue
Block a user