From 77c3cd3aa1a895fd0aec3b5350671b43e5c3945b Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Mon, 7 Nov 2022 10:06:51 -0800 Subject: [PATCH] Improve getting started Coder CTA (#5752) * Improve getting started Coder CTA This wasn't very standout-ish before, and I think it's wise for us to experiment with directing users to Coder. * Update nix flake * Update diff * Add advert to code-server install * Fix patch to reset columns if getting started is disabled * Update text for advert --- flake.nix | 8 +-- install.sh | 8 +++ patches/getting-started.diff | 110 ++++++++++++++++++++++++++------ src/browser/media/templates.png | Bin 0 -> 46748 bytes test/scripts/install.bats | 18 +++--- 5 files changed, 113 insertions(+), 31 deletions(-) create mode 100644 src/browser/media/templates.png diff --git a/flake.nix b/flake.nix index c58774661..a01f68295 100644 --- a/flake.nix +++ b/flake.nix @@ -12,13 +12,13 @@ in { devShells.default = pkgs.mkShell { nativeBuildInputs = with pkgs; [ - nodejs yarn' python pkg-config git rsync jq moreutils + nodejs yarn' python pkg-config git rsync jq moreutils quilt bats ]; buildInputs = with pkgs; (lib.optionals (!stdenv.isDarwin) [ libsecret ] ++ (with xorg; [ libX11 libxkbfile ]) - ++ lib.optionals stdenv.isDarwin [ - AppKit Cocoa CoreServices Security cctools xcbuild - ]); + ++ lib.optionals stdenv.isDarwin (with pkgs.darwin.apple_sdk.frameworks; [ + AppKit Cocoa CoreServices Security xcbuild + ])); }; } ); diff --git a/install.sh b/install.sh index f6d3274b9..026ee2f97 100755 --- a/install.sh +++ b/install.sh @@ -131,6 +131,11 @@ Or, if you don't want/need a background service you can run: EOF } +echo_coder_postinstall() { + echoh + echoh "Deploy code-server for your team with Coder: https://github.com/coder/coder" +} + main() { if [ "${TRACE-}" ]; then set -x @@ -243,6 +248,7 @@ main() { if [ "$METHOD" = standalone ]; then if has_standalone; then install_standalone + echo_coder_postinstall exit 0 else echoerr "There are no standalone releases for $ARCH" @@ -286,6 +292,8 @@ main() { npm_fallback install_standalone ;; esac + + echo_coder_postinstall } parse_arg() { diff --git a/patches/getting-started.diff b/patches/getting-started.diff index 247c3a311..fb6c0a882 100644 --- a/patches/getting-started.diff +++ b/patches/getting-started.diff @@ -10,7 +10,7 @@ Index: code-server/lib/vscode/src/vs/workbench/contrib/welcomeGettingStarted/bro =================================================================== --- code-server.orig/lib/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.ts +++ code-server/lib/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.ts -@@ -62,7 +62,7 @@ import { GettingStartedIndexList } from +@@ -62,7 +62,7 @@ import { GettingStartedIndexList } from import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { KeyCode } from 'vs/base/common/keyCodes'; import { getTelemetryLevel } from 'vs/platform/telemetry/common/telemetryUtils'; @@ -19,32 +19,106 @@ Index: code-server/lib/vscode/src/vs/workbench/contrib/welcomeGettingStarted/bro import { OpenFolderViaWorkspaceAction } from 'vs/workbench/browser/actions/workspaceActions'; import { OpenRecentAction } from 'vs/workbench/browser/actions/windowActions'; import { Toggle } from 'vs/base/browser/ui/toggle/toggle'; -@@ -753,11 +753,24 @@ export class GettingStartedPage extends - onShowOnStartupChanged(); - })); - -- const header = $('.header', {}, -+ let header = $('.header', {}, - $('h1.product-name.caption', {}, this.productService.nameLong), +@@ -758,6 +758,72 @@ export class GettingStartedPage extends $('p.subtitle.description', {}, localize({ key: 'gettingStarted.editingEvolved', comment: ['Shown as subtitle on the Welcome page.'] }, "Editing evolved")) ); ++ let gettingStartedCoder: HTMLElement = $('.header', {}); + if (this.contextService.contextMatchesRules(IsEnabledCoderGettingStarted)) { -+ header = $('.header', {}, -+ $('h1.product-name.caption', {}, this.productService.nameLong), -+ $('p.subtitle.description.coder', {}, -+ "Using code-server on a team?", -+ ), -+ $('p.subtitle.description.coder-coder', {}, -+ "Check out: ", -+ $('a', { href: "https://github.com/coder/coder" }, "coder/coder") -+ ), -+ ); ++ gettingStartedCoder = $('.gettingStartedCategory', {}, ++ $('h2', { ++ style: 'margin-bottom: 12px', ++ }, 'Next Up'), ++ $('a', { ++ href: 'https://cdr.co/code-server-to-coder', ++ target: '_blank', ++ }, ++ $('button', { ++ style: [ ++ 'padding: 10px 16px ', ++ 'border-radius: 4px', ++ 'background: linear-gradient(94.04deg, #7934DA 0%, #4D52E0 101.2%)', ++ 'color: white', ++ 'overflow: hidden', ++ 'margin-right: 14px', ++ ].join(';'), ++ }, ++ $('h3', { ++ style: [ ++ 'margin: 0px 0px 6px', ++ 'font-weight: 500', ++ ].join(';'), ++ }, 'Deploy code-server for your team'), ++ $('p', { ++ style: [ ++ 'margin: 0', ++ 'font-size: 13px', ++ 'color: #dcdee2', ++ ].join(';'), ++ }, 'Provision remote development environments on your infrastructure with Coder.'), ++ $('p', { ++ style: [ ++ 'margin-top: 8px', ++ 'font-size: 13px', ++ 'color: #dcdee2', ++ ].join(';'), ++ }, 'Coder is a self-service portal which provisions via Terraform—Linux, macOS, Windows, x86, ARM, and, of course, Kubernetes based infrastructure.'), ++ $('p', { ++ style: [ ++ 'margin: 0', ++ 'margin-top: 8px', ++ 'font-size: 13px', ++ 'display: flex', ++ 'align-items: center', ++ ].join(';'), ++ }, 'Get started ', $('span', { ++ class: Codicon.arrowRight.classNames, ++ style: [ ++ 'color: white', ++ 'margin-left: 8px', ++ ].join(';'), ++ })), ++ $('img', { ++ src: './_static/src/browser/media/templates.png', ++ style: [ ++ 'margin-bottom: -65px', ++ ].join(';'), ++ }), ++ ), ++ ), ++ ); + } + const leftColumn = $('.categories-column.categories-column-left', {},); const rightColumn = $('.categories-column.categories-column-right', {},); +@@ -775,13 +841,23 @@ export class GettingStartedPage extends + const layoutLists = () => { + if (gettingStartedList.itemCount) { + this.container.classList.remove('noWalkthroughs'); +- reset(leftColumn, startList.getDomElement(), recentList.getDomElement()); +- reset(rightColumn, gettingStartedList.getDomElement()); ++ if (this.contextService.contextMatchesRules(IsEnabledCoderGettingStarted)) { ++ reset(leftColumn, startList.getDomElement(), recentList.getDomElement(), gettingStartedList.getDomElement()); ++ reset(rightColumn, gettingStartedCoder); ++ } else { ++ reset(leftColumn, startList.getDomElement(), recentList.getDomElement()); ++ reset(rightColumn, gettingStartedList.getDomElement()); ++ } ++ + recentList.setLimit(5); + } + else { + this.container.classList.add('noWalkthroughs'); +- reset(leftColumn, startList.getDomElement()); ++ if (this.contextService.contextMatchesRules(IsEnabledCoderGettingStarted)) { ++ reset(leftColumn, startList.getDomElement(), gettingStartedCoder); ++ } else { ++ reset(leftColumn, startList.getDomElement()); ++ } + reset(rightColumn, recentList.getDomElement()); + recentList.setLimit(10); + } Index: code-server/lib/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/media/gettingStarted.css =================================================================== --- code-server.orig/lib/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/media/gettingStarted.css diff --git a/src/browser/media/templates.png b/src/browser/media/templates.png new file mode 100644 index 0000000000000000000000000000000000000000..1437658ec13a9abec06f569cec27a862044fc930 GIT binary patch literal 46748 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 z�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 US=1YgO#lD@07*qoM6N<$f|r^bX#fBK literal 0 HcmV?d00001 diff --git a/test/scripts/install.bats b/test/scripts/install.bats index 651236b7a..c9fd8c0fa 100644 --- a/test/scripts/install.bats +++ b/test/scripts/install.bats @@ -11,14 +11,14 @@ function should-use-deb() { DISTRO=$1 ARCH=$2 OS=linux run "$SCRIPT" --dry-run [ "$status" -eq 0 ] [ "${lines[1]}" = "Installing v$VERSION of the $2 deb package from GitHub." ] - [ "${lines[-5]}" = "deb package has been installed." ] + [ "${lines[-6]}" = "deb package has been installed." ] } function should-use-rpm() { DISTRO=$1 ARCH=$2 OS=linux run "$SCRIPT" --dry-run [ "$status" -eq 0 ] [ "${lines[1]}" = "Installing v$VERSION of the $2 rpm package from GitHub." ] - [ "${lines[-5]}" = "rpm package has been installed." ] + [ "${lines[-6]}" = "rpm package has been installed." ] } function should-fallback-npm() { @@ -27,21 +27,21 @@ function should-fallback-npm() { [ "${lines[1]}" = "No standalone releases for $2." ] [ "${lines[2]}" = "Falling back to installation from npm." ] [ "${lines[3]}" = "Installing latest from npm." ] - [ "${lines[-5]}" = "npm package has been installed." ] + [ "${lines[-6]}" = "npm package has been installed." ] } function should-use-npm() { YARN_PATH=true DISTRO=$1 ARCH=$2 OS=linux run "$SCRIPT" --dry-run [ "$status" -eq 0 ] [ "${lines[1]}" = "Installing latest from npm." ] - [ "${lines[-5]}" = "npm package has been installed." ] + [ "${lines[-6]}" = "npm package has been installed." ] } function should-use-aur() { DISTRO=$1 ARCH=$2 OS=linux run "$SCRIPT" --dry-run [ "$status" -eq 0 ] [ "${lines[1]}" = "Installing latest from the AUR." ] - [ "${lines[-5]}" = "AUR package has been installed." ] + [ "${lines[-6]}" = "AUR package has been installed." ] } function should-fallback-npm-brew() { @@ -52,21 +52,21 @@ function should-fallback-npm-brew() { [ "${lines[3]}" = "No standalone releases for $1." ] [ "${lines[4]}" = "Falling back to installation from npm." ] [ "${lines[5]}" = "Installing latest from npm." ] - [ "${lines[-5]}" = "npm package has been installed." ] + [ "${lines[-6]}" = "npm package has been installed." ] } function should-use-brew() { BREW_PATH=true OS=macos ARCH=$1 run "$SCRIPT" --dry-run [ "$status" -eq 0 ] [ "${lines[1]}" = "Installing latest from Homebrew." ] - [ "${lines[-3]}" = "Brew release has been installed." ] + [ "${lines[-4]}" = "Brew release has been installed." ] } function should-use-standalone() { DISTRO=$1 ARCH=$2 OS=$3 run "$SCRIPT" --method standalone --dry-run [ "$status" -eq 0 ] [ "${lines[1]}" = "Installing v$VERSION of the $2 release from GitHub." ] - [[ "${lines[-5]}" = "Standalone release has been installed"* ]] + [[ "${lines[-6]}" = "Standalone release has been installed"* ]] } @test "$SCRIPT_NAME: usage with --help" { @@ -141,7 +141,7 @@ function should-use-standalone() { [ "${lines[1]}" = "Homebrew not installed." ] [ "${lines[2]}" = "Falling back to standalone installation." ] [ "${lines[3]}" = "Installing v$VERSION of the amd64 release from GitHub." ] - [[ "${lines[-5]}" = "Standalone release has been installed"* ]] + [[ "${lines[-6]}" = "Standalone release has been installed"* ]] } @test "$SCRIPT_NAME: macos i386 (no brew)" { should-fallback-npm-brew "i386"