mirror of
https://github.com/coder/code-server.git
synced 2026-09-10 20:00:31 +02:00
* Update Code to 1.136.1 * Do not click on tab during test file opens It will already be the selected tab, and if any other tab is already open (like the welcome tab), it will click that instead. We disable the welcome page so this is not supposed to actually matter, but that Setting appears not to be working. Also add the quick input widget selector in the disabled downloads test, since if the widget never shows up it would mistakenly pass.
95 lines
4.6 KiB
Diff
95 lines
4.6 KiB
Diff
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
|
|
@@ -420,6 +420,7 @@ export class WebClientServer {
|
|
remoteAuthority,
|
|
serverBasePath: basePath,
|
|
webviewEndpoint: 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
|
|
@@ -314,6 +314,11 @@ export interface IWorkbenchConstructionO
|
|
*/
|
|
readonly configurationDefaults?: Record<string, unknown>;
|
|
|
|
+ /**
|
|
+ * 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
|
|
@@ -148,8 +148,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);
|
|
+ }
|
|
});
|
|
}));
|
|
|
|
@@ -561,6 +563,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;
|
|
}
|
|
|