2bfe15b3e9
* Update upstream Code to 1.70 * Update CSP hashes * Update comment on remote authority Also remove it from script-src since it is invalid anyway. * Use absolute path for disable download patch Just to keep it consistent with the other imports. We initially added the patch like this so it was not part of the upgrade but might as well fix it now. * Fix inability to change language while code-server is running Co-authored-by: Asher <ash@coder.com>
67 lines
3.0 KiB
Diff
67 lines
3.0 KiB
Diff
Make storage local to the remote server
|
|
|
|
This solves two problems:
|
|
1. Extensions running in the browser (like Vim) might use these paths
|
|
directly instead of using the file service and most likely can't write
|
|
to `/User` on disk.
|
|
2. Settings will be stored in the file system instead of in browser
|
|
storage. Using browser storage makes sharing or seeding settings
|
|
between browsers difficult. We may want to revisit this once/if we get
|
|
settings sync.
|
|
|
|
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 install the Vim extension and make sure something that uses file storage
|
|
works (history recall for example) and change settings from the UI and on disk
|
|
while making sure they appear on the other side.
|
|
|
|
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
|
|
@@ -303,6 +303,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,
|
|
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
|
|
@@ -262,6 +262,11 @@ export interface IWorkbenchConstructionO
|
|
*/
|
|
readonly configurationDefaults?: Record<string, any>;
|
|
|
|
+ /**
|
|
+ * Path to the user data directory.
|
|
+ */
|
|
+ readonly userDataPath?: string
|
|
+
|
|
//#endregion
|
|
|
|
|
|
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
|
|
@@ -53,7 +53,14 @@ export class BrowserWorkbenchEnvironment
|
|
get logFile(): URI { return joinPath(this.logsHome, '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'); }
|