feat(vscode-desktop-core): support extension pre-installation - #955
Conversation
|
This Core change needs to be merged and released before the follow-up Windsurf PR can be submitted. The Windsurf module must depend on a published vscode-desktop-core 1.2.0; submitting it earlier would leave the Registry dependency unresolved and prevent Terraform initialization. |
|
@phorcys420 can you review please ? |
DevelopmentCats
left a comment
There was a problem hiding this comment.
Tested extension pre-installation on a real Coder deployment with 3 extensions (Prettier, TODO Highlight, Material Icon Theme). All installed successfully when using the correct CLI path (bin/code-server).
The inline test template simulated what a wrapper module would do — providing the CLI path, extensions directory, and bootstrap script. Since this is non-breaking (no resources created when extensions is empty), any integration issues will surface when wrapper modules adopt this.
Why
VS Code-based IDE wrappers currently have no shared way to pre-install remote extensions before the first desktop connection. Each wrapper would otherwise need to duplicate startup orchestration, path handling, login blocking, and failure behavior.
This adds the reusable primitive needed by Windsurf in #425 while keeping IDE-specific server discovery and bootstrap logic in the wrapper that owns those details. The Core change is intentionally submitted first so wrapper modules can depend on a published
vscode-desktop-core1.2.0 instead of an unreleased interface.Changes
Description
Adds reusable remote extension pre-installation support to
vscode-desktop-core. IDE wrappers provide their verified remote server CLI and storage paths; the Core owns the common finite, login-blocking installation flow.Type of Change
Module Information
Path:
registry/coder/modules/vscode-desktop-coreNew version:
v1.2.0Breaking change: [ ] Yes [x] No
Validation
scripts/terraform_validate.sh— passed forvscode-desktop-core.scripts/terraform_test_all.sh— Core tests passed: 3 passed, 0 failed.scripts/ts_test_auto.sh— 21 passed, 0 failed.bun run fmtandbun run fmt:ci— passed; no unrelated formatting changes.terraform fmt -check -recursiveandgit diff --check— passed.scripts/validate_set_u_order.sh— passed.[email protected]; after a workspace restart, the server and extension were reused from the persistent home volume and the first client connection recognized Prettier without manual installation.Testing & Validation
bun test)bun fmt)Related Issues
Related to #425. The Windsurf wrapper change will follow after Core 1.2.0 is published.