From 994531d8bbfa62d849b65a5828f87f3b4c8983fa Mon Sep 17 00:00:00 2001 From: Asher Date: Wed, 6 Mar 2019 18:15:52 -0600 Subject: [PATCH 01/20] Add task for packaging release (#6) * Add task for packaging release * Modify package task to package a single binary This is so it can be used as part of the build/release script. * Package release as part of Travis deploy * Set platform env var * Add arch env var * Make version available to the code * Use tar for Linux and zip for Mac & Windows --- .gitignore | 1 + .travis.yml | 18 +++++++++++------- build/tasks.ts | 26 ++++++++++++++++++++++++++ packages/runner/src/runner.ts | 5 +++-- packages/server/scripts/nexe.js | 7 ++++--- packages/server/src/cli.ts | 2 +- packages/server/webpack.config.js | 2 +- scripts/webpack.general.config.js | 1 + 8 files changed, 48 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index 647d88c54044..9ced34fb847c 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ node_modules dist out .DS_Store +release diff --git a/.travis.yml b/.travis.yml index 540780cf2af4..8b6f956db876 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,8 @@ language: node_js node_js: - 8.9.3 +env: + - VERSION="1.31.1-$TRAVIS_BUILD_NUMBER" matrix: include: - os: linux @@ -12,22 +14,24 @@ before_install: script: - scripts/build.sh before_deploy: -- export TRAVIS_TAG="1.31.1-$TRAVIS_BUILD_NUMBER" -- echo "$TRAVIS_TAG" "$TRAVIS_COMMIT" +- echo "$VERSION" "$TRAVIS_COMMIT" - git config --local user.name "$USER_NAME" - git config --local user.email "$USER_EMAIL" -- git tag "$TRAVIS_TAG" "$TRAVIS_COMMIT" +- git tag "$VERSION" "$TRAVIS_COMMIT" +- yarn task package "$VERSION" deploy: provider: releases file_glob: true draft: true - tag_name: $TRAVIS_TAG - target_commitish: $TRAVIS_COMMIT - name: $TRAVIS_TAG + tag_name: "$VERSION" + target_commitish: "$TRAVIS_COMMIT" + name: "$VERSION" skip_cleanup: true api_key: secure: YL/x24KjYjgYXPcJWk3FV7FGxI79Mh6gBECQEcdlf3fkLEoKFVgzHBoUNWrFPzyR4tgLyWNAgcpD9Lkme1TRWTom7UPjXcwMNyLcLa+uec7ciSAnYD9ntLTpiCuPDD1u0LtRGclSi/EHQ+F8YVq+HZJpXTsJeAmOmihma3GVbGKSZr+BRum+0YZSG4w+o4TOlYzw/4bLWS52MogZcwpjd+hemBbgXLuGU2ziKv2vEKCZFbEeA16II4x1WLI4mutDdCeh7+3aLzGLwDa49NxtsVYNjyNFF75JhCTCNA55e2YMiLz9Uq69IXe/mi5F7xUaFfhIqqLNyKBnKeEOzu3dYnc+8n3LjnQ+00PmkF05nx9kBn3UfV1kwQGh6QbyDmTtBP07rtUMyI14aeQqHjxsaVRdMnwj9Q2DjXRr8UDqESZF0rmK3pHCXS2fBhIzLE8tLVW5Heiba2pQRFMHMZW+KBE97FzcFh7is90Ait3T8enfcd/PWFPYoBejDAdjwxwOkezh5N5ZkYquEfDYuWrFi6zRFCktsruaAcA+xGtTf9oilBBzUqu8Ie+YFWH5me83xakcblJWdaW/D2rLJAJH3m6LFm8lBqyUgDX5t/etob6CpDuYHu5D1J3XINOj/+aLAcadq6qlh70PMZS3zYffUu3JlzaD2amlSHIT8b5YXFc= - file: packages/server/cli-* + file: + - release/*.tar.gz + - release/*.zip on: repo: codercom/code-server branch: master diff --git a/build/tasks.ts b/build/tasks.ts index 431fe502f841..0831fb5f43b4 100644 --- a/build/tasks.ts +++ b/build/tasks.ts @@ -260,4 +260,30 @@ const ensurePatched = register("vscode:patch", async (runner) => { } }); +register("package", async (runner, releaseTag) => { + if (!releaseTag) { + throw new Error("Please specify the release tag."); + } + + const releasePath = path.resolve(__dirname, "../release"); + + const archiveName = `code-server-${releaseTag}-${os.platform()}-${os.arch()}`; + const archiveDir = path.join(releasePath, archiveName); + fse.removeSync(archiveDir); + fse.mkdirpSync(archiveDir); + + const binaryPath = path.join(__dirname, `../packages/server/cli-${os.platform()}-${os.arch()}`); + const binaryDestination = path.join(archiveDir, "code-server"); + fse.copySync(binaryPath, binaryDestination); + fs.chmodSync(binaryDestination, "755"); + ["README.md", "LICENSE"].forEach((fileName) => { + fse.copySync(path.resolve(__dirname, `../${fileName}`), path.join(archiveDir, fileName)); + }); + + runner.cwd = releasePath; + await os.platform() === "linux" + ? runner.execute("tar", ["-cvzf", `${archiveName}.tar.gz`, `${archiveName}`]) + : runner.execute("zip", ["-r", `${archiveName}.zip`, `${archiveName}`]); +}); + run(); diff --git a/packages/runner/src/runner.ts b/packages/runner/src/runner.ts index f057aa1b0b2e..93bea4837a20 100644 --- a/packages/runner/src/runner.ts +++ b/packages/runner/src/runner.ts @@ -40,7 +40,8 @@ const execute = (command: string, args: string[] = [], options: cp.SpawnOptions, return prom; }; -export type TaskFunction = (runner: Runner) => void | Promise; +// tslint:disable-next-line no-any +export type TaskFunction = (runner: Runner, ...args: any[]) => void | Promise; export interface Runner { cwd: string; @@ -95,7 +96,7 @@ export const run = (name: string = process.argv[2]): void | Promise => { env: env as NodeJS.ProcessEnv, }, log); }, - }); + }, ...process.argv.slice(3)); if (prom) { activated.set(name, prom); diff --git a/packages/server/scripts/nexe.js b/packages/server/scripts/nexe.js index 8c1a29fb1ded..5de18bd4c1d9 100644 --- a/packages/server/scripts/nexe.js +++ b/packages/server/scripts/nexe.js @@ -14,16 +14,17 @@ fs.writeFileSync(shimPath, shimContent); const nexe = require("nexe"); +const target = `${os.platform()}-${os.arch()}`; nexe.compile({ debugBundle: true, input: path.join(__dirname, "../out/cli.js"), - output: `cli-${process.env.TRAVIS_OS_NAME || os.platform()}`, - targets: [os.platform()], + output: `cli-${target}`, + targets: [target], /** * To include native extensions, do NOT install node_modules for each one. They * are not required as each extension is built using webpack. */ -resources: [ + resources: [ path.join(__dirname, "../package.json"), path.join(__dirname, "../build/**/*"), ], diff --git a/packages/server/src/cli.ts b/packages/server/src/cli.ts index 7bedae71f75a..2f1da114a954 100644 --- a/packages/server/src/cli.ts +++ b/packages/server/src/cli.ts @@ -114,7 +114,7 @@ export class Entry extends Command { } } - logger.info("\u001B[1mcode-server v1.0.0"); + logger.info(`\u001B[1mcode-server ${process.env.VERSION ? `v${process.env.VERSION}` : "development"}`); // TODO: fill in appropriate doc url logger.info("Additional documentation: https://github.com/codercom/code-server"); logger.info("Initializing", field("data-dir", dataDir), field("working-dir", workingDir), field("log-dir", logDir)); diff --git a/packages/server/webpack.config.js b/packages/server/webpack.config.js index 0df82de3feb0..596ff0be3a2e 100644 --- a/packages/server/webpack.config.js +++ b/packages/server/webpack.config.js @@ -24,7 +24,7 @@ module.exports = merge( }, resolve: { alias: { - "node-pty": "node-pty-prebuilt", + "node-pty": "node-pty-prebuilt", }, }, externals: ["tslib", "trash"], diff --git a/scripts/webpack.general.config.js b/scripts/webpack.general.config.js index 26587519a48d..83215fa8cd28 100644 --- a/scripts/webpack.general.config.js +++ b/scripts/webpack.general.config.js @@ -118,6 +118,7 @@ module.exports = (options = {}) => ({ "process.env.NODE_ENV": `"${environment}"`, "process.env.LOG_LEVEL": `"${process.env.LOG_LEVEL || ""}"`, "process.env.SERVICE_URL": `"${process.env.SERVICE_URL || ""}"`, + "process.env.VERSION": `"${process.env.VERSION || ""}"`, }), ], stats: { From e99f8abc3cd0f625cdae70bc2848618bc73d1030 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Gill=C3=A9?= Date: Thu, 7 Mar 2019 01:21:33 +0100 Subject: [PATCH 02/20] Fix spelling error (#46) --- doc/self-hosted/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/self-hosted/index.md b/doc/self-hosted/index.md index 970f4774fc7a..9080ec8b5f5c 100644 --- a/doc/self-hosted/index.md +++ b/doc/self-hosted/index.md @@ -56,14 +56,14 @@ OPTIONS Use `code-server -d (path/to/directory)` or `code-server --data-dir=(path/to/directory)`, excluding the parentheses to specify the root folder that VS Code will start in ### Host - By default, code-server will use `0.0.0.0` as it's address. This can be changed by using `code-server -h` or `code-server --host=` followed by the address you want to use. + By default, code-server will use `0.0.0.0` as its address. This can be changed by using `code-server -h` or `code-server --host=` followed by the address you want to use. > Example: `code-server -h 127.0.0.1` ### Open You can have the server automatically open the VS Code in your browser on startup by using the `code server -o` or `code-server --open` flags ### Port - By default, code-server will use `8443` as it's port. This can be changed by using `code-server -p` or `code-server --port=` followed by the port you want to use. + By default, code-server will use `8443` as its port. This can be changed by using `code-server -p` or `code-server --port=` followed by the port you want to use. > Example: `code-server -p 9000` ### Cert and Cert Key @@ -73,4 +73,4 @@ OPTIONS > To ensure the connection between you and your server is encrypted view our guide on [securing your setup](../security/ssl.md) ### Help - Use `code-server -h` or `code-server --help` to view the usage for the cli. This is also shown at the beginning of this section. \ No newline at end of file + Use `code-server -h` or `code-server --help` to view the usage for the cli. This is also shown at the beginning of this section. From e20b79b5cca88851eb5dbefe7c2300c6eda18dd2 Mon Sep 17 00:00:00 2001 From: Michael Desantis Date: Wed, 6 Mar 2019 18:25:44 -0600 Subject: [PATCH 03/20] Generate secure passwords, fixes issue #26 (#51) --- packages/server/src/cli.ts | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/packages/server/src/cli.ts b/packages/server/src/cli.ts index 2f1da114a954..382ededc685f 100644 --- a/packages/server/src/cli.ts +++ b/packages/server/src/cli.ts @@ -2,6 +2,7 @@ import { field, logger } from "@coder/logger"; import { ServerMessage, SharedProcessActiveMessage } from "@coder/protocol/src/proto"; import { Command, flags } from "@oclif/command"; import { fork, ForkOptions, ChildProcess } from "child_process"; +import { randomFillSync } from "crypto"; import * as fs from "fs"; import * as os from "os"; import * as path from "path"; @@ -136,13 +137,9 @@ export class Entry extends Command { let password = flags["password"]; if (!password) { // Generate a random password - const passwordLength = 12; - const possible = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; - const chars = []; - for (let i = 0; i < passwordLength; i++) { - chars.push(possible[Math.floor(Math.random() * possible.length)]); - } - password = chars.join(""); + const buffer = Buffer.alloc(12); + randomFillSync(buffer); + password = buffer.toString("hex"); } const hasCustomHttps = certData && certKeyData; From ac56fcaafc4df9a9c0f65a539b6ab555de8ba7fa Mon Sep 17 00:00:00 2001 From: Michael Desantis Date: Wed, 6 Mar 2019 20:47:05 -0600 Subject: [PATCH 04/20] Remove unused markup from password page (#49) --- packages/app/browser/src/app.html | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/packages/app/browser/src/app.html b/packages/app/browser/src/app.html index 6613918a08e1..e5e02993c4bc 100644 --- a/packages/app/browser/src/app.html +++ b/packages/app/browser/src/app.html @@ -19,21 +19,6 @@

-
-
helper text
-
-
-
- -
- - - -
-
-
- -
From 17267bd80149b2160459bf3fb980e88f7e1c31fa Mon Sep 17 00:00:00 2001 From: Anmol Sethi Date: Wed, 6 Mar 2019 21:59:43 -0500 Subject: [PATCH 05/20] Add Dockerfile and some cleanup (#57) --- .dockerignore | 1 + Dockerfile | 26 ++++++++++++++++++++++++++ README.md | 13 ++++++++++++- packages/runner/src/runner.ts | 21 ++++++++++++++++++--- scripts/build.sh | 1 - 5 files changed, 57 insertions(+), 5 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000000..94143827ed06 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000000..ec4554594811 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,26 @@ +FROM node:8.15.0 + +# Install VS Code's deps. These are the only two it seems we need. +RUN apt-get update +RUN apt-get install -y libxkbfile-dev libsecret-1-dev + +# Ensure latest yarn. +RUN npm install -g yarn + +# In the future, we can use https://github.com/yarnpkg/rfcs/pull/53 to make it use the node_modules +# directly which should be faster. +WORKDIR /src +COPY . . +RUN yarn +RUN yarn task build:server:binary + +# We deploy with ubuntu so that devs have a familiar environemnt. +FROM ubuntu:18.10 +RUN apt-get update +RUN apt-get install -y openssl +RUN apt-get install -y net-tools +WORKDIR /root/project +COPY --from=0 /src/packages/server/cli-linux /usr/local/bin/code-server +EXPOSE 8443 +# Unfortunately `.` does not work with code-server. +CMD code-server $PWD diff --git a/README.md b/README.md index 5a52b6d2ad4a..800bc8ec166c 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,11 @@ `code-server` is [VS Code](https://github.com/Microsoft/vscode) running on a remote server, accessible through the browser. +Try it out: +```bash +docker run -p localhost:8443:8443 -v "${PWD}:/root/project" codercom/code-server code-server --allow-http --no-auth +``` + - Code on your Chromebook, tablet, and laptop with a consistent dev environment. - If you have a Windows or Mac workstation, more easily develop for Linux. - Take advantage of large cloud servers to speed up tests, compilations, downloads, and more. @@ -18,9 +23,15 @@ ## Getting Started +### Hosted + [Try `code-server` now](https://coder.com/signup) for free at coder.com. -**OR** +### Docker + +See docker oneliner mentioned above. Dockerfile is at [/Dockerfile](/Dockerfile). + +### Binaries 1. [Download a binary](https://github.com/codercom/code-server/releases) (Linux and OSX supported. Windows coming soon) 2. Start the binary with the project directory as the first argument diff --git a/packages/runner/src/runner.ts b/packages/runner/src/runner.ts index 93bea4837a20..e926b94632a6 100644 --- a/packages/runner/src/runner.ts +++ b/packages/runner/src/runner.ts @@ -1,5 +1,5 @@ import * as cp from "child_process"; -import { logger, Logger, field, time } from "@coder/logger"; +import {field, Logger, logger, time} from "@coder/logger"; export interface CommandResult { readonly exitCode: number; @@ -9,7 +9,9 @@ export interface CommandResult { const execute = (command: string, args: string[] = [], options: cp.SpawnOptions, logger: Logger): Promise => { let resolve: (result: CommandResult) => void; - const prom = new Promise(res => resolve = res); + const prom = new Promise((res): void => { + resolve = res; + }); const stdout: string[] = []; const stderr: string[] = []; @@ -45,6 +47,7 @@ export type TaskFunction = (runner: Runner, ...args: any[]) => void | Promise; } @@ -91,10 +94,22 @@ export const run = (name: string = process.argv[2]): void | Promise => { cwd = path; }, execute(command: string, args: string[] = [], env?: object): Promise { - return execute(command, args, { + const prom = execute(command, args, { cwd, env: env as NodeJS.ProcessEnv, }, log); + + return prom.then((result: CommandResult) => { + if (result.exitCode != 0) { + log.error("failed", + field("exitCode", result.exitCode), + field("stdout", result.stdout), + field("stderr", result.stderr) + ); + } + + return result; + }); }, }, ...process.argv.slice(3)); diff --git a/scripts/build.sh b/scripts/build.sh index 7cb6f1c2805d..3d954fee6c97 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,5 +1,4 @@ #!/bin/bash set -e -npm install -g cross-env yarn task build:server:binary From 87d2e22a6b72d4acd8892efaa0515f3408e457cd Mon Sep 17 00:00:00 2001 From: Takayosi Amagi Date: Fri, 8 Mar 2019 02:23:54 +0900 Subject: [PATCH 06/20] Open localhost URL with --open (#28) * Open localhost URL with --open * Catch errors on opn Co-Authored-By: fand --- packages/server/package.json | 2 ++ packages/server/src/cli.ts | 13 ++++++++++++- packages/server/yarn.lock | 14 ++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/packages/server/package.json b/packages/server/package.json index e4e5faf11430..3f7cbbcf365c 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -26,10 +26,12 @@ "@types/express": "^4.16.0", "@types/fs-extra": "^5.0.4", "@types/mime-types": "^2.1.0", + "@types/opn": "^5.1.0", "@types/pem": "^1.9.4", "@types/ws": "^6.0.1", "fs-extra": "^7.0.1", "nexe": "^2.0.0-rc.34", + "opn": "^5.4.0", "string-replace-webpack-plugin": "^0.1.3", "ts-node": "^7.0.1", "tsconfig-paths": "^3.7.0", diff --git a/packages/server/src/cli.ts b/packages/server/src/cli.ts index 382ededc685f..b57fb8ad07d6 100644 --- a/packages/server/src/cli.ts +++ b/packages/server/src/cli.ts @@ -13,6 +13,7 @@ import { SharedProcess, SharedProcessState } from "./vscode/sharedProcess"; import { setup as setupNativeModules } from "./modules"; import { fillFs } from "./fill"; import { isCli, serveStatic, buildDir } from "./constants"; +import opn = require("opn"); export class Entry extends Command { public static description = "Start your own self-hosted browser-accessible VS Code"; @@ -220,10 +221,20 @@ export class Entry extends Command { } else { logger.warn("Launched without authentication."); } + + const url = `http://localhost:${flags.port}/`; logger.info(" "); logger.info("Started (click the link below to open):"); - logger.info(`http://localhost:${flags.port}/`); + logger.info(url); logger.info(" "); + + if (flags["open"]) { + try { + await opn(url); + } catch (e) { + logger.warn("Url couldn't be opened automatically.", field("url", url), field("exception", e)); + } + } } } diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index c5059c5c193b..b32dbfe482be 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -129,6 +129,13 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67" integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ== +"@types/opn@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@types/opn/-/opn-5.1.0.tgz#bff7bc371677f4bdbb37884400e03fd81f743927" + integrity sha512-TNPrB7Y1xl06zDI0aGyqkgxjhIev3oJ+cdqlZ52MTAHauWpEL/gIUdHebIfRHFZk9IqSBpE2ci1DT48iZH81yg== + dependencies: + "@types/node" "*" + "@types/pem@^1.9.4": version "1.9.4" resolved "https://registry.yarnpkg.com/@types/pem/-/pem-1.9.4.tgz#9ef9302dc5f0352503e193003b208cddef4ffa45" @@ -2668,6 +2675,13 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" +opn@^5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.4.0.tgz#cb545e7aab78562beb11aa3bfabc7042e1761035" + integrity sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw== + dependencies: + is-wsl "^1.1.0" + optionator@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" From 3d654a8df7f63d733a813e097901f2f67b124d27 Mon Sep 17 00:00:00 2001 From: Asher Date: Thu, 7 Mar 2019 11:24:25 -0600 Subject: [PATCH 07/20] Resolve paths Fixes #19. --- packages/server/src/cli.ts | 16 ++++++++-------- packages/server/src/constants.ts | 4 +++- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/server/src/cli.ts b/packages/server/src/cli.ts index b57fb8ad07d6..a4352d82c719 100644 --- a/packages/server/src/cli.ts +++ b/packages/server/src/cli.ts @@ -49,11 +49,11 @@ export class Entry extends Command { } const { args, flags } = this.parse(Entry); - const dataDir = flags["data-dir"] || path.join(os.homedir(), ".code-server"); - const workingDir = args["workdir"]; + const dataDir = path.resolve(flags["data-dir"] || path.join(os.homedir(), ".code-server")); + const workingDir = path.resolve(args["workdir"]); setupNativeModules(dataDir); - const builtInExtensionsDir = path.join(buildDir || path.join(__dirname, ".."), "build/extensions"); + const builtInExtensionsDir = path.resolve(buildDir || path.join(__dirname, ".."), "build/extensions"); if (flags["bootstrap-fork"]) { const modulePath = flags["bootstrap-fork"]; if (!modulePath) { @@ -84,8 +84,8 @@ export class Entry extends Command { const logDir = path.join(dataDir, "logs", new Date().toISOString().replace(/[-:.TZ]/g, "")); process.env.VSCODE_LOGS = logDir; - const certPath = flags.cert; - const certKeyPath = flags["cert-key"]; + const certPath = flags.cert ? path.resolve(flags.cert) : undefined; + const certKeyPath = flags["cert-key"] ? path.resolve(flags["cert-key"]) : undefined; if (certPath && !certKeyPath) { logger.error("'--cert-key' flag is required when specifying a certificate!"); @@ -135,9 +135,9 @@ export class Entry extends Command { } }); - let password = flags["password"]; + let password = flags.password; if (!password) { - // Generate a random password + // Generate a random password with a length of 24. const buffer = Buffer.alloc(12); randomFillSync(buffer); password = buffer.toString("hex"); @@ -158,7 +158,7 @@ export class Entry extends Command { // If we're not running from the binary and we aren't serving the static // pre-built version, use webpack to serve the web files. if (!isCli && !serveStatic) { - const webpackConfig = require(path.join(__dirname, "..", "..", "web", "webpack.config.js")); + const webpackConfig = require(path.resolve(__dirname, "..", "..", "web", "webpack.config.js")); const compiler = require("webpack")(webpackConfig); app.use(require("webpack-dev-middleware")(compiler, { logger, diff --git a/packages/server/src/constants.ts b/packages/server/src/constants.ts index dee4b2678f34..d603a60326a1 100644 --- a/packages/server/src/constants.ts +++ b/packages/server/src/constants.ts @@ -1,3 +1,5 @@ +import * as path from "path"; + export const isCli = typeof process.env.CLI !== "undefined" && process.env.CLI !== "false"; export const serveStatic = typeof process.env.SERVE_STATIC !== "undefined" && process.env.SERVE_STATIC !== "false"; -export const buildDir = process.env.BUILD_DIR; +export const buildDir = process.env.BUILD_DIR ? path.resolve(process.env.BUILD_DIR) : ""; From 8e6841117464e50c523768b0d3bd842d1b0e0c71 Mon Sep 17 00:00:00 2001 From: Elizabeth Date: Thu, 7 Mar 2019 12:31:01 -0500 Subject: [PATCH 08/20] Update example docker command port bind options (#88) must use 127.0.0.1 and not `localhost` --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 800bc8ec166c..56095586b9fc 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Try it out: ```bash -docker run -p localhost:8443:8443 -v "${PWD}:/root/project" codercom/code-server code-server --allow-http --no-auth +docker run -p 127.0.0.1:8443:8443 -v "${PWD}:/root/project" codercom/code-server code-server --allow-http --no-auth ``` - Code on your Chromebook, tablet, and laptop with a consistent dev environment. From fba3fe5609fb0862debd8574523323d3ef390074 Mon Sep 17 00:00:00 2001 From: Anmol Sethi Date: Thu, 7 Mar 2019 13:49:27 -0500 Subject: [PATCH 09/20] Dockerfile: cleanup and add en_US.UTF-8 locale Closes #84 Closes #83 Thanks @xMrWhite, @frol and @sr229. --- .github/CODEOWNERS | 3 ++- Dockerfile | 26 ++++++++++++++++---------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 6034d421aa7c..c9f572f8e371 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1,2 @@ -* @coderasher @kylecarbs \ No newline at end of file +* @coderasher @kylecarbs +Dockerfile @nhooyr diff --git a/Dockerfile b/Dockerfile index ec4554594811..87d7fcbf6b6c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,26 +1,32 @@ FROM node:8.15.0 # Install VS Code's deps. These are the only two it seems we need. -RUN apt-get update -RUN apt-get install -y libxkbfile-dev libsecret-1-dev +RUN apt-get update && apt-get install -y \ + libxkbfile-dev \ + libsecret-1-dev # Ensure latest yarn. -RUN npm install -g yarn +RUN npm install -g yarn@1.13 -# In the future, we can use https://github.com/yarnpkg/rfcs/pull/53 to make it use the node_modules -# directly which should be faster. WORKDIR /src COPY . . -RUN yarn -RUN yarn task build:server:binary + +# In the future, we can use https://github.com/yarnpkg/rfcs/pull/53 to make yarn use the node_modules +# directly which should be fast as it is slow because it populates its own cache every time. +RUN yarn && yarn task build:server:binary # We deploy with ubuntu so that devs have a familiar environemnt. FROM ubuntu:18.10 -RUN apt-get update -RUN apt-get install -y openssl -RUN apt-get install -y net-tools WORKDIR /root/project COPY --from=0 /src/packages/server/cli-linux /usr/local/bin/code-server EXPOSE 8443 +RUN apt-get update && apt-get install -y \ + openssl \ + net-tools +RUN apt-get install -y locales && \ + locale-gen en_US.UTF-8 +# We unfortunately cannot use update-locale because docker will not use the env variables +# configured in /etc/default/locale so we need to set it manually. +ENV LANG=en_US.UTF-8 # Unfortunately `.` does not work with code-server. CMD code-server $PWD From 8e5f2884590ebf986d6b9e7b69fa91e6df943c3b Mon Sep 17 00:00:00 2001 From: Elizabeth Date: Thu, 7 Mar 2019 16:19:00 -0500 Subject: [PATCH 10/20] Updated current args available for passing in docs (#105) --- doc/self-hosted/index.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/self-hosted/index.md b/doc/self-hosted/index.md index 9080ec8b5f5c..e2fbd99fd7ce 100644 --- a/doc/self-hosted/index.md +++ b/doc/self-hosted/index.md @@ -46,10 +46,12 @@ OPTIONS -o, --open Open in browser on startup -p, --port=port [default: 8443] Port to bind on -v, --version show CLI version + --allow-http --cert=cert --cert-key=cert-key - --password=password --help show CLI help + --no-auth + --password=password ``` ### Data directory From 231cdec7fba587a477a98c8e944c38f4a36fcdaf Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Thu, 7 Mar 2019 21:23:16 +0000 Subject: [PATCH 11/20] Update known issues in readme with better wording --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 56095586b9fc..e3aca967d0f2 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ How to [secure your setup](/doc/security/ssl.md). ### Known Issues -- Debugging extensions doesn’t work. +- Creating custom VS Code extensions and debugging them doesn't work. ### Future From 96175d36eaa49a032c252b6c1dba4860ad057890 Mon Sep 17 00:00:00 2001 From: Anmol Sethi Date: Thu, 7 Mar 2019 16:48:11 -0500 Subject: [PATCH 12/20] Handle arch in dockerfile and add PR template (#109) * repo: add a pull request template * Dockerfile: include arch when copying Thanks @yush1ga and @zerdos --- .github/pull_request_template.md | 6 ++++++ Dockerfile | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 .github/pull_request_template.md diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 000000000000..e056fdf5f161 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,6 @@ + + +### Describe in detail the problem you had and how this PR fixes it + +### Is there an open issue you can link to? + diff --git a/Dockerfile b/Dockerfile index 87d7fcbf6b6c..06f26827660b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,7 +18,7 @@ RUN yarn && yarn task build:server:binary # We deploy with ubuntu so that devs have a familiar environemnt. FROM ubuntu:18.10 WORKDIR /root/project -COPY --from=0 /src/packages/server/cli-linux /usr/local/bin/code-server +COPY --from=0 /src/packages/server/cli-linux-x64 /usr/local/bin/code-server EXPOSE 8443 RUN apt-get update && apt-get install -y \ openssl \ From 9f4212eace4cac51c27472431b383648adfc0a2d Mon Sep 17 00:00:00 2001 From: Semen Zhydenko Date: Fri, 8 Mar 2019 17:10:50 +0100 Subject: [PATCH 13/20] inital -> initial (#135) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e3aca967d0f2..e8ef74d30906 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ See docker oneliner mentioned above. Dockerfile is at [/Dockerfile](/Dockerfile) 2. Start the binary with the project directory as the first argument ``` - code-server + code-server ``` > You will be prompted to enter the password shown in the CLI `code-server` should now be running at https://localhost:8443. From 5c435a3b6cb8775b28cd2a88e5774dae1a5b0247 Mon Sep 17 00:00:00 2001 From: Jeremy Pinnix Date: Fri, 8 Mar 2019 10:34:31 -0600 Subject: [PATCH 14/20] Update grammar on README (#139) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e8ef74d30906..53e91bbd5cd2 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ docker run -p 127.0.0.1:8443:8443 -v "${PWD}:/root/project" codercom/code-server - If you have a Windows or Mac workstation, more easily develop for Linux. - Take advantage of large cloud servers to speed up tests, compilations, downloads, and more. - Preserve battery life when you're on the go. - - All intensive computation is ran on your server. + - All intensive computation runs on your server. - You're no longer running excess instances of Chrome. ![Screenshot](/doc/assets/ide.png) From 36c05ed335e30721764865b397a6c47abc138e6d Mon Sep 17 00:00:00 2001 From: Asher Date: Fri, 8 Mar 2019 10:37:03 -0600 Subject: [PATCH 15/20] Feature/1.32.0 update (#117) * Update VS Code to 1.32.0 * Update patch Most changes are moved files, most notably shell.contribution.ts which is now main.contribution.ts. Also: - repl.ts no longer uses isMacintosh - shell.ts doesn't exist - added back the commented-out CSP headers * Use es6 target for bootstrap-fork * Directly reference cross-env binary yarn and npm find the binary just fine when running the tasks from the root but it doesn't work if you run one of those tasks directly from within those directories. * Update import paths and bootstrap-fork ignores * Increase memory limit for building default extensions * Fix invalid regex in Firefox * Update startup function * Fix global.require error * Update zip extract arguments * Update travis to minimum required Node version * Always chmod executable dependencies Fixes EACCESS errors for users that had the files unpacked before we added the chmod call. * Remove unused var declaration --- .travis.yml | 4 +- build/tasks.ts | 4 +- packages/app/common/src/containers.tsx | 2 +- packages/server/package.json | 2 +- packages/server/src/modules.ts | 9 +- packages/vscode/package.json | 2 +- packages/vscode/src/fill/labels.ts | 9 +- packages/vscode/src/fill/paste.ts | 8 +- packages/vscode/src/fill/product.ts | 2 +- packages/vscode/src/fill/workbenchRegistry.ts | 4 +- packages/vscode/src/fill/zip.ts | 2 +- packages/vscode/src/workbench.ts | 8 +- packages/vscode/webpack.bootstrap.config.js | 12 +- packages/web/package.json | 4 +- packages/web/webpack.config.js | 10 +- scripts/vscode.patch | 697 +++++++++--------- 16 files changed, 371 insertions(+), 408 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8b6f956db876..262ca89ef4d8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,8 @@ language: node_js node_js: -- 8.9.3 +- 8.10.0 env: - - VERSION="1.31.1-$TRAVIS_BUILD_NUMBER" + - VERSION="1.32.0-$TRAVIS_BUILD_NUMBER" matrix: include: - os: linux diff --git a/build/tasks.ts b/build/tasks.ts index 0831fb5f43b4..6367d895795b 100644 --- a/build/tasks.ts +++ b/build/tasks.ts @@ -194,7 +194,7 @@ const buildDefaultExtensions = register("build:default-extensions", async (runne if (!fs.existsSync(defaultExtensionsPath)) { await copyForDefaultExtensions(); runner.cwd = extDirPath; - const resp = await runner.execute(isWin ? "npx.cmd" : "npx", [isWin ? "gulp.cmd" : "gulp", "vscode-linux-x64"]); + const resp = await runner.execute(isWin ? "npx.cmd" : "npx", [isWin ? "gulp.cmd" : "gulp", "vscode-linux-x64", "--max-old-space-size=32384"]); if (resp.exitCode !== 0) { throw new Error(`Failed to build default extensions: ${resp.stderr}`); } @@ -224,7 +224,7 @@ const ensureCloned = register("vscode:clone", async (runner) => { } runner.cwd = vscodePath; - const checkout = await runner.execute("git", ["checkout", "tags/1.31.1"]); + const checkout = await runner.execute("git", ["checkout", "tags/1.32.0"]); if (checkout.exitCode !== 0) { throw new Error(`Failed to checkout: ${checkout.stderr}`); } diff --git a/packages/app/common/src/containers.tsx b/packages/app/common/src/containers.tsx index 1e97907dc084..38deccd35e80 100644 --- a/packages/app/common/src/containers.tsx +++ b/packages/app/common/src/containers.tsx @@ -258,7 +258,7 @@ export class Server extends React.Component { const diskFile = path.join(dataDirectory, "dependencies", moduleName); if (!fs.existsSync(diskFile)) { fs.writeFileSync(diskFile, fs.readFileSync(memFile)); - - if (markExecutable) { - fs.chmodSync(diskFile, "755"); - } + } + if (markExecutable) { + fs.chmodSync(diskFile, "755"); } }; diff --git a/packages/vscode/package.json b/packages/vscode/package.json index f3eb1587c75b..df9c53c9b469 100644 --- a/packages/vscode/package.json +++ b/packages/vscode/package.json @@ -3,7 +3,7 @@ "description": "VS Code implementation of the browser-based IDE client.", "main": "src/index.ts", "scripts": { - "build:bootstrap-fork": "cross-env UV_THREADPOOL_SIZE=100 node --max-old-space-size=32384 ../../node_modules/webpack/bin/webpack.js --config ./webpack.bootstrap.config.js" + "build:bootstrap-fork": "../../node_modules/.bin/cross-env UV_THREADPOOL_SIZE=100 node --max-old-space-size=32384 ../../node_modules/webpack/bin/webpack.js --config ./webpack.bootstrap.config.js" }, "dependencies": { "iconv-lite": "^0.4.24", diff --git a/packages/vscode/src/fill/labels.ts b/packages/vscode/src/fill/labels.ts index a515cb6ee6b0..ee8cc16d4b79 100644 --- a/packages/vscode/src/fill/labels.ts +++ b/packages/vscode/src/fill/labels.ts @@ -1,10 +1,11 @@ import * as labels from "vs/base/common/labels"; -// Here we simply disable translation of mnemonics and leave everything as &&. -// Since we're in the browser, we can handle all platforms in the same way. +// Disable all mnemonics for now until we implement it. const target = labels as typeof labels; target.mnemonicMenuLabel = (label: string, forceDisable?: boolean): string => { - return forceDisable ? label.replace(/\(&&\w\)|&&/g, "") : label; + return label.replace(/\(&&\w\)|&&/g, ""); +}; +target.mnemonicButtonLabel = (label: string): string => { + return label.replace(/\(&&\w\)|&&/g, ""); }; -target.mnemonicButtonLabel = (label: string): string => { return label; }; target.unmnemonicLabel = (label: string): string => { return label; }; diff --git a/packages/vscode/src/fill/paste.ts b/packages/vscode/src/fill/paste.ts index bfe7ecdfdf67..f701ba2f4fef 100644 --- a/packages/vscode/src/fill/paste.ts +++ b/packages/vscode/src/fill/paste.ts @@ -1,9 +1,9 @@ import * as nls from "vs/nls"; import { Action } from "vs/base/common/actions"; -import { TERMINAL_COMMAND_ID } from "vs/workbench/parts/terminal/common/terminalCommands"; -import { ITerminalService } from "vs/workbench/parts/terminal/common/terminal"; -import * as actions from "vs/workbench/parts/terminal/electron-browser/terminalActions"; -import * as instance from "vs/workbench/parts/terminal/electron-browser/terminalInstance"; +import { TERMINAL_COMMAND_ID } from "vs/workbench/contrib/terminal/common/terminalCommands"; +import { ITerminalService } from "vs/workbench/contrib/terminal/common/terminal"; +import * as actions from "vs/workbench/contrib/terminal/electron-browser/terminalActions"; +import * as instance from "vs/workbench/contrib/terminal/electron-browser/terminalInstance"; import { client } from "../client"; const getLabel = (key: string, enabled: boolean): string => { diff --git a/packages/vscode/src/fill/product.ts b/packages/vscode/src/fill/product.ts index 9b69fc2521bc..a861af78baa4 100644 --- a/packages/vscode/src/fill/product.ts +++ b/packages/vscode/src/fill/product.ts @@ -1,4 +1,4 @@ -import { IProductConfiguration } from "vs/platform/node/product"; +import { IProductConfiguration } from "vs/platform/product/node/product"; const product = { nameShort: "code-server", diff --git a/packages/vscode/src/fill/workbenchRegistry.ts b/packages/vscode/src/fill/workbenchRegistry.ts index 4351a92bef53..df6ac30d7dbc 100644 --- a/packages/vscode/src/fill/workbenchRegistry.ts +++ b/packages/vscode/src/fill/workbenchRegistry.ts @@ -5,8 +5,8 @@ import { IWorkbenchActionRegistry, Extensions } from "vs/workbench/common/action import { SyncActionDescriptor } from "vs/platform/actions/common/actions"; import { ContextKeyExpr } from "vs/platform/contextkey/common/contextkey"; import { ToggleDevToolsAction } from "vs/workbench/electron-browser/actions/developerActions"; -import { TerminalPasteAction } from "vs/workbench/parts/terminal/electron-browser/terminalActions"; -import { KEYBINDING_CONTEXT_TERMINAL_FOCUS } from "vs/workbench/parts/terminal/common/terminal"; +import { TerminalPasteAction } from "vs/workbench/contrib/terminal/electron-browser/terminalActions"; +import { KEYBINDING_CONTEXT_TERMINAL_FOCUS } from "vs/workbench/contrib/terminal/common/terminal"; import { KeyCode, KeyMod } from "vs/base/common/keyCodes"; import { workbench } from "../workbench"; diff --git a/packages/vscode/src/fill/zip.ts b/packages/vscode/src/fill/zip.ts index fa098062a94b..1f6e1cd62678 100644 --- a/packages/vscode/src/fill/zip.ts +++ b/packages/vscode/src/fill/zip.ts @@ -58,7 +58,7 @@ export function zip(tarPath: string, files: IFile[]): Promise { }); } -export async function extract(tarPath: string, targetPath: string, options: IExtractOptions = {}, logService: ILogService, token: CancellationToken): Promise { +export async function extract(tarPath: string, targetPath: string, options: IExtractOptions = {}, token: CancellationToken): Promise { const sourcePathRegex = new RegExp(options.sourcePath ? `^${options.sourcePath}` : ''); return new Promise(async (c, e) => { diff --git a/packages/vscode/src/workbench.ts b/packages/vscode/src/workbench.ts index 44e7608e7a6f..ca06b0196c1e 100644 --- a/packages/vscode/src/workbench.ts +++ b/packages/vscode/src/workbench.ts @@ -17,8 +17,8 @@ import "./fill/workspacesService"; import * as paths from "./fill/paths"; import { PasteAction } from "./fill/paste"; -import { ExplorerItem, ExplorerModel } from "vs/workbench/parts/files/common/explorerModel"; -import { IEditorGroup } from "vs/workbench/services/group/common/editorGroupsService"; +import { ExplorerItem, ExplorerModel } from "vs/workbench/contrib/files/common/explorerModel"; +import { IEditorGroup } from "vs/workbench/services/editor/common/editorGroupsService"; import { IEditorService, IResourceEditor } from "vs/workbench/services/editor/common/editorService"; import { INotificationService } from "vs/platform/notification/common/notification"; import { IProgressService2, ProgressLocation } from "vs/platform/progress/common/progress"; @@ -171,7 +171,7 @@ export class Workbench { // If we try to import this above, workbench will be undefined due to // circular imports. require("vs/workbench/workbench.main"); - const { startup } = require("vs/workbench/electron-browser/main"); + const { main } = require("vs/workbench/electron-browser/main"); const config: IWindowConfiguration = { machineId: "1", windowId: this.windowId, @@ -189,7 +189,7 @@ export class Workbench { } else { config.folderUri = workspace as URI; } - await startup(config); + await main(config); const contextKeys = this.serviceCollection.get(IContextKeyService) as IContextKeyService; const bounded = this.clipboardContextKey.bindTo(contextKeys); client.clipboard.onPermissionChange((enabled) => { diff --git a/packages/vscode/webpack.bootstrap.config.js b/packages/vscode/webpack.bootstrap.config.js index 37b1385f65f8..abfda9bd3631 100644 --- a/packages/vscode/webpack.bootstrap.config.js +++ b/packages/vscode/webpack.bootstrap.config.js @@ -8,7 +8,7 @@ const vsFills = path.join(root, "packages/vscode/src/fill"); module.exports = merge( require(path.join(root, "scripts/webpack.node.config.js"))({ typescriptCompilerOptions: { - target: "es5", + target: "es6", }, }), { entry: path.join(root, "lib/vscode/src/bootstrap-fork.js"), @@ -36,7 +36,7 @@ module.exports = merge( loader: "ignore-loader", }], }, { - test: /((\\|\/)vs(\\|\/)code(\\|\/)electron-main(\\|\/))|((\\|\/)test(\\|\/))|(OSSREADME\.json$)|(\.(test\.ts|test\.js|d\.ts|qwoff|node|html|txt|exe|wuff|md|sh|scpt|less)$)/, + test: /((\\|\/)vs(\\|\/)code(\\|\/)electron-main(\\|\/))|((\\|\/)test(\\|\/))|(OSSREADME\.json$)|\/browser\//, use: [{ loader: "ignore-loader", }], @@ -49,6 +49,8 @@ module.exports = merge( "node-pty": path.resolve(fills, "empty.ts"), "windows-mutex": path.resolve(fills, "empty.ts"), "windows-process-tree": path.resolve(fills, "empty.ts"), + "vscode-windows-registry": path.resolve(fills, "empty.ts"), + "vscode-sqlite3": path.resolve(fills, "empty.ts"), "vs/base/browser/browser": path.resolve(fills, "empty.ts"), "electron": path.join(vsFills, "stdioElectron.ts"), @@ -57,9 +59,9 @@ module.exports = merge( "native-watchdog": path.join(vsFills, "native-watchdog.ts"), "vs/base/common/amd": path.resolve(vsFills, "amd.ts"), "vs/base/node/paths": path.resolve(vsFills, "paths.ts"), - "vs/platform/node/package": path.resolve(vsFills, "package.ts"), - "vs/platform/node/product": path.resolve(vsFills, "product.ts"), - "vs/platform/node/zip": path.resolve(vsFills, "zip.ts"), + "vs/platform/product/node/package": path.resolve(vsFills, "package.ts"), + "vs/platform/product/node/product": path.resolve(vsFills, "product.ts"), + "vs/base/node/zip": path.resolve(vsFills, "zip.ts"), "vs": path.resolve(root, "lib/vscode/src/vs"), }, }, diff --git a/packages/web/package.json b/packages/web/package.json index e72933291640..f7142354b1f3 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,6 +1,6 @@ { "name": "@coder/web", "scripts": { - "build": "cross-env UV_THREADPOOL_SIZE=100 node --max-old-space-size=32384 ../../node_modules/webpack/bin/webpack.js --config ./webpack.config.js" + "build": "../../node_modules/.bin/cross-env UV_THREADPOOL_SIZE=100 node --max-old-space-size=32384 ../../node_modules/webpack/bin/webpack.js --config ./webpack.config.js" } -} \ No newline at end of file +} diff --git a/packages/web/webpack.config.js b/packages/web/webpack.config.js index 811e52def9e9..ecf027dd6351 100644 --- a/packages/web/webpack.config.js +++ b/packages/web/webpack.config.js @@ -32,6 +32,7 @@ module.exports = merge( "selenium-webdriver": path.join(fills, "empty.ts"), "vscode": path.join(fills, "empty.ts"), "vscode-fsevents": path.join(fills, "empty.ts"), + "vscode-windows-registry": path.resolve(fills, "empty.ts"), "vsda": path.join(fills, "empty.ts"), "windows-foreground-love": path.join(fills, "empty.ts"), "windows-mutex": path.join(fills, "empty.ts"), @@ -66,11 +67,14 @@ module.exports = merge( "native-watchdog": path.join(vsFills, "native-watchdog.ts"), "iconv-lite": path.join(vsFills, "iconv-lite.ts"), + // This seems to be in the wrong place? + "vs/workbench/contrib/codeEditor/electron-browser/media/WordWrap_16x.svg": "vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/WordWrap_16x.svg", + "vs/base/node/paths": path.join(vsFills, "paths.ts"), "vs/base/common/amd": path.join(vsFills, "amd.ts"), - "vs/platform/node/product": path.join(vsFills, "product.ts"), - "vs/platform/node/package": path.join(vsFills, "package.ts"), - "vs/platform/node/zip": path.resolve(vsFills, "zip.ts"), + "vs/platform/product/node/package": path.resolve(vsFills, "package.ts"), + "vs/platform/product/node/product": path.resolve(vsFills, "product.ts"), + "vs/base/node/zip": path.resolve(vsFills, "zip.ts"), "vs": path.join(root, "lib", "vscode", "src", "vs"), }, }, diff --git a/scripts/vscode.patch b/scripts/vscode.patch index 3854de05e5b8..66fb81a19599 100644 --- a/scripts/vscode.patch +++ b/scripts/vscode.patch @@ -1,14 +1,14 @@ diff --git a/src/vs/base/browser/browser.ts b/src/vs/base/browser/browser.ts -index 639ac3d031..85999db640 100644 +index c09210608f..66f1934539 100644 --- a/src/vs/base/browser/browser.ts +++ b/src/vs/base/browser/browser.ts -@@ -153,0 +154,4 @@ export const isEdgeWebView = isEdge && (userAgent.indexOf('WebView/') >= 0); +@@ -125,0 +126,4 @@ export const isEdgeWebView = isEdge && (userAgent.indexOf('WebView/') >= 0); +export const isMacintosh = userAgent.indexOf("Macintosh") >= 0; +export const isWindows = userAgent.indexOf("Windows") >= 0; +export const isLinux = userAgent.indexOf("Linux") >= 0; + diff --git a/src/vs/base/browser/keyboardEvent.ts b/src/vs/base/browser/keyboardEvent.ts -index a6fdce5c7c..7a80c85398 100644 +index 03bdffc95e..d72c1681ef 100644 --- a/src/vs/base/browser/keyboardEvent.ts +++ b/src/vs/base/browser/keyboardEvent.ts @@ -154 +154 @@ let INVERSE_KEY_CODE_MAP: KeyCode[] = new Array(KeyCode.MAX_VALUE); @@ -17,10 +17,10 @@ index a6fdce5c7c..7a80c85398 100644 @@ -159 +159 @@ let INVERSE_KEY_CODE_MAP: KeyCode[] = new Array(KeyCode.MAX_VALUE); - if (platform.isMacintosh) { + if (browser.isMacintosh) { -@@ -202 +202 @@ export interface IKeyboardEvent { +@@ -205 +205 @@ export interface IKeyboardEvent { -const ctrlKeyMod = (platform.isMacintosh ? KeyMod.WinCtrl : KeyMod.CtrlCmd); +const ctrlKeyMod = (browser.isMacintosh ? KeyMod.WinCtrl : KeyMod.CtrlCmd); -@@ -205 +205 @@ const shiftKeyMod = KeyMod.Shift; +@@ -208 +208 @@ const shiftKeyMod = KeyMod.Shift; -const metaKeyMod = (platform.isMacintosh ? KeyMod.CtrlCmd : KeyMod.WinCtrl); +const metaKeyMod = (browser.isMacintosh ? KeyMod.CtrlCmd : KeyMod.WinCtrl); diff --git a/src/vs/base/browser/ui/aria/aria.ts b/src/vs/base/browser/ui/aria/aria.ts @@ -31,21 +31,31 @@ index 1922450144..9900776aa2 100644 -import { isMacintosh } from 'vs/base/common/platform'; +import { isMacintosh } from 'vs/base/browser/browser'; diff --git a/src/vs/base/browser/ui/list/listWidget.ts b/src/vs/base/browser/ui/list/listWidget.ts -index e6b2e4e39b..06cdfe152f 100644 +index cd7312809c..b1246de1ee 100644 --- a/src/vs/base/browser/ui/list/listWidget.ts +++ b/src/vs/base/browser/ui/list/listWidget.ts @@ -13 +13 @@ import * as DOM from 'vs/base/browser/dom'; -import * as platform from 'vs/base/common/platform'; +import * as browser from 'vs/base/browser/browser'; -@@ -257 +257 @@ class KeyboardController implements IDisposable { +@@ -253 +253 @@ class KeyboardController implements IDisposable { - onKeyDown.filter(e => (platform.isMacintosh ? e.metaKey : e.ctrlKey) && e.keyCode === KeyCode.KEY_A).on(this.onCtrlA, this, this.disposables); + onKeyDown.filter(e => (browser.isMacintosh ? e.metaKey : e.ctrlKey) && e.keyCode === KeyCode.KEY_A).on(this.onCtrlA, this, this.disposables); -@@ -479 +479 @@ export function isSelectionSingleChangeEvent(event: IListMouseEvent | IList +@@ -491 +491 @@ export function isSelectionSingleChangeEvent(event: IListMouseEvent | IList - return platform.isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey; + return browser.isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey; -@@ -540 +540 @@ class MouseController implements IDisposable { +@@ -553 +553 @@ export class MouseController implements IDisposable { - return platform.isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey; + return browser.isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey; +diff --git a/src/vs/base/browser/ui/menu/menu.ts b/src/vs/base/browser/ui/menu/menu.ts +index 47da5e4277..fbf7e22aed 100644 +--- a/src/vs/base/browser/ui/menu/menu.ts ++++ b/src/vs/base/browser/ui/menu/menu.ts +@@ -23,2 +23,3 @@ import { isLinux } from 'vs/base/common/platform'; +-export const MENU_MNEMONIC_REGEX: RegExp = /\(&([^\s&])\)|(? -+ +@@ -49,0 +50 @@ export class HeapService implements IHeapService { ++ return; // Cannot control GC in the browser. diff --git a/src/vs/workbench/api/node/extHostExtensionService.ts b/src/vs/workbench/api/node/extHostExtensionService.ts -index 1f4a1e100b..1bf605a064 100644 +index 58ba2e568e..4fb6272914 100644 --- a/src/vs/workbench/api/node/extHostExtensionService.ts +++ b/src/vs/workbench/api/node/extHostExtensionService.ts -@@ -719 +719 @@ function loadCommonJSModule(logService: ILogService, modulePath: string, acti +@@ -774 +774 @@ function loadCommonJSModule(logService: ILogService, modulePath: string, acti - r = require.__$__nodeRequire(modulePath); + r = (global as any).nativeNodeRequire(modulePath); diff --git a/src/vs/workbench/browser/dnd.ts b/src/vs/workbench/browser/dnd.ts -index e73acff052..c52bb3c7a2 100644 +index 5897ab9e71..57b926e9ee 100644 --- a/src/vs/workbench/browser/dnd.ts +++ b/src/vs/workbench/browser/dnd.ts -@@ -171 +171 @@ export class ResourcesDropHandler { +@@ -168 +168 @@ export class ResourcesDropHandler { - return; + return (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.handleDrop(event, resolveTargetGroup, afterDrop, targetIndex); diff --git a/src/vs/workbench/browser/layout.ts b/src/vs/workbench/browser/layout.ts -index 7213400c86..a54def1640 100644 +index 819bb31534..de691330df 100644 --- a/src/vs/workbench/browser/layout.ts +++ b/src/vs/workbench/browser/layout.ts +@@ -15 +15 @@ import { IThemeService } from 'vs/platform/theme/common/themeService'; +-import { isMacintosh } from 'vs/base/common/platform'; ++import { isNative, isMacintosh } from 'vs/base/common/platform'; @@ -29 +29 @@ import { getZoomFactor } from 'vs/base/browser/browser'; -const TITLE_BAR_HEIGHT = isMacintosh ? 22 : 30; -+const TITLE_BAR_HEIGHT = /* isMacintosh ? 22 : */30; ++const TITLE_BAR_HEIGHT = isNative && isMacintosh ? 22 : 30; diff --git a/src/vs/workbench/browser/parts/editor/editor.contribution.ts b/src/vs/workbench/browser/parts/editor/editor.contribution.ts -index b262c8aeef..4e23df1bc6 100644 +index 5c1e6ef0f8..dd795924d8 100644 --- a/src/vs/workbench/browser/parts/editor/editor.contribution.ts +++ b/src/vs/workbench/browser/parts/editor/editor.contribution.ts @@ -48 +48 @@ import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; -import { isMacintosh } from 'vs/base/common/platform'; +import { isMacintosh } from 'vs/base/browser/browser'; diff --git a/src/vs/workbench/browser/parts/editor/editorDropTarget.ts b/src/vs/workbench/browser/parts/editor/editorDropTarget.ts -index 9eca348265..df1d84514f 100644 +index 52272c0d2f..77d447dbc7 100644 --- a/src/vs/workbench/browser/parts/editor/editorDropTarget.ts +++ b/src/vs/workbench/browser/parts/editor/editorDropTarget.ts @@ -14 +14 @@ import { IEditorIdentifier, EditorInput, EditorOptions } from 'vs/workbench/comm -import { isMacintosh } from 'vs/base/common/platform'; +import { isMacintosh } from 'vs/base/browser/browser'; diff --git a/src/vs/workbench/browser/parts/editor/resourceViewer.ts b/src/vs/workbench/browser/parts/editor/resourceViewer.ts -index a0cc90b573..781e0187a0 100644 +index 73446c7b5c..90330a25a4 100644 --- a/src/vs/workbench/browser/parts/editor/resourceViewer.ts +++ b/src/vs/workbench/browser/parts/editor/resourceViewer.ts @@ -23 +23 @@ import { memoize } from 'vs/base/common/decorators'; @@ -402,246 +400,153 @@ index a0cc90b573..781e0187a0 100644 - const isScrollWhellKeyPressed = platform.isMacintosh ? altPressed : ctrlPressed; + const isScrollWhellKeyPressed = browser.isMacintosh ? altPressed : ctrlPressed; diff --git a/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts b/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts -index 5f957c221a..f29d27759e 100644 +index e2bfb8d2cd..3f6ae265f2 100644 --- a/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts +++ b/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts @@ -7 +7 @@ import 'vs/css!./media/tabstitlecontrol'; -import { isMacintosh } from 'vs/base/common/platform'; +import { isMacintosh } from 'vs/base/browser/browser'; diff --git a/src/vs/workbench/browser/parts/quickinput/quickInputList.ts b/src/vs/workbench/browser/parts/quickinput/quickInputList.ts -index f24bb0bcc0..219a1dcae5 100644 +index 74782740c7..aa55946135 100644 --- a/src/vs/workbench/browser/parts/quickinput/quickInputList.ts +++ b/src/vs/workbench/browser/parts/quickinput/quickInputList.ts @@ -24 +24 @@ import { range } from 'vs/base/common/arrays'; -import * as platform from 'vs/base/common/platform'; +import * as browser from 'vs/base/browser/browser'; -@@ -263 +263 @@ export class QuickInputList { +@@ -264 +264 @@ export class QuickInputList { - if (platform.isMacintosh ? e.metaKey : e.ctrlKey) { + if (browser.isMacintosh ? e.metaKey : e.ctrlKey) { diff --git a/src/vs/workbench/browser/parts/titlebar/media/titlebarpart.css b/src/vs/workbench/browser/parts/titlebar/media/titlebarpart.css -index 38794f793d..d4daa083bd 100644 +index a215bde753..df7562b177 100644 --- a/src/vs/workbench/browser/parts/titlebar/media/titlebarpart.css +++ b/src/vs/workbench/browser/parts/titlebar/media/titlebarpart.css @@ -44,0 +45 @@ +.web > .monaco-workbench .part.titlebar, diff --git a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts -index 121bf09bb8..f5d425300a 100644 +index 254ae28877..4f2e21768b 100644 --- a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts +++ b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts @@ -16 +16,2 @@ import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; -import { isMacintosh, isLinux } from 'vs/base/common/platform'; +import { isNative } from 'vs/base/common/platform'; +import { isMacintosh, isLinux } from 'vs/base/browser/browser'; -@@ -113 +114 @@ export class MenubarControl extends Disposable { +@@ -117 +118 @@ export class MenubarControl extends Disposable { - if (isMacintosh) { + if (isNative && isMacintosh) { -@@ -119 +120 @@ export class MenubarControl extends Disposable { +@@ -123 +124 @@ export class MenubarControl extends Disposable { - if (isMacintosh || this.currentTitlebarStyleSetting !== 'custom') { + if ((isNative && isMacintosh) || this.currentTitlebarStyleSetting !== 'custom') { -@@ -255 +256 @@ export class MenubarControl extends Disposable { +@@ -283 +284 @@ export class MenubarControl extends Disposable { - if (!isMacintosh && this.currentTitlebarStyleSetting === 'custom') { + if (!(isNative && isMacintosh) && this.currentTitlebarStyleSetting === 'custom') { -@@ -271 +272 @@ export class MenubarControl extends Disposable { +@@ -299 +300 @@ export class MenubarControl extends Disposable { - if (!isMacintosh && this.currentTitlebarStyleSetting === 'custom') { + if (!(isNative && isMacintosh) && this.currentTitlebarStyleSetting === 'custom') { -@@ -432 +433 @@ export class MenubarControl extends Disposable { +@@ -470 +471 @@ export class MenubarControl extends Disposable { - if (!isMacintosh) { + if (!(isNative && isMacintosh)) { -@@ -648 +649 @@ export class MenubarControl extends Disposable { +@@ -692 +693 @@ export class MenubarControl extends Disposable { - if (!isMacintosh && this.currentTitlebarStyleSetting === 'custom') { + if (!(isNative && isMacintosh) && this.currentTitlebarStyleSetting === 'custom') { diff --git a/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts b/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts -index 4b3eb7bdb8..9161baf086 100644 +index 3ab509fad9..5c76d17e39 100644 --- a/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts +++ b/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts @@ -25 +25,2 @@ import { TITLE_BAR_ACTIVE_BACKGROUND, TITLE_BAR_ACTIVE_FOREGROUND, TITLE_BAR_INA -import { isMacintosh, isWindows, isLinux } from 'vs/base/common/platform'; +import { isNative } from 'vs/base/common/platform'; +import { isMacintosh, isWindows, isLinux } from 'vs/base/browser/browser'; -@@ -320 +321 @@ export class TitlebarPart extends Part implements ITitleService, ISerializableVi +@@ -327 +328 @@ export class TitlebarPart extends Part implements ITitleService, ISerializableVi - if (!isMacintosh) { + if (!(isNative && isMacintosh)) { -@@ -336 +337 @@ export class TitlebarPart extends Part implements ITitleService, ISerializableVi +@@ -343 +344 @@ export class TitlebarPart extends Part implements ITitleService, ISerializableVi - if (!isMacintosh) { + if (!(isNative && isMacintosh)) { -@@ -543 +544 @@ export class TitlebarPart extends Part implements ITitleService, ISerializableVi +@@ -550 +551 @@ export class TitlebarPart extends Part implements ITitleService, ISerializableVi - if (!isMacintosh && + if (!(isNative && isMacintosh) && -@@ -559 +560 @@ export class TitlebarPart extends Part implements ITitleService, ISerializableVi +@@ -568 +569 @@ export class TitlebarPart extends Part implements ITitleService, ISerializableVi - if (isMacintosh || this.configurationService.getValue('window.menuBarVisibility') === 'hidden') { + if ((isNative && isMacintosh) || this.configurationService.getValue('window.menuBarVisibility') === 'hidden') { diff --git a/src/vs/workbench/browser/workbench.contribution.ts b/src/vs/workbench/browser/workbench.contribution.ts -index 3798dbde4f..b0a5c23521 100644 +index 1eb763e002..ad509f8b47 100644 --- a/src/vs/workbench/browser/workbench.contribution.ts +++ b/src/vs/workbench/browser/workbench.contribution.ts @@ -9 +9 @@ import { IConfigurationRegistry, Extensions as ConfigurationExtensions, Configur -import { isMacintosh } from 'vs/base/common/platform'; +import { isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/workbench/electron-browser/actions/helpActions.ts b/src/vs/workbench/electron-browser/actions/helpActions.ts -index 85d39d64d7..4b958dc79f 100644 ---- a/src/vs/workbench/electron-browser/actions/helpActions.ts -+++ b/src/vs/workbench/electron-browser/actions/helpActions.ts -@@ -9 +9,2 @@ import product from 'vs/platform/node/product'; --import { isMacintosh, isLinux, language } from 'vs/base/common/platform'; -+import { language } from 'vs/base/common/platform'; -+import { isMacintosh, isLinux } from 'vs/base/browser/browser'; -diff --git a/src/vs/workbench/electron-browser/actions/windowActions.ts b/src/vs/workbench/electron-browser/actions/windowActions.ts -index 0cf3ec6611..b8b61194ba 100644 ---- a/src/vs/workbench/electron-browser/actions/windowActions.ts -+++ b/src/vs/workbench/electron-browser/actions/windowActions.ts -@@ -14 +14 @@ import { IWorkspaceConfigurationService } from 'vs/workbench/services/configurat --import { isMacintosh } from 'vs/base/common/platform'; -+import { isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/workbench/electron-browser/main.ts b/src/vs/workbench/electron-browser/main.ts -index 1e6333c731..0a7bdeeb9b 100644 ---- a/src/vs/workbench/electron-browser/main.ts -+++ b/src/vs/workbench/electron-browser/main.ts -@@ -147,7 +147,7 @@ function openWorkbench(configuration: IWindowConfiguration): Promise { -- (self).require.config({ -- onError: err => { -- if (err.errorCode === 'load') { -- shell.onUnexpectedError(new Error(nls.localize('loaderErrorNative', "Failed to load a required file. Please restart the application to try again. Details: {0}", JSON.stringify(err)))); -- } -- } -- }); -+ // (self).require.config({ -+ // onError: err => { -+ // if (err.errorCode === 'load') { -+ // shell.onUnexpectedError(new Error(nls.localize('loaderErrorNative', "Failed to load a required file. Please restart the application to try again. Details: {0}", JSON.stringify(err)))); -+ // } -+ // } -+ // }); -diff --git a/src/vs/workbench/electron-browser/shell.contribution.ts b/src/vs/workbench/electron-browser/shell.contribution.ts -index bc02c150a7..4ef622f669 100644 ---- a/src/vs/workbench/electron-browser/shell.contribution.ts -+++ b/src/vs/workbench/electron-browser/shell.contribution.ts -@@ -14 +14,2 @@ import { KeyMod, KeyChord, KeyCode } from 'vs/base/common/keyCodes'; --import { isWindows, isLinux, isMacintosh } from 'vs/base/common/platform'; -+import { isNative, isWeb } from 'vs/base/common/platform'; -+import { isWindows, isLinux, isMacintosh } from 'vs/base/browser/browser'; -@@ -488 +489 @@ configurationRegistry.registerConfiguration({ -- isMacintosh ? -+ isNative && isMacintosh ? -@@ -495 +496 @@ configurationRegistry.registerConfiguration({ -- isMacintosh ? -+ isNative && isMacintosh ? -@@ -582 +583 @@ configurationRegistry.registerConfiguration({ -- 'included': isWindows || isLinux -+ 'included': isWeb || isWindows || isLinux -@@ -589 +590 @@ configurationRegistry.registerConfiguration({ -- 'included': isWindows || isLinux -+ 'included': isWeb || isWindows || isLinux -@@ -615 +616 @@ configurationRegistry.registerConfiguration({ -- 'included': isMacintosh && parseFloat(os.release()) >= 16 // Minimum: macOS Sierra (10.12.x = darwin 16.x) -+ 'included': isNative && isMacintosh && parseFloat(os.release()) >= 16 // Minimum: macOS Sierra (10.12.x = darwin 16.x) -@@ -621 +622 @@ configurationRegistry.registerConfiguration({ -- 'included': isMacintosh -+ 'included': isNative && isMacintosh -@@ -632 +632,0 @@ configurationRegistry.registerConfiguration({ -- -diff --git a/src/vs/workbench/electron-browser/shell.ts b/src/vs/workbench/electron-browser/shell.ts -index fd95939506..2f32077a15 100644 ---- a/src/vs/workbench/electron-browser/shell.ts -+++ b/src/vs/workbench/electron-browser/shell.ts -@@ -548 +548 @@ export class Shell extends Disposable { -- addClasses(this.container, 'monaco-shell', platform.isWindows ? 'windows' : platform.isLinux ? 'linux' : 'mac'); -+ addClasses(this.container, 'web monaco-shell', browser.isWindows ? 'windows' : browser.isLinux ? 'linux' : 'mac'); -diff --git a/src/vs/workbench/electron-browser/window.ts b/src/vs/workbench/electron-browser/window.ts -index c0aff6bd4b..15af61a9ec 100644 ---- a/src/vs/workbench/electron-browser/window.ts -+++ b/src/vs/workbench/electron-browser/window.ts -@@ -49 +49 @@ const TextInputActions: IAction[] = [ -- new Action('editor.action.clipboardPasteAction', nls.localize('paste', "Paste"), undefined, true, () => Promise.resolve(document.execCommand('paste'))), -+ (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.pasteAction, -@@ -263 +263 @@ export class ElectronWindow extends Themable { -- (window).open = function (url: string, target: string, features: string, replace: boolean): any { -+ (window).openInvalid = function (url: string, target: string, features: string, replace: boolean): any { -@@ -304 +304 @@ export class ElectronWindow extends Themable { -- !isMacintosh || // macOS only -+ !browser.isMacintosh || // macOS only -diff --git a/src/vs/workbench/electron-browser/workbench.ts b/src/vs/workbench/electron-browser/workbench.ts -index d82db96296..ceabf4f791 100644 ---- a/src/vs/workbench/electron-browser/workbench.ts -+++ b/src/vs/workbench/electron-browser/workbench.ts -@@ -19 +19,2 @@ import { Registry } from 'vs/platform/registry/common/platform'; --import { isWindows, isLinux, isMacintosh } from 'vs/base/common/platform'; -+import { isWeb, isNative } from 'vs/base/common/platform'; -+import { isWindows, isLinux, isMacintosh } from 'vs/base/browser/browser'; -@@ -272,0 +274 @@ export class Workbench extends Disposable implements IPartService { -+ (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.serviceCollection = serviceCollection; -@@ -380 +382 @@ export class Workbench extends Disposable implements IPartService { -- if (!isMacintosh && this.useCustomTitleBarStyle()) { -+ if (isWeb || (!isMacintosh && this.useCustomTitleBarStyle())) { -@@ -1098 +1100 @@ export class Workbench extends Disposable implements IPartService { -- if ((isWindows || isLinux) && this.useCustomTitleBarStyle()) { -+ if ((isWeb || isWindows || isLinux) && this.useCustomTitleBarStyle()) { -@@ -1265 +1267 @@ export class Workbench extends Disposable implements IPartService { -- } else if (isMacintosh) { -+ } else if (isNative && isMacintosh) { -diff --git a/src/vs/workbench/parts/codeEditor/electron-browser/accessibility.ts b/src/vs/workbench/parts/codeEditor/electron-browser/accessibility.ts -index 265a7bc474..8eef7e5d10 100644 ---- a/src/vs/workbench/parts/codeEditor/electron-browser/accessibility.ts -+++ b/src/vs/workbench/parts/codeEditor/electron-browser/accessibility.ts -@@ -15,0 +16 @@ import * as platform from 'vs/base/common/platform'; +diff --git a/src/vs/workbench/common/contextkeys.ts b/src/vs/workbench/common/contextkeys.ts +index a0921a04c8..ed5ba1ef33 100644 +--- a/src/vs/workbench/common/contextkeys.ts ++++ b/src/vs/workbench/common/contextkeys.ts +@@ -7 +7 @@ import { RawContextKey } from 'vs/platform/contextkey/common/contextkey'; +-import { isMacintosh, isLinux, isWindows } from 'vs/base/common/platform'; ++import { isMacintosh, isLinux, isWindows } from 'vs/base/browser/browser'; +diff --git a/src/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.ts b/src/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.ts +index 787c9ef03f..bd50c14467 100644 +--- a/src/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.ts ++++ b/src/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.ts +@@ -15 +15 @@ import { Disposable } from 'vs/base/common/lifecycle'; +-import * as platform from 'vs/base/common/platform'; +import * as browser from 'vs/base/browser/browser'; -@@ -196 +197 @@ class AccessibilityHelpWidget extends Widget implements IOverlayWidget { +@@ -197 +197 @@ class AccessibilityHelpWidget extends Widget implements IOverlayWidget { - platform.isMacintosh + browser.isMacintosh -@@ -238 +239 @@ class AccessibilityHelpWidget extends Widget implements IOverlayWidget { +@@ -239 +239 @@ class AccessibilityHelpWidget extends Widget implements IOverlayWidget { - platform.isMacintosh + browser.isMacintosh -diff --git a/src/vs/workbench/parts/codeEditor/electron-browser/suggestEnabledInput.ts b/src/vs/workbench/parts/codeEditor/electron-browser/suggestEnabledInput.ts -index 8c692b4fcc..ce990c83d6 100644 ---- a/src/vs/workbench/parts/codeEditor/electron-browser/suggestEnabledInput.ts -+++ b/src/vs/workbench/parts/codeEditor/electron-browser/suggestEnabledInput.ts +diff --git a/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts b/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts +index 1d338f165b..4f1373689b 100644 +--- a/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts ++++ b/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts @@ -14 +14 @@ import { mixin } from 'vs/base/common/objects'; -import { isMacintosh } from 'vs/base/common/platform'; +import { isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/workbench/parts/codeEditor/electron-browser/toggleMultiCursorModifier.ts b/src/vs/workbench/parts/codeEditor/electron-browser/toggleMultiCursorModifier.ts +diff --git a/src/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.ts b/src/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.ts index 5e1b6da216..f8643d2e18 100644 ---- a/src/vs/workbench/parts/codeEditor/electron-browser/toggleMultiCursorModifier.ts -+++ b/src/vs/workbench/parts/codeEditor/electron-browser/toggleMultiCursorModifier.ts +--- a/src/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.ts ++++ b/src/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.ts @@ -8 +8 @@ import { Action } from 'vs/base/common/actions'; -import * as platform from 'vs/base/common/platform'; +import * as browser from 'vs/base/browser/browser'; @@ -84 +84 @@ MenuRegistry.appendMenuItem(MenuId.MenubarSelectionMenu, { - platform.isMacintosh + browser.isMacintosh -diff --git a/src/vs/workbench/parts/comments/electron-browser/commentNode.ts b/src/vs/workbench/parts/comments/electron-browser/commentNode.ts -index 5d1c0b3b43..dc4ed358c1 100644 ---- a/src/vs/workbench/parts/comments/electron-browser/commentNode.ts -+++ b/src/vs/workbench/parts/comments/electron-browser/commentNode.ts +diff --git a/src/vs/workbench/contrib/comments/electron-browser/commentNode.ts b/src/vs/workbench/contrib/comments/electron-browser/commentNode.ts +index 1ece57bc8d..cf9505e42c 100644 +--- a/src/vs/workbench/contrib/comments/electron-browser/commentNode.ts ++++ b/src/vs/workbench/contrib/comments/electron-browser/commentNode.ts @@ -26 +26 @@ import { KeyCode } from 'vs/base/common/keyCodes'; -import { isMacintosh } from 'vs/base/common/platform'; +import { isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/workbench/parts/comments/electron-browser/commentThreadWidget.ts b/src/vs/workbench/parts/comments/electron-browser/commentThreadWidget.ts -index c5eea6a8d0..72f8329f2f 100644 ---- a/src/vs/workbench/parts/comments/electron-browser/commentThreadWidget.ts -+++ b/src/vs/workbench/parts/comments/electron-browser/commentThreadWidget.ts -@@ -15 +15 @@ import { IDisposable } from 'vs/base/common/lifecycle'; +diff --git a/src/vs/workbench/contrib/comments/electron-browser/commentThreadWidget.ts b/src/vs/workbench/contrib/comments/electron-browser/commentThreadWidget.ts +index 973dd5a329..6c5485442c 100644 +--- a/src/vs/workbench/contrib/comments/electron-browser/commentThreadWidget.ts ++++ b/src/vs/workbench/contrib/comments/electron-browser/commentThreadWidget.ts +@@ -15 +15 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle'; -import * as platform from 'vs/base/common/platform'; +import * as browser from 'vs/base/browser/browser'; -@@ -636 +636 @@ export class ReviewZoneWidget extends ZoneWidget { +@@ -742 +742 @@ export class ReviewZoneWidget extends ZoneWidget { - let keybinding = platform.isMacintosh ? 'Cmd+Enter' : 'Ctrl+Enter'; + let keybinding = browser.isMacintosh ? 'Cmd+Enter' : 'Ctrl+Enter'; -diff --git a/src/vs/workbench/parts/debug/browser/linkDetector.ts b/src/vs/workbench/parts/debug/browser/linkDetector.ts -index 49bb7903ac..624d03d56e 100644 ---- a/src/vs/workbench/parts/debug/browser/linkDetector.ts -+++ b/src/vs/workbench/parts/debug/browser/linkDetector.ts +diff --git a/src/vs/workbench/contrib/debug/browser/linkDetector.ts b/src/vs/workbench/contrib/debug/browser/linkDetector.ts +index 1b6f41c628..0c9bf681bc 100644 +--- a/src/vs/workbench/contrib/debug/browser/linkDetector.ts ++++ b/src/vs/workbench/contrib/debug/browser/linkDetector.ts @@ -9 +9 @@ import { URI as uri } from 'vs/base/common/uri'; -import { isMacintosh } from 'vs/base/common/platform'; +import { isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/workbench/parts/debug/electron-browser/debug.contribution.ts b/src/vs/workbench/parts/debug/electron-browser/debug.contribution.ts -index 2d640f1a84..cbc7353a20 100644 ---- a/src/vs/workbench/parts/debug/electron-browser/debug.contribution.ts -+++ b/src/vs/workbench/parts/debug/electron-browser/debug.contribution.ts +diff --git a/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts b/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts +index fde17ef683..6010faa8f2 100644 +--- a/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts ++++ b/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts @@ -45 +45 @@ import { ViewsRegistry } from 'vs/workbench/common/views'; -import { isMacintosh } from 'vs/base/common/platform'; +import { isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.ts b/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.ts -index f6350174f3..5a884fc81b 100644 ---- a/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.ts -+++ b/src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.ts +diff --git a/src/vs/workbench/contrib/debug/electron-browser/debugEditorContribution.ts b/src/vs/workbench/contrib/debug/electron-browser/debugEditorContribution.ts +index 89c131188a..e803b6f185 100644 +--- a/src/vs/workbench/contrib/debug/electron-browser/debugEditorContribution.ts ++++ b/src/vs/workbench/contrib/debug/electron-browser/debugEditorContribution.ts @@ -9,0 +10 @@ import * as env from 'vs/base/common/platform'; +import * as browser from 'vs/base/browser/browser'; @@ -180 +181 @@ export class DebugEditorContribution implements IDebugEditorContribution { @@ -653,88 +558,74 @@ index f6350174f3..5a884fc81b 100644 @@ -447 +448 @@ export class DebugEditorContribution implements IDebugEditorContribution { - const stopKey = env.isMacintosh ? KeyCode.Meta : KeyCode.Ctrl; + const stopKey = browser.isMacintosh ? KeyCode.Meta : KeyCode.Ctrl; -diff --git a/src/vs/workbench/parts/debug/electron-browser/repl.ts b/src/vs/workbench/parts/debug/electron-browser/repl.ts -index 21b493db79..b608d21912 100644 ---- a/src/vs/workbench/parts/debug/electron-browser/repl.ts -+++ b/src/vs/workbench/parts/debug/electron-browser/repl.ts -@@ -13 +13 @@ import * as aria from 'vs/base/browser/ui/aria/aria'; --import { isMacintosh } from 'vs/base/common/platform'; -+import { isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/workbench/parts/debug/node/debugAdapter.ts b/src/vs/workbench/parts/debug/node/debugAdapter.ts -index 81954344b9..2bdce9603e 100644 ---- a/src/vs/workbench/parts/debug/node/debugAdapter.ts -+++ b/src/vs/workbench/parts/debug/node/debugAdapter.ts +diff --git a/src/vs/workbench/contrib/debug/node/debugAdapter.ts b/src/vs/workbench/contrib/debug/node/debugAdapter.ts +index b5f6da93cb..6e6ff4bd7f 100644 +--- a/src/vs/workbench/contrib/debug/node/debugAdapter.ts ++++ b/src/vs/workbench/contrib/debug/node/debugAdapter.ts @@ -315 +315 @@ export class ExecutableDebugAdapter extends StreamDebugAdapter { - return new Promise((resolve, reject) => { + return new Promise(async (resolve, reject) => { @@ -320 +320 @@ export class ExecutableDebugAdapter extends StreamDebugAdapter { - if (!fs.existsSync(this.adapterExecutable.command)) { + if (!(await require("util").promisify(fs.exists)(this.adapterExecutable.command))) { -diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts -index 65574224a7..9474897de8 100644 ---- a/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts -+++ b/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts -@@ -62 +62 @@ function renderBody(body: string): string { -- -+ -diff --git a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts -index 6d25977a66..788f5c96e7 100644 ---- a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts -+++ b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts +diff --git a/src/vs/workbench/contrib/extensions/node/extensionsWorkbenchService.ts b/src/vs/workbench/contrib/extensions/node/extensionsWorkbenchService.ts +index 67c0c41748..956c3a6a2e 100644 +--- a/src/vs/workbench/contrib/extensions/node/extensionsWorkbenchService.ts ++++ b/src/vs/workbench/contrib/extensions/node/extensionsWorkbenchService.ts @@ -118 +118 @@ class Extension implements IExtension { - return `${product.extensionsGallery.itemUrl}?itemName=${this.publisher}.${this.name}`; + return undefined; // `${product.extensionsGallery.itemUrl}?itemName=${this.publisher}.${this.name}`; -diff --git a/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.ts b/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.ts -index 9df71eeec1..c68c42e922 100644 ---- a/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.ts -+++ b/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.ts +diff --git a/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts b/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts +index f83842f985..bca184ec2f 100644 +--- a/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts ++++ b/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts @@ -17 +17 @@ import { KeybindingsRegistry, KeybindingWeight } from 'vs/platform/keybinding/co -import { isWindows, isMacintosh } from 'vs/base/common/platform'; +import { isWindows, isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/workbench/parts/files/electron-browser/fileCommands.ts b/src/vs/workbench/parts/files/electron-browser/fileCommands.ts -index 0bd9b93fcc..1c8adeb5ca 100644 ---- a/src/vs/workbench/parts/files/electron-browser/fileCommands.ts -+++ b/src/vs/workbench/parts/files/electron-browser/fileCommands.ts -@@ -29 +29 @@ import { KeyMod, KeyCode, KeyChord } from 'vs/base/common/keyCodes'; +diff --git a/src/vs/workbench/contrib/files/browser/fileCommands.ts b/src/vs/workbench/contrib/files/browser/fileCommands.ts +index 136bbc9d38..6766894918 100644 +--- a/src/vs/workbench/contrib/files/browser/fileCommands.ts ++++ b/src/vs/workbench/contrib/files/browser/fileCommands.ts +@@ -28 +28 @@ import { KeyMod, KeyCode, KeyChord } from 'vs/base/common/keyCodes'; -import { isWindows, isMacintosh } from 'vs/base/common/platform'; +import { isWindows, isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts -index 45b32eec0a..1f58bdcd70 100644 ---- a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts -+++ b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts -@@ -39 +39 @@ import { DesktopDragAndDropData, ExternalElementsDragAndDropData, ElementsDragAn +diff --git a/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts b/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts +index e9446128a1..e63851320b 100644 +--- a/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts ++++ b/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts +@@ -38 +38 @@ import { DesktopDragAndDropData, ExternalElementsDragAndDropData, ElementsDragAn -import { isMacintosh, isLinux } from 'vs/base/common/platform'; +import { isMacintosh, isLinux } from 'vs/base/browser/browser'; -@@ -591,0 +592 @@ export class FileDragAndDrop implements ITreeDragAndDrop { +@@ -592,0 +593 @@ export class FileDragAndDrop implements ITreeDragAndDrop { + return (require('vs/../../../../packages/vscode/src/workbench') as typeof import('vs/../../../../packages/vscode/src/workbench')).workbench.handleExternalDrop(target, originalEvent); -diff --git a/src/vs/workbench/parts/logs/electron-browser/logs.contribution.ts b/src/vs/workbench/parts/logs/electron-browser/logs.contribution.ts -index 4015c9cd5d..bebdb25f6c 100644 ---- a/src/vs/workbench/parts/logs/electron-browser/logs.contribution.ts -+++ b/src/vs/workbench/parts/logs/electron-browser/logs.contribution.ts +diff --git a/src/vs/workbench/contrib/logs/common/logs.contribution.ts b/src/vs/workbench/contrib/logs/common/logs.contribution.ts +index a14a2800ef..af264a8eff 100644 +--- a/src/vs/workbench/contrib/logs/common/logs.contribution.ts ++++ b/src/vs/workbench/contrib/logs/common/logs.contribution.ts @@ -31 +31,2 @@ class LogOutputChannels extends Disposable implements IWorkbenchContribution { - outputChannelRegistry.registerChannel({ id: Constants.mainLogChannelId, label: nls.localize('mainLog', "Main"), file: URI.file(join(environmentService.logsPath, `main.log`)), log: true }); + // This channel only seems to be used when loading the app and we skip all of that, so it is never actually created or written to. + // outputChannelRegistry.registerChannel({ id: Constants.mainLogChannelId, label: nls.localize('mainLog', "Main"), file: URI.file(join(environmentService.logsPath, `main.log`)), log: true }); -diff --git a/src/vs/workbench/parts/output/common/outputLinkProvider.ts b/src/vs/workbench/parts/output/common/outputLinkProvider.ts -index 6d9451401a..15e4dcf366 100644 ---- a/src/vs/workbench/parts/output/common/outputLinkProvider.ts -+++ b/src/vs/workbench/parts/output/common/outputLinkProvider.ts +diff --git a/src/vs/workbench/contrib/output/common/outputLinkProvider.ts b/src/vs/workbench/contrib/output/common/outputLinkProvider.ts +index efa955eb5c..e72f41ddaa 100644 +--- a/src/vs/workbench/contrib/output/common/outputLinkProvider.ts ++++ b/src/vs/workbench/contrib/output/common/outputLinkProvider.ts @@ -77,0 +78 @@ export class OutputLinkProvider { + return Promise.resolve([]); -diff --git a/src/vs/workbench/parts/quickopen/browser/quickopen.contribution.ts b/src/vs/workbench/parts/quickopen/browser/quickopen.contribution.ts -index e6ffdb918b..3960ca32e3 100644 ---- a/src/vs/workbench/parts/quickopen/browser/quickopen.contribution.ts -+++ b/src/vs/workbench/parts/quickopen/browser/quickopen.contribution.ts +diff --git a/src/vs/workbench/contrib/quickopen/browser/quickopen.contribution.ts b/src/vs/workbench/contrib/quickopen/browser/quickopen.contribution.ts +index 92f9b7cd86..b8300c6c0d 100644 +--- a/src/vs/workbench/contrib/quickopen/browser/quickopen.contribution.ts ++++ b/src/vs/workbench/contrib/quickopen/browser/quickopen.contribution.ts @@ -6 +6 @@ -import * as env from 'vs/base/common/platform'; +import * as browser from 'vs/base/browser/browser'; @@ -94 +94 @@ Registry.as(QuickOpenExtensions.Quickopen).registerQuickOpen - description: env.isMacintosh ? nls.localize('gotoLineDescriptionMac', "Go to Line") : nls.localize('gotoLineDescriptionWin', "Go to Line") + description: browser.isMacintosh ? nls.localize('gotoLineDescriptionMac', "Go to Line") : nls.localize('gotoLineDescriptionWin', "Go to Line") -diff --git a/src/vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts b/src/vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts -index 21d823df72..25e16f7a6f 100644 ---- a/src/vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts -+++ b/src/vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts +diff --git a/src/vs/workbench/contrib/relauncher/electron-browser/relauncher.contribution.ts b/src/vs/workbench/contrib/relauncher/electron-browser/relauncher.contribution.ts +index e3c95526bd..a64fda2c2e 100644 +--- a/src/vs/workbench/contrib/relauncher/electron-browser/relauncher.contribution.ts ++++ b/src/vs/workbench/contrib/relauncher/electron-browser/relauncher.contribution.ts @@ -18 +18,2 @@ import { isEqual } from 'vs/base/common/resources'; -import { isLinux, isMacintosh } from 'vs/base/common/platform'; +import { isNative, isLinux } from 'vs/base/common/platform'; @@ -745,71 +636,64 @@ index 21d823df72..25e16f7a6f 100644 @@ -75 +76 @@ export class SettingsChangeRelauncher extends Disposable implements IWorkbenchCo - if (isMacintosh && config.window && typeof config.window.nativeFullScreen === 'boolean' && config.window.nativeFullScreen !== this.nativeFullScreen) { + if (isNative && isMacintosh && config.window && typeof config.window.nativeFullScreen === 'boolean' && config.window.nativeFullScreen !== this.nativeFullScreen) { -diff --git a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts -index 920cc42b0a..be9f59e2a5 100644 ---- a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts -+++ b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts -@@ -51 +51 @@ import { IPanelDndController, Panel } from 'vs/base/browser/ui/splitview/panelvi +diff --git a/src/vs/workbench/contrib/scm/electron-browser/scmViewlet.ts b/src/vs/workbench/contrib/scm/electron-browser/scmViewlet.ts +index 077334bb5c..b215ede37e 100644 +--- a/src/vs/workbench/contrib/scm/electron-browser/scmViewlet.ts ++++ b/src/vs/workbench/contrib/scm/electron-browser/scmViewlet.ts +@@ -50 +50 @@ import { IPanelDndController, Panel } from 'vs/base/browser/ui/splitview/panelvi -import * as platform from 'vs/base/common/platform'; +import * as browser from 'vs/base/browser/browser'; -@@ -817 +817 @@ export class RepositoryPanel extends ViewletPanel { +@@ -816 +816 @@ export class RepositoryPanel extends ViewletPanel { - const label = binding ? binding.getLabel() : (platform.isMacintosh ? 'Cmd+Enter' : 'Ctrl+Enter'); + const label = binding ? binding.getLabel() : (browser.isMacintosh ? 'Cmd+Enter' : 'Ctrl+Enter'); -diff --git a/src/vs/workbench/parts/search/electron-browser/search.contribution.ts b/src/vs/workbench/parts/search/electron-browser/search.contribution.ts -index a299f18b82..2013a81ab7 100644 ---- a/src/vs/workbench/parts/search/electron-browser/search.contribution.ts -+++ b/src/vs/workbench/parts/search/electron-browser/search.contribution.ts -@@ -657 +657 @@ configurationRegistry.registerConfiguration({ +diff --git a/src/vs/workbench/contrib/search/browser/search.contribution.ts b/src/vs/workbench/contrib/search/browser/search.contribution.ts +index c60cccd845..257cd319c8 100644 +--- a/src/vs/workbench/contrib/search/browser/search.contribution.ts ++++ b/src/vs/workbench/contrib/search/browser/search.contribution.ts +@@ -665 +665 @@ configurationRegistry.registerConfiguration({ - included: platform.isMacintosh + included: platform.isNative && platform.isMacintosh -diff --git a/src/vs/workbench/parts/tasks/common/problemMatcher.ts b/src/vs/workbench/parts/tasks/common/problemMatcher.ts -index a9889946c2..54bc6aa811 100644 ---- a/src/vs/workbench/parts/tasks/common/problemMatcher.ts -+++ b/src/vs/workbench/parts/tasks/common/problemMatcher.ts +diff --git a/src/vs/workbench/contrib/tasks/common/problemMatcher.ts b/src/vs/workbench/contrib/tasks/common/problemMatcher.ts +index 57ece428c2..91bc82a845 100644 +--- a/src/vs/workbench/contrib/tasks/common/problemMatcher.ts ++++ b/src/vs/workbench/contrib/tasks/common/problemMatcher.ts @@ -222 +222 @@ export function createLineMatcher(matcher: ProblemMatcher): ILineMatcher { -const endOfLine: string = Platform.OS === Platform.OperatingSystem.Windows ? '\r\n' : '\n'; +const endOfLine: string = Platform.isWindows ? '\r\n' : '\n'; -diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts b/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts -index fb600958c8..0698638175 100644 ---- a/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts -+++ b/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts +diff --git a/src/vs/workbench/contrib/terminal/electron-browser/terminal.contribution.ts b/src/vs/workbench/contrib/terminal/electron-browser/terminal.contribution.ts +index b15ee85b95..4a577b3d02 100644 +--- a/src/vs/workbench/contrib/terminal/electron-browser/terminal.contribution.ts ++++ b/src/vs/workbench/contrib/terminal/electron-browser/terminal.contribution.ts @@ -12,0 +13 @@ import * as platform from 'vs/base/common/platform'; +import * as browser from 'vs/base/browser/browser'; @@ -219 +220 @@ configurationRegistry.registerConfiguration({ - default: platform.isMacintosh ? 'selectWord' : platform.isWindows ? 'copyPaste' : 'default', + default: browser.isMacintosh ? 'selectWord' : browser.isWindows ? 'copyPaste' : 'default', -diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalLinkHandler.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalLinkHandler.ts -index 31a1d6fc8e..bcfe2b24ec 100644 ---- a/src/vs/workbench/parts/terminal/electron-browser/terminalLinkHandler.ts -+++ b/src/vs/workbench/parts/terminal/electron-browser/terminalLinkHandler.ts -@@ -7,0 +8 @@ import * as path from 'path'; +diff --git a/src/vs/workbench/contrib/terminal/electron-browser/terminalLinkHandler.ts b/src/vs/workbench/contrib/terminal/electron-browser/terminalLinkHandler.ts +index 734d13fd45..efba861367 100644 +--- a/src/vs/workbench/contrib/terminal/electron-browser/terminalLinkHandler.ts ++++ b/src/vs/workbench/contrib/terminal/electron-browser/terminalLinkHandler.ts +@@ -7,0 +8 @@ import * as path from 'vs/base/common/path'; +import * as browser from 'vs/base/browser/browser'; -@@ -214 +215 @@ export class TerminalLinkHandler { +@@ -235 +236 @@ export class TerminalLinkHandler { - return platform.isMacintosh ? event.metaKey : event.ctrlKey; + return browser.isMacintosh ? event.metaKey : event.ctrlKey; -@@ -222 +223 @@ export class TerminalLinkHandler { +@@ -243 +244 @@ export class TerminalLinkHandler { - if (platform.isMacintosh) { + if (browser.isMacintosh) { -diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts -index 6395712ee9..f2d1c0769b 100644 ---- a/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts -+++ b/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts +diff --git a/src/vs/workbench/contrib/terminal/electron-browser/terminalPanel.ts b/src/vs/workbench/contrib/terminal/electron-browser/terminalPanel.ts +index bfde146007..6c3391ee38 100644 +--- a/src/vs/workbench/contrib/terminal/electron-browser/terminalPanel.ts ++++ b/src/vs/workbench/contrib/terminal/electron-browser/terminalPanel.ts @@ -8,0 +9 @@ import * as platform from 'vs/base/common/platform'; +import * as browser from 'vs/base/browser/browser'; @@ -232 +233 @@ export class TerminalPanel extends Panel { - if (platform.isMacintosh) { + if (browser.isMacintosh) { -diff --git a/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.ts b/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.ts -index 94afb719e6..9244831637 100644 ---- a/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.ts -+++ b/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.ts -@@ -40 +40 @@ function renderBody( -- -+ -diff --git a/src/vs/workbench/parts/webview/electron-browser/webview-pre.js b/src/vs/workbench/parts/webview/electron-browser/webview-pre.js -index 29593dc6b6..dd3d25098d 100644 ---- a/src/vs/workbench/parts/webview/electron-browser/webview-pre.js -+++ b/src/vs/workbench/parts/webview/electron-browser/webview-pre.js +diff --git a/src/vs/workbench/contrib/webview/electron-browser/webview-pre.js b/src/vs/workbench/contrib/webview/electron-browser/webview-pre.js +index a239f09f03..3f68547467 100644 +--- a/src/vs/workbench/contrib/webview/electron-browser/webview-pre.js ++++ b/src/vs/workbench/contrib/webview/electron-browser/webview-pre.js @@ -10 +10,19 @@ - const ipcRenderer = require('electron').ipcRenderer; + const ipcRenderer = { @@ -846,88 +730,163 @@ index 29593dc6b6..dd3d25098d 100644 + // supportFetchAPI: true, + // corsEnabled: true + // }); -diff --git a/src/vs/workbench/parts/webview/electron-browser/webview.contribution.ts b/src/vs/workbench/parts/webview/electron-browser/webview.contribution.ts -index 033bd98d00..ba776c5ff3 100644 ---- a/src/vs/workbench/parts/webview/electron-browser/webview.contribution.ts -+++ b/src/vs/workbench/parts/webview/electron-browser/webview.contribution.ts -@@ -24 +24 @@ import { InputFocusedContextKey } from 'vs/platform/workbench/common/contextkeys +diff --git a/src/vs/workbench/contrib/webview/electron-browser/webview.contribution.ts b/src/vs/workbench/contrib/webview/electron-browser/webview.contribution.ts +index 8e2b9e03bc..c06da1c7d1 100644 +--- a/src/vs/workbench/contrib/webview/electron-browser/webview.contribution.ts ++++ b/src/vs/workbench/contrib/webview/electron-browser/webview.contribution.ts +@@ -24 +24 @@ import { InputFocusedContextKey } from 'vs/platform/contextkey/common/contextkey -import { isMacintosh } from 'vs/base/common/platform'; +import { isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewElement.ts b/src/vs/workbench/parts/webview/electron-browser/webviewElement.ts -index d8de423529..5953e920c3 100644 ---- a/src/vs/workbench/parts/webview/electron-browser/webviewElement.ts -+++ b/src/vs/workbench/parts/webview/electron-browser/webviewElement.ts -@@ -21 +21 @@ import { endsWith } from 'vs/base/common/strings'; +diff --git a/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts b/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts +index 5a28744889..79502859a7 100644 +--- a/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts ++++ b/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts +@@ -19 +19 @@ import { endsWith } from 'vs/base/common/strings'; -import { isMacintosh } from 'vs/base/common/platform'; +import { isMacintosh } from 'vs/base/browser/browser'; @@ -265,0 +266,3 @@ export class WebviewElement extends Disposable { -+ Object.defineProperty(this._options, 'useSameOriginForRoot', { -+ value: true, -+ }); -diff --git a/src/vs/workbench/parts/welcome/walkThrough/node/walkThroughContentProvider.ts b/src/vs/workbench/parts/welcome/walkThrough/node/walkThroughContentProvider.ts -index 147f05b246..fa89583203 100644 ---- a/src/vs/workbench/parts/welcome/walkThrough/node/walkThroughContentProvider.ts -+++ b/src/vs/workbench/parts/welcome/walkThrough/node/walkThroughContentProvider.ts -@@ -31,6 +31,6 @@ export class WalkThroughContentProvider implements ITextModelContentProvider, IW -- require([query.moduleId], content => { -- try { -- resolve(content.default()); -- } catch (err) { -- reject(err); -- } ++ Object.defineProperty(this._options, 'useSameOriginForRoot', { ++ value: true, ++ }); +diff --git a/src/vs/workbench/contrib/welcome/walkThrough/node/walkThroughContentProvider.ts b/src/vs/workbench/contrib/welcome/walkThrough/node/walkThroughContentProvider.ts +index 147f05b246..a36fad0f2a 100644 +--- a/src/vs/workbench/contrib/welcome/walkThrough/node/walkThroughContentProvider.ts ++++ b/src/vs/workbench/contrib/welcome/walkThrough/node/walkThroughContentProvider.ts +@@ -30,0 +31 @@ export class WalkThroughContentProvider implements ITextModelContentProvider, IW ++ /* +@@ -38 +39,11 @@ export class WalkThroughContentProvider implements ITextModelContentProvider, IW +- }) : this.textFileService.resolveTextContent(URI.file(resource.fsPath)).then(content => content.value)); ++ */ + // This works because the only walkthrough that is a module is the welcome page. + // We have to explicitly import it or Webpack won't pick it up. -+ import("vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page").then((content) => { ++ import("vs/workbench/contrib/welcome/page/electron-browser/vs_code_welcome_page").then((content) => { + resolve(content.default()); + }).catch((err) => { + reject(err); -@@ -38 +38,3 @@ export class WalkThroughContentProvider implements ITextModelContentProvider, IW -- }) : this.textFileService.resolveTextContent(URI.file(resource.fsPath)).then(content => content.value)); ++ }); + }) : (resource.scheme !== "file" + ? fetch(resource.path).then((res) => res.text()) + : this.textFileService.resolveTextContent(URI.file(resource.fsPath)).then(content => content.value))); -@@ -64 +66 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi +@@ -64 +75 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi - return this.textFileService.resolveTextContent(URI.file(resource.fsPath)).then(content => { + return fetch(resource.path).then((res) => res.text()).then((content) => { -@@ -81,5 +83,5 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi -- const textBuffer = content.value.create(DefaultEndOfLine.LF); -- const lineCount = textBuffer.getLineCount(); -- const range = new Range(1, 1, lineCount, textBuffer.getLineLength(lineCount) + 1); -- const markdown = textBuffer.getValueInRange(range, EndOfLinePreference.TextDefined); +@@ -80,0 +92 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi ++ /* +@@ -85 +97,2 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi - marked(markdown, { renderer }); -+ // const textBuffer = content.value.create(DefaultEndOfLine.LF); -+ // const lineCount = textBuffer.getLineCount(); -+ // const range = new Range(1, 1, lineCount, textBuffer.getLineLength(lineCount) + 1); -+ // const markdown = textBuffer.getValueInRange(range, EndOfLinePreference.TextDefined); ++ */ + marked(content, { renderer }); -@@ -91 +93 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi +@@ -91 +104 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi - this.modelService.updateModel(codeEditorModel, content.value); + this.modelService.updateModel(codeEditorModel, content); +diff --git a/src/vs/workbench/electron-browser/actions/helpActions.ts b/src/vs/workbench/electron-browser/actions/helpActions.ts +index 79e2ba2981..8c1b21bd65 100644 +--- a/src/vs/workbench/electron-browser/actions/helpActions.ts ++++ b/src/vs/workbench/electron-browser/actions/helpActions.ts +@@ -9 +9,2 @@ import product from 'vs/platform/product/node/product'; +-import { isMacintosh, isLinux, language } from 'vs/base/common/platform'; ++import { language } from 'vs/base/common/platform'; ++import { isMacintosh, isLinux } from 'vs/base/browser/browser'; +diff --git a/src/vs/workbench/electron-browser/actions/windowActions.ts b/src/vs/workbench/electron-browser/actions/windowActions.ts +index ef640150e1..689487d3ce 100644 +--- a/src/vs/workbench/electron-browser/actions/windowActions.ts ++++ b/src/vs/workbench/electron-browser/actions/windowActions.ts +@@ -14 +14 @@ import { IWorkspaceConfigurationService } from 'vs/workbench/services/configurat +-import { isMacintosh } from 'vs/base/common/platform'; ++import { isMacintosh } from 'vs/base/browser/browser'; +diff --git a/src/vs/workbench/electron-browser/main.contribution.ts b/src/vs/workbench/electron-browser/main.contribution.ts +index 0d9d443dc1..f0e30f7175 100644 +--- a/src/vs/workbench/electron-browser/main.contribution.ts ++++ b/src/vs/workbench/electron-browser/main.contribution.ts +@@ -13 +13,2 @@ import { KeyMod, KeyChord, KeyCode } from 'vs/base/common/keyCodes'; +-import { isWindows, isLinux, isMacintosh } from 'vs/base/common/platform'; ++import { isNative, isWeb } from 'vs/base/common/platform'; ++import { isWindows, isLinux, isMacintosh } from 'vs/base/browser/browser'; +@@ -535 +536 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; +- isMacintosh ? ++ isNative && isMacintosh ? +@@ -542 +543 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; +- isMacintosh ? ++ isNative && isMacintosh ? +@@ -629 +630 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; +- 'included': isWindows || isLinux ++ 'included': isWeb || isWindows || isLinux +@@ -636 +637 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; +- 'included': isWindows || isLinux ++ 'included': isWeb || isWindows || isLinux +@@ -662 +663 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; +- 'included': isMacintosh && parseFloat(os.release()) >= 16 // Minimum: macOS Sierra (10.12.x = darwin 16.x) ++ 'included': isNative && isMacintosh && parseFloat(os.release()) >= 16 // Minimum: macOS Sierra (10.12.x = darwin 16.x) +@@ -668 +669 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; +- 'included': isMacintosh ++ 'included': isNative && isMacintosh +diff --git a/src/vs/workbench/electron-browser/window.ts b/src/vs/workbench/electron-browser/window.ts +index acb68c8ad7..bee143a0d7 100644 +--- a/src/vs/workbench/electron-browser/window.ts ++++ b/src/vs/workbench/electron-browser/window.ts +@@ -53 +53 @@ const TextInputActions: IAction[] = [ +- new Action('editor.action.clipboardPasteAction', nls.localize('paste', "Paste"), undefined, true, () => Promise.resolve(document.execCommand('paste'))), ++ (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.pasteAction, +@@ -319 +319 @@ export class ElectronWindow extends Disposable { +- (window).open = function (url: string, target: string, features: string, replace: boolean): any { ++ (window).openInvalid = function (url: string, target: string, features: string, replace: boolean): any { +@@ -365 +365 @@ export class ElectronWindow extends Disposable { +- !isMacintosh || // macOS only ++ !browser.isMacintosh || // macOS only +diff --git a/src/vs/workbench/electron-browser/workbench.ts b/src/vs/workbench/electron-browser/workbench.ts +index 7445d7b664..9acb509d65 100644 +--- a/src/vs/workbench/electron-browser/workbench.ts ++++ b/src/vs/workbench/electron-browser/workbench.ts +@@ -19 +19,2 @@ import { Registry } from 'vs/platform/registry/common/platform'; +-import { isWindows, isLinux, isMacintosh, language } from 'vs/base/common/platform'; ++import { isWeb, isNative, language } from 'vs/base/common/platform'; ++import { isWindows, isLinux, isMacintosh } from 'vs/base/browser/browser'; +@@ -321,0 +323 @@ export class Workbench extends Disposable implements IPartService { ++ (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.serviceCollection = serviceCollection; +@@ -345,0 +348 @@ export class Workbench extends Disposable implements IPartService { ++ /* +@@ -353,0 +357 @@ export class Workbench extends Disposable implements IPartService { ++ */ +@@ -633 +637 @@ export class Workbench extends Disposable implements IPartService { +- if (!isMacintosh && this.useCustomTitleBarStyle()) { ++ if (isWeb || (!isMacintosh && this.useCustomTitleBarStyle())) { +@@ -1241 +1245 @@ export class Workbench extends Disposable implements IPartService { +- if ((isWindows || isLinux) && this.useCustomTitleBarStyle()) { ++ if ((isWeb || isWindows || isLinux) && this.useCustomTitleBarStyle()) { +@@ -1397 +1401 @@ export class Workbench extends Disposable implements IPartService { +- } else if (isMacintosh) { ++ } else if (isNative && isMacintosh) { diff --git a/src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts b/src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts -index 29cbfd65c4..ee7e776bdb 100644 +index 059291079f..0ce7e352e1 100644 --- a/src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts +++ b/src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts @@ -33,0 +34 @@ function getSystemExtensionsRoot(): string { + return (require('vs/../../../../packages/vscode/src/fill/paths') as typeof import ('vs/../../../../packages/vscode/src/fill/paths')).getBuiltInExtensionsDirectory(); diff --git a/src/vs/workbench/services/extensions/node/extensionHostProcess.ts b/src/vs/workbench/services/extensions/node/extensionHostProcess.ts -index 5f2935618c..af5498d7ac 100644 +index 484cef96b1..f728fc85f9 100644 --- a/src/vs/workbench/services/extensions/node/extensionHostProcess.ts +++ b/src/vs/workbench/services/extensions/node/extensionHostProcess.ts -@@ -132 +132 @@ function connectToRenderer(protocol: IMessagePassingProtocol): Promise Date: Fri, 8 Mar 2019 18:13:25 +0100 Subject: [PATCH 16/20] Improve .dockerignore (#111) * impove .dockerignore * impove .dockerignore --- .dockerignore | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.dockerignore b/.dockerignore index 94143827ed06..9e9cdcf66bd6 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1 +1,9 @@ Dockerfile +# Docs +doc/ +# GitHub stuff +.github +.gitignore +.travis.yml +LICENSE +README.md From 3e9d86ee91dc10e57a8aaefb20803799fc27848d Mon Sep 17 00:00:00 2001 From: Anmol Sethi Date: Fri, 8 Mar 2019 12:21:11 -0500 Subject: [PATCH 17/20] ci: enable travis npm cache (#110) * ci: enable travis npm cache * ci: upgrade travis version Thanks @zerdos * ci: switch to using yarn cache --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 262ca89ef4d8..5d2aee28e98a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: node_js node_js: -- 8.10.0 +- 8.15.0 env: - VERSION="1.32.0-$TRAVIS_BUILD_NUMBER" matrix: @@ -35,3 +35,4 @@ deploy: on: repo: codercom/code-server branch: master +cache: yarn From 8bab787804912306821e50747699ce25ba1d22e9 Mon Sep 17 00:00:00 2001 From: Asher Date: Fri, 8 Mar 2019 12:00:47 -0600 Subject: [PATCH 18/20] Move upx compression behind an env flag --- build/tasks.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/build/tasks.ts b/build/tasks.ts index 6367d895795b..bd316e3747ff 100644 --- a/build/tasks.ts +++ b/build/tasks.ts @@ -40,22 +40,24 @@ const buildServerBinaryPackage = register("build:server:binary:package", async ( }); const dependencyNexeBinary = register("dependency:nexe", async (runner) => { - if (os.platform() === "linux") { + if (os.platform() === "linux" && process.env.COMPRESS === "true") { + // Download the nexe binary so we can compress it before nexe runs. If we + // don't want compression we don't need to do anything since nexe will take + // care of getting the binary. const nexeDir = path.join(os.homedir(), ".nexe"); const targetBinaryName = `${os.platform()}-${os.arch()}-${process.version.substr(1)}`; const targetBinaryPath = path.join(nexeDir, targetBinaryName); if (!fs.existsSync(targetBinaryPath)) { - /** - * We create a binary with nexe - * so we can compress it - */ fse.mkdirpSync(nexeDir); runner.cwd = nexeDir; await runner.execute("wget", [`https://github.com/nexe/nexe/releases/download/v3.0.0-beta.15/${targetBinaryName}`]); await runner.execute("chmod", ["+x", targetBinaryPath]); } + // Compress with upx if it doesn't already look compressed. if (fs.statSync(targetBinaryPath).size >= 20000000) { - // Compress w/ upx + // It needs to be executable for upx to work, which it might not be if + // nexe downloaded it. + fs.chmodSync(targetBinaryPath, "755"); const upxFolder = path.join(os.tmpdir(), "upx"); const upxBinary = path.join(upxFolder, "upx"); if (!fs.existsSync(upxBinary)) { From cded51f6500fa39915cb9554d59d8ce2bb831de5 Mon Sep 17 00:00:00 2001 From: Asher Date: Fri, 8 Mar 2019 12:45:20 -0600 Subject: [PATCH 19/20] Add back web class Forgot to move this to the new file when upgrading to 1.32.0. --- scripts/vscode.patch | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/vscode.patch b/scripts/vscode.patch index 66fb81a19599..da3085ebe04b 100644 --- a/scripts/vscode.patch +++ b/scripts/vscode.patch @@ -834,7 +834,7 @@ index acb68c8ad7..bee143a0d7 100644 - !isMacintosh || // macOS only + !browser.isMacintosh || // macOS only diff --git a/src/vs/workbench/electron-browser/workbench.ts b/src/vs/workbench/electron-browser/workbench.ts -index 7445d7b664..9acb509d65 100644 +index 7445d7b664..0291deeebf 100644 --- a/src/vs/workbench/electron-browser/workbench.ts +++ b/src/vs/workbench/electron-browser/workbench.ts @@ -19 +19,2 @@ import { Registry } from 'vs/platform/registry/common/platform'; @@ -847,6 +847,9 @@ index 7445d7b664..9acb509d65 100644 + /* @@ -353,0 +357 @@ export class Workbench extends Disposable implements IPartService { + */ +@@ -458 +462 @@ export class Workbench extends Disposable implements IPartService { +- addClasses(document.body, platformClass); // used by our fonts ++ addClasses(document.body, platformClass, isWeb ? 'web' : 'native'); // used by our fonts @@ -633 +637 @@ export class Workbench extends Disposable implements IPartService { - if (!isMacintosh && this.useCustomTitleBarStyle()) { + if (isWeb || (!isMacintosh && this.useCustomTitleBarStyle())) { From 58c2f7842a2ee32378dfc35f92a62df960ab60c4 Mon Sep 17 00:00:00 2001 From: Alexander Yankovskiy-Betcher Date: Sat, 9 Mar 2019 03:46:58 +0200 Subject: [PATCH 20/20] Added ENTRYPOINT to omit full command at launch. Moving `code-server` to ENTRYPOINT will allow omitting it from the CLI launch. --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 06f26827660b..9b6cca902910 100644 --- a/Dockerfile +++ b/Dockerfile @@ -29,4 +29,5 @@ RUN apt-get install -y locales && \ # configured in /etc/default/locale so we need to set it manually. ENV LANG=en_US.UTF-8 # Unfortunately `.` does not work with code-server. -CMD code-server $PWD +ENTRYPOINT ["code-server"] +CMD ["$PWD"]