From 5a869a710b6aed386cbe202a37986675481dd575 Mon Sep 17 00:00:00 2001 From: Danielle Maywood Date: Tue, 15 Apr 2025 20:38:51 +0000 Subject: [PATCH 01/10] feat: support `--locale` and `--app-name` --- src/code-server/README.md | 1 + src/code-server/devcontainer-feature.json | 10 ++++++++++ src/code-server/install.sh | 8 ++++++++ test/code-server/code-server-app-name.sh | 15 +++++++++++++++ test/code-server/code-server-locale.sh | 15 +++++++++++++++ test/code-server/scenarios.json | 16 ++++++++++++++++ 6 files changed, 65 insertions(+) create mode 100644 test/code-server/code-server-app-name.sh create mode 100644 test/code-server/code-server-locale.sh diff --git a/src/code-server/README.md b/src/code-server/README.md index b24bb47..86b4b98 100644 --- a/src/code-server/README.md +++ b/src/code-server/README.md @@ -28,6 +28,7 @@ VS Code in the browser | disableWorkspaceTrust | Disable Workspace Trust feature. This only affects the current session. | boolean | false | | extensions | Comma-separated list of VS Code extensions to install. Format: 'publisher.extension[@version]' (e.g., 'ms-python.python,ms-azuretools.vscode-docker'). | string | - | | host | The address to bind to for the code-server. Use '0.0.0.0' to listen on all interfaces. | string | 127.0.0.1 | +| locale | Set VS Code display language and language shown on the login page. Format should be an IETF language tag (e.g., 'en', 'fr', 'zh-CN'). | string | - | | logFile | Path to a file to send stdout and stderr logs to from code-server. | string | /tmp/code-server.log | | port | The port to bind to for the code-server. | string | 8080 | | socket | Path to a socket. When specified, host and port will be ignored. | string | - | diff --git a/src/code-server/devcontainer-feature.json b/src/code-server/devcontainer-feature.json index abebdcb..cd376c7 100644 --- a/src/code-server/devcontainer-feature.json +++ b/src/code-server/devcontainer-feature.json @@ -4,6 +4,11 @@ "version": "1.0.0", "description": "VS Code in the browser", "options": { + "appName": { + "type": "string", + "default": "", + "description": "The name to use in branding. Will be shown in titlebar and welcome message." + }, "auth": { "type": "string", "enum": ["password", "none"], @@ -70,6 +75,11 @@ "default": "127.0.0.1", "description": "The address to bind to for the code-server. Use '0.0.0.0' to listen on all interfaces." }, + "locale": { + "type": "string", + "default": "", + "description": "Set VS Code display language and language shown on the login page. Format should be an IETF language tag (e.g., 'en', 'fr', 'zh-CN')." + }, "logFile": { "type": "string", "default": "/tmp/code-server.log", diff --git a/src/code-server/install.sh b/src/code-server/install.sh index c621425..aa3d06e 100644 --- a/src/code-server/install.sh +++ b/src/code-server/install.sh @@ -75,6 +75,14 @@ if [[ -n "$SOCKETMODE" ]]; then FLAGS+=(--socket-mode "$SOCKETMODE") fi +if [[ -n "$LOCALE" ]]; then + FLAGS+=(--locale "$LOCALE") +fi + +if [[ -n "$APPNAME" ]]; then + FLAGS+=(--app-name "$APPNAME") +fi + cat > /usr/local/bin/code-server-entrypoint < Date: Wed, 16 Apr 2025 09:37:31 +0000 Subject: [PATCH 02/10] chore: run 'make docs' --- src/code-server/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/code-server/README.md b/src/code-server/README.md index 86b4b98..4b34668 100644 --- a/src/code-server/README.md +++ b/src/code-server/README.md @@ -15,6 +15,7 @@ VS Code in the browser | Options Id | Description | Type | Default Value | |-----|-----|-----|-----| +| appName | The name to use in branding. Will be shown in titlebar and welcome message. | string | - | | auth | The type of authentication to use. When 'password' is selected, code-server will auto-generate a password. 'none' disables authentication entirely. | string | password | | cert | Path to certificate. A self signed certificate is generated if none is provided. | string | - | | certHost | hostname to use when generating a self signed certificate. | string | - | From 4a25570d52c49535e471030f8ea420a8de0f6e68 Mon Sep 17 00:00:00 2001 From: Danielle Maywood Date: Wed, 16 Apr 2025 09:47:33 +0000 Subject: [PATCH 03/10] feat: support `--welcome-text` --- Makefile | 2 +- src/code-server/devcontainer-feature.json | 5 +++++ src/code-server/install.sh | 4 ++++ test/code-server/code-server-welcome-text.sh | 15 +++++++++++++++ test/code-server/scenarios.json | 8 ++++++++ 5 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 test/code-server/code-server-welcome-text.sh diff --git a/Makefile b/Makefile index cf7832c..24d023d 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ .PHONY: test test: - devcontainer features test + devcontainer features test --filter "$$DEVCONTAINER_FEATURE_TEST_FILTER" .PHONY: docs docs: src/code-server/README.md diff --git a/src/code-server/devcontainer-feature.json b/src/code-server/devcontainer-feature.json index cd376c7..214b94e 100644 --- a/src/code-server/devcontainer-feature.json +++ b/src/code-server/devcontainer-feature.json @@ -105,6 +105,11 @@ "default": "", "description": "The version of code-server to install. If empty, installs the latest version." }, + "welcomeText": { + "type": "string", + "default": "", + "description": "Text to show on login page." + }, "workspace": { "type": "string", "default": "", diff --git a/src/code-server/install.sh b/src/code-server/install.sh index aa3d06e..c4906f8 100644 --- a/src/code-server/install.sh +++ b/src/code-server/install.sh @@ -83,6 +83,10 @@ if [[ -n "$APPNAME" ]]; then FLAGS+=(--app-name "$APPNAME") fi +if [[ -n "$WELCOMETEXT" ]]; then + FLAGS+=(--welcome-text "$WELCOMETEXT") +fi + cat > /usr/local/bin/code-server-entrypoint < Date: Wed, 16 Apr 2025 09:50:51 +0000 Subject: [PATCH 04/10] feat: support `--verbose` --- src/code-server/devcontainer-feature.json | 5 +++++ src/code-server/install.sh | 4 ++++ test/code-server/code-server-verbose.sh | 15 +++++++++++++++ test/code-server/scenarios.json | 8 ++++++++ 4 files changed, 32 insertions(+) create mode 100644 test/code-server/code-server-verbose.sh diff --git a/src/code-server/devcontainer-feature.json b/src/code-server/devcontainer-feature.json index 214b94e..a4931d7 100644 --- a/src/code-server/devcontainer-feature.json +++ b/src/code-server/devcontainer-feature.json @@ -100,6 +100,11 @@ "default": "", "description": "File mode of the socket when using the socket option." }, + "verbose": { + "type": "boolean", + "default": false, + "description": "Enable verbose logging." + }, "version": { "type": "string", "default": "", diff --git a/src/code-server/install.sh b/src/code-server/install.sh index c4906f8..4364367 100644 --- a/src/code-server/install.sh +++ b/src/code-server/install.sh @@ -87,6 +87,10 @@ if [[ -n "$WELCOMETEXT" ]]; then FLAGS+=(--welcome-text "$WELCOMETEXT") fi +if [[ "$VERBOSE" == "true" ]]; then + FLAGS+=(--verbose) +fi + cat > /usr/local/bin/code-server-entrypoint < Date: Wed, 16 Apr 2025 09:55:30 +0000 Subject: [PATCH 05/10] chore: fix capitalization --- src/code-server/devcontainer-feature.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/code-server/devcontainer-feature.json b/src/code-server/devcontainer-feature.json index a4931d7..ea2c96f 100644 --- a/src/code-server/devcontainer-feature.json +++ b/src/code-server/devcontainer-feature.json @@ -23,12 +23,12 @@ "certHost": { "type": "string", "default": "", - "description": "hostname to use when generating a self signed certificate." + "description": "Hostname to use when generating a self signed certificate." }, "certKey": { "type": "string", "default": "", - "description": "path to certificate key when using non-generated cert." + "description": "Path to certificate key when using non-generated cert." }, "disableFileDownloads": { "type": "boolean", From 312b35da6071410909aa29250204a45c57863572 Mon Sep 17 00:00:00 2001 From: Danielle Maywood Date: Wed, 16 Apr 2025 09:55:51 +0000 Subject: [PATCH 06/10] chore: run 'make docs' --- src/code-server/README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/code-server/README.md b/src/code-server/README.md index 4b34668..84938e5 100644 --- a/src/code-server/README.md +++ b/src/code-server/README.md @@ -18,8 +18,8 @@ VS Code in the browser | appName | The name to use in branding. Will be shown in titlebar and welcome message. | string | - | | auth | The type of authentication to use. When 'password' is selected, code-server will auto-generate a password. 'none' disables authentication entirely. | string | password | | cert | Path to certificate. A self signed certificate is generated if none is provided. | string | - | -| certHost | hostname to use when generating a self signed certificate. | string | - | -| certKey | path to certificate key when using non-generated cert. | string | - | +| certHost | Hostname to use when generating a self signed certificate. | string | - | +| certKey | Path to certificate key when using non-generated cert. | string | - | | disableFileDownloads | Disable file downloads from Code. When enabled, users will not be able to download files from the editor. | boolean | false | | disableFileUploads | Disable file uploads to Code. When enabled, users will not be able to upload files to the editor. | boolean | false | | disableGettingStartedOverride | Disable the coder/coder override in the Help: Getting Started page. | boolean | false | @@ -34,7 +34,9 @@ VS Code in the browser | port | The port to bind to for the code-server. | string | 8080 | | socket | Path to a socket. When specified, host and port will be ignored. | string | - | | socketMode | File mode of the socket when using the socket option. | string | - | +| verbose | Enable verbose logging. | boolean | false | | version | The version of code-server to install. If empty, installs the latest version. | string | - | +| welcomeText | Text to show on login page. | string | - | | workspace | Path to the workspace or folder to open on startup. Can be a directory or a .code-workspace file. | string | - | From e1d9017a982bc9d5f828e3f91838f1b9080efef3 Mon Sep 17 00:00:00 2001 From: Danielle Maywood Date: Wed, 16 Apr 2025 10:03:22 +0000 Subject: [PATCH 07/10] feat: support `--trusted-origins` --- src/code-server/README.md | 1 + src/code-server/devcontainer-feature.json | 5 +++++ src/code-server/install.sh | 7 +++++++ test/code-server/code-server-trusted-origins.sh | 15 +++++++++++++++ test/code-server/scenarios.json | 8 ++++++++ 5 files changed, 36 insertions(+) create mode 100644 test/code-server/code-server-trusted-origins.sh diff --git a/src/code-server/README.md b/src/code-server/README.md index 84938e5..ca42c19 100644 --- a/src/code-server/README.md +++ b/src/code-server/README.md @@ -34,6 +34,7 @@ VS Code in the browser | port | The port to bind to for the code-server. | string | 8080 | | socket | Path to a socket. When specified, host and port will be ignored. | string | - | | socketMode | File mode of the socket when using the socket option. | string | - | +| trustedOrigins | Comma-separated list of trusted-origins to disable origin check for. Useful if not able to access reverse proxy configuration. | string | - | | verbose | Enable verbose logging. | boolean | false | | version | The version of code-server to install. If empty, installs the latest version. | string | - | | welcomeText | Text to show on login page. | string | - | diff --git a/src/code-server/devcontainer-feature.json b/src/code-server/devcontainer-feature.json index ea2c96f..5986ca0 100644 --- a/src/code-server/devcontainer-feature.json +++ b/src/code-server/devcontainer-feature.json @@ -100,6 +100,11 @@ "default": "", "description": "File mode of the socket when using the socket option." }, + "trustedOrigins": { + "type": "string", + "default": "", + "description": "Comma-separated list of trusted-origins to disable origin check for. Useful if not able to access reverse proxy configuration." + }, "verbose": { "type": "boolean", "default": false, diff --git a/src/code-server/install.sh b/src/code-server/install.sh index 4364367..c0b4f39 100644 --- a/src/code-server/install.sh +++ b/src/code-server/install.sh @@ -91,6 +91,13 @@ if [[ "$VERBOSE" == "true" ]]; then FLAGS+=(--verbose) fi +IFS=',' read -ra trusted_origins <<<"$TRUSTEDORIGINS" +declare -p trusted_origins + +for trusted_origin in "${trusted_origins[@]}"; do + FLAGS+=(--trusted-origins "$trusted_origin") +done + cat > /usr/local/bin/code-server-entrypoint < Date: Wed, 16 Apr 2025 10:16:32 +0000 Subject: [PATCH 08/10] feat: support `--enable-proposed-api` --- src/code-server/README.md | 1 + src/code-server/devcontainer-feature.json | 5 +++++ src/code-server/install.sh | 7 +++++++ .../code-server-enable-proposed-api.sh | 15 +++++++++++++++ test/code-server/scenarios.json | 11 +++++++++++ 5 files changed, 39 insertions(+) create mode 100644 test/code-server/code-server-enable-proposed-api.sh diff --git a/src/code-server/README.md b/src/code-server/README.md index ca42c19..39448ba 100644 --- a/src/code-server/README.md +++ b/src/code-server/README.md @@ -27,6 +27,7 @@ VS Code in the browser | disableTelemetry | Disable telemetry reporting. | boolean | false | | disableUpdateCheck | Disable update check. Without this flag, code-server checks every 6 hours against the latest GitHub release and notifies once a week when updates are available. | boolean | false | | disableWorkspaceTrust | Disable Workspace Trust feature. This only affects the current session. | boolean | false | +| enableProposedAPI | Comma-separated list of VS Code extension IDs to enable proposed API features for. | string | - | | extensions | Comma-separated list of VS Code extensions to install. Format: 'publisher.extension[@version]' (e.g., 'ms-python.python,ms-azuretools.vscode-docker'). | string | - | | host | The address to bind to for the code-server. Use '0.0.0.0' to listen on all interfaces. | string | 127.0.0.1 | | locale | Set VS Code display language and language shown on the login page. Format should be an IETF language tag (e.g., 'en', 'fr', 'zh-CN'). | string | - | diff --git a/src/code-server/devcontainer-feature.json b/src/code-server/devcontainer-feature.json index 5986ca0..107a467 100644 --- a/src/code-server/devcontainer-feature.json +++ b/src/code-server/devcontainer-feature.json @@ -65,6 +65,11 @@ "default": false, "description": "Disable Workspace Trust feature. This only affects the current session." }, + "enableProposedAPI": { + "type": "string", + "default": "", + "description": "Comma-separated list of VS Code extension IDs to enable proposed API features for." + }, "extensions": { "type": "string", "default": "", diff --git a/src/code-server/install.sh b/src/code-server/install.sh index c0b4f39..32584b4 100644 --- a/src/code-server/install.sh +++ b/src/code-server/install.sh @@ -98,6 +98,13 @@ for trusted_origin in "${trusted_origins[@]}"; do FLAGS+=(--trusted-origins "$trusted_origin") done +IFS=',' read -ra proposed_api_extensions <<<"$ENABLEPROPOSEDAPI" +declare -p proposed_api_extensions + +for extension in "${proposed_api_extensions[@]}"; do + FLAGS+=(--enable-proposed-api "$extension") +done + cat > /usr/local/bin/code-server-entrypoint < Date: Wed, 16 Apr 2025 10:28:06 +0000 Subject: [PATCH 09/10] feat: support `--proxy-domain` --- src/code-server/README.md | 1 + src/code-server/devcontainer-feature.json | 5 +++++ src/code-server/install.sh | 4 ++++ test/code-server/code-server-proxy-domain.sh | 15 +++++++++++++++ test/code-server/scenarios.json | 8 ++++++++ 5 files changed, 33 insertions(+) create mode 100644 test/code-server/code-server-proxy-domain.sh diff --git a/src/code-server/README.md b/src/code-server/README.md index 39448ba..02a1cb6 100644 --- a/src/code-server/README.md +++ b/src/code-server/README.md @@ -33,6 +33,7 @@ VS Code in the browser | locale | Set VS Code display language and language shown on the login page. Format should be an IETF language tag (e.g., 'en', 'fr', 'zh-CN'). | string | - | | logFile | Path to a file to send stdout and stderr logs to from code-server. | string | /tmp/code-server.log | | port | The port to bind to for the code-server. | string | 8080 | +| proxyDomain | Domain used for proxying ports. | string | - | | socket | Path to a socket. When specified, host and port will be ignored. | string | - | | socketMode | File mode of the socket when using the socket option. | string | - | | trustedOrigins | Comma-separated list of trusted-origins to disable origin check for. Useful if not able to access reverse proxy configuration. | string | - | diff --git a/src/code-server/devcontainer-feature.json b/src/code-server/devcontainer-feature.json index 107a467..f58b60b 100644 --- a/src/code-server/devcontainer-feature.json +++ b/src/code-server/devcontainer-feature.json @@ -95,6 +95,11 @@ "default": "8080", "description": "The port to bind to for the code-server." }, + "proxyDomain": { + "type": "string", + "default": "", + "description": "Domain used for proxying ports." + }, "socket": { "type": "string", "default": "", diff --git a/src/code-server/install.sh b/src/code-server/install.sh index 32584b4..e2fa804 100644 --- a/src/code-server/install.sh +++ b/src/code-server/install.sh @@ -105,6 +105,10 @@ for extension in "${proposed_api_extensions[@]}"; do FLAGS+=(--enable-proposed-api "$extension") done +if [[ "$PROXYDOMAIN" ]]; then + FLAGS+=(--proxy-domain "$PROXYDOMAIN") +fi + cat > /usr/local/bin/code-server-entrypoint < Date: Wed, 16 Apr 2025 21:53:54 +0000 Subject: [PATCH 10/10] fix: remove debug print --- src/code-server/install.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/code-server/install.sh b/src/code-server/install.sh index e2fa804..da27dff 100644 --- a/src/code-server/install.sh +++ b/src/code-server/install.sh @@ -10,7 +10,6 @@ fi curl -fsSL https://code-server.dev/install.sh | sh -s -- $CODE_SERVER_INSTALL_ARGS IFS=',' read -ra extensions <<<"$EXTENSIONS" -declare -p extensions for extension in "${extensions[@]}" do @@ -92,14 +91,12 @@ if [[ "$VERBOSE" == "true" ]]; then fi IFS=',' read -ra trusted_origins <<<"$TRUSTEDORIGINS" -declare -p trusted_origins for trusted_origin in "${trusted_origins[@]}"; do FLAGS+=(--trusted-origins "$trusted_origin") done IFS=',' read -ra proposed_api_extensions <<<"$ENABLEPROPOSEDAPI" -declare -p proposed_api_extensions for extension in "${proposed_api_extensions[@]}"; do FLAGS+=(--enable-proposed-api "$extension")