This implements basically the same 'loopback' that vscode.dev does via
a service worker to load resources for managed remote authorities in
Electron. Except instead of using a service worker, it uses a buffer
protocol via a new 'vscode-managed-remote-resource' scheme. It finds
the window that the request came from and asks it to load the remote
file.
I initially looked at folding it into the existing 'vscode-remote-resource'
scheme, but we needed a "buffer protocol" for this and it seems http
protocols can _only_ respond with an HTTP URL, which we don't want here.
* added notification in case of running a rosetta translated build
* using app.runningUnderARM64Translation instead of system call
* added download button to the download page in the wrong build notification
* removed test call
* Update src/vs/workbench/electron-sandbox/window.ts
Co-authored-by: Robo <hop2deep@gmail.com>
* Update src/vs/workbench/electron-sandbox/window.ts
Co-authored-by: Robo <hop2deep@gmail.com>
* code format
* Update src/vs/workbench/electron-sandbox/window.ts
Co-authored-by: Robo <hop2deep@gmail.com>
---------
Co-authored-by: Robo <hop2deep@gmail.com>
* First move off of keytar
Since keytar is now deprecated, we need a solution going forward. That solution is the electron safeStorage API.
This PR:
* Uses the Electron safeStorage API for encryption
* Since we have encrypted strings we then store them in the StorageService (at the application & machine level)
This PR also refactors things quite a bit... a diagram of the change is going to be in the PR.
It gives embedders the ability to override the behavior of the secret storage similar to the existing Credential Provider embedder API... only with a better API surface since we no longer need to conform to keytar's shape.
More will come after this PR such as:
* Converting all CredentialService usages to SecretStorageService usages
After a while:
* Removing MainThreadKeytar
* Removing all the old code marked in this PR
* Use InMemoryStorageService
* use pausable emitter
* Encode folder paths as URI components.
This should prevent issues when trying to open folder paths that contain
special characters like `+` or `&`.
* 💄
---------
Co-authored-by: Benjamin Pasero <benjamin.pasero@gmail.com>
* unc - adopt setting and handling of allow list (#5)
* unc - adopt setting and handling of allow list
* unc - set allow list on server too
* unc - pick our patched node.js for now
* bump electron
* unc - ignore sync is not needed with machine scope
* unc - use process set directly
* 🆙 22.5.1
* fix compile
---------
Co-authored-by: Benjamin Pasero <Benjamin.Pasero@microsoft.com>
* fix: don't sync debug.lastExtensionDevelopmentWorkspace
* cli: fix attach does not always work
Seems like reading stdin when it's open but never written to blocks the process. Fix that, both by checking IS_INTERACTIVE_CLI before reading stdin, and by not passing stdin to the tunnel subprocess.
Fixes#179122
This is the initial implementation of the issue reporter no longer having raw IPC calls in it.
I think there's plenty more to clean up, but this is a start...
cc @bpasero
cc @Tyriar if you wanna do this for the process explorer
The issue services were due for a clean up. They now have this shape:
* `platform/issue` has the `IssueMainService`, the service running on the Main process that Desktop takes advantage of
* `workbench/contrib/issue` has the contributions and the registered commands
* `workbench/services/issue` has the services that the renderer side can use to launch the issue reporter.
After this, I will work on getting out the raw IPC calls in the IssueMainService.
* Have issue reporter use service injection
The main part of this change is pulling out the IssueReporter class into its own file and then having the Main.ts file be all about initialization.
This will be easier to register remote services (to help get rid of all the raw IPC)
* add external for clarity