feat: add vscode-web feature (Microsoft's official VS Code web server)#23
Open
schnell3526 wants to merge 2 commits into
Open
feat: add vscode-web feature (Microsoft's official VS Code web server)#23schnell3526 wants to merge 2 commits into
schnell3526 wants to merge 2 commits into
Conversation
Add a feature that installs and runs Microsoft's official VS Code web server (the vscode-server-linux-*-web build), as an alternative to code-server for users who need Microsoft Marketplace extensions such as Pylance or Copilot. - Installation requires explicit license opt-in via the acceptLicenseTerms option (fails the build otherwise), mirroring the ACCEPT_EULA pattern of Microsoft container images. - The server exposes no /healthz endpoint (returns 404); the Coder app health check and the tests probe /version instead. - vscode-web is covered by scenario tests only: autogenerated tests cannot set options, and installation fails without acceptLicenseTerms. - code-server/README.md footer change comes from regenerating docs with the current devcontainer CLI.
- Correct the Coder integration note: the health check probes /version, not /healthz (which the standalone web server does not expose), and regenerate the README accordingly. - Pass the extensions scenario option as the canonical comma-separated string instead of relying on the CLI's array-to-string coercion.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Reference implementation for #22 (closes #22).
Summary
Adds a
vscode-webfeature that installs and runs Microsoft's official VS Code web server (thevscode-server-linux-*-webbuild behindcode serve-web), side by side with the existingcode-serverfeature. This makes Microsoft Marketplace extensions (Pylance, GitHub Copilot, ...) available in dev container web IDEs, and gives dev containers the same editor as the vscode-web registry module without hand-rolledpostStartCommandscripts.The feature is modeled closely on the
code-serverfeature: build-time install with a pinnableversion, extensions installed as the remote user, an entrypoint that startsserve-localon container start (default127.0.0.1:13338, matching the registry module), and acustomizations.coder.appsentry for the Coder dashboard.Design notes
Explicit license opt-in. The Microsoft VS Code Server license must be accepted, so the feature requires
acceptLicenseTerms: trueand fails the build with a clear error otherwise (theACCEPT_EULApattern from Microsoft's own container images), rather than accepting it implicitly:Health check probes
/version, not/healthz. The standalone web server exposes no/healthzendpoint (returns 404;/versionreturns 200). This also affects the registry vscode-web module, whosecoder_apphealthcheck points at/healthztoday.Scenario tests only. Autogenerated tests cannot set feature options, and installation intentionally fails without
acceptLicenseTerms, so the feature is excluded from the autogenerated CI matrix and covered by eight scenarios instead (defaults, debian base image, custom port, custom host, extensions under the remote user, pinned version, default folder, log level).The
code-server/README.mdfooter hunk comes from regenerating docs with the current devcontainer CLI (make -B docs); the CI docs check would otherwise flag it.Testing
All eight scenarios pass locally with
devcontainer features test -f vscode-web --skip-autogenerated --skip-duplicated .(devcontainer CLI 0.87.0, linux/arm64 containers). The license gate was verified to fail the build with a clear error whenacceptLicenseTermsis not set.